get_fields Subroutine

public subroutine get_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_fields~~CallsGraph proc~get_fields get_fields proc~get_analytical_fields get_analytical_fields proc~get_fields->proc~get_analytical_fields proc~interp_fields interp_fields proc~get_fields->proc~interp_fields proc~uniform_fields uniform_fields proc~get_fields->proc~uniform_fields proc~cyl_check_if_confined cyl_check_if_confined proc~get_analytical_fields->proc~cyl_check_if_confined 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~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_gc_init analytical_fields_GC_init proc~get_analytical_fields->proc~analytical_fields_gc_init proc~interp_3d_bfields interp_3D_bfields proc~interp_fields->proc~interp_3d_bfields proc~get_fio_vector_potential get_fio_vector_potential proc~interp_fields->proc~get_fio_vector_potential proc~gradient_2d_bfields gradient_2D_Bfields proc~interp_fields->proc~gradient_2d_bfields proc~interp_3d_efields interp_3D_efields proc~interp_fields->proc~interp_3d_efields proc~interp_fofields_aorsa interp_FOfields_aorsa proc~interp_fields->proc~interp_fofields_aorsa proc~interp_2d_efields interp_2D_efields proc~interp_fields->proc~interp_2d_efields proc~interp_fofields_mars interp_FOfields_mars proc~interp_fields->proc~interp_fofields_mars proc~interp_2d_curlbfields interp_2D_curlbfields proc~interp_fields->proc~interp_2d_curlbfields proc~calculate_magnetic_field calculate_magnetic_field proc~interp_fields->proc~calculate_magnetic_field proc~get_fio_magnetic_fields get_fio_magnetic_fields proc~interp_fields->proc~get_fio_magnetic_fields proc~korc_abort korc_abort proc~interp_fields->proc~korc_abort proc~interp_2d_gradbfields interp_2D_gradBfields proc~interp_fields->proc~interp_2d_gradbfields proc~check_if_in_lcfs check_if_in_LCFS proc~interp_fields->proc~check_if_in_lcfs proc~get_fio_electric_fields get_fio_electric_fields proc~interp_fields->proc~get_fio_electric_fields proc~check_if_in_fields_domain check_if_in_fields_domain proc~interp_fields->proc~check_if_in_fields_domain proc~interp_2d_bfields interp_2D_bfields proc~interp_fields->proc~interp_2d_bfields proc~uniform_magnetic_field uniform_magnetic_field proc~uniform_fields->proc~uniform_magnetic_field proc~uniform_electric_field uniform_electric_field proc~uniform_fields->proc~uniform_electric_field ezspline_error ezspline_error proc~interp_3d_bfields->ezspline_error interface~fio_eval_field fio_eval_field proc~get_fio_vector_potential->interface~fio_eval_field proc~gradient_2d_bfields->ezspline_error proc~interp_3d_efields->ezspline_error proc~interp_fofields_aorsa->ezspline_error ezspline_interp ezspline_interp proc~interp_fofields_aorsa->ezspline_interp proc~interp_2d_efields->ezspline_error proc~interp_fofields_mars->ezspline_error proc~interp_fofields_mars->ezspline_interp proc~interp_2d_curlbfields->ezspline_error proc~calculate_magnetic_field->ezspline_error proc~get_fio_magnetic_fields->interface~fio_eval_field omp_get_thread_num omp_get_thread_num proc~get_fio_magnetic_fields->omp_get_thread_num mpi_abort mpi_abort proc~korc_abort->mpi_abort proc~interp_2d_gradbfields->ezspline_error proc~get_fio_electric_fields->interface~fio_eval_field proc~interp_2d_bfields->ezspline_error

Called by

proc~~get_fields~~CalledByGraph proc~get_fields get_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_fields(params,vars,F)
    !! @note Inferface with calls to subroutines for calculating the electric 
    !! and magnetic field 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.

    !write(6,*) params%field_model
    
    if (params%field_model(1:10).eq.'ANALYTICAL') then
    !SELECT CASE (TRIM(params%field_model))
    !CASE('ANALYTICAL')
       if (params%field_eval.eq.'eqn') then
          call get_analytical_fields(params,vars, F)
       else
          call interp_fields(params,vars, F)          
       end if
    else if (params%field_model(1:8).eq.'EXTERNAL') then

       !       write(output_unit_write,'("2 size of PSI_P: ",I16)') size(vars%PSI_P)

       call interp_fields(params,vars, F)
       
!       write(output_unit_write,'("get_fields")')
!       write(output_unit_write,'("B_X: ",E17.10)') vars%B(:,1)
!       write(output_unit_write,'("B_Z: ",E17.10)') vars%B(:,2)
!       write(output_unit_write,'("B_Y: ",E17.10)') vars%B(:,3)
       
       !if (F%Efield.AND..NOT.F%Efield_in_file) then
       !   call analytical_electric_field_cyl(F,vars%Y,vars%E,vars%flagCon)
       !end if
    else if (TRIM(params%field_model).eq.'M3D_C1'.or. &
         TRIM(params%field_model).eq.'NIMROD') then
       !write(6,*) 'get_fields'

       call interp_fields(params,vars, F)

    else if (params%field_model.eq.'UNIFORM') then

       call uniform_fields(vars, F)
    end if
  end subroutine get_fields