spherical_grid_implementation Submodule


Uses

  • module~~spherical_grid_implementation~~UsesGraph module~spherical_grid_implementation spherical_grid_implementation module~kind_parameters kind_parameters module~spherical_grid_implementation->module~kind_parameters module~surfaces_interface surfaces_interface module~spherical_grid_implementation->module~surfaces_interface module~package_interface package_interface module~spherical_grid_implementation->module~package_interface module~spherical_grid_interface spherical_grid_interface module~spherical_grid_implementation->module~spherical_grid_interface module~plate_3d_interface plate_3d_interface module~spherical_grid_implementation->module~plate_3d_interface module~assertions_interface assertions_interface module~spherical_grid_implementation->module~assertions_interface iso_fortran_env iso_fortran_env module~kind_parameters->iso_fortran_env module~surfaces_interface->module~kind_parameters module~surfaces_interface->module~package_interface iso_c_binding iso_c_binding module~surfaces_interface->iso_c_binding module~package_interface->module~kind_parameters module~spherical_grid_interface->module~surfaces_interface module~structured_grid_interface structured_grid_interface module~spherical_grid_interface->module~structured_grid_interface module~geometry_interface geometry_interface module~spherical_grid_interface->module~geometry_interface module~plate_3d_interface->module~kind_parameters json_module json_module module~plate_3d_interface->json_module module~plate_3d_interface->module~geometry_interface module~block_metadata_interface block_metadata_interface module~plate_3d_interface->module~block_metadata_interface module~structured_grid_interface->module~kind_parameters module~structured_grid_interface->module~surfaces_interface module~structured_grid_interface->module~geometry_interface module~structured_grid_interface->module~block_metadata_interface module~grid_interface grid_interface module~structured_grid_interface->module~grid_interface module~differentiable_field_interface differentiable_field_interface module~structured_grid_interface->module~differentiable_field_interface module~block_metadata_interface->module~kind_parameters module~block_metadata_interface->iso_c_binding module~units_interface units_interface module~grid_interface->module~units_interface module~object_interface object_interface module~grid_interface->module~object_interface module~differentiable_field_interface->module~grid_interface module~units_interface->module~object_interface

Contents


Variables

TypeVisibility AttributesNameInitial
integer, private, parameter, dimension(max_coord_dirs, num_faces , max_vec_components):: displacement =reshape([[-1, 0, 0], [1, 0, 0], [0, -1, 0], [0, 1, 0], [0, 0, -1], [0, 0, 1]], [max_coord_dirs, num_faces, max_vec_components])

displacement vectors in indicial coordinates for structured_grid blocks

integer, private, parameter:: max_coord_dirs =size([x_dir, y_dir, z_dir])

maximum number of coordinate directions

integer, private, parameter:: max_vec_components =max_coord_dirs

maximum number of vector components

integer, private, parameter:: num_faces =size([backward, forward])

number of faces in each coordinate direction of a hexahedral volume with faces orthogonal to coordinate directions

integer, private, parameter:: success =0

allocation stat value indicating success


Module Procedures

module procedure block_coordinates_in_bounds pure module function block_coordinates_in_bounds(this, ijk) result(in_bounds)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
integer, intent(in), dimension(:):: ijk

Return Value logical

module procedure block_identifier pure module function block_identifier(this, ijk) result(n)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
integer, intent(in), dimension(:):: ijk

Return Value integer

module procedure block_identifier_in_bounds pure module function block_identifier_in_bounds(this, id) result(in_bounds)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
integer, intent(in) :: id

Return Value logical

module procedure block_indicial_coordinates pure module function block_indicial_coordinates(this, n) result(ijk)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
integer, intent(in) :: n

Return Value integer, dimension(:), allocatable

module procedure build_surfaces module subroutine build_surfaces(this, problem_geometry, vertices, block_faces, block_partitions, num_scalars)

this verifies correct geometry for the assumptions in building the surfaces below initialize packages with only the time step & neighbor block_id (no halo-exchange data yet)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
class(geometry), intent(in) :: problem_geometry
class(structured_grid), intent(in), dimension(:), allocatable:: vertices
type(surfaces), intent(inout) :: block_faces
integer, intent(in), dimension(:):: block_partitions
integer, intent(in) :: num_scalars

module procedure div_scalar_flux pure module subroutine div_scalar_flux(this, vertices, block_surfaces, div_flux)

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
class(structured_grid), intent(in) :: vertices
type(surfaces), intent(in) :: block_surfaces
class(structured_grid), intent(inout) :: div_flux

module procedure set_up_div_scalar_flux module subroutine set_up_div_scalar_flux(this, vertices, block_surfaces, div_flux_internal_points)

Evaluate 2nd partial derivatives in each coordinate direction according to equations (2.2) & (2.4) in Sundqvist & Veronis (1969) "A simple finite-difference grid with non-constant intervals", Tellus 22:1

Read more…

Arguments

Type IntentOptional AttributesName
class(spherical_grid), intent(in) :: this
class(structured_grid), intent(in) :: vertices
type(surfaces), intent(inout) :: block_surfaces
class(structured_grid), intent(inout) :: div_flux_internal_points