常见粒子属性的获取与输出
获取粒子信息
BaseParticles &fluid_axial_particles = fluid_axial_observer.getBaseParticles();
Vecd *pos_axial = fluid_axial_particles.ParticlePositions();
Real *vol = fluid_axial_particles.VolumetricMeasures()
UnsignedInt originalID = fluid_axial_particles.ParticleOriginalIds();
UnsignedInt sortedID = fluid_axial_particles.ParticlesortedIds();
Vecd *vel_axial = fluid_axial_particles.getVariableDataByName<Vecd>("Velocity");所有DiscreteVariable,都能用getVariableDataByName获取到。只不过对于position、volume、originalID、sortedID这些变量,可以用更直接的接口。
输出粒子信息
BodyStatesRecordingToVtp body_states_recording(sph_system);
body_states_recording.addToWrite<Real>(water_block, "Pressure");
body_states_recording.addToWrite<Real>(water_block, "Density");
body_states_recording.addToWrite<Vecd>(water_block, "Force");
body_states_recording.addToWrite<Vecd>(water_block, "ForcePrior");
body_states_recording.addToWrite<Real>(water_block, "Mass");
body_states_recording.addToWrite<Real>(water_block, "VolumetricMeasure");基础/通用(几乎所有 body 都能见到)
"Position"(Vecd):粒子位置(见 base_particles.cpp)。"VolumetricMeasure"(Real):体积度量(体粒子=体积;面粒子=面积;线粒子=长度),常用于质量/积分(同上)。"Density"(Real):密度(同上)。"Mass"(Real):质量(通常由rho * Vol初始化得到)(同上)。"Velocity"(Vecd):速度(很多材料/动力学会注册,见 base_material.cpp)。"Acceleration"(Vecd):加速度(同上)。"OriginalID"(UnsignedInt):生成时的原始粒子编号(默认就被加入输出,见 base_particles.cpp)。"Force"(Vecd):力(动力学里常作为合力/中间量注册)。"ForcePrior"(Vecd):先验/外加/预处理的力项(很多积分框架会把某些力先累加到这里,再进入后续更新)。
流体里很常写的
"Pressure"(Real):压力(见 fluid_integration.hpp)。"DensityChangeRate"(Real):$\mathrm{d}\rho/\mathrm{d}t$(同上)。"VelocityGradient"(Matd):速度梯度 $\nabla \mathbf{v}$(常用于后处理/验证,见 continuum_integration.hpp)。"VorticityInner"(AngularVecd):涡量/旋度相关量(见 viscous_dynamics.cpp)。"ViscousForce"(Vecd):黏性力(见 viscous_dynamics.hpp)。(表面张力相关)
"ColorGradient"(Vecd),"SurfaceTensionStress"(Matd),"SurfaceTensionForce"(Vecd),"NormDirection"(Vecd)(见 surface_tension.cpp 和 surface_tension.hpp)。(非牛顿)
"ElasticStress"(Matd),"ElasticStressChangeRate"(Matd),"VariableViscosity"(Real)(见 non_newtonian_dynamics.cpp)。
固体/薄壳(shell/plate/beam)里很常写的
"NormalDirection"(Vecd):法向(例如边界/壳体粒子常用)。"DeformationGradient"(Matd):形变梯度 $\mathbf{F}$(见 thin_structure_dynamics.cpp)。"DeformationRate"(Matd):$\dot{\mathbf{F}}$(同上)。"StressPK1OnParticle"(Matd):一阶 Piola-Kirchhoff 应力(见 elastic_dynamics.cpp)。"Rotation","AngularVelocity","AngularAcceleration"(Vecd):转动相关状态量(薄结构里常见,同上 thin_structure_dynamics)。(曲率相关,正好和你这个算例对应)
"1stPrincipleCurvature","2ndPrincipleCurvature"(Real)"Average1stPrincipleCurvature","Average2ndPrincipleCurvature"(Real) 这些在薄壳曲率计算/邻域里用到(见 thin_structure_dynamics.cpp)。你当前例子里就在写"Average1stPrincipleCurvature"(见 channel_flow_shell.cpp)。
“指示器/几何辅助量”(排查自由面、边界层、体部件很有用)
"Indicator"(int):自由面/内部粒子指示(见 surface_indication.hpp)。"PositionDivergence"(Real):位置散度类指标(同上)。"SignedDistance","InitialSignedDistance"(Real):符号距离场及初值(见 general_geometric.cpp)。"DistanceFromWall"(Vecd):到墙距离/方向相关量(见 near_wall_boundary.cpp)。"SmearedSurface","PreviousSurfaceIndicator"(int):表面涂抹/前一步表面指示(见 surface_indication.cpp)。
Last updated
Was this helpful?