Interpolation header to load confiugration and type definition
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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, | private, | parameter | :: | q00 | = | 9 |
This is the interface for all interpolation methods that
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 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 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 |
This is the interface for all interpolation methods that
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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(:) | array of SOURCE elements |
||
real(kind=rk), | intent(inout) | :: | tVal(:) | array of TARGET GHOST elements |
||
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 |
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
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 |
Contains stencil for interpolation
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=labelLen), | private | :: | method | name of the order 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. |
definition of the used interpolation method
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 | :: | weightedAvgStencil | stencil for weighted average interpolation |
Initialize stencil for weighted average interpolation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ||||
integer, | intent(in) | :: | nSources |
Read in the type of interpolation scheme
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_interpolation_type), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | nDims | |||
integer, | intent(in) | :: | ||||
character(len=*), | intent(in) | :: | layout |
Dump interpolation method to lua
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Dump interpolation method to logUnit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_interpolation_config_type), | intent(in) | :: | me | interpolation type to dump info to |
||
integer, | intent(in) | :: | outUnit | File unit to write to |