mus_interpolate_quadratic_module Module

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


Uses

Used by

  • module~~mus_interpolate_quadratic_module~~UsedByGraph module~mus_interpolate_quadratic_module mus_interpolate_quadratic_module module~mus_interpolate_module mus_interpolate_module module~mus_interpolate_module->module~mus_interpolate_quadratic_module module~mus_interpolate_d2q9_module mus_interpolate_d2q9_module module~mus_interpolate_d2q9_module->module~mus_interpolate_quadratic_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


Functions

public pure function mus_interpolate_quad2D_leastSq(srcMom, targetCoord, LSFmat, nSources, nVals) result(phi)

Biquadratic interpolation for a vector quantity phi

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: srcMom(nVals,nSources)

source values of the momentum on the square corners

real(kind=rk), intent(in) :: targetCoord(3)

interpolation location within the square

type(tem_matrix_type), intent(in) :: LSFmat

matrix for least square fit

integer, intent(in) :: nSources

Number of source elements

integer, intent(in) :: nVals

number of quantities to interpolation

Return Value real(kind=rk)(nVals)

interpolated value

public pure function biquadratic_interpolate(f, x, y) result(fOut)

2D Biquadratic interpolation for fill fine from coarse. array f contains function values at 9 coarse elements. they are arranged as: 7 8 9 4 5 6 1 2 3 position of element 1 is set as original, i.e. (0,0), element 9 is set as (1,1) x,y are the coordinates of target position. fOut is the interpolated value at target position

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: f(9)
real(kind=rk), intent(in) :: x
real(kind=rk), intent(in) :: y

Return Value real(kind=rk)

private function mus_interpolate_quad3D_leastSq(srcMom, targetCoord, LSFmat, nSources, nVals) result(phi)

Triquadratic interpolation for a vector quantity phi Each phi corresponds to each moment

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: srcMom(nVals,nSources)

source values of the momentum on the square corners

real(kind=rk), intent(in) :: targetCoord(3)

interpolation location within the square

type(tem_matrix_type), intent(in) :: LSFmat

matrix for least square fit

integer, intent(in) :: nSources

Number of source elements

integer, intent(in) :: nVals

number of quantities to interpolation

Return Value real(kind=rk)(nVals)

interpolated value


Subroutines

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

Interpolate auxiliary field from coarse source to fine target

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 fillArbiFinerGhostsFromMe_quad2D(method, tLevelDesc, level, stencil, sVal, snSize, tVal, tnSize, nTargets, targetList, nScalars)

Interpolate auxiliary field from coarse source to fine target

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 fillFinerGhostsFromMe_quad(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate all moments using quadratic least square fit 3. Store target auxilary field 4. Compute viscosity on target element and compute source and target omega 5. Get nonEq scaling factor depeding on scheme layout and relaxation 6. Calculate Equilibrium and nonEquilibrium 7. calculate target: Eq + Scale * nonEquilibrium This routine is used by 3D acoustic quadratic interpolation.

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_quadLES(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate all moments using quadratic least square fit 3. Store target auxilary field 4. Compute viscosity on target element and compute source and target omega 5. Get nonEq scaling factor depeding on scheme layout and relaxation 6. Calculate Equilibrium and nonEquilibrium 7. calculate target: Eq + Scale * nonEquilibrium This routine is used by 3D acoustic quadratic interpolation.

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_quadIncomp(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate all moments using quadratic least square fit 3. Store target auxilary field 4. Get viscosity on target element and compute source and target omega 5. Get nonEq scaling factor depeding on scheme layout and relaxation 6. Convert moments to PDF 7. Calculate target: Eq + Scale * nonEquilibrium This routine is used by 3D acoustic quadratic interpolation for incompressible model.

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_quadIncompLES(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate all moments using quadratic least square fit 3. Store target auxilary field 4. Compute viscosity on target element and compute source and target omega 5. Get nonEq scaling factor depeding on scheme layout and relaxation 6. Calculate Equilibrium and nonEquilibrium 7. Calculate target: Eq + Scale * nonEquilibrium This routine is used by 3D acoustic quadratic interpolation for incompressible LES model.

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_quad2D(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate moments (den, vel, tau) (10 moments for 3D and 6 moments for 2D) 3. calculate fEq and use it to calculate high order moments 4. convert moments to PDF This routine is used by 3D acoustic quadratic interpolation.

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_quad2DIncomp(method, fieldProp, tLevelDesc, level, sState, snSize, tState, tnSize, tAuxField, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation. 1. Compute moments for all source elements, save in momBuf 2. For each target, interpolate moments (den, vel, tau) (10 moments for 3D and 6 moments for 2D) 3. calculate fEq and use it to calculate high order moments 4. convert moments to PDF This routine is used by 3D acoustic quadratic interpolation for incompressible model.

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