mus_interpolation_method_type Derived Type

type, public :: mus_interpolation_method_type

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

Why do we need different intpRoutine for fillFinerFromMe? The order of interpolation to finer depends on available number of coarser source elements so for every order we use different interpolation routines. We start with user defined interpolation order and If nMinSources for that order is not found then we fall back to lower order Weighted average will be the lowest level for which nMinSources = 1


type~~mus_interpolation_method_type~~InheritsGraph type~mus_interpolation_method_type mus_interpolation_method_type type~tem_intpmatrixlsf_type tem_intpMatrixLSF_type type~mus_interpolation_method_type->type~tem_intpmatrixlsf_type intpMat_forLSF

Inherited by

type~~mus_interpolation_method_type~~InheritedByGraph type~mus_interpolation_method_type mus_interpolation_method_type type~mus_interpolation_type mus_interpolation_type type~mus_interpolation_type->type~mus_interpolation_method_type fillFinerFromME, fillMineFromFiner type~mus_scheme_type mus_scheme_type type~mus_scheme_type->type~mus_interpolation_type intp type~mus_varsys_solverdata_type mus_varSys_solverData_type type~mus_varsys_solverdata_type->type~mus_scheme_type scheme type~mus_varsys_data_type mus_varSys_data_type type~mus_varsys_data_type->type~mus_varsys_solverdata_type solverData



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