auxiliaries_test_diffusion_m Module

Auxiliary routines for test_diffusion program


Uses

  • module~~auxiliaries_test_diffusion_m~~UsesGraph module~auxiliaries_test_diffusion_m auxiliaries_test_diffusion_m module~comm_handling_m comm_handling_m module~auxiliaries_test_diffusion_m->module~comm_handling_m module~constants_m constants_m module~auxiliaries_test_diffusion_m->module~constants_m module~csrmat_m csrmat_m module~auxiliaries_test_diffusion_m->module~csrmat_m module~equilibrium_m equilibrium_m module~auxiliaries_test_diffusion_m->module~equilibrium_m module~fieldline_tracer_m fieldline_tracer_m module~auxiliaries_test_diffusion_m->module~fieldline_tracer_m module~mesh_cart_m mesh_cart_m module~auxiliaries_test_diffusion_m->module~mesh_cart_m module~mpi_mapping_auxiliaries_m mpi_mapping_auxiliaries_m module~auxiliaries_test_diffusion_m->module~mpi_mapping_auxiliaries_m module~precision_m precision_m module~auxiliaries_test_diffusion_m->module~precision_m mpi mpi module~auxiliaries_test_diffusion_m->mpi module~comm_handling_m->mpi module~constants_m->module~precision_m module~csrmat_m->module~precision_m iso_c_binding iso_c_binding module~csrmat_m->iso_c_binding module~error_handling_m error_handling_m module~csrmat_m->module~error_handling_m module~list_operations_m list_operations_m module~csrmat_m->module~list_operations_m module~screen_io_m screen_io_m module~csrmat_m->module~screen_io_m module~status_codes_m status_codes_m module~csrmat_m->module~status_codes_m netcdf netcdf module~csrmat_m->netcdf module~equilibrium_m->module~precision_m module~fieldline_tracer_m->module~comm_handling_m module~fieldline_tracer_m->module~equilibrium_m module~fieldline_tracer_m->module~precision_m dop853_constants dop853_constants module~fieldline_tracer_m->dop853_constants dop853_module dop853_module module~fieldline_tracer_m->dop853_module module~fieldline_tracer_m->module~error_handling_m module~fieldline_tracer_m->module~screen_io_m module~fieldline_tracer_m->module~status_codes_m module~mesh_cart_m->module~comm_handling_m module~mesh_cart_m->module~equilibrium_m module~mesh_cart_m->module~precision_m module~mesh_cart_m->iso_c_binding module~descriptors_m descriptors_m module~mesh_cart_m->module~descriptors_m module~mesh_cart_m->module~error_handling_m module~slab_equilibrium_m slab_equilibrium_m module~mesh_cart_m->module~slab_equilibrium_m module~mesh_cart_m->module~status_codes_m module~mesh_cart_m->netcdf module~mpi_mapping_auxiliaries_m->module~csrmat_m module~mpi_mapping_auxiliaries_m->module~precision_m module~mpi_mapping_auxiliaries_m->mpi module~mpi_mapping_auxiliaries_m->module~screen_io_m module~precision_m->mpi module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~precision_m->netcdf module~descriptors_m->module~screen_io_m module~error_handling_m->module~comm_handling_m module~error_handling_m->module~precision_m module~error_handling_m->mpi module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~error_handling_m->netcdf module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~descriptors_m module~slab_equilibrium_m->module~screen_io_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->iso_fortran_env module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m

Used by

  • module~~auxiliaries_test_diffusion_m~~UsedByGraph module~auxiliaries_test_diffusion_m auxiliaries_test_diffusion_m program~test_diffusion test_diffusion program~test_diffusion->module~auxiliaries_test_diffusion_m

Subroutines

public subroutine complete_support_map(comm, equi, mesh, mesh_staggered, vol, qsupp_fwd, qsupp_bwd, psupp_fwd, psupp_bwd)

Completes the operators for the support operator method - Turns map matrices qsupp into parallel gradient matrices - Establishes parallel divergence matrices psupp

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

class(equilibrium_t), intent(inout) :: equi

Equilibrium

type(mesh_cart_t), intent(in) :: mesh

Mesh

type(mesh_cart_t), intent(in) :: mesh_staggered

Mesh at toroidally staggered (fwd) position

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: vol

Flux box volumes

type(csrmat_t), intent(inout) :: qsupp_fwd

Map matrix on input, parallel gradient matrix on output (fwd direction)

type(csrmat_t), intent(inout) :: qsupp_bwd

Map matrix on input, parallel gradient matrix on output (bwd direction)

type(csrmat_t), intent(out), allocatable :: psupp_fwd

Parallel divergence matrix (fwd direction)

type(csrmat_t), intent(out), allocatable :: psupp_bwd

Parallel divergence matrix (bwd direction)

public subroutine parallel_diffusion_shortley_weller(comm, mesh, qnaive_fwd, qnaive_bwd, ds_fwd, ds_bwd, u, du)

Parallel diffusion according to Shortley-Weller scheme

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

type(mesh_cart_t), intent(in) :: mesh

Mesh

type(csrmat_t), intent(in) :: qnaive_fwd

Map matrix (fwd direction)

type(csrmat_t), intent(in) :: qnaive_bwd

Map matrix (bwd direction)

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: ds_fwd

Distances along magnetic fiedl line to fwd mesh

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: ds_bwd

Distances along magnetic fiedl line to bwd mesh

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: u

Variable u

real(kind=FP), intent(out), dimension(mesh%get_n_points()) :: du

Parallel diffusion of variable u

public subroutine parallel_gradient_supp(comm, mesh, mesh_staggered, qsupp_fwd, qsupp_bwd, u, du)

Parallel gradient (from full to staggered mesh)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

type(mesh_cart_t), intent(in) :: mesh

Mesh

type(mesh_cart_t), intent(in) :: mesh_staggered

Mesh at toroidally staggered (fwd) position

type(csrmat_t), intent(in) :: qsupp_fwd

Parallel gradient matrix (fwd direction)

type(csrmat_t), intent(in) :: qsupp_bwd

Parallel gradient matrix (fwd direction)

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: u

Variable u

real(kind=FP), intent(out), dimension(mesh_staggered%get_n_points()) :: du

Parallel gradient of variable u on staggered grid

public subroutine parallel_divergence_supp(comm, mesh, mesh_staggered, psupp_fwd, psupp_bwd, u, du)

Parallel divergence (from staggered to full mesh)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

type(mesh_cart_t), intent(in) :: mesh

Mesh

type(mesh_cart_t), intent(in) :: mesh_staggered

Mesh at toroidally staggered (fwd) position

type(csrmat_t), intent(in) :: psupp_fwd

Parallel divergence matrix (fwd direction)

type(csrmat_t), intent(in) :: psupp_bwd

Parallel divergence matrix (fwd direction)

real(kind=FP), intent(in), dimension(mesh_staggered%get_n_points()) :: u

Variable u on staggered grid

real(kind=FP), intent(out), dimension(mesh%get_n_points()) :: du

Parallel divergence of u on full grid

public subroutine parallel_diffusion_supp(comm, mesh, mesh_staggered, qsupp_fwd, qsupp_bwd, psupp_fwd, psupp_bwd, u, du)

Parallel divergence (from staggered to full mesh)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

type(mesh_cart_t), intent(in) :: mesh

Mesh

type(mesh_cart_t), intent(in) :: mesh_staggered

Mesh at toroidally staggered (fwd) position

type(csrmat_t), intent(in) :: qsupp_fwd

Parallel gradient matrix (fwd direction)

type(csrmat_t), intent(in) :: qsupp_bwd

Parallel gradient matrix (fwd direction)

type(csrmat_t), intent(in) :: psupp_fwd

Parallel divergence matrix (fwd direction)

type(csrmat_t), intent(in) :: psupp_bwd

Parallel divergence matrix (fwd direction)

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: u

Variable u

real(kind=FP), intent(out), dimension(mesh%get_n_points()) :: du

Parallel diffusion

public subroutine fci_norms(comm, mesh, vol, u, nrm1, nrm2, nrm_max)

Computes L1, L2 and Lsup norm of solution Integretaion is performed with weighing of FCI flux box volumes

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm

MPI communicator

type(mesh_cart_t), intent(in) :: mesh

Mesh

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: vol

Flux box volumes

real(kind=FP), intent(in), dimension(mesh%get_n_points()) :: u

Variable u

real(kind=FP), intent(out) :: nrm1

L1 Norm

real(kind=FP), intent(out) :: nrm2

L2 Norm

real(kind=FP), intent(out) :: nrm_max

Supremumsnorm