Interface for calculating the analytical electric and magnetic fields for each particle in the simulation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |
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