0.6.0
Loading...
Searching...
No Matches
factory.f90 File Reference

Data Types

type  mod_stencil_factory::t_stencil_variable
 
type  mod_stencil_factory::t_stencil_equation
 
type  mod_stencil_factory::t_stencil_factory
 

Modules

module  mod_stencil_factory
 Generate any stencils (single and multiple equations).
 

Functions/Subroutines

subroutine mod_stencil_factory::initialize_eq_var_extent (factory, label, n_equations, extent)
 
subroutine mod_stencil_factory::initialize_from_array (factory, label, array)
 
subroutine mod_stencil_factory::perforate_from_triplet (factory, equation, variable, i, j, k)
 
subroutine mod_stencil_factory::perforate_from_array (factory, array)
 
subroutine mod_stencil_factory::generate_cell_stencil (factory, stencil)
 
subroutine mod_stencil_factory::generate_face_stencil (factory, stencil)
 
pure subroutine mod_stencil_factory::extend_stencil (factory, extent)
 
pure subroutine mod_stencil_factory::index_stencil (e, ez, stencil, c, id)
 
pure subroutine mod_stencil_factory::serialize_cell_stencil (stencil)
 
pure subroutine mod_stencil_factory::serialize_face_stencil (stencil)
 
pure subroutine mod_stencil_factory::one_direction (ns, x, s_xu, s_xv, s_xw)
 
pure subroutine mod_stencil_factory::one_direction_to_one_direction (ns, x, direction, s)
 
pure subroutine mod_stencil_factory::generate_connectivities (stencil)
 
pure subroutine mod_stencil_factory::shift_offsets (stencil)
 

Variables

integer, dimension(3, 5), parameter mod_stencil_factory::star_1_2d = reshape([ 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0 ], shape(STAR_1_2D))
 
integer, dimension(3, 9), parameter mod_stencil_factory::star_2_2d = reshape([ STAR_1_2D, -2, 0, 0, 2, 0, 0, 0, -2, 0, 0, 2, 0 ], shape(STAR_2_2D))
 
integer, dimension(3, 9), parameter mod_stencil_factory::square_1_2d = reshape([ STAR_1_2D, -1, -1, 0, 1, -1, 0, -1, 1, 0, 1, 1, 0 ], shape(SQUARE_1_2D))
 
integer, dimension(3, 25), parameter mod_stencil_factory::square_2_2d = reshape([ SQUARE_1_2D, -2, -2, 0, -1, -2, 0, 0, -2, 0, 1, -2, 0, 2, -2, 0, -2, -1, 0, 2, -1, 0, -2, 0, 0, 2, 0, 0, -2, 1, 0, 2, 1, 0, -2, 2, 0, -1, 2, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0 ], shape(SQUARE_2_2D))
 
integer, dimension(3, 7), parameter mod_stencil_factory::star_1_3d = reshape([ STAR_1_2D, 0, 0, -1, 0, 0, 1 ], shape(STAR_1_3D))
 
integer, dimension(3, 13), parameter mod_stencil_factory::star_2_3d = reshape([ STAR_1_3D, -2, 0, 0, 2, 0, 0, 0, -2, 0, 0, 2, 0, 0, 0, -2, 0, 0, 2 ], shape(STAR_2_3D))
 
integer, dimension(3, 27), parameter mod_stencil_factory::square_1_3d = reshape([ spread([-1, 0, 1], 2, 9), spread([ spread([-1], 1, 3), spread([0], 1, 3), spread([1], 1, 3) ], 2, 3), spread([-1, 0, 1], 1, 9)], shape(SQUARE_1_3D), order=[2,1] )
 
integer, dimension(3, 125), parameter mod_stencil_factory::square_2_3d = reshape([ spread([-2, -1, 0, 1, 2], 2, 25), spread([ spread([-2], 1, 5), spread([-1], 1, 5), spread([ 0], 1, 5), spread([ 1], 1, 5), spread([ 2], 1, 5) ], 2, 5), spread([-2, -1, 0, 1, 2], 1, 25)], shape(SQUARE_2_3D), order=[2,1] )
 
integer, dimension(3, 4), parameter mod_stencil_factory::navier_uv_coupling = reshape([ -1, -1, 0, 1, -1, 0, -1, 1, 0, 1, 1, 0 ], shape(NAVIER_UV_COUPLING))
 
integer, dimension(3, 4), parameter mod_stencil_factory::navier_uw_coupling = reshape([ -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, 1 ], shape(NAVIER_UW_COUPLING))
 
integer, dimension(3, 4), parameter mod_stencil_factory::navier_vw_coupling = reshape([ 0, -1, -1, 0, 1, -1, 0, -1, 1, 0, 1, 1 ], shape(NAVIER_VW_COUPLING))
 
integer, dimension(3, 2 *(size(navier_uv_coupling, 2)+1)), parameter mod_stencil_factory::navier_coupling_2d = reshape([ 1, 2, size(NAVIER_UV_COUPLING, 2), NAVIER_UV_COUPLING, 2, 1, size(NAVIER_UV_COUPLING, 2), NAVIER_UV_COUPLING ], shape=[3,2*(size(NAVIER_UV_COUPLING, 2) + 1)])
 
integer, parameter mod_stencil_factory::navier_coupling_3d_size = 2*(size(NAVIER_UV_COUPLING, 2) + 1) + 2*(size(NAVIER_UW_COUPLING, 2) + 1) + 2*(size(NAVIER_VW_COUPLING, 2) + 1)
 
integer, dimension(3, navier_coupling_3d_size), parameter mod_stencil_factory::navier_coupling_3d = reshape([ 1, 2, size(NAVIER_UV_COUPLING, 2), NAVIER_UV_COUPLING, 2, 1, size(NAVIER_UV_COUPLING, 2), NAVIER_UV_COUPLING, 1, 3, size(NAVIER_UW_COUPLING, 2), NAVIER_UW_COUPLING, 3, 1, size(NAVIER_UW_COUPLING, 2), NAVIER_UW_COUPLING, 2, 3, size(NAVIER_VW_COUPLING, 2), NAVIER_VW_COUPLING, 3, 2, size(NAVIER_VW_COUPLING, 2), NAVIER_VW_COUPLING ], shape(NAVIER_COUPLING_3D))
 
integer, dimension(3, size(star_1_2d, 2)+size(star_1_3d, 2)+3), parameter, public mod_stencil_factory::stencil_1_star = reshape([ 1, 1, size(STAR_1_2D, 2) + 3, 1, 1, size(STAR_1_2D, 2), STAR_1_2D, 1, 1, size(STAR_1_3D, 2), STAR_1_3D ], shape=[3,size(STAR_1_2D, 2)+size(STAR_1_3D, 2)+3])
 
integer, dimension(3, size(star_2_2d, 2)+size(star_2_3d, 2)+3), parameter, public mod_stencil_factory::stencil_2_star = reshape([ 1, 1, size(STAR_2_2D, 2) + 3, 1, 1, size(STAR_2_2D, 2), STAR_2_2D, 1, 1, size(STAR_2_3D, 2), STAR_2_3D ], shape=[3,size(STAR_2_2D, 2)+size(STAR_2_3D, 2)+3])
 
integer, dimension(3, size(square_1_2d, 2)+size(square_1_3d, 2)+3), parameter, public mod_stencil_factory::stencil_1_square = reshape([ 1, 1, size(SQUARE_1_2D, 2) + 3, 1, 1, size(SQUARE_1_2D, 2), SQUARE_1_2D, 1, 1, size(SQUARE_1_3D, 2), SQUARE_1_3D ], shape=[3,size(SQUARE_1_2D, 2)+size(SQUARE_1_3D, 2)+3])
 
integer, dimension(3, size(square_2_2d, 2)+size(square_2_3d, 2)+3), parameter, public mod_stencil_factory::stencil_2_square = reshape([ 1, 1, size(SQUARE_2_2D, 2) + 3, 1, 1, size(SQUARE_2_2D, 2), SQUARE_2_2D, 1, 1, size(SQUARE_2_3D, 2), SQUARE_2_3D ], shape=[3,size(SQUARE_2_2D, 2)+size(SQUARE_2_3D, 2)+3])
 
integer, parameter mod_stencil_factory::navier_1_star_3d_offset = 2 + (size(STAR_1_2D, 2) + 1)*2 + size(NAVIER_COUPLING_2D, 2)
 
integer, parameter mod_stencil_factory::navier_1_star_size = NAVIER_1_STAR_3D_OFFSET - 1 + (size(STAR_1_3D, 2) + 1)*3 + size(NAVIER_COUPLING_3D, 2)
 
integer, dimension(3, navier_1_star_size), parameter, public mod_stencil_factory::stencil_navier_1_star = reshape([ 2, 3, NAVIER_1_STAR_3D_OFFSET, 1, 1, size(STAR_1_2D, 2), STAR_1_2D, 2, 2, size(STAR_1_2D, 2), STAR_1_2D, NAVIER_COUPLING_2D, 1, 1, size(STAR_1_3D, 2), STAR_1_3D, 2, 2, size(STAR_1_3D, 2), STAR_1_3D, 3, 3, size(STAR_1_3D, 2), STAR_1_3D, NAVIER_COUPLING_3D ], shape=[3,NAVIER_1_STAR_SIZE])
 
integer, parameter mod_stencil_factory::navier_2_star_3d_offset = 2 + (size(STAR_2_2D, 2) + 1)*2 + size(NAVIER_COUPLING_2D, 2)
 
integer, parameter mod_stencil_factory::navier_2_star_size = NAVIER_2_STAR_3D_OFFSET - 1 + (size(STAR_2_3D, 2) + 1)*3 + size(NAVIER_COUPLING_3D, 2)
 
integer, dimension(3, navier_2_star_size), parameter, public mod_stencil_factory::stencil_navier_2_star = reshape([ 2, 3, NAVIER_2_STAR_3D_OFFSET, 1, 1, size(STAR_2_2D, 2), STAR_2_2D, 2, 2, size(STAR_2_2D, 2), STAR_2_2D, NAVIER_COUPLING_2D, 1, 1, size(STAR_2_3D, 2), STAR_2_3D, 2, 2, size(STAR_2_3D, 2), STAR_2_3D, 3, 3, size(STAR_2_3D, 2), STAR_2_3D, NAVIER_COUPLING_3D ], shape=[3,NAVIER_2_STAR_SIZE])
 
integer, parameter mod_stencil_factory::navier_1_square_3d_offset = 2 + (size(SQUARE_1_2D, 2) + 1)*2 + size(NAVIER_COUPLING_2D, 2)
 
integer, parameter mod_stencil_factory::navier_1_square_size = NAVIER_1_SQUARE_3D_OFFSET - 1 + (size(SQUARE_1_3D, 2) + 1)*3 + size(NAVIER_COUPLING_3D, 2)
 
integer, dimension(3, navier_1_square_size), parameter, public mod_stencil_factory::stencil_navier_1_square = reshape([ 2, 3, NAVIER_1_SQUARE_3D_OFFSET, 1, 1, size(SQUARE_1_2D, 2), SQUARE_1_2D, 2, 2, size(SQUARE_1_2D, 2), SQUARE_1_2D, NAVIER_COUPLING_2D, 1, 1, size(SQUARE_1_3D, 2), SQUARE_1_3D, 2, 2, size(SQUARE_1_3D, 2), SQUARE_1_3D, 3, 3, size(SQUARE_1_3D, 2), SQUARE_1_3D, NAVIER_COUPLING_3D ], shape=[3,NAVIER_1_SQUARE_SIZE])
 
integer, parameter mod_stencil_factory::navier_2_square_3d_offset = 2 + (size(SQUARE_2_2D, 2) + 1)*2 + size(NAVIER_COUPLING_2D, 2)
 
integer, parameter mod_stencil_factory::navier_2_square_size = NAVIER_2_SQUARE_3D_OFFSET - 1 + (size(SQUARE_2_3D, 2) + 1)*3 + size(NAVIER_COUPLING_3D, 2)
 
integer, dimension(3, navier_2_square_size), parameter, public mod_stencil_factory::stencil_navier_2_square = reshape([ 2, 3, NAVIER_2_SQUARE_3D_OFFSET, 1, 1, size(SQUARE_2_2D, 2), SQUARE_2_2D, 2, 2, size(SQUARE_2_2D, 2), SQUARE_2_2D, NAVIER_COUPLING_2D, 1, 1, size(SQUARE_2_3D, 2), SQUARE_2_3D, 2, 2, size(SQUARE_2_3D, 2), SQUARE_2_3D, 3, 3, size(SQUARE_2_3D, 2), SQUARE_2_3D, NAVIER_COUPLING_3D ], shape=[3,NAVIER_2_SQUARE_SIZE])