tem_param_module Module

Parameter lists for Treelm

This module holds the numbering of elements and subelements acoording to the treelm numbering (Morton-curve).


Uses

  • module~~tem_param_module~~UsesGraph module~tem_param_module tem_param_module module~env_module env_module module~tem_param_module->module~env_module aotus_module aotus_module module~env_module->aotus_module flu_binding flu_binding module~env_module->flu_binding iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env mpi mpi module~env_module->mpi

Used by

  • module~~tem_param_module~~UsedByGraph module~tem_param_module tem_param_module module~tem_bc_prop_module tem_bc_prop_module module~tem_bc_prop_module->module~tem_param_module module~tem_canonicalnd_module tem_canonicalND_module module~tem_canonicalnd_module->module~tem_param_module module~tem_construction_module tem_construction_module module~tem_construction_module->module~tem_param_module module~tem_cylinder_module tem_cylinder_module module~tem_cylinder_module->module~tem_param_module module~tem_face_module tem_face_module module~tem_face_module->module~tem_param_module module~tem_geometry_module tem_geometry_module module~tem_geometry_module->module~tem_param_module module~tem_heaviside_gibbs_fun_module tem_heaviside_gibbs_fun_module module~tem_heaviside_gibbs_fun_module->module~tem_param_module module~tem_ic_predefs_module tem_ic_predefs_module module~tem_ic_predefs_module->module~tem_param_module module~tem_intersection_module tem_intersection_module module~tem_intersection_module->module~tem_param_module module~tem_matrix_module tem_matrix_module module~tem_matrix_module->module~tem_param_module module~tem_miescatter_module tem_miescatter_module module~tem_miescatter_module->module~tem_param_module module~tem_miescatter_module~2 tem_miescatter_module module~tem_miescatter_module~2->module~tem_param_module module~tem_pmllayer_module tem_pmlLayer_module module~tem_pmllayer_module->module~tem_param_module module~tem_rotation_module tem_rotation_module module~tem_rotation_module->module~tem_param_module module~tem_shape_module tem_shape_module module~tem_shape_module->module~tem_param_module module~tem_spacetime_var_module tem_spacetime_var_module module~tem_spacetime_var_module->module~tem_param_module module~tem_spongelayer_module tem_spongeLayer_module module~tem_spongelayer_module->module~tem_param_module module~tem_stencil_module tem_stencil_module module~tem_stencil_module->module~tem_param_module module~tem_temporal_module tem_temporal_module module~tem_temporal_module->module~tem_param_module module~tem_vrtx_module tem_vrtx_module module~tem_vrtx_module->module~tem_param_module

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: c_x = 1
integer, public, parameter :: c_y = 2
integer, public, parameter :: c_z = 3
integer, public, parameter :: qQQQ = 26

Neighboring convention

integer, public, parameter :: q__W = 1
integer, public, parameter :: q__S = 2
integer, public, parameter :: q__B = 3
integer, public, parameter :: q__E = 4
integer, public, parameter :: q__N = 5
integer, public, parameter :: q__T = 6
integer, public, parameter :: q_BS = 7
integer, public, parameter :: q_TS = 8
integer, public, parameter :: q_BN = 9
integer, public, parameter :: q_TN = 10
integer, public, parameter :: q_BW = 11
integer, public, parameter :: q_BE = 12
integer, public, parameter :: q_TW = 13
integer, public, parameter :: q_TE = 14
integer, public, parameter :: q_SW = 15
integer, public, parameter :: q_NW = 16
integer, public, parameter :: q_SE = 17
integer, public, parameter :: q_NE = 18
integer, public, parameter :: qBSW = 19
integer, public, parameter :: qBSE = 20
integer, public, parameter :: qBNW = 21
integer, public, parameter :: qBNE = 22
integer, public, parameter :: qTSW = 23
integer, public, parameter :: qTSE = 24
integer, public, parameter :: qTNW = 25
integer, public, parameter :: qTNE = 26
integer, public, parameter :: qN00 = 1
integer, public, parameter :: q0N0 = 2
integer, public, parameter :: q00N = 3
integer, public, parameter :: q100 = 4
integer, public, parameter :: q010 = 5
integer, public, parameter :: q001 = 6
integer, public, parameter :: q0NN = 7
integer, public, parameter :: q0N1 = 8
integer, public, parameter :: q01N = 9
integer, public, parameter :: q011 = 10
integer, public, parameter :: qN0N = 11
integer, public, parameter :: q10N = 12
integer, public, parameter :: qN01 = 13
integer, public, parameter :: q101 = 14
integer, public, parameter :: qNN0 = 15
integer, public, parameter :: qN10 = 16
integer, public, parameter :: q1N0 = 17
integer, public, parameter :: q110 = 18
integer, public, parameter :: qNNN = 19
integer, public, parameter :: qNN1 = 20
integer, public, parameter :: qN1N = 21
integer, public, parameter :: qN11 = 22
integer, public, parameter :: q1NN = 23
integer, public, parameter :: q1N1 = 24
integer, public, parameter :: q11N = 25
integer, public, parameter :: q111 = 26
integer, public, parameter :: q000 = 27
integer, public, parameter, dimension(qQQQ) :: qInvDir = (/q__E, q__N, q__T, q__W, q__S, q__B, q_TN, q_BN, q_TS, q_BS, q_TE, q_TW, q_BE, q_BW, q_NE, q_SE, q_NW, q_SW, qTNE, qTNW, qTSE, qTSW, qBNE, qBNW, qBSE, qBSW/)
integer, public, parameter, dimension(qQQQ) :: qDir = (/q__W, q__S, q__B, q__E, q__N, q__T, q_BS, q_TS, q_BN, q_TN, q_BW, q_BE, q_TW, q_TE, q_SW, q_NW, q_SE, q_NE, qBSW, qBSE, qBNW, qBNE, qTSW, qTSE, qTNW, qTNE/)
integer, public, parameter :: qAxis(6) = [1, 2, 3, 1, 2, 3]

mapping the first six neihbor directions to x, y, z (1,2,3)

integer, public, parameter, dimension(qQQQ,3) :: qOffset = reshape((/-1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, +1, -1, +1, -1, -1, +1, +1, -1, +1, -1, +1, -1, +1, -1, +1, 0, -1, 0, 0, 1, 0, -1, -1, +1, +1, 0, 0, 0, 0, -1, +1, -1, +1, -1, -1, +1, +1, -1, -1, +1, +1, 0, 0, -1, 0, 0, 1, -1, +1, -1, +1, -1, -1, +1, +1, 0, 0, 0, 0, -1, -1, -1, -1, +1, +1, +1, +1/), (/qQQQ, 3/))

Spatial offset according to the directions above for q__W, ...

character(len=3), public, parameter :: qDirName(qQQQ) = ['  W', '  S', '  B', '  E', '  N', '  T', ' BS', ' TS', ' BN', ' TN', ' BW', ' BE', ' TW', ' TE', ' SW', ' NW', ' SE', ' NE', 'BSW', 'BSE', 'BNW', 'BNE', 'TSW', 'TSE', 'TNW', 'TNE']

direction names of q__W, ... very useful for debuggin

character(len=1), public, parameter, dimension(q000) :: qOffset_inChar = (/achar(20), achar(17), achar(5), achar(22), achar(25), achar(37), achar(1), achar(33), achar(9), achar(41), achar(4), achar(6), achar(36), achar(38), achar(16), achar(24), achar(18), achar(26), achar(0), achar(2), achar(8), achar(10), achar(32), achar(34), achar(40), achar(42), achar(21)/)

Offset character bit to encode qOffset offset_bit = achar((qOffset(1)+1) + (qOffset(2)+1)4 + (qOffset(3)+1)16) Bit can be converted back to qOffset using qOffset(1) = mod(ichar(offset_bit),4) - 1 qOffset(2) = mod(ichar(offset_bit),16)/4 - 1 qOffset(3) = ichar(offset_bit)/16 - 1

integer, public, parameter, dimension(8,3) :: childPosition = reshape((/-1, +1, -1, +1, -1, +1, -1, +1, -1, -1, +1, +1, -1, -1, +1, +1, -1, -1, -1, -1, 1, 1, 1, 1/), (/8, 3/))

Spatial position of the child relative to the parent barycenter in integer coordinates

integer, public, parameter, dimension(8,3) :: childCoord = reshape((/0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1/), (/8, 3/))

Coordinates of children starting in the lower, left, bottom corner. This ordering follows the Z-curve

integer, public, parameter, dimension(3,3,8) :: tem_rotationMatrix = reshape((/0, -1, 0, -1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1/), (/3, 3, 8/))
integer, public, parameter, dimension(7,3) :: parentNeighbor = reshape((/1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0/), (/7, 3/))
integer, public, parameter, dimension(8) :: vtk8_vrtxMap = (/1, 2, 4, 3, 5, 6, 8, 7/)
integer, public, parameter, dimension(20) :: vtk20_vrtxMap = (/1, 2, 6, 5, 3, 4, 8, 7, 9, 15, 17, 13, 12, 16, 20, 14, 10, 11, 19, 18/)
integer, public, parameter :: prp_state = 0
integer, public, parameter :: prp_density = 1
integer, public, parameter :: prp_pressure = 2
integer, public, parameter :: prp_wss = 3
integer, public, parameter :: prp_velMag = 10
integer, public, parameter :: prp_velX = 11
integer, public, parameter :: prp_velY = 12
integer, public, parameter :: prp_velZ = 13
real(kind=rk), public, parameter :: PI = 3.14159265358979323846_rk

constant PI value

real(kind=rk), public, parameter :: cs = 0.57735026918962576451_rk

the speed of sound cs in various ways

real(kind=rk), public, parameter :: csInv = 1.73205080756887729352_rk
real(kind=rk), public, parameter :: cs2inv = 3._rk
real(kind=rk), public, parameter :: cs2 = 1._rk/3._rk
real(kind=rk), public, parameter :: cs4 = 1._rk/9._rk
real(kind=rk), public, parameter :: t2cs4inv = 4.5_rk
real(kind=rk), public, parameter :: t2cs2inv = 1.5_rk
real(kind=rk), public, parameter :: cs4inv = 9._rk
real(kind=rk), public, parameter :: cs6inv = 27._rk
real(kind=rk), public, parameter :: cs8inv = 81._rk
real(kind=rk), public, parameter :: cs10inv = 243._rk
real(kind=rk), public, parameter :: cs12inv = 729._rk
real(kind=rk), public, parameter :: rho0 = 1._rk
real(kind=rk), public, parameter :: rho0Inv = 1._rk/rho0
real(kind=rk), public, parameter :: sqrt2 = 1.4142135623731_rk
real(kind=rk), public, parameter :: divSqrt2_2 = 0.707106781186548_rk
real(kind=rk), public, parameter :: sqrt3 = 1.73205080756887729352_rk
real(kind=rk), public, parameter :: two_sqrt2 = 2._rk*sqrt2
real(kind=rk), public, parameter :: div1_2 = 1._rk/2._rk
real(kind=rk), public, parameter :: div1_3 = 1._rk/3._rk
real(kind=rk), public, parameter :: div1_4 = 1._rk/4._rk
real(kind=rk), public, parameter :: div1_6 = 1._rk/6._rk
real(kind=rk), public, parameter :: div1_7 = 1._rk/7._rk
real(kind=rk), public, parameter :: div1_8 = 1._rk/8._rk
real(kind=rk), public, parameter :: div1_9 = 1._rk/9._rk
real(kind=rk), public, parameter :: div1_12 = 1._rk/12._rk
real(kind=rk), public, parameter :: div1_16 = 1._rk/16._rk
real(kind=rk), public, parameter :: div1_18 = 1._rk/18._rk
real(kind=rk), public, parameter :: div1_21 = 1._rk/21._rk
real(kind=rk), public, parameter :: div1_24 = 1._rk/24._rk
real(kind=rk), public, parameter :: div1_27 = 1._rk/27._rk
real(kind=rk), public, parameter :: div1_36 = 1._rk/36._rk
real(kind=rk), public, parameter :: div1_42 = 1._rk/42._rk
real(kind=rk), public, parameter :: div1_48 = 1._rk/48._rk
real(kind=rk), public, parameter :: div1_54 = 1._rk/54._rk
real(kind=rk), public, parameter :: div1_72 = 1._rk/72._rk
real(kind=rk), public, parameter :: div1_108 = 1._rk/108._rk
real(kind=rk), public, parameter :: div1_216 = 1._rk/216._rk
real(kind=rk), public, parameter :: div2_3 = 2._rk/3._rk
real(kind=rk), public, parameter :: div2_8 = 2._rk/8._rk
real(kind=rk), public, parameter :: div2_9 = 2._rk/9._rk
real(kind=rk), public, parameter :: div2_27 = 2._rk/27._rk
real(kind=rk), public, parameter :: div4_3 = 4._rk/3._rk
real(kind=rk), public, parameter :: div4_9 = 4._rk/9._rk
real(kind=rk), public, parameter :: div4_21 = 4._rk/21._rk
real(kind=rk), public, parameter :: div4_27 = 4._rk/27._rk
real(kind=rk), public, parameter :: div3_2 = 3._rk/2._rk
real(kind=rk), public, parameter :: div3_4 = 3._rk/4._rk
real(kind=rk), public, parameter :: div3_4h = 3._rk/4.5_rk
real(kind=rk), public, parameter :: div3_7 = 3._rk/7._rk
real(kind=rk), public, parameter :: div3_8 = 3._rk/8._rk
real(kind=rk), public, parameter :: div3_16 = 3._rk/16._rk
real(kind=rk), public, parameter :: div5_9 = 5._rk/9._rk
real(kind=rk), public, parameter :: div5_21 = 5._rk/21._rk
real(kind=rk), public, parameter :: div5_42 = 5._rk/42._rk
real(kind=rk), public, parameter :: div8_3 = 8._rk/3._rk
real(kind=rk), public, parameter :: div8_7 = 8._rk/7._rk
real(kind=rk), public, parameter :: div8_27 = 8._rk/27._rk
real(kind=rk), public, parameter :: div9_16 = 9._rk/16._rk