mod_geometry Module

Module with geometry-related routines (e.g., divergence, curl)


Uses

  • module~~mod_geometry~~UsesGraph module~mod_geometry mod_geometry module~mod_comm_lib mod_comm_lib module~mod_geometry->module~mod_comm_lib

Used by

  • module~~mod_geometry~~UsedByGraph module~mod_geometry mod_geometry module~mod_amrvac mod_amrvac module~mod_amrvac->module~mod_geometry module~mod_thermal_emission mod_thermal_emission module~mod_thermal_emission->module~mod_geometry proc~alloc_node alloc_node proc~alloc_node->module~mod_geometry proc~alloc_node~2 alloc_node proc~alloc_node~2->module~mod_geometry proc~alloc_node~3 alloc_node proc~alloc_node~3->module~mod_geometry proc~alloc_node~4 alloc_node proc~alloc_node~4->module~mod_geometry proc~calc_x calc_x proc~calc_x->module~mod_geometry proc~cross cross proc~cross->module~mod_geometry proc~derivs_advect derivs_advect proc~derivs_advect->module~mod_geometry proc~fields_from_mhd fields_from_mhd proc~fields_from_mhd->module~mod_geometry proc~find_root_neighbor find_root_neighbor proc~find_root_neighbor->module~mod_geometry proc~fix_phi_crossing fix_phi_crossing proc~fix_phi_crossing->module~mod_geometry proc~gca_fill_gridvars gca_fill_gridvars proc~gca_fill_gridvars->module~mod_geometry proc~get_current get_current proc~get_current->module~mod_geometry proc~get_divb get_divb proc~get_divb->module~mod_geometry proc~get_efield get_efield proc~get_efield->module~mod_geometry proc~get_igslice get_igslice proc~get_igslice->module~mod_geometry proc~getheadernames getheadernames proc~getheadernames->module~mod_geometry proc~getintbc getintbc proc~getintbc->module~mod_geometry proc~initial_condition initial_condition proc~initial_condition->module~mod_geometry proc~initialize_vars initialize_vars proc~initialize_vars->module~mod_geometry proc~lorentz_fill_gridvars lorentz_fill_gridvars proc~lorentz_fill_gridvars->module~mod_geometry proc~lorentz_get_particle_dt Lorentz_get_particle_dt proc~lorentz_get_particle_dt->module~mod_geometry proc~lorentz_integrate_particles Lorentz_integrate_particles proc~lorentz_integrate_particles->module~mod_geometry proc~lorentz_kick Lorentz_kick proc~lorentz_kick->module~mod_geometry proc~lorentz_update_payload Lorentz_update_payload proc~lorentz_update_payload->module~mod_geometry proc~main main proc~main->module~mod_geometry proc~mg_setup_multigrid mg_setup_multigrid proc~mg_setup_multigrid->module~mod_geometry proc~modify_ic modify_IC proc~modify_ic->module~mod_geometry proc~output_particle output_particle proc~output_particle->module~mod_geometry proc~partcoord_from_cartesian partcoord_from_cartesian proc~partcoord_from_cartesian->module~mod_geometry proc~partcoord_to_cartesian partcoord_to_cartesian proc~partcoord_to_cartesian->module~mod_geometry proc~particle_get_current particle_get_current proc~particle_get_current->module~mod_geometry proc~partvec_from_cartesian partvec_from_cartesian proc~partvec_from_cartesian->module~mod_geometry proc~partvec_to_cartesian partvec_to_cartesian proc~partvec_to_cartesian->module~mod_geometry proc~point_in_igrid_ghostc point_in_igrid_ghostc proc~point_in_igrid_ghostc->module~mod_geometry proc~process process proc~process->module~mod_geometry proc~process_advanced process_advanced proc~process_advanced->module~mod_geometry proc~prolong_2nd prolong_2nd proc~prolong_2nd->module~mod_geometry proc~prolong_grid prolong_grid proc~prolong_grid->module~mod_geometry proc~put_slice put_slice proc~put_slice->module~mod_geometry proc~read_par_files read_par_files proc~read_par_files->module~mod_geometry proc~sample_get_particle_dt sample_get_particle_dt proc~sample_get_particle_dt->module~mod_geometry proc~saveamrfile saveamrfile proc~saveamrfile->module~mod_geometry proc~set_b0_cell set_B0_cell proc~set_b0_cell->module~mod_geometry proc~set_j0_cell set_J0_cell proc~set_j0_cell->module~mod_geometry proc~timeintegration timeintegration proc~timeintegration->module~mod_geometry proc~to_cartesian to_cartesian proc~to_cartesian->module~mod_geometry proc~generate_plotfile generate_plotfile proc~generate_plotfile->module~mod_thermal_emission

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: Cartesian = 0
integer, public, parameter :: Cartesian_expansion = 4
integer, public, parameter :: Cartesian_stretched = 1
integer, public, parameter :: Gaussbased = 2
integer, public, parameter :: Stokesbased = 3
integer, public, parameter :: central = 1
integer, public :: coordinate = -1
integer, public, parameter :: cylindrical = 2
integer, public, parameter :: spherical = 3
integer, public :: type_curl = 0

Functions

public pure elemental function r_of_s(s) result(r)

The radial coordinate map, from the logical coordinate s to the physical radius r, and its inverse.

Read more…

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: s

Return Value double precision

public pure elemental function s_of_r(r) result(s)

Inverse of r_of_s. See there.

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: r

Return Value double precision


Subroutines

public subroutine check_pole_setup()

Validate a configured polar axis, once, on the host.

Read more…

Arguments

None

public subroutine curlvector(qvec, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixOmin1, ixOmin2, ixOmin3, ixOmax1, ixOmax2, ixOmax3, curlvec, idirmin, idirmin0, ndir0, fourthorder)

Calculate curl of a vector qvec within ixL Options to employ standard second order CD evaluations use Gauss theorem for non-Cartesian grids use Stokes theorem for non-Cartesian grids

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir0)
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixOmin1
integer, intent(in) :: ixOmin2
integer, intent(in) :: ixOmin3
integer, intent(in) :: ixOmax1
integer, intent(in) :: ixOmax2
integer, intent(in) :: ixOmax3
double precision, intent(inout) :: curlvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,idirmin0:3)
integer, intent(inout) :: idirmin
integer, intent(in) :: idirmin0
integer, intent(in) :: ndir0
logical, intent(in), optional :: fourthorder

public subroutine divvector(qvec, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixOmin1, ixOmin2, ixOmin3, ixOmax1, ixOmax2, ixOmax3, divq, fourthorder, sixthorder)

Calculate divergence of a vector qvec within ixL

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir)
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixOmin1
integer, intent(in) :: ixOmin2
integer, intent(in) :: ixOmin3
integer, intent(in) :: ixOmax1
integer, intent(in) :: ixOmax2
integer, intent(in) :: ixOmax3
double precision, intent(inout) :: divq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)
logical, intent(in), optional :: fourthorder

Default: false

logical, intent(in), optional :: sixthorder

Default: false

public subroutine divvectorS(qvec, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixOmin1, ixOmin2, ixOmin3, ixOmax1, ixOmax2, ixOmax3, divq)

Calculate divergence of a vector qvec within ixL using limited extrapolation to cell edges

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir)
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixOmin1
integer, intent(in) :: ixOmin2
integer, intent(in) :: ixOmin3
integer, intent(in) :: ixOmax1
integer, intent(in) :: ixOmax2
integer, intent(in) :: ixOmax3
double precision, intent(inout) :: divq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)

public subroutine gradient(q, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixOmin1, ixOmin2, ixOmin3, ixOmax1, ixOmax2, ixOmax3, idir, gradq)

Calculate gradient of a scalar q within ixL in direction idir

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: q(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixOmin1
integer, intent(in) :: ixOmin2
integer, intent(in) :: ixOmin3
integer, intent(in) :: ixOmax1
integer, intent(in) :: ixOmax2
integer, intent(in) :: ixOmax3
integer, intent(in) :: idir
double precision, intent(inout) :: gradq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)

public subroutine set_coordinate_system(geom)

Set the coordinate system to be used

Arguments

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

Name of the coordinate system

public subroutine set_coordinate_system_from_config()

Set the coordinate system from the GEOM compile-time define.

Read more…

Arguments

None

public subroutine set_pole()

Arguments

None

public subroutine sync_geometry_host()

Return a block's whole geometry - positions and metrics alike - from the device to the host, for every grid the host is about to read.

Read more…

Arguments

None

public subroutine sync_positions_host(igrid)

Return cell-centre positions from the device to the host.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: igrid