transport velocity correction
基类
模板TransportVelocityCorrection<Base, DataDelegationType, KernelCorrectionType, ParticleScope>。继承于LocalDynamics+ DataDelegationType。
Inner特化:对同一fluid body内部邻域做修正
模板TransportVelocityCorrection<Inner<ResolutionType, LimiterType>, CommonControlTypes...>。继承基类(固定用DataDelegateInner)。
using TransportVelocityCorrectionInner=TransportVelocityCorrection<Inner<SingleResolution, LimiterType>, NoKernelCorrection, ParticleScope>;
Contact特化:接触边界 wall,只需要 wall 的体积度量
模板TransportVelocityCorrection<Contact<Boundary>, CommonControlTypes...>。从每个接触body取wall_Vol_("VolumetricMeasure")并累加对kernel_gradient_integral_的贡献。
Contact 特化 2:接触“其他相/其他流体体”,每个接触体有自己的 kernel correction
模板TransportVelocityCorrection<Contact<>, KernelCorrectionType, ...>。为每个contact body创建contact_kernel_corrections_与 contact_Vol_,用于多相/多流体间的TVC修正项。
复合类型
BaseTransportVelocityCorrectionComplex
ComplexInteraction<TransportVelocityCorrection<Inner<ResolutionType, LimiterType>, Contact<Boundary>>, CommonControlTypes...>
Inner<...>, Contact<Boundary>
?
?
?
?
TransportVelocityCorrectionComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, NoLimiter, NoKernelCorrection, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
NoLimiter
NoKernelCorrection
?
TransportVelocityCorrectionCorrectedComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, NoLimiter, LinearGradientCorrection, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
NoLimiter
LinearGradientCorrection
?
TransportVelocityCorrectionCorrectedForOpenBoundaryFlowComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, NoLimiter, LinearGradientCorrectionWithBulkScope, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
NoLimiter
LinearGradientCorrectionWithBulkScope
?
TransportVelocityLimitedCorrectionCorrectedForOpenBoundaryFlowComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, TruncatedLinear, LinearGradientCorrectionWithBulkScope, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
TruncatedLinear
LinearGradientCorrectionWithBulkScope
?
TransportVelocityLimitedCorrectionComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, TruncatedLinear, NoKernelCorrection, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
TruncatedLinear
NoKernelCorrection
?
TransportVelocityLimitedCorrectionCorrectedComplex
BaseTransportVelocityCorrectionComplex<SingleResolution, TruncatedLinear, LinearGradientCorrection, ParticleScope>
Inner<...>, Contact<Boundary>
SingleResolution
TruncatedLinear
LinearGradientCorrection
?
TransportVelocityCorrectionComplexAdaptive
BaseTransportVelocityCorrectionComplex<AdaptiveResolution, NoLimiter, NoKernelCorrection, ParticleScope>
Inner<...>, Contact<Boundary>
AdaptiveResolution
NoLimiter
NoKernelCorrection
?
BaseMultiPhaseTransportVelocityCorrectionComplex
ComplexInteraction<TransportVelocityCorrection<Inner<ResolutionType, NoLimiter>, Contact<>, Contact<Boundary>>, CommonControlTypes...>
Inner<...>, Contact<>, Contact<Boundary>
?
NoLimiter
?
?
MultiPhaseTransportVelocityCorrectionComplex
BaseMultiPhaseTransportVelocityCorrectionComplex<SingleResolution, NoKernelCorrection, ParticleScope>
Inner<...>, Contact<>, Contact<Boundary>
SingleResolution
NoLimiter
NoKernelCorrection
?
四类“控制维度”:决定变体适用范围
粒子范围ParticleScope
决定哪些粒子参与修正(“适用范围”最直接的开关)。定义在particle_functors.h。
AllParticles:全体粒子都修正BulkParticles:IndicatedParticles<0>,只修正Indicator==0的“体内/主体”粒子(常用于排除buffer/open boundary粒子)IndicatedParticles<k> / NotIndicatedParticles<k>:按Indicator筛选。代码里所有 interaction/update 都先判断 within_scope_(index_i),不在范围内就跳过
核梯度修正KernelCorrectionType
决定内/接触项里用什么“核修正矩阵/系数”。定义在particle_functors.h。
NoKernelCorrection:恒为 1(不做核修正)LinearGradientCorrection:返回B_[i]("LinearGradientCorrectionMatrix")LinearGradientCorrectionWithBulkScope:关键用于open boundary/buffer 场景:在operator()(j,i)中,若j不属于bulk,则用B_[i]替代B_[j],避免边界/缓冲粒子带来的不稳定核修正传播到主体
限制修正幅度LimiterType
更稳,但更“保守”。定义在common_functors.h。
NoLimiter:不限制(返回 1)TruncatedLinear:根据measure(这里是kernel_gradient_integral的平方范数)给一个截断线性比例,抑制过大位移修正
分辨率ResolutionType
SingleResolution: $h$比例恒为 1AdaptiveResolution: 比例来自粒子变量
Last updated