get_analytical_fields Subroutine

private subroutine get_analytical_fields(params, vars, F)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

Core KORC simulation parameters.

type(PARTICLES), intent(inout) :: vars

An instance of the KORC derived type PARTICLES.

type(FIELDS), intent(in) :: F

An instance of the KORC derived type FIELDS.


Calls

proc~~get_analytical_fields~~CallsGraph proc~get_analytical_fields get_analytical_fields proc~cart_to_cyl cart_to_cyl proc~get_analytical_fields->proc~cart_to_cyl proc~analytical_fields_gc analytical_fields_GC proc~get_analytical_fields->proc~analytical_fields_gc proc~analytical_fields analytical_fields proc~get_analytical_fields->proc~analytical_fields proc~cart_to_tor_check_if_confined cart_to_tor_check_if_confined proc~get_analytical_fields->proc~cart_to_tor_check_if_confined proc~analytical_fields_gc_init analytical_fields_GC_init proc~get_analytical_fields->proc~analytical_fields_gc_init proc~cyl_check_if_confined cyl_check_if_confined proc~get_analytical_fields->proc~cyl_check_if_confined

Called by

proc~~get_analytical_fields~~CalledByGraph proc~get_analytical_fields get_analytical_fields proc~get_fields get_fields proc~get_fields->proc~get_analytical_fields proc~mh_psi MH_psi proc~mh_psi->proc~get_fields proc~sample_hollmann_distribution_3d_psi sample_Hollmann_distribution_3D_psi proc~sample_hollmann_distribution_3d_psi->proc~get_fields proc~unitvectors unitVectors proc~unitvectors->proc~get_fields proc~get_hollmann_distribution_3d_psi get_Hollmann_distribution_3D_psi proc~get_hollmann_distribution_3d_psi->proc~sample_hollmann_distribution_3d_psi proc~gyro_distribution gyro_distribution proc~gyro_distribution->proc~unitvectors

Contents

Source Code


Source Code

  subroutine get_analytical_fields(params,vars,F)
    !! @note Interface for calculating the analytical electric and magnetic
    !! fields for each particle in the simulation. @endnote
    TYPE(KORC_PARAMS), INTENT(IN)      :: params
    !! Core KORC simulation parameters.
    TYPE(PARTICLES), INTENT(INOUT) :: vars
    !! An instance of the KORC derived type PARTICLES.
    TYPE(FIELDS), INTENT(IN)       :: F
    !! An instance of the KORC derived type FIELDS.

    if (params%orbit_model(1:2).eq.'FO') then

       call cart_to_tor_check_if_confined(vars%X,F,vars%Y,vars%flagCon)

       call analytical_fields(F,vars%Y, vars%E, vars%B, vars%flagCon)

       !       call cart_to_cyl(vars%X,vars%Y)

    elseif (params%orbit_model(1:2).eq.'GC') then

       if (.not.params%GC_coords) then

          call cart_to_cyl(vars%X,vars%Y)

          call cyl_check_if_confined(F,vars%Y,vars%flagCon)

          call analytical_fields_GC_init(params,F,vars%Y, vars%E, vars%B, &
               vars%gradB,vars%curlb, vars%flagCon, vars%PSI_P)

       else
          
          call cyl_check_if_confined(F,vars%Y,vars%flagCon)

          call analytical_fields_GC(params,F,vars%Y, vars%E, vars%B, &
               vars%gradB,vars%curlb, vars%flagCon,vars%PSI_P)

       end if

    endif

  end subroutine get_analytical_fields