mus_interpolate_header_module Module

Interpolation header to load confiugration and type definition


Uses

  • module~~mus_interpolate_header_module~~UsesGraph module~mus_interpolate_header_module mus_interpolate_header_module module~tem_debug_module tem_debug_module module~mus_interpolate_header_module->module~tem_debug_module module~mus_dervarpos_module mus_derVarPos_module module~mus_interpolate_header_module->module~mus_dervarpos_module module~tem_varsys_module tem_varSys_module module~mus_interpolate_header_module->module~tem_varsys_module module~tem_tools_module tem_tools_module module~mus_interpolate_header_module->module~tem_tools_module module~tem_logging_module tem_logging_module module~mus_interpolate_header_module->module~tem_logging_module module~tem_param_module tem_param_module module~mus_interpolate_header_module->module~tem_param_module module~tem_construction_module tem_construction_module module~mus_interpolate_header_module->module~tem_construction_module module~aotus_module aotus_module module~mus_interpolate_header_module->module~aotus_module module~mus_directions_module mus_directions_module module~mus_interpolate_header_module->module~mus_directions_module module~mus_physics_module mus_physics_module module~mus_interpolate_header_module->module~mus_physics_module module~tem_matrix_module tem_matrix_module module~mus_interpolate_header_module->module~tem_matrix_module module~tem_aux_module tem_aux_module module~mus_interpolate_header_module->module~tem_aux_module module~tem_stencil_module tem_stencil_module module~mus_interpolate_header_module->module~tem_stencil_module module~aot_table_module aot_table_module module~mus_interpolate_header_module->module~aot_table_module module~mus_scheme_layout_module mus_scheme_layout_module module~mus_interpolate_header_module->module~mus_scheme_layout_module module~aot_out_module aot_out_module module~mus_interpolate_header_module->module~aot_out_module module~env_module env_module module~mus_interpolate_header_module->module~env_module module~tem_time_module tem_time_module module~mus_interpolate_header_module->module~tem_time_module module~mus_field_prop_module mus_field_prop_module module~mus_interpolate_header_module->module~mus_field_prop_module module~mus_dervarpos_module->module~tem_varsys_module module~mus_dervarpos_module->module~tem_aux_module module~mus_dervarpos_module->module~tem_stencil_module module~mus_dervarpos_module->module~mus_scheme_layout_module module~mus_dervarpos_module->module~env_module module~mus_physics_module->module~tem_tools_module module~mus_physics_module->module~tem_logging_module module~mus_physics_module->module~aotus_module module~mus_physics_module->module~tem_aux_module module~mus_physics_module->module~aot_table_module module~mus_physics_module->module~aot_out_module module~mus_physics_module->module~env_module module~treelmesh_module treelmesh_module module~mus_physics_module->module~treelmesh_module module~tem_geometry_module tem_geometry_module module~mus_physics_module->module~tem_geometry_module module~mus_scheme_layout_module->module~tem_tools_module module~mus_scheme_layout_module->module~tem_logging_module module~mus_scheme_layout_module->module~tem_param_module module~mus_scheme_layout_module->module~aotus_module module~mus_scheme_layout_module->module~tem_aux_module module~mus_scheme_layout_module->module~tem_stencil_module module~mus_scheme_layout_module->module~aot_table_module module~mus_scheme_layout_module->module~aot_out_module module~mus_scheme_layout_module->module~env_module module~tem_comm_env_module tem_comm_env_module module~mus_scheme_layout_module->module~tem_comm_env_module mpi mpi module~mus_scheme_layout_module->mpi module~mus_moments_type_module mus_moments_type_module module~mus_scheme_layout_module->module~mus_moments_type_module module~tem_grow_array_module tem_grow_array_module module~mus_scheme_layout_module->module~tem_grow_array_module module~tem_dyn_array_module tem_dyn_array_module module~mus_scheme_layout_module->module~tem_dyn_array_module module~mus_field_prop_module->module~tem_logging_module module~mus_field_prop_module->module~mus_physics_module module~mus_field_prop_module->module~tem_aux_module module~mus_field_prop_module->module~aot_out_module module~mus_field_prop_module->module~env_module module~mus_scheme_header_module mus_scheme_header_module module~mus_field_prop_module->module~mus_scheme_header_module module~mus_species_module mus_species_module module~mus_field_prop_module->module~mus_species_module module~mus_poisson_module mus_poisson_module module~mus_field_prop_module->module~mus_poisson_module module~flu_binding flu_binding module~mus_field_prop_module->module~flu_binding module~mus_fluid_module mus_fluid_module module~mus_field_prop_module->module~mus_fluid_module

Used by

  • module~~mus_interpolate_header_module~~UsedByGraph module~mus_interpolate_header_module mus_interpolate_header_module module~mus_interpolate_module mus_interpolate_module module~mus_interpolate_module->module~mus_interpolate_header_module module~mus_interpolate_quadratic_module mus_interpolate_quadratic_module module~mus_interpolate_quadratic_module->module~mus_interpolate_header_module module~mus_interpolate_d2q9_module mus_interpolate_d2q9_module module~mus_interpolate_d2q9_module->module~mus_interpolate_header_module module~mus_interpolate_d3q27_module mus_interpolate_d3q27_module module~mus_interpolate_d3q27_module->module~mus_interpolate_header_module module~mus_interpolate_average_module mus_interpolate_average_module module~mus_interpolate_average_module->module~mus_interpolate_header_module module~mus_interpolate_compact_module mus_interpolate_compact_module module~mus_interpolate_compact_module->module~mus_interpolate_header_module module~mus_interpolate_debug_module mus_interpolate_debug_module module~mus_interpolate_debug_module->module~mus_interpolate_header_module module~mus_scheme_type_module mus_scheme_type_module module~mus_scheme_type_module->module~mus_interpolate_header_module module~mus_interpolate_tools_module mus_interpolate_tools_module module~mus_interpolate_tools_module->module~mus_interpolate_header_module module~mus_scheme_module mus_scheme_module module~mus_scheme_module->module~mus_interpolate_header_module module~mus_interpolate_d3q19_module mus_interpolate_d3q19_module module~mus_interpolate_d3q19_module->module~mus_interpolate_header_module module~mus_interpolate_verify_module mus_interpolate_verify_module module~mus_interpolate_verify_module->module~mus_interpolate_header_module module~mus_interpolate_linear_module mus_interpolate_linear_module module~mus_interpolate_linear_module->module~mus_interpolate_header_module

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, public, parameter:: no_intp =-1

Interpolation parameter to choose fillFinerFromMe

integer, public, parameter:: weighted_average =0
integer, public, parameter:: linear =1
integer, public, parameter:: quadratic =2
integer, public, parameter:: compact =3
integer, private, parameter:: q00 =9

Abstract Interfaces

abstract interface

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

    This is the interface for all interpolation methods that

    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 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 analytical solution for TGV case

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

    scheme variable system

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

    position of all derive variable in varSys

abstract interface

  • private subroutine intpRoutine_arbitraryVal(method, tLevelDesc, level, stencil, sVal, snSize, tVal, tnSize, nTargets, targetList, nScalars)

    This is the interface for all interpolation methods that

    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(:)

    array of SOURCE elements

    integer, intent(in) :: snSize

    size of sVal

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

    array of TARGET GHOST elements

    integer, intent(in) :: tnSize

    size of tVal

    integer, intent(in) :: nTargets

    List of target elements ( their position in depSource list )

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

    position in total list - offset

    integer, intent(in) :: nScalars

    Number of scalars to interpolate


Derived Types

This data types contains intpRoutine function pointer for FillFiner and FillCoarser. For fillFiner, it build least square fit matrix for linear quadratic interpolations For fillCoarser: currently we do simple average

Read more…

Components

TypeVisibilityAttributesNameInitial
procedure(intpRoutine), private, pointer:: do_intp=> null()

Routine to interpolate coarse to fine for ghostFromCoarser elements and interpolate fine to coarse for ghostFromFiner elements. Sets pdf for ghost elements by f_eq + f_neq The moments required to compute equilibrium function are obtained from auxField array and the auxField of ghost elements are interpolate seperately using do_intpArbitraryField

procedure(intpRoutine_arbitraryVal), private, pointer:: do_intpArbiVal=> null()

Routine to interpolate coarse to fine and fine to coarse for arbitrary variables

type(tem_intpMatrixLSF_type), private :: intpMat_forLSF

Matrix entries for linear/Quadratic interpolation least square fit ((A^T)A)^-1*(A^T) Size: (6,9) for D2Q9 stencil Size: (10,QQ) for D3Q19 and D3Q27

integer, private :: nMinSources

how many source elements are required by this interpolation order

integer, private :: nMaxSources

Max number of sources amoung target ghosts Computed in mus_contruction::mus_intp_complete_coarseDep

Contains stencil for interpolation

Components

TypeVisibilityAttributesNameInitial
logical, private :: isActive =.false.

Is active only for specific layouts like d2q9, d3q19, d3q27

integer, private, allocatable:: neighDir(:,:)

cxDir for interpolation stencil for depFromCoarser

Contains information loaded from config file

Components

TypeVisibilityAttributesNameInitial
character(len=labelLen), private :: label

name of the interpolation method for fillFinerFromMe

integer, private :: order

Order of the interpolation for fillFinerFromMe

character(len=labelLen), private :: weights_method ='linear_distance'

name of used weighting method

integer, private :: IDW_powerfac =6

Power factor for inverse distance weighting

logical, private :: useComputeStencil =.false.

Stencil for linear interpolation. By default use stencil from weighted average

logical, private :: testInterpolation =.false.

Interpolation test by comparing against the initial condition

logical, private :: testEachElement =.false.
logical, private :: testFluids =.false.
logical, private :: noIntpFromFiner =.false.
logical, private :: noIntpFromCoarser =.false.

type, public :: mus_interpolation_type

definition of the used interpolation method

Components

TypeVisibilityAttributesNameInitial
type(mus_interpolation_config_type), private :: config

Information loaded from config file

type(mus_interpolation_method_type), private, allocatable:: fillFinerFromME(:)

Interpolation routines to fillFiner Size: interpolation order

type(mus_interpolation_method_type), private :: fillMineFromFiner

Interpolation routines to fillCoarser

type(mus_interpolation_stencil_type), private :: compactStencil

stencil for compact interpolation

type(mus_interpolation_stencil_type), private :: weightedAvgStencil

stencil for weighted average interpolation


Functions

private function init_cxDirCompact(QQ) result(me)

Initialize compact setencil

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: QQ

Return Value integer(4,8)

private function init_cxDirWeightedAvg(QQ, nSources) result(me)

Initialize stencil for weighted average interpolation

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: QQ
integer, intent(in) :: nSources

Return Value integer(nSources,8)


Subroutines

public subroutine mus_load_interpolate(me, conf, parent)

Read in the type of interpolation scheme

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_interpolation_config_type), intent(out) :: me

interpolation type to load info to

type(flu_state) :: conf

lua state to load from

integer, intent(in), optional :: parent

optional parent table to load from

public subroutine mus_set_nSources(me, nDims, QQ, layout)

Arguments

TypeIntentOptionalAttributesName
type(mus_interpolation_type), intent(inout) :: me
integer, intent(in) :: nDims
integer, intent(in) :: QQ
character(len=*), intent(in) :: layout

public subroutine mus_interpolate_out(me, conf)

Dump interpolation method to lua

Arguments

TypeIntentOptionalAttributesName
type(mus_interpolation_type), intent(in) :: me

interpolation type to dump info to

type(aot_out_type), intent(inout), optional :: conf

aotus type handling the output to the file in lua format

private subroutine interpolate_dump(me, outUnit)

Dump interpolation method to logUnit

Arguments

TypeIntentOptionalAttributesName
type(mus_interpolation_config_type), intent(in) :: me

interpolation type to dump info to

integer, intent(in) :: outUnit

File unit to write to