mus_tools_module Module

Some generic handy check routines to check the properties of the flow field and the current run

Performance estimation, check of the total density, check for NaNs


Uses

Used by

  • module~~mus_tools_module~~UsedByGraph module~mus_tools_module mus_tools_module module~mus_aux_module mus_aux_module module~mus_aux_module->module~mus_tools_module module~mus_tracking_module mus_tracking_module module~mus_aux_module->module~mus_tracking_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_tools_module module~mus_program_module->module~mus_aux_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_program_module->module~mus_dynloadbal_module module~mus_control_module mus_control_module module~mus_program_module->module~mus_control_module module~mus_flow_module mus_flow_module module~mus_program_module->module~mus_flow_module module~mus_tracking_module->module~mus_tools_module module~mus_dynloadbal_module->module~mus_tools_module module~mus_dynloadbal_module->module~mus_tracking_module module~mus_dynloadbal_module->module~mus_flow_module module~mus_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_tools_module module~mus_hvs_aux_module->module~mus_tracking_module module~mus_config_module mus_config_module module~mus_config_module->module~mus_tools_module module~mus_control_module->module~mus_aux_module module~mus_hvs_config_module mus_hvs_config_module module~mus_hvs_config_module->module~mus_config_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_hvs_aux_module program~mus_harvesting->module~mus_hvs_config_module program~mus_harvesting->module~mus_flow_module module~mus_interpolate_verify_module mus_interpolate_verify_module module~mus_interpolate_verify_module->module~mus_config_module program~musubi musubi program~musubi->module~mus_aux_module program~musubi->module~mus_program_module program~musubi->module~mus_config_module program~musubi->module~mus_control_module module~mus_flow_module->module~mus_interpolate_verify_module

Contents


Functions

private pure function calc_MLUPS(minLevel, maxLevel, scaleFactor, nElems, iter, time) result(mlups)

Calculate the MLUPS or MFLUPS for the simulation

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

level range

integer, intent(in) :: maxLevel

level range

integer, intent(in) :: scaleFactor

global parameter

integer(kind=long_k), intent(in) :: nElems(minLevel:maxLevel)

array of nElems levelwise

integer, intent(in) :: iter

number of iterations on maxLevel number of iteration on iLevel = iter / scaleFactor**(maxLevel-iLevel)

real(kind=rk), intent(in) :: time

time consumed for running iter iterations

Return Value real(kind=rk)

resulting mlups


Subroutines

public subroutine perform_checks(scheme, minLevel, maxLevel, general, mus_aborts, initCheck)

Perform run-time checks if interval is active

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme
integer, intent(in) :: minLevel
integer, intent(in) :: maxLevel
type(tem_general_type), intent(inout) :: general
type(mus_abortCriteria_type), intent(in) :: mus_aborts
logical, intent(in) :: initCheck

True for initial check before main time toop

public subroutine check_potential(scheme, minLevel, maxLevel, general, total_potential)

Check the total potential for poisson scheme

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme

scheme type

integer, intent(in) :: minLevel

global scheme independent information

integer, intent(in) :: maxLevel

global scheme independent information

type(tem_general_type), intent(inout) :: general
real(kind=rk), intent(out), optional :: total_potential

public subroutine check_density(scheme, minLevel, maxLevel, general, total_density)

Check the total density for a selected scheme and write to unit

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme

scheme type

integer, intent(in) :: minLevel

global scheme independent information

integer, intent(in) :: maxLevel

global scheme independent information

type(tem_general_type), intent(inout) :: general
real(kind=rk), intent(out), optional :: total_density

public subroutine mus_perf_measure(totalDens, DomSize, minLevel, maxLevel, nElems, scaleFactor, general)

This routine measures performance imbalance, MLUPS and dumps timings to disk

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: totalDens

Total density from check_density

integer(kind=long_k), intent(in) :: DomSize

Total number of elements in tree

integer, intent(in) :: minLevel

level range

integer, intent(in) :: maxLevel

level range

integer, intent(in) :: nElems(minLevel:maxLevel)

array of nElems levelwise

integer, intent(in) :: scaleFactor

global parameter

type(tem_general_type), intent(in) :: general

Contains proc, simControl, solveHead

public subroutine check_streaming_layout(minLevel, maxLevel)

Check for the streaming layout.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel
integer, intent(in) :: maxLevel

public subroutine mus_writeSolverSpecInfo(scheme, params, rank, outUnit)

Write solver specific info to scratch file

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme

scheme type

type(mus_param_type), intent(in) :: params

Contains physical convertion info and scaling type

integer, intent(in) :: rank

Rank of the process either from global communicator or tracking output communicator

integer, intent(inout) :: outUnit

unit to output solver info in lua format

public subroutine dump_linear_partition(treeID, nElems, offset, myRank, iter)

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(in) :: treeID(1:nElems)
integer, intent(in) :: nElems
integer(kind=long_k), intent(in) :: offset
integer, intent(in) :: myRank
integer, intent(in) :: iter

public subroutine mus_BC_timing(nBCs, bc_labels, comm)

Output the min and max time across all ranks, which are spent on each boundary condition.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: nBCs
character(len=labelLen), intent(in) :: bc_labels(nBCs)
integer, intent(in) :: comm

public subroutine dump_bc_timing(proc, nFluids, nBCElems, DomSize, iter, send)

This routine dump compute and BC timing for all ranks rank nFluids tCompute nBCElems tBC tCPU tMainLoop

Arguments

TypeIntentOptionalAttributesName
type(tem_comm_env_type), intent(in) :: proc
integer, intent(in) :: nFluids
integer, intent(in) :: nBCElems
integer(kind=long_k), intent(in) :: DomSize
integer, intent(in) :: iter
type(tem_communication_type), intent(in) :: send

private subroutine check_velocityFluid(scheme, minLevel, maxLevel, general, mus_aborts)

Check the maximum velocity whether it is above Ma>0.1

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme

scheme type

integer, intent(in) :: minLevel

global scheme independent information

integer, intent(in) :: maxLevel

global scheme independent information

type(tem_general_type), intent(inout) :: general
type(mus_abortCriteria_type), intent(in) :: mus_aborts

private subroutine check_velocityMS(scheme, minLevel, maxLevel, general, mus_aborts)

Check the maximum velocity whether it is above Ma>0.1

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: scheme

scheme type

integer, intent(in) :: minLevel

global scheme independent information

integer, intent(in) :: maxLevel

global scheme independent information

type(tem_general_type), intent(inout) :: general
type(mus_abortCriteria_type), intent(in) :: mus_aborts

private subroutine dump_timing(totalDens, DomSize, MLUPS, MLUPS_kernel, timerVal, imbalance, general)

Performance results (MLUPs) are written to a file for statistical review The file-format is simple can be evaluated with gnuplot

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: totalDens
integer(kind=long_k), intent(in) :: DomSize
real(kind=rk), intent(in) :: MLUPS
real(kind=rk), intent(in) :: MLUPS_kernel
real(kind=rk), intent(in) :: timerVal(:)

Max. timers of all process

real(kind=rk), intent(in) :: imbalance
type(tem_general_type), intent(in) :: general