Inherited from XSession,
Inherited by NULL
Friend class NULL
Description
LsdynaSession类用于读取LsDyna的结果重建结果模型,根据几何和拓扑关系识别碎片特征,根据粒子点云的坐标重建包络空间的几何外形,并提取相关数据进行分析计算获取特征参数。
Members
Public interface
-
-
void
init(XDocument * doc)
static const char *
name()
-
void
readKModel(const char * kFile,int interceptID = 0)
-
-
-
-
-
-
-
-
-
-
-
Private interface
-
-
-
-
-
double
calcProjectArea(const XSolid * s, const double * x, const double * y, const double *dir, const double * center)
double
calcProjectAreaGPU(const XSolid * s, const XObBox * obb, int axis, IMainFrame * gpuFrame)
-
-
-
-
double
calcCylinderPath(const double * zAxis, vector<const XNode*> * damageNodes, double * center)
-
-
-
-
-
void
collectInvalidElements(const XPart * p, vector<const XElement *> * els, vector<const XElement *> * maxRegion)
-
-
XDocument * m_pDoc
会话所属的文档对象
XModel * m_pRefMdl
原始模型
XModel * m_pRltMdl
结果模型
XMemPool * m_pSessionMem
会话内存空间
MaterialManager * m_pMats
材料对象管理器
MaterialEntryManager * m_pMatEntry
材料子项管理器
XMap * m_pMatPartMap
XHash<ElemData> m_pElemDatas
XHash<NodeData> m_pNodeDatas
XHash<PartVelocityData> m_pEKVParts
const XGeometry * m_pPlateCurveFace
Vector3r m_interceptDir
Vector3r m_targetTop
Vector3r m_targetAxis
Vector3r m_EKVelocity
ulong m_ulStartSphID
vector<XPoint> m_pParticles
unordered_set<string> m_pCases
FeatureCylinder * m_pInterceptCyl
LsdynaSession(XDocument * doc = 0)
function: 构造函数
parameters:
[i] XDocument * doc = 0: 会话所属文档对象,可为空
return value: 无
~LsdynaSession()
function: 析构函数
parameters: NULL
return value: 无
void init(XDocument * doc)
function: 初始化会话的上下文
parameters:
[i] XDocument * doc: 会话所属文档对象
return value: 无
static const char * name()
function: 获取会话类型标识
parameters: NULL
return value: 会话类型标识
const char * getName() const
function: 获取会话名称
parameters: NULL
return value: 会话名称
void readKModel(const char * kFile)
function: 读取K文件构建原始模型
parameters:
[i] const char * kFile: K文件路径
[i] int interceptID = 0: 交会ID(用于调试)
return value: 无
void readResult(const char * rFile)
function: 读取结果数据构建结果模型
parameters:
[i] const char * rFile: 结果文件路径
return value: 无
void exportDebrisParam(const char * dFile, IMainFrame * uiFrame, bool bTarget)
function: 计算并输出碎片的特征参数
parameters:
[i] const char * dFile: 输出文件路径
[i] IMainFrame * uiFrame: 框架对象
[i] bool bTarget: 是否输出目标碎片,否则输出EKV碎片
return value: 无
void exportModelParam(const char * dFile, bool bExistTargetAxis = true)
function: 分析并输出模型参数
parameters:
[i] const char * dFile: 输出文件路径
[i] bool bExistTargetAxis = true: 是否存在目标轴
return value: 无
void exportModelDamage(const char * dFile)
function: 分析并输出目标毁伤参数
parameters:
[i] const char * dFile: 输出文件路径
return value: 无
void exportDebrisCloudFeature(const char * dFile)
function: 分析并输出粒子云特征
parameters:
[i] const char * dFile: 输出文件路径
return value: 无
void exportSph(int stID, const char * fname)
function: 提取SPH数据并输出
parameters:
[i] int stID: 结果步ID号
[i] const char * fname: 输出文件路径
return value: 无
bool isModelReady() const
function: 检查模型是否已构建好
parameters: NULL
return value: 无
int readCases(vector<string> * cases)
function: 读取已分析的案例清单
parameters:
[i] vector<string> * cases: 案例文件列表
return value: 案例文件的个数
void appendCase(const char * caseName)
function: 添加当前分析到案例清单中
parameters:
[i] const char * caseName: 当前的分析名称
return value: 无
void exportModelDamage_Cubic(const char * dFile)
function: 输出立方体外形的模型毁伤参数
parameters:
[i] const char * dFile: 输出文件路径
return value: 无
void clear()
function: 清空会话数据
parameters: NULL
return value: 无
void updateElemData()
function: 更新模型单元数据
parameters: NULL
return value: 无
void updateEKVParts(Vector3r * v)
function: 更新EKV部件数据
parameters:
[o] Vector3r * v: 质量最小部件的相对速度
return value: 无
Vector3r calcElemVelocity(const XElement* el)
function: 计算单元的速度
parameters:
[i] const XElement* el: 单元对象
return value: 单元速度
double calcElemPressure(const XElement* el)
function: 计算单元压力
parameters:
[i] const XElement* el: 单元对象
return value: 单元压力
double calcFramentPressure(const XSolid * s)
function: 计算碎片压力
parameters:
[i] const XSolid * s: 碎片实体对象
return value: 无
double calcProjectArea(const XSolid * s, const double * x, const double * y, const double *dir, const double * center)
double calcProjectAreaGPU(const XSolid * s, const XObBox * obb, int axis, IMainFrame * gpuFrame)
void createShapeCurveFace(XGeometry * shapeFace)
function: 创建曲面
parameters:
[i] XGeometry * shapeFace: 曲面对象
return value: 无
bool isBrokenFacet(const XElement * rElem)
void calcInterceptInclinedCone(FeatureInclinedCone * fInclinedCone)
function: 计算交会的包络圆锥面
parameters:
[i] FeatureInclinedCone * fInclinedCone: 交会的包络圆锥面
return value: 无
void calcInterceptCylinder(FeatureCylinder * fCyl)
function: 计算交会的包络圆柱面
parameters:
[i] FeatureCylinder * fCyl: 交会的包络圆柱面
return value: 无
double calcCylinderPath(const double * zAxis, vector<const XNode*> * damageNodes, double * center)
function: 计算圆柱通道参数
parameters:
[i] const double * zAxis: EKV的中心轴
[i] vector<const XNode*> * damageNodes: 失效的节点
[i] double * center: 通道中心
return value: 圆柱通道的半径
void findTargetAxis()
function: 计算目标的中心轴
parameters: NULL
return value: 无
bool calcCylDamageOnPart(ulong pid, PartDamage * damage)
bool calcConeDamageOnPart(ulong pid, FeatureInclinedCone * cone, PartDamage * damage)
void calcDebrisCloudFeature(DebrisFeature * fet)
function: 计算粒子云特征参数
parameters:
[i] DebrisFeature * fet: 粒子云特征参数
return value: 无
void collectValidParticles(vector<XPoint> * particles)
function: 获取有效的粒子云坐标
parameters:
[i] vector<XPoint> * particles: 有效的粒子云坐标
return value: 无
void collectInvalidElements(const XPart * p, vector<const XElement *> * els, vector<const XElement *> * maxRegion)
function: 获取失效单元数组
parameters:
[i] const XPart * p: 部件对象
[i] vector<const XElement *> * els: 失效单元数组
[i] vector<const XElement *> * maxRegion: 失效单元最外围区域的单元数组
return value: 无
void collectInvalidNodesFromSeed(const XNode * seedNode, vector<const XNode*> * nodes)
const XSolid * getMainSolid(ulong pid)
function: 获取部件剩下的主体对象
parameters:
[i] ulong pid: 部件ID
return value: 主体对象