ModelInfo 公共类型
本文定义其他文档重复引用的公共类型。除特别说明外,object 允许模块尚未读取的额外字段,但建议只保存已定义字段。
FiniteNumber
JSON number,必须可转换为有限的 C++ double。无额外范围时写作 (-∞, +∞);JSON 本身不能表示 NaN 和 ±Infinity。
PositiveNumber
FiniteNumber,范围 (0, +∞)。
NonNegativeNumber
FiniteNumber,范围 [0, +∞)。
Integer
无小数部分的 JSON number,未单列时按 32 位有符号整数,范围 [-2147483648, 2147483647]。
UInt
Integer,范围 [0, 2147483647]。
PositiveInt
Integer,范围 [1, 2147483647]。
Flag01
Integer,只能为 0 或 1。不要使用 JSON boolean 代替,除非字段明确声明为 boolean。
NonEmptyString
JSON string,UTF-8 编码,长度至少 1。文件名是相对算例根目录的路径时,不应越出算例目录。
Vector3
长度恰好为 3的 JSON array,每个元素都是 FiniteNumber,顺序为 [x, y, z]。
Direction3
Vector3,三项不能同时为 0。运行时会按方向使用;建议传单位向量。
Box3
| 字段 | 类型 | 范围 |
|---|---|---|
x1, x2 | FiniteNumber | x1 < x2 |
y1, y2 | FiniteNumber | y1 < y2 |
z1, z2 | FiniteNumber | z1 < z2 |
MotionFile
| 字段 | 类型 | 范围 |
|---|---|---|
velocity_ID | Integer | 当前文件驱动模式为 1。 |
file_name | NonEmptyString | 相对算例根目录的输入文件。 |
同一结构也用于 user_define_power 和 user_define_pressure;字段名保留为 velocity_ID。
WallPlane
| 字段 | 类型 | 范围 |
|---|---|---|
name | NonEmptyString | 同一列表内应唯一。 |
x0, y0, z0 | FiniteNumber | 平面上一点。 |
nx, ny, nz | FiniteNumber | 三项不能同时为 0。 |
penetration_ID | Flag01 | 可选;是否允许穿透。 |
墙面列表是 array<WallPlane>,长度为 0..N;启用墙面接触时至少为 1。
FieldRegion
初始化场的判别联合对象。
| 字段 | 必需性 | 类型 | 范围 |
|---|---|---|---|
type | 必需 | string | block、sphere、plane、cylinder、torus、hexahedron、decahedron、STL、file_input。具体模块可只支持子集。 |
domain | 条件必需 | object | 由 type 决定,见下表。 |
value | 通常必需 | FiniteNumber | 写入区域内的标量值。 |
init_velocity | 可选 | Vector3 | 区域初速度。 |
if_reverse | 可选 | Flag01 | STL 内外反转。 |
txt_file_name | 文件模式必需 | NonEmptyString | STL 或 file_input 的相对文件名。 |
user_define_motion | 可选 | MotionFile | 文件定义运动。 |
motion_ID | 可选 | Flag01 | 区域运动开关;值为 1 时必须提供 motion_file_name。 |
motion_file_name | 条件必需 | NonEmptyString | motion_ID=1 时使用的相对算例文件名。 |
| type | domain 字段 | 长度和范围 |
|---|---|---|
block | Box3 | 六个边界有限且严格递增。 |
sphere | x0,y0,z0,radius | 中心为有限数,radius > 0。 |
plane | plane_point,direction | 两者均为长度 3 数组;direction 非零。 |
cylinder | x0,y0,z0,nx,ny,nz,radius,height | 轴向非零;radius 和 height 为正。 |
torus | x0,y0,z0,nx,ny,nz,radius_major_value,radius_minor_value,height,main_dir_x_value,main_dir_y_value,main_dir_z_value | 两个半径和 height 为正,两个方向均非零。 |
hexahedron | point1、point2、point3、point4、point5、point6、point7、point8 | 每个 point 都是长度恰好为 3 的有限数数组。 |
decahedron | point1、point2、point3、point4、point5、point6、point7、point8、point9、point10 | 每个 point 都是长度恰好为 3 的有限数数组。 |
STL | x0,y0,z0 | 可选平移中心;文件由 txt_file_name 指定。 |
file_input | 无固定几何字段 | 文件由 txt_file_name 指定。 |
BoxFieldList
object,字段 field_list 为 array<FieldRegion>,长度 1..N。用于 Phase、Temperature、Porous、Tag 和 Wire 的分组。
ParallelBreakpoints4
*_T_list:长度恰好为 4,元素为 FiniteNumber,并应严格递增。*_V_list:长度恰好为 4,元素为 FiniteNumber,与对应温度数组一一对应。phase_state_list:长度恰好为 4,元素只能为 0 或 1。
IndexReference
UInt,从 0 开始。值必须小于被引用数组的实际长度。例如 Rigid_Body.*_body_list[].property_ID 必须小于 Rigid_Body.property_list.length。