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_aux_module mus_aux_module module~mus_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_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_interpolate_module program~musubi musubi program~musubi->module~mus_aux_module module~mus_control_module mus_control_module program~musubi->module~mus_control_module module~mus_program_module mus_program_module program~musubi->module~mus_program_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 program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_construction_module program~mus_harvesting->module~mus_hvs_aux_module program~mus_harvesting->module~mus_hvs_construction_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

Contents


Functions

private 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

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, tVal, nTargets, targetList, nScalars)

Interpolate auxiliary field from coarse source to fine target

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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

real(kind=rk), intent(inout) :: tVal(:)

State vector of TARGET GHOST elements

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, tVal, nTargets, targetList, nScalars)

Interpolate auxiliary field from coarse source to fine target

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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

real(kind=rk), intent(inout) :: tVal(:)

State vector of TARGET GHOST elements

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

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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_feq_fneq(method, fieldProp, tLevelDesc, level, sState, sNeigh, snSize, sAuxField, tState, tNeigh, tnSize, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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_feq_fneq(method, fieldProp, tLevelDesc, level, sState, sNeigh, snSize, sAuxField, tState, tNeigh, tnSize, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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_feq_fneq(method, fieldProp, tLevelDesc, level, sState, sNeigh, snSize, sAuxField, tState, tNeigh, tnSize, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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_feq_fneq(method, fieldProp, tLevelDesc, level, sState, sNeigh, snSize, sAuxField, tState, tNeigh, tnSize, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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_feq_fneq(method, fieldProp, tLevelDesc, level, sState, sNeigh, snSize, sAuxField, tState, tNeigh, tnSize, layout, nTargets, targetList, physics, time, varSys, derVarPos)

Fill fine ghost from coarse fluid by quadratic interpolation for D2Q9 stencil. 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 acoustic quadratic interpolation.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(mus_interpolation_method_type), intent(inout) :: 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) :: sNeigh(:)
integer, intent(in) :: snSize
real(kind=rk), intent(inout) :: sAuxField(:)

AuxField variable to read rho and vel from source elements

real(kind=rk), intent(inout) :: tState(:)

State vector of TARGET GHOST elements

integer, intent(in) :: tNeigh(:)
integer, intent(in) :: tnSize
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