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 | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |