mus_interpolate_debug_module Module

Interpolation of flow quantities between different grid levels

Interpolation

The routines defined here, fill up the ghost elements with valid data. Ghost elements are employed at grid level interfaces to provide valid pdf values to the neighboring fluid elements. This way, the solvers can act on elements of the same size only, treating the levels successively. Target elements are the ghost elements, which have to be filled with valid values. Source elements are the fluid elements from other levels, from where to take the input values for the interpolation. The target ghost elements on the target level have corresponding source fluid elements on the source level.

tem_topology_module For a detailed description of the grid

Workflow

Each interpolation routine acts on a list of ghost elements. This list contains pointers to the position in the total list. For each of these ghost elements, the source elements are identified. Before that, the sourceLevel is identified. However, the code is restricted to work with a level jump of only one level, so the sourceLevel is for sourceLevel = targetLevel+1 sourceLevel = targetLevel-1

For an overview over implemented interpolation methods, see Interpolation methods


Uses

Used by

  • module~~mus_interpolate_debug_module~~UsedByGraph module~mus_interpolate_debug_module mus_interpolate_debug_module module~mus_interpolate_module mus_interpolate_module module~mus_interpolate_module->module~mus_interpolate_debug_module module~mus_interpolate_linear_module mus_interpolate_linear_module module~mus_interpolate_module->module~mus_interpolate_linear_module module~mus_interpolate_average_module mus_interpolate_average_module module~mus_interpolate_module->module~mus_interpolate_average_module module~mus_interpolate_linear_module->module~mus_interpolate_debug_module module~mus_interpolate_average_module->module~mus_interpolate_debug_module module~mus_aux_module mus_aux_module module~mus_aux_module->module~mus_interpolate_module module~mus_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_interpolate_module module~mus_construction_module mus_construction_module module~mus_construction_module->module~mus_interpolate_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_dynloadbal_module->module~mus_interpolate_module module~mus_dynloadbal_module->module~mus_construction_module module~mus_control_module mus_control_module module~mus_control_module->module~mus_aux_module module~mus_hvs_construction_module mus_hvs_construction_module module~mus_hvs_construction_module->module~mus_construction_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_aux_module module~mus_program_module->module~mus_construction_module module~mus_program_module->module~mus_dynloadbal_module module~mus_program_module->module~mus_control_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_hvs_aux_module program~mus_harvesting->module~mus_construction_module program~mus_harvesting->module~mus_hvs_construction_module program~musubi musubi program~musubi->module~mus_aux_module program~musubi->module~mus_control_module program~musubi->module~mus_program_module

Contents


Variables

TypeVisibilityAttributesNameInitial
real(kind=rk), private, parameter:: debugValue =1.0d0

Functions

public pure function TGV_2D(coord, t) result(res)

This routine returns the analytical solution of TGV 2D testcase for a given position and time (coord, t)

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: coord(3)

position and time

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

position and time

Return Value real(kind=rk)(6)

pressure, velX, velY, Sxx, Syy, Sxy


Subroutines

public subroutine do_nothing(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill GhostFromFiner elements on my level with debug value

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine do_nothing_arbi(method, tLevelDesc, level, stencil, sVal, snSize, tVal, tnSize, nTargets, targetList, nScalars)

Fill GhostFromFiner elements on my level with debug value

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

type(tem_stencilHeader_type), intent(in) :: stencil

stencil header

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tVal(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
integer, intent(in) :: nScalars

number of scalars to interpolate

public subroutine fillMyGhostsFromFiner_Average(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Interpolation routine that is based on a simple weighted average of source nodes

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillFinerGhostsFromMe_Average(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Interpolation routine that is based on a simple weighted average of source nodes

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillMyGhostsFromFiner_Debug(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill GhostFromFiner elements on my level with debug value

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillFinerGhostsFromMe_Debug(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill the ghost elements on the finer level with debug value

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillMyGhostsFromFiner_CopyFirst(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

This simple method does not perform actual interpolation, but simply copies one of the source elements pdf values to the target element. It is for DEBUG purpose, the quality is not good enough for production use!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillFinerGhostsFromMe_CopyFirst(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

This simple method does not perform actual interpolation, but simply copies one of the source element's pdf values to the target element. It is mostly there for debugging purposes, the quality is not good enough for production use!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillFinerGhostsFromMe_TGV2D(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

This simple method does not perform actual interpolation, but get analytical solution and set pdf to target element. It is for debugging purposes, not for production use!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillMyGhostsFromFiner_TGV2D(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

This simple method does not perform actual interpolation, but get analytical solution and set pdf to target element It is mostly there for debugging purposes, the quality is not good enough for production use!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillFinerGhostsFromMe_TGV3D(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

No comment yet!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields

public subroutine fillMyGhostsFromFiner_TGV3D(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

No comment yet!

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(in) :: method
type(mus_field_prop_type), intent(in), target:: fieldProp(:)

Array of field properties (fluid or species)

type(tem_levelDesc_type), intent(in) :: tLevelDesc

level descriptor on target level

integer, intent(in) :: level

my refinement level

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

State vector of SOURCE FLUID elements

integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tnSize
real(kind=rk), intent(inout) :: tAuxField(:)

AuxField variable to fill on target GHOST elements

type(mus_scheme_layout_type), intent(in) :: layout

the layout used

integer, intent(in) :: nTargets

List of target elements ( their position in depSource list )

integer, intent(in) :: targetList(nTargets)
type(mus_physics_type), intent(in) :: physics

physics type to convert lattice to physics SI unit and vice versa

type(tem_time_type), intent(in) :: time

time required to compute viscosity on target element barycenter

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of all derive variable in varSys for all fields