diagnose_poincare Program

Uses

  • program~~diagnose_poincare~~UsesGraph program~diagnose_poincare diagnose_poincare module~array_generation_m array_generation_m program~diagnose_poincare->module~array_generation_m module~comm_handling_m comm_handling_m program~diagnose_poincare->module~comm_handling_m module~constants_m constants_m program~diagnose_poincare->module~constants_m module~coords_polar_m coords_polar_m program~diagnose_poincare->module~coords_polar_m module~equilibrium_factory_m equilibrium_factory_m program~diagnose_poincare->module~equilibrium_factory_m module~equilibrium_m equilibrium_m program~diagnose_poincare->module~equilibrium_m module~error_handling_m error_handling_m program~diagnose_poincare->module~error_handling_m module~fieldline_tracer_m fieldline_tracer_m program~diagnose_poincare->module~fieldline_tracer_m module~precision_m precision_m program~diagnose_poincare->module~precision_m module~screen_io_m screen_io_m program~diagnose_poincare->module~screen_io_m module~status_codes_m status_codes_m program~diagnose_poincare->module~status_codes_m mpi mpi program~diagnose_poincare->mpi netcdf netcdf program~diagnose_poincare->netcdf module~array_generation_m->module~precision_m module~comm_handling_m->mpi module~constants_m->module~precision_m module~coords_polar_m->module~comm_handling_m module~coords_polar_m->module~constants_m module~coords_polar_m->module~equilibrium_m module~coords_polar_m->module~precision_m module~coords_polar_m->module~screen_io_m module~root_finding_m root_finding_m module~coords_polar_m->module~root_finding_m module~slab_equilibrium_m slab_equilibrium_m module~coords_polar_m->module~slab_equilibrium_m module~equilibrium_factory_m->module~comm_handling_m module~equilibrium_factory_m->module~equilibrium_m module~equilibrium_factory_m->module~error_handling_m module~equilibrium_factory_m->module~status_codes_m module~carthy_equilibrium_m carthy_equilibrium_m module~equilibrium_factory_m->module~carthy_equilibrium_m module~cerfons_equilibrium_m cerfons_equilibrium_m module~equilibrium_factory_m->module~cerfons_equilibrium_m module~circular_equilibrium_m circular_equilibrium_m module~equilibrium_factory_m->module~circular_equilibrium_m module~circular_toroidal_equilibrium_m circular_toroidal_equilibrium_m module~equilibrium_factory_m->module~circular_toroidal_equilibrium_m module~dommaschk_equilibrium_m dommaschk_equilibrium_m module~equilibrium_factory_m->module~dommaschk_equilibrium_m module~flare_equilibrium_m flare_equilibrium_m module~equilibrium_factory_m->module~flare_equilibrium_m module~numerical_equilibrium_m numerical_equilibrium_m module~equilibrium_factory_m->module~numerical_equilibrium_m module~salpha_equilibrium_m salpha_equilibrium_m module~equilibrium_factory_m->module~salpha_equilibrium_m module~equilibrium_factory_m->module~slab_equilibrium_m module~equilibrium_m->module~precision_m module~error_handling_m->module~comm_handling_m module~error_handling_m->module~precision_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~error_handling_m->mpi module~error_handling_m->netcdf module~fieldline_tracer_m->module~comm_handling_m module~fieldline_tracer_m->module~equilibrium_m module~fieldline_tracer_m->module~error_handling_m module~fieldline_tracer_m->module~precision_m module~fieldline_tracer_m->module~screen_io_m module~fieldline_tracer_m->module~status_codes_m dop853_constants dop853_constants module~fieldline_tracer_m->dop853_constants dop853_module dop853_module module~fieldline_tracer_m->dop853_module module~precision_m->mpi module~precision_m->netcdf iso_c_binding iso_c_binding module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~screen_io_m->module~precision_m module~screen_io_m->netcdf module~screen_io_m->iso_fortran_env module~carthy_equilibrium_m->module~comm_handling_m module~carthy_equilibrium_m->module~constants_m module~carthy_equilibrium_m->module~precision_m module~carthy_equilibrium_m->module~screen_io_m ifport ifport module~carthy_equilibrium_m->ifport module~analytic_divertor_equilibrium_m analytic_divertor_equilibrium_m module~carthy_equilibrium_m->module~analytic_divertor_equilibrium_m module~descriptors_m descriptors_m module~carthy_equilibrium_m->module~descriptors_m module~elementary_functions_m elementary_functions_m module~carthy_equilibrium_m->module~elementary_functions_m module~cerfons_equilibrium_m->module~comm_handling_m module~cerfons_equilibrium_m->module~constants_m module~cerfons_equilibrium_m->module~precision_m module~cerfons_equilibrium_m->module~screen_io_m module~cerfons_equilibrium_m->module~analytic_divertor_equilibrium_m module~cerfons_equilibrium_m->module~descriptors_m module~cerfons_equilibrium_m->module~elementary_functions_m module~circular_equilibrium_m->module~constants_m module~circular_equilibrium_m->module~equilibrium_m module~circular_equilibrium_m->module~error_handling_m module~circular_equilibrium_m->module~precision_m module~circular_equilibrium_m->module~screen_io_m module~circular_equilibrium_m->module~status_codes_m module~circular_equilibrium_m->module~descriptors_m module~circular_equilibrium_m->module~elementary_functions_m module~params_equi_circular_m params_equi_circular_m module~circular_equilibrium_m->module~params_equi_circular_m module~circular_toroidal_equilibrium_m->module~constants_m module~circular_toroidal_equilibrium_m->module~equilibrium_m module~circular_toroidal_equilibrium_m->module~error_handling_m module~circular_toroidal_equilibrium_m->module~precision_m module~circular_toroidal_equilibrium_m->module~screen_io_m module~circular_toroidal_equilibrium_m->module~status_codes_m module~circular_toroidal_equilibrium_m->module~descriptors_m module~euclidean_geo_m euclidean_geo_m module~circular_toroidal_equilibrium_m->module~euclidean_geo_m module~kisslinger_m kisslinger_m module~circular_toroidal_equilibrium_m->module~kisslinger_m module~params_equi_circular_toroidal_m params_equi_circular_toroidal_m module~circular_toroidal_equilibrium_m->module~params_equi_circular_toroidal_m module~dommaschk_equilibrium_m->module~constants_m module~dommaschk_equilibrium_m->module~equilibrium_m module~dommaschk_equilibrium_m->module~error_handling_m module~dommaschk_equilibrium_m->module~fieldline_tracer_m module~dommaschk_equilibrium_m->module~precision_m module~dommaschk_equilibrium_m->module~screen_io_m module~dommaschk_equilibrium_m->module~status_codes_m module~dommaschk_equilibrium_m->module~descriptors_m module~dommaschk_equilibrium_m->module~elementary_functions_m module~dommaschk_equilibrium_m->module~euclidean_geo_m module~interpolation_m interpolation_m module~dommaschk_equilibrium_m->module~interpolation_m module~dommaschk_equilibrium_m->module~kisslinger_m module~params_equi_dommaschk_m params_equi_dommaschk_m module~dommaschk_equilibrium_m->module~params_equi_dommaschk_m module~polygon_m polygon_m module~dommaschk_equilibrium_m->module~polygon_m module~flare_equilibrium_m->module~comm_handling_m module~flare_equilibrium_m->module~equilibrium_m module~flare_equilibrium_m->module~error_handling_m module~flare_equilibrium_m->module~precision_m module~flare_equilibrium_m->module~screen_io_m module~flare_equilibrium_m->module~status_codes_m module~flare_equilibrium_m->iso_fortran_env FLARE_control FLARE_control module~flare_equilibrium_m->FLARE_control FLARE_model FLARE_model module~flare_equilibrium_m->FLARE_model module~flare_equilibrium_m->module~descriptors_m module~flare_equilibrium_m->module~euclidean_geo_m module~flare_equilibrium_m->module~kisslinger_m module~params_equi_flare_m params_equi_flare_m module~flare_equilibrium_m->module~params_equi_flare_m module~flare_equilibrium_m->module~polygon_m moose_configparser moose_configparser module~flare_equilibrium_m->moose_configparser moose_error moose_error module~flare_equilibrium_m->moose_error moose_utils moose_utils module~flare_equilibrium_m->moose_utils module~numerical_equilibrium_m->module~comm_handling_m module~numerical_equilibrium_m->module~constants_m module~numerical_equilibrium_m->module~precision_m module~numerical_equilibrium_m->module~screen_io_m module~numerical_equilibrium_m->netcdf module~numerical_equilibrium_m->iso_fortran_env bspline_module bspline_module module~numerical_equilibrium_m->bspline_module module~numerical_equilibrium_m->module~descriptors_m module~divertor_equilibrium_m divertor_equilibrium_m module~numerical_equilibrium_m->module~divertor_equilibrium_m module~numerical_equilibrium_m->module~elementary_functions_m module~numerical_equilibrium_m->module~polygon_m module~root_finding_m->module~precision_m module~salpha_equilibrium_m->module~comm_handling_m module~salpha_equilibrium_m->module~constants_m module~salpha_equilibrium_m->module~equilibrium_m module~salpha_equilibrium_m->module~error_handling_m module~salpha_equilibrium_m->module~precision_m module~salpha_equilibrium_m->module~screen_io_m module~salpha_equilibrium_m->module~status_codes_m module~salpha_equilibrium_m->module~descriptors_m module~params_equi_salpha_m params_equi_salpha_m module~salpha_equilibrium_m->module~params_equi_salpha_m module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~screen_io_m module~slab_equilibrium_m->module~descriptors_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~analytic_divertor_equilibrium_m->module~precision_m module~analytic_divertor_equilibrium_m->module~divertor_equilibrium_m module~descriptors_m->module~screen_io_m module~divertor_equilibrium_m->module~equilibrium_m module~divertor_equilibrium_m->module~error_handling_m module~divertor_equilibrium_m->module~precision_m module~divertor_equilibrium_m->module~screen_io_m module~divertor_equilibrium_m->module~status_codes_m module~divertor_equilibrium_m->module~descriptors_m module~divertor_equilibrium_m->module~polygon_m module~elementary_functions_m->module~precision_m module~euclidean_geo_m->module~precision_m module~interpolation_m->module~error_handling_m module~interpolation_m->module~precision_m module~interpolation_m->module~screen_io_m module~interpolation_m->module~status_codes_m module~interpolation_m->module~descriptors_m module~kisslinger_m->module~constants_m module~kisslinger_m->module~error_handling_m module~kisslinger_m->module~precision_m module~kisslinger_m->module~screen_io_m module~kisslinger_m->module~status_codes_m module~list_operations_m list_operations_m module~kisslinger_m->module~list_operations_m module~params_equi_circular_m->module~error_handling_m module~params_equi_circular_m->module~precision_m module~params_equi_circular_m->module~screen_io_m module~params_equi_circular_m->module~status_codes_m module~params_equi_circular_m->iso_fortran_env module~params_equi_circular_toroidal_m->module~error_handling_m module~params_equi_circular_toroidal_m->module~precision_m module~params_equi_circular_toroidal_m->module~screen_io_m module~params_equi_circular_toroidal_m->module~status_codes_m module~params_equi_circular_toroidal_m->iso_fortran_env module~params_equi_dommaschk_m->module~error_handling_m module~params_equi_dommaschk_m->module~precision_m module~params_equi_dommaschk_m->module~screen_io_m module~params_equi_dommaschk_m->module~status_codes_m module~params_equi_dommaschk_m->iso_fortran_env parallax_build_info_m parallax_build_info_m module~params_equi_dommaschk_m->parallax_build_info_m module~params_equi_flare_m->module~error_handling_m module~params_equi_flare_m->module~precision_m module~params_equi_flare_m->module~screen_io_m module~params_equi_flare_m->module~status_codes_m module~params_equi_flare_m->iso_fortran_env module~params_equi_flare_m->FLARE_model FLARE_bspline3d FLARE_bspline3d module~params_equi_flare_m->FLARE_bspline3d module~params_equi_salpha_m->module~error_handling_m module~params_equi_salpha_m->module~precision_m module~params_equi_salpha_m->module~screen_io_m module~params_equi_salpha_m->module~status_codes_m module~params_equi_salpha_m->iso_fortran_env module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m module~params_equi_slab_m->iso_fortran_env module~polygon_m->module~comm_handling_m module~polygon_m->module~precision_m module~polygon_m->module~screen_io_m module~polygon_m->mpi module~polygon_m->netcdf module~polygon_m->iso_fortran_env module~polygon_m->module~descriptors_m ieee_arithmetic ieee_arithmetic module~polygon_m->ieee_arithmetic module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m

This program generates poincare data, based on a parameter file specified via the command line, and writes that data to NetCDF.


Calls

program~~diagnose_poincare~~CallsGraph program~diagnose_poincare diagnose_poincare mpi_comm_size mpi_comm_size program~diagnose_poincare->mpi_comm_size mpi_init mpi_init program~diagnose_poincare->mpi_init proc~create_equilibrium create_equilibrium program~diagnose_poincare->proc~create_equilibrium proc~generate_poincare_data generate_poincare_data program~diagnose_poincare->proc~generate_poincare_data proc~get_communicator get_communicator program~diagnose_poincare->proc~get_communicator proc~get_equilibrium_identifier get_equilibrium_identifier program~diagnose_poincare->proc~get_equilibrium_identifier proc~handle_error handle_error program~diagnose_poincare->proc~handle_error proc~linspace linspace program~diagnose_poincare->proc~linspace proc~polar_to_cart polar_to_cart program~diagnose_poincare->proc~polar_to_cart proc~print_usage print_usage program~diagnose_poincare->proc~print_usage proc~create_equilibrium->proc~handle_error debug debug proc~create_equilibrium->debug display display proc~create_equilibrium->display init init proc~create_equilibrium->init proc~is_master is_master proc~create_equilibrium->proc~is_master proc~generate_poincare_data->proc~handle_error mpi_wtime mpi_wtime proc~generate_poincare_data->mpi_wtime proc~get_stdout get_stdout proc~generate_poincare_data->proc~get_stdout proc~trace trace proc~generate_poincare_data->proc~trace proc~write_poincare write_poincare proc~generate_poincare_data->proc~write_poincare proc~get_equilibrium_identifier->proc~handle_error none~handle_error error_handler_t%handle_error proc~handle_error->none~handle_error mag_axis_loc mag_axis_loc proc~polar_to_cart->mag_axis_loc proc~find_zero find_zero proc~polar_to_cart->proc~find_zero proc~get_stderr get_stderr proc~polar_to_cart->proc~get_stderr proc~print_usage->proc~get_stdout func func proc~find_zero->func mpi_comm_rank mpi_comm_rank proc~is_master->mpi_comm_rank proc~trace->proc~handle_error proc~trace->proc~get_stderr destroy destroy proc~trace->destroy initialize initialize proc~trace->initialize integrate integrate proc~trace->integrate nf90_close nf90_close proc~write_poincare->nf90_close nf90_create nf90_create proc~write_poincare->nf90_create nf90_def_dim nf90_def_dim proc~write_poincare->nf90_def_dim nf90_def_var nf90_def_var proc~write_poincare->nf90_def_var nf90_put_att nf90_put_att proc~write_poincare->nf90_put_att nf90_put_var nf90_put_var proc~write_poincare->nf90_put_var proc~handle_error_netcdf handle_error_netcdf proc~write_poincare->proc~handle_error_netcdf none~handle_error_netcdf error_handler_t%handle_error_netcdf proc~handle_error_netcdf->none~handle_error_netcdf

Variables

Type Attributes Name Initial
character(len=64) :: geometry = 'CIRCULAR'

Specifies equilibrium type

character(len=256) :: equi_filename = ""

Equilibrium parameter filename (if blank, the equilibrium will be initialized with its default parameters)

integer :: n_planes = 1

Number of toroidal planes

integer :: n_turns = 50

Number of toroidal rotations 2pi

integer :: n_surfaces = 6

Number of flux surfaces

logical :: trace_start_loc_polar = .false.

Switch whether the starting locations for tracing trace_start_loc are specified in (x, y) or (rho, theta) coordinates

real(kind=FP) :: phi_min = 0.0_FP

Lower bound of default phi array

real(kind=FP) :: phi_max = TWO_PI

Upper bound of default phi_array

character(len=256) :: poincare_filename = "poincare_data.nc"

File name under which to save the Poincare data

real(kind=FP), dimension(:), allocatable :: phi_array

Toroidal angles phi of Poincare data. By default, this array is size(n_planes) and spans [phi_min, phi_max).

real(kind=FP), dimension(:,:), allocatable :: trace_start_loc

Trace starting locations for each surface, for the first plane. By default, the starting locations will span horizontally from the magnetic axis to either xmax (polar=false) or rhomax (polar=true). The starting locations for the subsequent planes will be calculated using tracing, so that the same flux surfaces are shown on all planes.

class(equilibrium_t), allocatable :: equi
integer :: ierror
integer :: nprocs
integer :: n_threads
integer :: argc
integer :: eq_id
character(len=256), allocatable, dimension(:) :: argv
character(len=256) :: parameter_file
character(len=256) :: io_errmsg
integer :: funit
integer :: io_error
integer :: i
real(kind=FP) :: x
real(kind=FP) :: y

Subroutines

subroutine print_usage()

Prints the intended usage of the executable

Arguments

None

subroutine generate_poincare_data(equi, n_surfaces, n_turns, n_planes, phi_array, trace_start_loc, filename)

For a given equilibrium equi, this routine generates Poincare data on the toroidal planes with angles given in phi_array.

Read more…

Arguments

Type IntentOptional Attributes Name
class(equilibrium_t), intent(inout) :: equi

Equilibrium instance

integer, intent(in) :: n_surfaces

Number of flux surfaces

integer, intent(in) :: n_turns

Number of toroidal rotations 2pi

integer, intent(in) :: n_planes

Number of toroidal planes

real(kind=FP), intent(in), dimension(n_planes) :: phi_array

Toroidal angles at which to save data

real(kind=FP), intent(in), dimension(2, n_surfaces) :: trace_start_loc

Trace starting locations (x, y) for each surface, for the first plane

character(len=*), intent(in) :: filename

File name under which to save the Poincare data

subroutine write_poincare(filename, n_surfaces, n_turns, n_planes, phi_array, poincare_data)

Writes generated poincare data to a NetCDF file

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename

File name to save to

integer, intent(in) :: n_surfaces

Number of flux surfaces

integer, intent(in) :: n_turns

Number of toroidal rotations

integer, intent(in) :: n_planes

Number of toroidal planes

real(kind=FP), intent(in), dimension(n_planes) :: phi_array

Toroidal angles of each plane

real(kind=FP), intent(in), dimension(2, n_planes, n_turns + 1, n_surfaces) :: poincare_data

Generated Poincare data: x and y locations of the field lines for every surface, turn, and plane