This module applies reductions to a set of quantities
This module takes a set of input quantities and reduces them
according to the chosen reduceType.
You can choose between the following reduceTypes:
average: Average of all occurring values
sum: Sum of all occurring values
max: Maximum of all occurring values
min: Minimum of all occurring values
l2norm: L2 norm of all values, i.e. L_2(x) = sqrt( sum( x_i^2 ))
linfnorm: L_inf norm of all values, i.e. L_inf(x) = max( | x_i | )
reduction = {
'norm' -- 'average' or 'sum'
}
The table of reductions has to correspond to the number of entries in the
tracking variable table. For each variable, specify a reduction as
tracking = {
variable = { 'pressure' , 'velMag' , 'density' },
reduction = { 'average' , 'max' , l2norm ' }
}
Usage of this module
The tracking module handles the reductions. In the solver, the reduction
must then be inkoved in the compute loop
Embedding in Treelm
Reductions are usually defined in tracking objects. Thus,
the tracking module handles the loading and closing of the reductions.
The following steps need to be performed within the tracking module
Treelm: Load the configuration from the lua file
with tem_load_spatial_reduction
Treelm: Initialize the reductions with tem_init_reduction
Solver:
Open the reduction in the current time step tem_reduction_spatial_open
invoke the append reduceType to the array on which the reduction
will be applied with tem_append_reduction
This can be performed for a number of chunks
Close the reduction with tem_reduction_spatial_close
Uses
module~~tem_reduction_spatial_module~~UsesGraph
module~tem_reduction_spatial_module
tem_reduction_spatial_module
mpi
mpi
module~tem_reduction_spatial_module->mpi
module~tem_topology_module
tem_topology_module
module~tem_reduction_spatial_module->module~tem_topology_module
module~tem_aux_module
tem_aux_module
module~tem_reduction_spatial_module->module~tem_aux_module
module~tem_geometry_module
tem_geometry_module
module~tem_reduction_spatial_module->module~tem_geometry_module
module~treelmesh_module
treelmesh_module
module~tem_reduction_spatial_module->module~treelmesh_module
module~env_module
env_module
module~tem_reduction_spatial_module->module~env_module
module~tem_logging_module
tem_logging_module
module~tem_reduction_spatial_module->module~tem_logging_module
module~tem_comm_env_module
tem_comm_env_module
module~tem_reduction_spatial_module->module~tem_comm_env_module
module~tem_varsys_module
tem_varSys_module
module~tem_reduction_spatial_module->module~tem_varsys_module
module~aot_table_module
aot_table_module
module~tem_reduction_spatial_module->module~aot_table_module
module~tem_tools_module
tem_tools_module
module~tem_reduction_spatial_module->module~tem_tools_module
module~aotus_module
aotus_module
module~tem_reduction_spatial_module->module~aotus_module
module~aot_out_module
aot_out_module
module~tem_reduction_spatial_module->module~aot_out_module
module~tem_topology_module->module~env_module
module~tem_aux_module->mpi
module~tem_aux_module->module~env_module
module~tem_aux_module->module~tem_logging_module
module~tem_aux_module->module~tem_comm_env_module
module~tem_aux_module->module~aot_table_module
module~tem_aux_module->module~tem_tools_module
module~tem_aux_module->module~aotus_module
module~tem_revision_module
tem_revision_module
module~tem_aux_module->module~tem_revision_module
module~flu_binding
flu_binding
module~tem_aux_module->module~flu_binding
module~tem_lua_requires_module
tem_lua_requires_module
module~tem_aux_module->module~tem_lua_requires_module
module~tem_geometry_module->mpi
module~tem_geometry_module->module~tem_topology_module
module~tem_geometry_module->module~treelmesh_module
module~tem_geometry_module->module~env_module
module~tem_geometry_module->module~tem_logging_module
module~tem_geometry_module->module~tem_tools_module
module~tem_float_module
tem_float_module
module~tem_geometry_module->module~tem_float_module
module~tem_property_module
tem_property_module
module~tem_geometry_module->module~tem_property_module
module~tem_subtree_type_module
tem_subTree_type_module
module~tem_geometry_module->module~tem_subtree_type_module
module~tem_debug_module
tem_debug_module
module~tem_geometry_module->module~tem_debug_module
module~tem_param_module
tem_param_module
module~tem_geometry_module->module~tem_param_module
module~treelmesh_module->mpi
module~treelmesh_module->module~tem_topology_module
module~treelmesh_module->module~tem_aux_module
module~treelmesh_module->module~env_module
module~treelmesh_module->module~tem_logging_module
module~treelmesh_module->module~aot_table_module
module~treelmesh_module->module~tem_tools_module
module~treelmesh_module->module~aotus_module
module~tem_global_module
tem_global_module
module~treelmesh_module->module~tem_global_module
module~tem_sparta_module
tem_Sparta_module
module~treelmesh_module->module~tem_sparta_module
module~treelmesh_module->module~tem_property_module
module~env_module->mpi
module~env_module->module~aotus_module
module~env_module->module~flu_binding
iso_fortran_env
iso_fortran_env
module~env_module->iso_fortran_env
module~tem_logging_module->module~env_module
module~tem_logging_module->module~aot_table_module
module~tem_logging_module->module~aotus_module
module~tem_comm_env_module->mpi
module~tem_varsys_module->module~tem_aux_module
module~tem_varsys_module->module~treelmesh_module
module~tem_varsys_module->module~env_module
module~tem_varsys_module->module~tem_logging_module
module~tem_varsys_module->module~aot_table_module
module~tem_varsys_module->module~aotus_module
module~tem_varsys_module->module~aot_out_module
module~tem_dyn_array_module
tem_dyn_array_module
module~tem_varsys_module->module~tem_dyn_array_module
iso_c_binding
iso_c_binding
module~tem_varsys_module->iso_c_binding
module~tem_time_module
tem_time_module
module~tem_varsys_module->module~tem_time_module
module~tem_tools_module->module~env_module
module~tem_global_module->mpi
module~tem_global_module->module~tem_aux_module
module~tem_global_module->module~env_module
module~tem_global_module->module~tem_logging_module
module~tem_global_module->module~aot_table_module
module~tem_global_module->module~aotus_module
module~tem_global_module->module~aot_out_module
module~tem_prophead_module
tem_prophead_module
module~tem_global_module->module~tem_prophead_module
module~tem_sparta_module->mpi
module~tem_sparta_module->module~tem_aux_module
module~tem_sparta_module->module~env_module
module~tem_sparta_module->module~tem_logging_module
module~tem_sparta_module->module~tem_float_module
module~tem_float_module->module~env_module
module~tem_dyn_array_module->module~env_module
module~tem_property_module->mpi
module~tem_property_module->module~env_module
module~tem_property_module->module~tem_prophead_module
module~tem_subtree_type_module->mpi
module~tem_subtree_type_module->module~tem_aux_module
module~tem_subtree_type_module->module~treelmesh_module
module~tem_subtree_type_module->module~env_module
module~tem_subtree_type_module->module~tem_logging_module
module~tem_subtree_type_module->module~tem_global_module
module~tem_subtree_type_module->module~tem_property_module
module~tem_time_module->mpi
module~tem_time_module->module~env_module
module~tem_time_module->module~aot_table_module
module~tem_time_module->module~aotus_module
module~tem_time_module->module~aot_out_module
module~tem_lua_requires_module->module~env_module
module~tem_lua_requires_module->module~aot_table_module
module~tem_lua_requires_module->module~aotus_module
module~tem_lua_requires_module->iso_c_binding
module~tem_lua_requires_module->module~flu_binding
module~tem_debug_module->module~env_module
module~tem_debug_module->module~tem_logging_module
module~tem_debug_module->module~aot_table_module
module~tem_debug_module->module~tem_tools_module
module~tem_debug_module->module~flu_binding
module~tem_param_module->module~env_module
module~tem_prophead_module->mpi
module~tem_prophead_module->module~env_module
module~tem_prophead_module->module~aot_table_module
module~tem_prophead_module->module~aotus_module
module~tem_prophead_module->module~aot_out_module
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Used by
module~~tem_reduction_spatial_module~~UsedByGraph
module~tem_reduction_spatial_module
tem_reduction_spatial_module
module~tem_tracking_module
tem_tracking_module
module~tem_tracking_module->module~tem_reduction_spatial_module
module~hvs_output_module
hvs_output_module
module~tem_tracking_module->module~hvs_output_module
module~tem_simcontrol_module
tem_simControl_module
module~tem_tracking_module->module~tem_simcontrol_module
module~hvs_ascii_module
hvs_ascii_module
module~hvs_ascii_module->module~tem_reduction_spatial_module
module~tem_convergence_module
tem_convergence_module
module~tem_convergence_module->module~tem_reduction_spatial_module
program~tem_tracking_test
tem_tracking_test
program~tem_tracking_test->module~tem_tracking_module
module~tem_abortcriteria_module
tem_abortCriteria_module
module~tem_abortcriteria_module->module~tem_convergence_module
module~hvs_output_module->module~hvs_ascii_module
module~tem_simcontrol_module->module~tem_convergence_module
module~tem_simcontrol_module->module~tem_abortcriteria_module
module~tem_general_module
tem_general_module
module~tem_general_module->module~tem_abortcriteria_module
module~tem_general_module->module~tem_simcontrol_module
program~tem_varsys_stfunvar_test
tem_varSys_stfunVar_test
program~tem_varsys_stfunvar_test->module~tem_general_module
program~tem_varsys_statevar_test
tem_varSys_stateVar_test
program~tem_varsys_statevar_test->module~tem_general_module
program~tem_sparta_test
tem_sparta_test
program~tem_sparta_test->module~tem_general_module
program~tem_varsys_derivevar_test
tem_varSys_deriveVar_test
program~tem_varsys_derivevar_test->module~tem_general_module
program~tem_variable_evaltype_test
tem_variable_evaltype_test
program~tem_variable_evaltype_test->module~tem_general_module
program~tem_varsys_test
tem_varSys_test
program~tem_varsys_test->module~tem_general_module
program~tem_spacetime_fun_test
tem_spacetime_fun_test
program~tem_spacetime_fun_test->module~tem_general_module
program~tem_logical_opertor_test
tem_logical_opertor_test
program~tem_logical_opertor_test->module~tem_general_module
program~bin_search_test
bin_search_test
program~bin_search_test->module~tem_general_module
program~tem_variable_extract_test
tem_variable_extract_test
program~tem_variable_extract_test->module~tem_general_module
program~tem_variable_combine_test
tem_variable_combine_Test
program~tem_variable_combine_test->module~tem_general_module
program~tem_face_test
tem_face_test
program~tem_face_test->module~tem_general_module
program~tem_face_test~2
tem_face_test
program~tem_face_test~2->module~tem_general_module
module~tem_utestenv_module
tem_utestEnv_module
module~tem_utestenv_module->module~tem_general_module
program~tem_face_test~3
tem_face_test
program~tem_face_test~3->module~tem_general_module
program~tem_varsys_opvar_test
tem_varSys_opVar_test
program~tem_varsys_opvar_test->module~tem_general_module
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Derived Types
This data type is providing the input for the reduction routines
It must be filled by the solver, before the reduction is called
It exists on each process
Components
Type Visibility Attributes Name Initial
integer,
private ::
nComponents amount of components of the quantity to reduce
real(kind=rk),
private, allocatable ::
val (:)the result from the reduction operation
size: nComponents
integer,
private ::
nElems how many elements have been included into the reduction (so far)
real(kind=rk),
private ::
Vloc local part of total volume of intersected elements
character(len=labelLen),
private ::
reduceType = '' Which operation to perform on the list of elements
Components
Type Visibility Attributes Name Initial
character(len=labelLen),
private, allocatable ::
reduceType (:)Which operation to perform on the list of elements
logical,
private ::
active = .false.
Subroutines
read configuration file
Arguments
Type Intent Optional Attributes Name
type(flu_State)
::
conf handle for lua file
type(tem_reduction_spatial_config_type ),
intent(out)
::
redSpatial_config the reduction file to fill
integer,
intent(in),
optional ::
parent handle for reduce table
character(len=*),
intent(in),
optional ::
key which key to open
Initialize reduction objects according to the variable systems
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(out),
allocatable ::
me (:)array of reductions to initialize
type(tem_reduction_spatial_config_type ),
intent(in)
::
redSpatial_config
type(tem_varSys_type ),
intent(in)
::
varSys global variable system defined in solver
integer,
intent(in)
::
varPos (:)position of variable to reduce in the global varSys
Prepare the reduction data type
Read more…
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(inout)
::
me (:)The reduction type to work on. All definitions should be
present in here
type(tem_varSys_type ),
intent(in)
::
varSys global variable system defined in solver
integer,
intent(in)
::
varPos (:)
Local chunk-wise reduction
Read more…
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(inout)
::
me (:)The reduction type to work on. All definitions should be
present in here
real(kind=rk),
intent(in)
::
chunk (:)chunk of results to reduce
integer,
intent(in)
::
nElems number of elements the chunk has
type(tem_varSys_type ),
intent(in)
::
varSys global variable system defined in solver
integer,
intent(in)
::
varPos (:)position of variable to reduce in the global varSys
type(treelmesh_type ),
intent(in)
::
tree the global tree
integer(kind=long_k),
intent(in),
optional ::
treeID (nElems)The list of treeIDs of the current chunk
integer,
intent(in),
optional ::
nDofs Number of degrees of freedom.
Perform the global reduction
Read more…
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(inout)
::
me (:)The reduction type to work on. All definitions should be
present in here
type(tem_comm_env_type ),
intent(in)
::
proc communicator for processes participating in this reduction
Transfer reduction results to array chunk
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(in)
::
me (:)
real(kind=rk),
intent(inout)
::
chunk (:)
integer,
intent(out)
::
nChunkElems Number of element after spatial reduction = 1
Read a single entry of reductions from the lua file
Arguments
Type Intent Optional Attributes Name
type(flu_State),
intent(inout)
::
conf handle for lua file
character(len=labelLen),
intent(out)
::
reduceType reduction type to be filled
integer,
intent(in),
optional ::
handle handle for reduce table
character(len=*),
intent(in),
optional ::
key which key to open
integer,
intent(in),
optional ::
pos position to load from in config file
integer,
intent(out)
::
iError error from aotus
Dumps array of reduction to given unit
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(in)
::
me (:)reduction to write into the lua file
integer,
intent(in)
::
outUnit unit to write to
Dump single reduction to given unit
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(in)
::
me reduction to write into the lua file
integer,
intent(in)
::
outUnit unit to write to
Allows the output of array of reduction to lua out
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(in)
::
me (:)reduction to write into the lua file
type(aot_out_type ),
intent(inout)
::
conf aotus type handling the output to the file in lua format
Allows the output of the single reduction to lua out.
Read more…
Arguments
Type Intent Optional Attributes Name
type(tem_reduction_spatial_type ),
intent(in)
::
me reduction to write into the lua file
type(aot_out_type ),
intent(inout)
::
conf aotus type handling the output to the file in lua format