User Tools

Site Tools


project:bit:lsdynasession



LsdynaSession

Inherited from XSession,

Inherited by NULL

Friend class NULL

Description

LsdynaSession类用于读取LsDyna的结果重建结果模型,根据几何和拓扑关系识别碎片特征,根据粒子点云的坐标重建包络空间的几何外形,并提取相关数据进行分析计算获取特征参数。

Members

Public interface

Private interface


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:
    1. [i] XDocument * doc = 0: 会话所属文档对象,可为空
  • return value: 无

~LsdynaSession()

  • function: 析构函数
  • parameters: NULL
  • return value: 无

void init(XDocument * doc)

  • function: 初始化会话的上下文
  • parameters:
    1. [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:
    1. [i] const char * kFile: K文件路径
    2. [i] int interceptID = 0: 交会ID(用于调试)
  • return value: 无

void readResult(const char * rFile)

  • function: 读取结果数据构建结果模型
  • parameters:
    1. [i] const char * rFile: 结果文件路径
  • return value: 无

void exportDebrisParam(const char * dFile, IMainFrame * uiFrame, bool bTarget)

  • function: 计算并输出碎片的特征参数
  • parameters:
    1. [i] const char * dFile: 输出文件路径
    2. [i] IMainFrame * uiFrame: 框架对象
    3. [i] bool bTarget: 是否输出目标碎片,否则输出EKV碎片
  • return value: 无

void exportModelParam(const char * dFile, bool bExistTargetAxis = true)

  • function: 分析并输出模型参数
  • parameters:
    1. [i] const char * dFile: 输出文件路径
    2. [i] bool bExistTargetAxis = true: 是否存在目标轴
  • return value: 无

void exportModelDamage(const char * dFile)

  • function: 分析并输出目标毁伤参数
  • parameters:
    1. [i] const char * dFile: 输出文件路径
  • return value: 无

void exportDebrisCloudFeature(const char * dFile)

  • function: 分析并输出粒子云特征
  • parameters:
    1. [i] const char * dFile: 输出文件路径
  • return value: 无

void exportSph(int stID, const char * fname)

  • function: 提取SPH数据并输出
  • parameters:
    1. [i] int stID: 结果步ID号
    2. [i] const char * fname: 输出文件路径
  • return value: 无

bool isModelReady() const

  • function: 检查模型是否已构建好
  • parameters: NULL
  • return value: 无

int readCases(vector<string> * cases)

  • function: 读取已分析的案例清单
  • parameters:
    1. [i] vector<string> * cases: 案例文件列表
  • return value: 案例文件的个数

void appendCase(const char * caseName)

  • function: 添加当前分析到案例清单中
  • parameters:
    1. [i] const char * caseName: 当前的分析名称
  • return value: 无

void exportModelDamage_Cubic(const char * dFile)

  • function: 输出立方体外形的模型毁伤参数
  • parameters:
    1. [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:
    1. [o] Vector3r * v: 质量最小部件的相对速度
  • return value: 无

Vector3r calcElemVelocity(const XElement* el)

  • function: 计算单元的速度
  • parameters:
    1. [i] const XElement* el: 单元对象
  • return value: 单元速度

double calcElemPressure(const XElement* el)

  • function: 计算单元压力
  • parameters:
    1. [i] const XElement* el: 单元对象
  • return value: 单元压力

double calcFramentPressure(const XSolid * s)

  • function: 计算碎片压力
  • parameters:
    1. [i] const XSolid * s: 碎片实体对象
  • return value: 无

double calcProjectArea(const XSolid * s, const double * x, const double * y, const double *dir, const double * center)

  • function: 计算投影面积
  • parameters:
    1. [i] const XSolid * s: 碎片实体对象
    2. [i] const double * x: x特征长度
    3. [i] const double * y: y特征长度
    4. [i] const double *dir: 投影方向
    5. [i] const double * center: 投影中心
  • return value: 碎片在指定方向上的投影面积

double calcProjectAreaGPU(const XSolid * s, const XObBox * obb, int axis, IMainFrame * gpuFrame)

  • function: 通过GPU渲染来计算投影面积
  • parameters:
    1. [i] const XSolid * s: 碎片实体对象
    2. [i] const XObBox * obb: 有向包围盒
    3. [i] int axis: 投影方向
    4. [i] IMainFrame * gpuFrame: GPU框架
  • return value: 碎片在指定方向上的投影面积

void createShapeCurveFace(XGeometry * shapeFace)

  • function: 创建曲面
  • parameters:
    1. [i] XGeometry * shapeFace: 曲面对象
  • return value: 无

bool isBrokenFacet(const XElement * rElem)

  • function: 判断单元是否有失效的面
  • parameters:
    1. [i] const XElement * rElem: 单元对象
  • return value: 如有失效的面返回true,否则返回false

void calcInterceptInclinedCone(FeatureInclinedCone * fInclinedCone)

  • function: 计算交会的包络圆锥面
  • parameters:
    1. [i] FeatureInclinedCone * fInclinedCone: 交会的包络圆锥面
  • return value: 无

void calcInterceptCylinder(FeatureCylinder * fCyl)

  • function: 计算交会的包络圆柱面
  • parameters:
    1. [i] FeatureCylinder * fCyl: 交会的包络圆柱面
  • return value: 无

double calcCylinderPath(const double * zAxis, vector<const XNode*> * damageNodes, double * center)

  • function: 计算圆柱通道参数
  • parameters:
    1. [i] const double * zAxis: EKV的中心轴
    2. [i] vector<const XNode*> * damageNodes: 失效的节点
    3. [i] double * center: 通道中心
  • return value: 圆柱通道的半径

void findTargetAxis()

  • function: 计算目标的中心轴
  • parameters: NULL
  • return value: 无

bool calcCylDamageOnPart(ulong pid, PartDamage * damage)

  • function: 计算圆柱面交会时目标部件上的毁伤
  • parameters:
    1. [i] ulong pid: 部件ID
    2. [i] PartDamage * damage: 部件毁伤参数
  • return value: 有毁伤返回true,否则返回false

bool calcConeDamageOnPart(ulong pid, FeatureInclinedCone * cone, PartDamage * damage)

  • function: 计算圆锥面交会时目标部件上的毁伤
  • parameters:
    1. [i] ulong pid: 部件ID
    2. [i] FeatureInclinedCone * cone: 圆锥面参数
    3. [i] PartDamage * damage: 部件毁伤参数
  • return value: 有毁伤返回true,否则返回false

void calcDebrisCloudFeature(DebrisFeature * fet)

  • function: 计算粒子云特征参数
  • parameters:
    1. [i] DebrisFeature * fet: 粒子云特征参数
  • return value: 无

void collectValidParticles(vector<XPoint> * particles)

  • function: 获取有效的粒子云坐标
  • parameters:
    1. [i] vector<XPoint> * particles: 有效的粒子云坐标
  • return value: 无

void collectInvalidElements(const XPart * p, vector<const XElement *> * els, vector<const XElement *> * maxRegion)

  • function: 获取失效单元数组
  • parameters:
    1. [i] const XPart * p: 部件对象
    2. [i] vector<const XElement *> * els: 失效单元数组
    3. [i] vector<const XElement *> * maxRegion: 失效单元最外围区域的单元数组
  • return value: 无

void collectInvalidNodesFromSeed(const XNode * seedNode, vector<const XNode*> * nodes)

  • function: 从种子节点搜索所有与它关联的失效节点
  • parameters:
    1. [i] const XNode * seedNode: 种子节点
    2. [i] vector<const XNode*> * nodes: 与种子节点关联的所有失效节点
  • return value: 无

const XSolid * getMainSolid(ulong pid)

  • function: 获取部件剩下的主体对象
  • parameters:
    1. [i] ulong pid: 部件ID
  • return value: 主体对象
project/bit/lsdynasession.txt · Last modified: 2023/08/11 15:49 (external edit)