AMCAX Kernel
Geometry kernel for CAD/CAE/CAM
九韶内核 1.0.0.0
载入中...
搜索中...
未找到
网格质量示例

调用示例

AMCAX_API double ComputeQuality(const NMMeshElem &elem,
const QualityType qtye,
const CommercialSoftware cstye);
#define AMCAX_API
使用 MSVC 和 GCC 编译器构建共享库时导出符号的宏
定义 Macros.hpp:19

参数类型说明

NMMeshElem

单元类型为线性单元,包括三角形、四边形、四面体、金字塔、棱柱、六面体。

Tri_3 Quad_4 Tet_4 Pyramid_5 Prism_6 Hex_8

QualityType

质量指标包括大部分商软中的质量指标,具体为:

MinLength 最小长度 MaxLength 最大长度 MinHeight 最小高度 MinNormalizedHeight

最小标准高度

CharacteristicLength 特征长度 ElementQuality ANSYS中的单元质量 SkewnessByVolume 基于体积的扭曲度 SkewnessByEquiangular

基于角度的扭曲度

MaxAngle2d 二维最大夹角 MinAngle2d 二维最小夹角 JacobianRatioByCorner 基于交点的雅克比比率 JacobianRatioByGauss

基于高斯点的雅克比比率

AspectRatio 横纵比 Collapse 坍塌值 WarpingAngle 翘曲角 WarpingFactor

翘曲因子

ChordalDeviation 弦差 Taper 锥度 MaxDihedraAngle 最大二面角 MinDihedraAngle 最小二面角

CommercialSoftware

商软类型包括具有独立质量指标计算方式的商软,具体为:HyperMesh、ANSYS、Fluent、Nastran。

HyperMesh ANSYS Fluent Nastran

指标类型

以下为各个质量指标的最优/最差的值:

质量指标 [最差, 最优]
Skewness (angle) [90°, 0°]
Skewness (value) [1, 0]
Jacobian [-1, 1]
Aspect Ratio [inf, 1]
Warping (angle) [pi, 0]
Warping factor (value) [inf, 0]
Interior Angles Tri:
Max angle: [180°, 60°]
Min angle: [0°, 60°]
Quad:
Max angle: [180°, 90°]
Min angle:[0°, 90°]
Collapse [0, 1]
Taper [1, 0]
Element Quality [0, 1]

商业指标对照表

HyperMesh (Shells)
Aspect Ratio Skew Chordal Deviation Warpage Tri minimum angle Tri maximum angle Quad minimum angle Quad maximum angle Minimum length Maximum length


HyperMesh (Solid)
Aspect Ratio Skew Volumetric Skewness Jacobian Tet collapse Equia skew Minimum angle Maximum angle Minimum length


ANSYS (Shells)
Aspect Ratio Skewness Warping Jacobian Minimum angle Maximum angle Characteristic Length Minimum length Element Quality Parallel Deviation


ANSYS (Solid)
Aspect Ratio Warping Jacobian Collapse Characteristic Length Min Height Element Quality Parallel Deviation


Fluent (Shells)
Aspect Ratio Skewness Warp


Fluent (Solid)
Aspect Ratio Skewness Warp Dihedral Angle


Nastran (Shells)
Aspect Ratio Skewness Warping Taper Jacobian Minimum angle Maximum angle Characteristic Length Minimum length


Nastran (Solid)
Aspect Ratio Warping Jacobian Collapse Characteristic Length Min Height

完整示例

以下是一个完整的示例,说明如何获取生成网格中 二维三角形面网格的面积偏斜度 和 三维四面体体网格的体积偏斜度,基于 Fluent 商业软件进行分析:

#include <fstream>
#include <nlohmann/json.hpp>
#include <set>
using namespace AMCAX::NextMesh;
void Quality()
{
const std::string cadstr = "./data/test.step";
const std::string jsonPath = "./data/test.json";
NMAPIModel nmapi;
AMCAX::TopoShape step_shape;
AMCAX::STEP::StepDataTool::Read(step_shape, cadstr);
nmapi.ImportModel({ step_shape });
std::vector<NMEntity> ent_d2, ent_d3;
nmapi.GetEntities(ent_d2, DimType::D2);
nmapi.GetEntities(ent_d3, DimType::D3);
nlohmann::json paraJ = nlohmann::json::parse(std::ifstream(jsonPath));
nmapi.GenerateMesh(paraJ.dump());
auto meshapi = nmapi.GetMesh();
for (auto entf : ent_d2)
{
auto ec = meshapi.EntityGetElementCount(entf);
for (size_t i = 0; i < ec; i++)
{
auto elem = meshapi.EntityGetElementByIndex(entf, i);
double quality = 1.0;
if (meshapi.ElementGetType(elem) == ElemType::Tri_3)
{
quality = meshapi.ComputeQuality(
elem,
QualityType::SkewnessByVolume,
CommercialSoftware::Fluent
);
}
}
}
for (auto entf : ent_d3)
{
auto ec = meshapi.EntityGetElementCount(entf);
for (size_t i = 0; i < ec; i++)
{
auto elem = meshapi.EntityGetElementByIndex(entf, i);
double quality = 1.0;
if (meshapi.ElementGetType(elem) == ElemType::Tet_4)
{
quality = meshapi.ComputeQuality(
elem,
QualityType::SkewnessByVolume,
CommercialSoftware::Fluent
);
}
}
}
}
NextMesh 中的模型类
Utility class for operations on STEP shape data structures.
NextMesh 中的模型类
定义 NMAPIModel.hpp:20
AMCAX_API void ImportModel(const std::vector< NMShape > &shapes, const bool replace=true)
加载 AMCAX TopoShape 表示的 CAD 模型。注意:此导入方法不会指定任何实体标签,标签将由内部生成。标签在各维度中从 1 开始计数
AMCAX_API void GenerateMesh(const std::string &configJson)
根据配置参数为当前模型生成网格
AMCAX_API void GetEntities(std::vector< NMEntity > &ents, const DimType dim)
获取指定维度下的所有实体
AMCAX_API NMMesh GetMesh()
获取网格句柄。注意一个模型只有一个唯一的网格
static AMCAX_API void InitLogger(const std::string &logFileName="", const std::string &logPattern="[%Y-%m-%dT%X%z] [%l] %v", const int64_t logFileSize=20 *1024 *1024, const int maxLogFiles=100)
设置日志记录器(默认情况下日志功能是关闭的,除非调用该函数)
static AMCAX_API bool Read(AMCAX::TopoShape &s, std::istream &is)
Read a TopoShape from a stream in STEP format.
形状的基类,包含具有位置和方向信息的基础形状
定义 TopoShape.hpp:15
AMCAX NextMesh 模块提供的所有接口所在的命名空间。
定义 misc.docu:42

点击这里example04可获得网格质量示例完整源码,大家根据学习需要自行下载。