descriptors_m.f90 Source File


This file depends on

sourcefile~~descriptors_m.f90~~EfferentGraph sourcefile~descriptors_m.f90 descriptors_m.f90 sourcefile~screen_io_m.f90 screen_io_m.f90 sourcefile~descriptors_m.f90->sourcefile~screen_io_m.f90 sourcefile~precision_m.f90 precision_m.f90 sourcefile~screen_io_m.f90->sourcefile~precision_m.f90

Files dependent on this one

sourcefile~~descriptors_m.f90~~AfferentGraph sourcefile~descriptors_m.f90 descriptors_m.f90 sourcefile~benchmark_helmholtz_solvers.f90 benchmark_helmholtz_solvers.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~descriptors_m.f90 sourcefile~helmholtz_netcdfio_m.f90 helmholtz_netcdfio_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~helmholtz_netcdfio_m.f90 sourcefile~mesh_cart_m.f90 mesh_cart_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~mesh_cart_m.f90 sourcefile~multigrid_m.f90 multigrid_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~multigrid_m.f90 sourcefile~equilibrium_factory_m.f90 equilibrium_factory_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~equilibrium_factory_m.f90 sourcefile~helmholtz_solver_factory_m.f90 helmholtz_solver_factory_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~helmholtz_solver_factory_m.f90 sourcefile~testfunctions_m.f90 testfunctions_m.f90 sourcefile~benchmark_helmholtz_solvers.f90->sourcefile~testfunctions_m.f90 sourcefile~boundaries_perp.f90 boundaries_perp.f90 sourcefile~boundaries_perp.f90->sourcefile~descriptors_m.f90 sourcefile~boundaries_perp.f90->sourcefile~mesh_cart_m.f90 sourcefile~carthy_equilibrium_m.f90 carthy_equilibrium_m.f90 sourcefile~carthy_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~analytic_divertor_equilibrium_m.f90 analytic_divertor_equilibrium_m.f90 sourcefile~carthy_equilibrium_m.f90->sourcefile~analytic_divertor_equilibrium_m.f90 sourcefile~cerfons_equilibrium_m.f90 cerfons_equilibrium_m.f90 sourcefile~cerfons_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~cerfons_equilibrium_m.f90->sourcefile~analytic_divertor_equilibrium_m.f90 sourcefile~circular_equilibrium_m.f90 circular_equilibrium_m.f90 sourcefile~circular_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~circular_toroidal_equilibrium_m.f90 circular_toroidal_equilibrium_m.f90 sourcefile~circular_toroidal_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~connection_length_m.f90 connection_length_m.f90 sourcefile~connection_length_m.f90->sourcefile~descriptors_m.f90 sourcefile~divertor_equilibrium_m.f90 divertor_equilibrium_m.f90 sourcefile~divertor_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~polygon_m.f90 polygon_m.f90 sourcefile~divertor_equilibrium_m.f90->sourcefile~polygon_m.f90 sourcefile~dommaschk_equilibrium_m.f90 dommaschk_equilibrium_m.f90 sourcefile~dommaschk_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~interpolation_m.f90 interpolation_m.f90 sourcefile~dommaschk_equilibrium_m.f90->sourcefile~interpolation_m.f90 sourcefile~dommaschk_equilibrium_m.f90->sourcefile~polygon_m.f90 sourcefile~flare_equilibrium_m.f90 flare_equilibrium_m.f90 sourcefile~flare_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~flare_equilibrium_m.f90->sourcefile~polygon_m.f90 sourcefile~helmholtz_netcdfio_m.f90->sourcefile~descriptors_m.f90 sourcefile~helmholtz_operator_m.f90 helmholtz_operator_m.f90 sourcefile~helmholtz_netcdfio_m.f90->sourcefile~helmholtz_operator_m.f90 sourcefile~helmholtz_netcdfio_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~helmholtz_operator_m.f90->sourcefile~descriptors_m.f90 sourcefile~helmholtz_operator_m.f90->sourcefile~boundaries_perp.f90 sourcefile~helmholtz_operator_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~interpolation_m.f90->sourcefile~descriptors_m.f90 sourcefile~mesh_cart_m.f90->sourcefile~descriptors_m.f90 sourcefile~slab_equilibrium.f90 slab_equilibrium.f90 sourcefile~mesh_cart_m.f90->sourcefile~slab_equilibrium.f90 sourcefile~multigrid_m.f90->sourcefile~descriptors_m.f90 sourcefile~multigrid_m.f90->sourcefile~boundaries_perp.f90 sourcefile~multigrid_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~multigrid_solver_m.f90 multigrid_solver_m.f90 sourcefile~multigrid_solver_m.f90->sourcefile~descriptors_m.f90 sourcefile~multigrid_solver_m.f90->sourcefile~boundaries_perp.f90 sourcefile~multigrid_solver_m.f90->sourcefile~helmholtz_operator_m.f90 sourcefile~multigrid_solver_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~multigrid_solver_m.f90->sourcefile~multigrid_m.f90 sourcefile~splitting_m.f90 splitting_m.f90 sourcefile~multigrid_solver_m.f90->sourcefile~splitting_m.f90 sourcefile~numerical_equilibrium_m.f90 numerical_equilibrium_m.f90 sourcefile~numerical_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~numerical_equilibrium_m.f90->sourcefile~divertor_equilibrium_m.f90 sourcefile~numerical_equilibrium_m.f90->sourcefile~polygon_m.f90 sourcefile~polar_map_factory_m.f90 polar_map_factory_m.f90 sourcefile~polar_map_factory_m.f90->sourcefile~descriptors_m.f90 sourcefile~polar_map_factory_m.f90->sourcefile~interpolation_m.f90 sourcefile~polar_map_factory_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~coords_polar_m.f90 coords_polar_m.f90 sourcefile~polar_map_factory_m.f90->sourcefile~coords_polar_m.f90 sourcefile~polar_grid_m.f90 polar_grid_m.f90 sourcefile~polar_map_factory_m.f90->sourcefile~polar_grid_m.f90 sourcefile~polygon_m.f90->sourcefile~descriptors_m.f90 sourcefile~salpha_equilibrium_m.f90 salpha_equilibrium_m.f90 sourcefile~salpha_equilibrium_m.f90->sourcefile~descriptors_m.f90 sourcefile~slab_equilibrium.f90->sourcefile~descriptors_m.f90 sourcefile~analytic_divertor_equilibrium_m.f90->sourcefile~divertor_equilibrium_m.f90 sourcefile~coords_polar_m.f90->sourcefile~slab_equilibrium.f90 sourcefile~dommaschk_equilibrium_netcdf_s.f90 dommaschk_equilibrium_netcdf_s.f90 sourcefile~dommaschk_equilibrium_netcdf_s.f90->sourcefile~dommaschk_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~carthy_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~cerfons_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~circular_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~circular_toroidal_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~dommaschk_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~flare_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~numerical_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~salpha_equilibrium_m.f90 sourcefile~equilibrium_factory_m.f90->sourcefile~slab_equilibrium.f90 sourcefile~helmholtz_solver_factory_m.f90->sourcefile~multigrid_m.f90 sourcefile~helmholtz_solver_factory_m.f90->sourcefile~splitting_m.f90 sourcefile~immersed_factory_m.f90 immersed_factory_m.f90 sourcefile~immersed_factory_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~immersed_m.f90 immersed_m.f90 sourcefile~immersed_factory_m.f90->sourcefile~immersed_m.f90 sourcefile~immersed_rho_m.f90 immersed_rho_m.f90 sourcefile~immersed_factory_m.f90->sourcefile~immersed_rho_m.f90 sourcefile~immersed_trace_m.f90 immersed_trace_m.f90 sourcefile~immersed_factory_m.f90->sourcefile~immersed_trace_m.f90 sourcefile~immersed_vessel_m.f90 immersed_vessel_m.f90 sourcefile~immersed_factory_m.f90->sourcefile~immersed_vessel_m.f90 sourcefile~immersed_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~immersed_rho_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~immersed_rho_m.f90->sourcefile~immersed_m.f90 sourcefile~immersed_trace_m.f90->sourcefile~connection_length_m.f90 sourcefile~immersed_trace_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~immersed_trace_m.f90->sourcefile~immersed_m.f90 sourcefile~immersed_vessel_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~immersed_vessel_m.f90->sourcefile~immersed_m.f90 sourcefile~initialise_numerical_equilibrium.f90 initialise_numerical_equilibrium.f90 sourcefile~initialise_numerical_equilibrium.f90->sourcefile~numerical_equilibrium_m.f90 sourcefile~initialise_numerical_equilibrium.f90->sourcefile~polygon_m.f90 sourcefile~map_factory_m.f90 map_factory_m.f90 sourcefile~map_factory_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~map_factory_s.f90 map_factory_s.f90 sourcefile~map_factory_s.f90->sourcefile~dommaschk_equilibrium_m.f90 sourcefile~map_factory_s.f90->sourcefile~interpolation_m.f90 sourcefile~map_factory_s.f90->sourcefile~map_factory_m.f90 sourcefile~mesh_cart_build_s.f90 mesh_cart_build_s.f90 sourcefile~mesh_cart_build_s.f90->sourcefile~mesh_cart_m.f90 sourcefile~mesh_cart_communicate_s.f90 mesh_cart_communicate_s.f90 sourcefile~mesh_cart_communicate_s.f90->sourcefile~mesh_cart_m.f90 sourcefile~mesh_cart_netcdfio_s.f90 mesh_cart_netcdfio_s.f90 sourcefile~mesh_cart_netcdfio_s.f90->sourcefile~mesh_cart_m.f90 sourcefile~mesh_cart_reorder_s.f90 mesh_cart_reorder_s.f90 sourcefile~mesh_cart_reorder_s.f90->sourcefile~mesh_cart_m.f90 sourcefile~mesh_cart_s.f90 mesh_cart_s.f90 sourcefile~mesh_cart_s.f90->sourcefile~mesh_cart_m.f90 sourcefile~multigrid_s.f90 multigrid_s.f90 sourcefile~multigrid_s.f90->sourcefile~multigrid_m.f90 sourcefile~multigrid_solver_s.f90 multigrid_solver_s.f90 sourcefile~multigrid_solver_s.f90->sourcefile~boundaries_perp.f90 sourcefile~multigrid_solver_s.f90->sourcefile~multigrid_solver_m.f90 sourcefile~parbnd_taylor_m.f90 parbnd_taylor_m.f90 sourcefile~parbnd_taylor_m.f90->sourcefile~connection_length_m.f90 sourcefile~parbnd_taylor_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~polar_grid_m.f90->sourcefile~circular_equilibrium_m.f90 sourcefile~polar_grid_m.f90->sourcefile~slab_equilibrium.f90 sourcefile~polar_grid_m.f90->sourcefile~coords_polar_m.f90 sourcefile~splitting_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~test_diffusion.f90 test_diffusion.f90 sourcefile~test_diffusion.f90->sourcefile~mesh_cart_m.f90 sourcefile~test_diffusion.f90->sourcefile~equilibrium_factory_m.f90 sourcefile~test_diffusion.f90->sourcefile~map_factory_m.f90 sourcefile~vis_vtk3d_m.f90 vis_vtk3d_m.f90 sourcefile~test_diffusion.f90->sourcefile~vis_vtk3d_m.f90 sourcefile~testfunctions_m.f90->sourcefile~circular_equilibrium_m.f90 sourcefile~testfunctions_m.f90->sourcefile~numerical_equilibrium_m.f90 sourcefile~testfunctions_m.f90->sourcefile~slab_equilibrium.f90 sourcefile~vis_vtk3d_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~zonal_averages_factory_m.f90 zonal_averages_factory_m.f90 sourcefile~zonal_averages_factory_m.f90->sourcefile~mesh_cart_m.f90 sourcefile~zonal_averages_factory_m.f90->sourcefile~coords_polar_m.f90 sourcefile~zonal_averages_factory_m.f90->sourcefile~polar_grid_m.f90 sourcefile~diagnose_poincare.f90 diagnose_poincare.f90 sourcefile~diagnose_poincare.f90->sourcefile~coords_polar_m.f90 sourcefile~diagnose_poincare.f90->sourcefile~equilibrium_factory_m.f90 sourcefile~immersed_netcdf_s.f90 immersed_netcdf_s.f90 sourcefile~immersed_netcdf_s.f90->sourcefile~immersed_m.f90 sourcefile~parbnd_taylor_netcdf_s.f90 parbnd_taylor_netcdf_s.f90 sourcefile~parbnd_taylor_netcdf_s.f90->sourcefile~parbnd_taylor_m.f90 sourcefile~polar_grid_s.f90 polar_grid_s.f90 sourcefile~polar_grid_s.f90->sourcefile~polar_grid_m.f90 sourcefile~safety_factor_m.f90 safety_factor_m.f90 sourcefile~safety_factor_m.f90->sourcefile~coords_polar_m.f90 sourcefile~splitting_gauss_seidel_cpu_s.f90 splitting_gauss_seidel_cpu_s.f90 sourcefile~splitting_gauss_seidel_cpu_s.f90->sourcefile~splitting_m.f90 sourcefile~splitting_gauss_seidel_redblack_cpu_s.f90 splitting_gauss_seidel_redblack_cpu_s.f90 sourcefile~splitting_gauss_seidel_redblack_cpu_s.f90->sourcefile~splitting_m.f90 sourcefile~splitting_jacobi_cpu_s.f90 splitting_jacobi_cpu_s.f90 sourcefile~splitting_jacobi_cpu_s.f90->sourcefile~splitting_m.f90

Source Code

module descriptors_m
    !! definition of descriptors, i.e. integer parameters
    use screen_io_m, only : get_stderr
    implicit none
    save

    public :: convert_descriptor_char_int

    integer, parameter ::BNDLOCATION_WALL   = 31
    !! point related with wall boundary condition
    integer, parameter ::BNDLOCATION_CORE   = 32
    !! point related with core boundary condition
    integer, parameter ::BNDLOCATION_OTHER  = 33
    !! point related with shadow boundary condition

    integer, parameter ::DISTRICT_CORE          = 813
    !! point located in core (outside actual computational domain, rho<rhomin)
    integer, parameter ::DISTRICT_CLOSED        = 814
    !! point located in closed field line region (within computational domain)
    integer, parameter ::DISTRICT_SOL           = 815
    !! point located in scrape-off layer (within computational domain)
    integer, parameter ::DISTRICT_PRIVFLUX      = 816
    !! point located in private flux region (within computational domain)
    integer, parameter ::DISTRICT_WALL          = 817
    !! point located in wall (outside computational domain, rho>rhomax)
    integer, parameter ::DISTRICT_DOME          = 818
    !! point located in divertor dome (outside computational domain, e.g. rho<rhomin_privflux)
    integer, parameter ::DISTRICT_OUT           = 819
    !! point located outside additional masks, i.e. shadow region (outside computational domain)

    integer, parameter ::BND_TYPE_DIRICHLET_ZERO    = -3
    !! Dirichlet boundary condition zeroth order
    integer, parameter ::BND_TYPE_DIRICHLET         = 0
    !! Dirichlet boundary condition first order (NOT WORKING YET, DO NOT USE)
    integer, parameter ::BND_TYPE_NEUMANN           = 1
    !! Neumann boundary condition first order
    integer, parameter ::BND_TYPE_NONE              = 312
    !! nothing applied for boundary conditions

    integer, parameter :: POINT_PGHOST_FIRST      = 253
    !! Point is ghost point, with connection (at least one next neighbor within grid) to grid
    integer, parameter :: POINT_PGHOST_DEEP       = 254
    !! Point is deeper ghost point, without connection to grid
    integer, parameter :: POINT_INNER_EDGE        = 255
    !! Point is grid point, with connection to pghost
    integer, parameter :: POINT_INNER_FULL        = 256
    !! Point is grid point, with connection fully within grid

    integer, parameter :: ERR_UNHANDLED               = 11
    integer, parameter :: ERR_PARAMETER_FILE          = 21

contains

    subroutine convert_descriptor_char_int(char_descr, int_descr)
        !! converts character, e.g. as specified in parameter files, into actual (integer) descriptor
        implicit none

        character(len=*), intent(in) :: char_descr
        !! character descriptor
        integer, intent(out) :: int_descr
        !! actual descriptor for code

        select case(char_descr)

            case ('BND_TYPE_DIRICHLET_ZERO')
                int_descr = BND_TYPE_DIRICHLET_ZERO
            case ('BND_TYPE_DIRICHLET')
                int_descr = BND_TYPE_DIRICHLET
            case ('BND_TYPE_NEUMANN')
                int_descr = BND_TYPE_NEUMANN
            case ('BND_TYPE_NONE')
                int_descr = BND_TYPE_NONE

            case default

                write(get_stderr(), *) &
                    'error(convert_descriptor_char_int): &
                    &char_descr not valid: ',char_descr
                ERROR STOP ERR_UNHANDLED

        end select

    end subroutine convert_descriptor_char_int

end module descriptors_m