identify_transition Subroutine

public subroutine identify_transition(n_stark, stark_pi, stark_sigma, stark_intens, stark_wavel, line_lambda0)

Arguments

TypeIntentOptionalAttributesName
integer, intent(out) :: n_stark
integer, intent(out), dimension(:), allocatable:: stark_pi
integer, intent(out), dimension(:), allocatable:: stark_sigma
real(kind=FLoat64), intent(out), dimension(:), allocatable:: stark_intens
real(kind=FLoat64), intent(out), dimension(:), allocatable:: stark_wavel
real(kind=Float64), intent(out), dimension(3):: line_lambda0

Called by

proc~~identify_transition~~CalledByGraph proc~identify_transition identify_transition proc~read_inputs read_inputs proc~read_inputs->proc~identify_transition program~fidasim fidasim program~fidasim->proc~read_inputs

Contents

Source Code


Source Code

subroutine identify_transition(n_stark, stark_pi, stark_sigma, &
                                stark_intens, stark_wavel, line_lambda0)
    ! Determines the type of transition from user defined inputs

    integer, intent(out)                                     :: n_stark
    integer, dimension(:), allocatable, intent(out)          :: stark_pi, stark_sigma
    real(FLoat64), dimension(:), allocatable, intent(out)    :: stark_intens, stark_wavel
    real(Float64), dimension(3), intent(out)                 :: line_lambda0

    if (inputs%lambdamin > 620.0d0 .and. inputs%lambdamax < 680.0d0 ) then
        ! Assigns stark variables to balmer alpha transition
        n_stark = 15
        initial_state = 3
        final_state = 2

        line_lambda0 = [ 656.28d0, 656.104d0, 656.045d0 ]
         !"Tritium Diagnostics by Balmer-alpha emission" CH Skinner 1993
        allocate(stark_intens(n_stark))
        stark_intens = &
            [ 1.000d0, 18.00d0, 16.00d0, 1681.d0, 2304.d0, &
              729.0d0, 1936.d0, 5490.d0, 1936.d0, 729.0d0, &
              2304.d0, 1681.d0, 16.00d0, 18.00d0, 1.000d0  ]

        allocate(stark_wavel(n_stark))
        stark_wavel = &
            [-2.20200d-07,-1.65200d-07,-1.37700d-07,-1.10200d-07, &
             -8.26400d-08,-5.51000d-08,-2.75600d-08, 0.00000d0,   &
              2.75700d-08, 5.51500d-08, 8.27400d-08, 1.10300d-07, &
              1.38000d-07, 1.65600d-07, 2.20900d-07               ]

        allocate(stark_pi(n_stark))
        stark_pi = &
            [1, 0 , 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1]

        allocate(stark_sigma(n_stark))
        stark_sigma = 1 - stark_pi
        if(inputs%verbose.ge.1) then
           write(*, '(a)') "---- Atomic Transition ----"
           write(*, '(T2, a)') "Balmer-alpha: 3 -> 2"
           write(*, '(T2, "H/D/T wavelengths: [", f8.3, ",", f8.3, ",", f8.3, "] nm")') line_lambda0
           write(*,*) ''
        endif


    else if (inputs%lambdamin > 103.0d0 .and. inputs%lambdamax < 136.0d0) then
        ! Assigns stark varibales to Lyman alpha transition
        n_stark = 3
        initial_state = 2
        final_state = 1

        line_lambda0 = [ 121.57d0, 121.53d0, 121.52d0 ]
        ! "Ultra-sensitive Detection of Hydrogen Isotopes by Lyman-alpha RIS"
        ! Yasuhiro Miyake et al 2012
        allocate(stark_intens(n_stark))
        stark_intens = [ 1.000d0, 2.000d0, 1.000d0 ]

        allocate(stark_wavel(n_stark))
        stark_wavel = [ -8.25800d-8, 0.00000d0, 8.25800d-8 ]

        allocate(stark_pi(n_stark))
        stark_pi = [1, 0, 1]

        allocate(stark_sigma(n_stark))
        stark_sigma = 1 - stark_pi

        if(inputs%verbose.ge.1) then
           write(*, '(a)') "---- Atomic Transition ----"
           write(*, '(T2, a)') "Lyman-alpha: 2 -> 1"
           write(*, '(T2, "H/D/T wavelengths: [", f8.3, ",", f8.3, ",", f8.3, "] nm")') line_lambda0
           write(*,*) ''
        endif

   endif

end subroutine identify_transition