错误消息一览¶
本页按类别整理 FrontISTR 输出的典型错误消息,并以参考表形式给出可能原因和处理方向。本页并不涵盖所有内部消息,主要针对使用 hecmw_part1 和 fistr1 时较常遇到的消息。
出现消息时,首先确认是否有代码以及其前缀,然后根据相应类别的表格判断应检查输入文件、网格、单元、求解器、接触、收敛还是内存。
消息的阅读方法¶
FrontISTR 的消息包括来自 HEC-MW 库的带代码消息,以及由 fistr1 本体直接输出的不带代码消息。对于带代码消息,可根据前缀判断输出模块及严重程度。
| 格式 | 示例 | 阅读方法 |
|---|---|---|
| HECMW-XXX-EYYYY | HECMW-IO-E1014 | 来自 HEC-MW 库的错误。XXX 表示子模块,E 表示 Error,YYYY 表示消息编号。 |
| HECMW-XXX-WYYYY | HECMW-PART-W0401 | 来自 HEC-MW 库的警告。W 表示 Warning。 |
| 无代码 | Number of substeps reached max number |
主要由 fistr1 本体通过 STOP、call hecmw_abort、write(*,*) 等直接输出。 |
消息末尾显示的数值或字符串有时是运行时信息,例如文件名、材料编号、单元编号、子步编号或内部标志。即使是同一种典型消息,末尾的值也会随分析案例而变化。
输入解析错误¶
输入解析错误发生在读取控制文件、网格数据、材料定义、重启动设置等阶段。遇到此类错误时,应确认错误发生前正在读取的文件名、关键字名、材料名和组名。
| 消息或代码 | 主要原因 | 处理方向 |
|---|---|---|
Cannot open FSTR control file |
无法打开控制文件或由 !INCLUDE 指定的输入文件。 |
检查执行目录、文件名、相对路径和访问权限。 |
material property not defined! |
分析所引用的材料未用 !MATERIAL 定义。 |
使 !SECTION 引用的材料名与控制文件或网格数据中的 !MATERIAL 名一致。 |
Error in material property definition! |
材料 ID、材料定义数量或引用关系不一致。 | 检查材料编号、材料定义数量以及来自 !SECTION 的引用。 |
ERROR: Material type not supported |
材料关键字指定了不支持的 TYPE。 |
检查 !ELASTIC、!HYPERELASTIC、!PLASTIC、!VISCOELASTIC 对应的 TYPE。 |
We cannot deal with incompressible material currently |
指定了 Poisson 比为 0.5 的完全不可压缩材料。 | 将 Poisson 比改为小于 0.5,并按需要重新检查单元公式。 |
Mohr-Coulomb and Drucker-Prager do not support temperature dependency |
为 Mohr-Coulomb 或 Drucker-Prager 指定了温度相关表。 | 改用不含温度相关性的定义,或选择支持温度相关性的材料模型。 |
Multilinear hardening: Error in plastic strain definition |
多线性硬化的塑性应变未按单调方式定义。 | 将第一个塑性应变设为 0,并修改表格使塑性应变递增。 |
HECMW-IO-E1012 Element doesn't have section |
单元没有对应的截面信息。 | 检查 !SECTION 的单元组指定以及网格中的单元组。 |
HECMW-IO-E1013 Cannot set section |
无法将截面分配给单元。 | 检查截面类型、材料名和单元组名是否一致。 |
HECMW-IO-E1014 No nodes defined |
未定义节点。 | 检查网格数据中是否存在节点块。 |
HECMW-IO-E1015 No elements defined |
未定义单元。 | 检查网格数据中是否存在单元块。 |
HECMW-UTIL-E0040 !RESTART: Invalid token in control file |
!RESTART 语法无效。 |
检查 !RESTART 行的分隔符、参数名和值。 |
HECMW-UTIL-E0041 !RESTART: Missing NAME |
!RESTART 中没有 NAME。 |
指定重启动数据名。 |
HECMW-UTIL-E0042 !RESTART: Missing IO |
!RESTART 中没有 IO。 |
添加读取/写出指定。 |
网格与单元错误¶
网格与单元错误会在单元类型与功能组合、参考节点、局部坐标系或接触面的单元类型不合适时发生。除输入语法外,还应检查单元形状质量和节点顺序。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
##Error: This element type is not supported in contact analysis !!! |
接触面指定了接触分析不支持的单元类型。 | 重新检查接触面所用单元类型和表面定义,并确认是否在接触面使用了高阶单元或特殊单元。 |
Bad reference for beam element! |
梁单元的参考节点或参考方向无效。 | 检查梁单元的参考节点、局部坐标系和节点重合情况。 |
Fail to setup local coordinate |
无法构造单元的局部坐标系。 | 检查单元形状是否退化、节点顺序、重复节点以及参考坐标系。 |
局部坐标系设置失败不仅取决于输入值,也取决于网格质量。尤其要检查是否存在极小单元、面积或体积接近 0 的单元,以及节点顺序反转的单元。
求解器相关错误¶
求解器相关错误可能由线性求解器设置无效、直接法分解失败、矩阵奇异、未链接外部库等原因引起。应检查分析停止前的日志中是否输出了迭代法、直接法、接触自由度、MPC 等相关信息。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
ERROR ordering option for direct solver out of range |
直接法的排序设置超出范围。 | 检查 !SOLVER 中的直接法排序设置。 |
ERROR in symb. fact. flag: Should be 1 or 0 |
符号分解标志不是 0 或 1。 | 检查直接法内部标志的指定值。通常不通过用户输入直接修改该设置。 |
ERROR in numer. fact. flag: Should be 1 or 0 |
数值分解标志不是 0 或 1。 | 检查直接法内部标志的指定值。 |
ERROR in nufct0. ir = |
直接法的数值分解失败。 | 检查约束不足、刚体模态、材料常数异常、接触条件和 MPC 条件。 |
error in nusol0. irr = |
直接法的回代失败。 | 与数值分解失败时相同,检查线性系统是否奇异或不一致。 |
METIS not available |
指定了使用 METIS 的排序,但构建时未启用 METIS 支持。 | 改用不使用 METIS 的设置,或启用 METIS 支持后重新构建。依赖库参见必需与可选依赖库。 |
直接法分解失败不仅可能来自求解器设置,也可能由模型刚体运动、约束不足、重复约束、极端材料常数或接触条件不一致引起。将约束条件和载荷条件恢复为简单案例,并检查最小配置下线性系统能否求解,有助于定位原因。
接触分析错误¶
接触分析错误可能由接触对与表面组对应关系不一致、接触搜索时出现几何奇异、表面单元类型不匹配或接触搜索内存不足引起。遇到接触错误时,应检查从属侧和主控侧的组名、接触面单元类型、初始穿透以及接触面法向。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
Inconsistence in contact and surface definition |
!CONTACT 或 !EMBED 引用的表面组或接触对不一致。 |
检查接触对名称、表面组名称以及节点组和面组是否存在。 |
error in contact state |
接触状态数据没有引用有效的接触面。 | 检查接触面定义、初始接触状态以及接触对被激活的步骤。 |
Math error in contact searching |
接触点投影计算出现奇异状态。 | 检查接触面形状、节点配置、初始穿透和极端变形。 |
Error in calculate DispIncreMatrix |
无法计算接触面上的位移增量矩阵。 | 检查接触面单元形状是否退化以及节点顺序是否正确。 |
Error: cal_node_normal: invalid isin / Error: cal_node_normal: invalid isin_n |
在节点法向计算中,节点不位于预期的接触面位置。 | 检查表面定义、接触面方向以及从属/主控指定。 |
type of surface element not defined |
无法确定表面单元类型。 | 检查指定为接触面的单元类型和面编号。 |
Allocation error: bktdb%buckets |
接触搜索所用桶数组的内存分配失败。 | 重新检查接触面数量、网格密度、区域划分数和可用内存。 |
若接触相关错误在读取输入后立即出现,接触对或表面组名称不一致是主要候选原因。若在非线性迭代过程中出现,则可能是变形导致接触面严重畸变、初始穿透过大,或时间增量过大。
关于接触类型和接触算法的选择,参见接触与嵌入。
收敛与 cutback 错误¶
收敛与 cutback 错误发生在非线性静力分析中无法推进子步时。常见原因包括接触开始或分离、屈服快速发展、大变形、约束条件不一致以及载荷增量设置过大。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
Number of successive cutback reached max number |
因收敛失败反复执行 cutback,连续失败次数达到上限。 | 减小初始时间增量。重新检查 AUTOINC_PARAM 中的 cutback 缩减率和连续失败上限,并确认接触、材料和边界条件是否合理。 |
Number of substeps reached max number |
在步骤结束前已达到子步数上限。 | 增加 SUBSTEPS。减小载荷或时间增量。在非线性发生突变的时刻增加输出时刻或划分步骤。 |
发生收敛失败时,仅增加求解器最大迭代次数有时并不能消除根本原因。将载荷分阶段施加,并使用简化接触条件或材料非线性的案例确认可重复性,有助于定位原因。
边界条件错误¶
边界条件错误发生在控制文件中的指定不符合功能约束时。对于转动边界条件,若像位移约束一样使用总量指定会产生错误。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
Error: rotational boundary cannot be specified with total value |
对转动约束指定了总量(TOTAL=YES)。 |
转动约束应使用增量指定。修改边界条件定义,去掉 TOTAL=YES。 |
fstr control file error : !BOUNDARY : rotational boundary cannot be specified with total value |
在读取控制文件阶段检测到同一约束违规。 | 检查 !BOUNDARY 中的转动约束行和 TOTAL 指定。 |
转动约束和转动载荷还取决于单元类型和自由度构成。使用梁、壳等具有转动自由度的单元时,应同时检查边界条件的自由度编号和目标节点组。
区域划分(hecmw_part1)错误¶
hecmw_part1 的错误以 HECMW-PART 开头的代码输出。对于区域划分,应依次检查输入文件是否存在、!PARTITION 的必需参数、划分方法与区域数的约束,以及用户指定 part 文件的一致性。
| 代码范围或典型代码 | 主要原因 | 处理方向 |
|---|---|---|
| HECMW-PART-E0001~E0006 | 与文件操作、文件名、EOF、参数有关的基本错误。 | 检查指定文件是否存在、文件名长度、输入文件结尾以及命令参数。 |
| HECMW-PART-E0101 | 控制文件中存在无效 token。 | 检查 !PARTITION 行和划分方向指定行的语法。 |
HECMW-PART-E0111 'TYPE' must not be omitted |
未指定 TYPE。 |
指定划分类型,例如 !PARTITION, TYPE=NODE-BASED。 |
HECMW-PART-E0121 'METHOD' must not be omitted |
未指定 METHOD。 |
指定 METHOD=RCB、METHOD=PMETIS、METHOD=KMETIS 等。 |
HECMW-PART-E0131 'DOMAIN' must not be omitted |
未指定区域数。 | 将 DOMAIN 指定为与 MPI 进程数对应的正整数。 |
HECMW-PART-E0134 'METHOD' is 'RCB', but 'DOMAIN' is not n-th power of 2 |
RCB 法中的区域数不是 \(2^n\)。 | 使用 RCB 时将区域数设为 \(2^n\)。若需要任意区域数,可考虑 METIS 系方法。 |
| HECMW-PART-E0201~E0206 | 划分类型、划分方法、单元类型、划分方向、区域数或重叠深度无效。 | 检查 TYPE、METHOD、DOMAIN、DEPTH 以及划分方向指定。 |
| HECMW-PART-E0301~E0331 | 划分后数据中的区域编号、节点数、单元数或相邻区域数超出范围。 | 检查输入网格、用户指定 part 文件与划分数之间的一致性。 |
| HECMW-PART-E0601~E0606 | 用户指定 part 文件中存在空区域、格式错误,或节点数、单元数、区域数不一致。 | 检查 part 文件格式及其与网格的一致性。 |
HECMW-PART-W0401 EQUATION_BLOCK not found |
警告:未找到 EQUATION_BLOCK。 |
若使用 MPC 的分析需要该块,请检查相应块;若不需要,则可继续执行。 |
HECMW-PART-W0502 Log file for partitioner already initialized |
日志初始化被重复调用。 | 通常按警告处理,并检查其后是否立即出现致命错误。 |
区域划分的概念及划分方法的选择参见区域划分。并行执行的具体步骤参见执行指南。
内存分配错误¶
当无法分配数组或工作区时会输出内存分配错误。大型网格、接触面很多的模型、直接法以及输出变量较多的分析都会增加内存使用量。
| 消息 | 主要原因 | 处理方向 |
|---|---|---|
stop due to allocation error <FSTR_SOLID, TEMPERATURE> |
温度数组分配失败。 | 检查节点数、温度自由度、热应力设置和可用内存。 |
stop due to allocation error <FSTR_SOLID, GL> |
结构分析用全局数组分配失败。 | 重新检查模型规模、区域划分数、分析类型和输出项目。 |
Allocation error: bktdb%buckets |
无法分配接触搜索用桶数组。 | 重新检查接触面数量、网格密度、接触对数量和区域划分。 |
ALLOCATION ERROR, ... |
无法分配直接法或排序处理所需的工作数组。 | 考虑从直接法切换到迭代法、调整区域划分数或增加分配内存。 |
若怀疑内存不足,首先确认能否将直接法改为迭代法。若必须使用直接法,可考虑减小模型规模、减少输出变量、调整区域划分数或增加作业内存分配。
重启动错误¶
重启动错误可能由 !RESTART 语法错误、缺少必需参数,或读取文件与当前分析条件不一致引起。使用重启动时,写出重启动数据的分析与读取该数据的分析之间,网格、区域划分数、分析类型和步骤信息必须保持一致。
| 代码 | 主要原因 | 处理方向 |
|---|---|---|
HECMW-UTIL-E0040 !RESTART: Invalid token in control file |
!RESTART 行语法无效。 |
检查参数名、分隔符和值的格式。 |
HECMW-UTIL-E0041 !RESTART: Missing NAME |
未指定 NAME。 |
指定重启动数据名。 |
HECMW-UTIL-E0042 !RESTART: Missing IO |
未指定 IO。 |
添加读取/写出指定。 |
若读取重启动数据失败,不仅要检查重启动文件名,还要检查写出和读取时的网格、MPI 区域数、步骤设置以及重启动版本。重启动功能概览参见输出与重启动。