Encapsulate the problem geometry, grid points, and dependent variables
Calculate the 1D block identifier associated with the provided 3D block location
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this | |||
integer, | intent(in) | :: | ijk(:) |
Calculate the 3D location of the block that has the provided 1D block identifier
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this | |||
integer, | intent(in) | :: | n |
the result is a measure of the workload partitioned to the executing image
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
get surfaces owned by this image
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
result is shape of array of structured_grid blocks
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
get surface data packages of this image
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
Define a grid with points covering each structured-grid block in a 2D cylinder
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
type(cylinder_2d), | intent(in) | :: | cylinder_2d_geometry |
Define a grid with points covering each structured-grid block in a 3D plate
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
type(plate_3d), | intent(in) | :: | plate_3d_geometry |
Define a grid with points covering each structured-grid block in a 1D sphere
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
type(sphere_1d), | intent(in) | :: | sphere_1d_geometry |
Result contains the first & last identifiers for blocks owned by this image
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
Result contains the total number of scalar_field components
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
Result contains the total number of scalar_field components
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this |
Define the distribution of blocks across images for the given shape of the block-structured partitions (impure because of image-control statement in emulated co_sum -- may be pure when replaced by intrinsic co_sum)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | global_block_shape(:) | |||
class(structured_grid), | intent(in) | :: | prototype |
Use functions to define scalar values at vertex locations
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
class(differentiable_field), | intent(in), | dimension(:) | :: | scalar_setters |
Compute and store div( D grad( S )) for each scalar S and diffusion coefficient D
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
class(differentiable_field), | intent(in), | optional | dimension(:) | :: | exact_result |
advance the governing equations for the specified time duration
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this | |||
real(kind=r8k), | intent(in) | :: | duration |
Define the vertex locations within the specified structured_grid block
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(inout) | :: | this | |||
real(kind=r8k), | intent(in) | :: | x_nodes(:,:,:) | |||
real(kind=r8k), | intent(in) | :: | y_nodes(:,:,:) | |||
real(kind=r8k), | intent(in) | :: | z_nodes(:,:,:) | |||
integer, | intent(in) | :: | block_identifier |
Generic write output interface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(problem_discretization), | intent(in) | :: | this | |||
character(len=*), | intent(in) | :: | filename |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(structured_grid), | private, | allocatable | :: | block_map | hook for invoking block_indicial_coordinates and block_identifier |
||
integer, | private, | allocatable, dimension(:) | :: | block_partitions | block ownership specification |
||
type(surfaces), | private | :: | block_surfaces | global surface information with singleton communication buffers |
|||
real(kind=r8k), | private | :: | end_time | ||||
class(geometry), | private, | allocatable | :: | problem_geometry | description of problem domain and material identities; child types: plate_3D, cylinder_2D, sphere_1D |
||
class(structured_grid), | private, | allocatable | :: | scalar_fields(:,:) | scalar values at the grid nodes: size(scalar_fields,1)==size(vertices), size(scalar_fields,2)==number of scalar fields |
||
class(structured_grid), | private, | allocatable | :: | scalar_flux_divergence(:,:) | div( D grad(s)): same dimensions as scalar_fields |
||
class(structured_grid), | private, | allocatable | :: | vertices(:) | grid nodal locations: size(vertices) == number of blocks owned by the executing image |
procedure, public :: block_identifier | |
procedure, public :: block_indicial_coordinates | |
procedure, public :: block_load | |
procedure, public :: get_block_surfaces | |
procedure, public :: get_global_block_shape | |
procedure, public :: get_surface_packages | |
procedure, public :: initialize_from_cylinder_2d | |
procedure, public :: initialize_from_plate_3d | |
procedure, public :: initialize_from_sphere_1d | |
procedure, public :: mark_as_defined | |
procedure, public :: my_blocks | |
procedure, public :: num_scalar_flux_divergences | |
procedure, public :: num_scalars | |
procedure, public :: partition | |
procedure, public :: set_analytical_scalars | |
procedure, public :: set_scalar_flux_divergence | |
procedure, public :: solve_governing_equations | |
procedure, public :: user_defined | |
procedure, public :: user_defined_vertices | |
procedure, public :: write_output |