输出与重启¶
分析结果本身存在于内存中,因此若要进行后处理、可视化、恢复或继续分析,需要将其输出为适当的文件。由于不同用途所需的文件格式、输出项目和输出频率各不相同,FrontISTR 会区分使用多个输出系统。
FrontISTR 的输出由三类组成:保存分析值的结果文件(!WRITE,RESULT)、用于可视化的可视化文件(!WRITE,VISUAL),以及保存分析状态的重启文件(!RESTART)。结果文件和可视化文件中包含的物理量分别通过 !OUTPUT_RES 和 !OUTPUT_VIS 选择。
功能概览¶
将输出设置分为以下三个维度考虑会更容易整理。
| 维度 | 主要输入 | 作用 |
|---|---|---|
| 输出目标 | !WRITE,RESULT,!WRITE,VISUAL,!RESTART |
决定以何种用途的文件保存结果。 |
| 输出变量 | !OUTPUT_RES,!OUTPUT_VIS |
决定结果文件或可视化文件中包含哪些物理量。 |
| 输出频率 | FREQUENCY |
决定每隔多少个step写入文件。 |
!WRITE,RESULT 启用结果文件,并通过 !OUTPUT_RES 指定输出变量。!WRITE,VISUAL 启用可视化文件,并通过 !OUTPUT_VIS 指定传递给可视化的变量。两者都可以通过 FREQUENCY 控制输出间隔。!WRITE 是单一卡片,RESULT / VISUAL / FEMAP 可作为选择输出目标的参数共存。
在 !OUTPUT_RES 和 !OUTPUT_VIS 的数据行中,列出输出变量名以及 ON / OFF。指定 GROUP 后,可将输出对象限制为指定组。具体输入格式和可指定的数据行请参见关键字参考。
!RESTART 与结果文件、可视化文件不同,用于保存分析状态本身。重启文件用于在中断分析后,从相同状态继续分析。
如何选择输出¶
选择输出时,首先从需要确认的目的出发。如果要将数值用于后处理或其他分析,应选择结果文件;如果要用可视化工具确认形状或分布,应选择可视化文件。如果需要从分析中途继续,则应在普通结果输出之外启用重启文件。
| 目的 | 选择的输出 | 主要指定 |
|---|---|---|
| 保存分析值,用于后处理、比较或其他分析 | 结果文件 | !WRITE,RESULT 与 !OUTPUT_RES |
| 使用 ParaView 等确认分布或变形形状 | 可视化文件 | !WRITE,VISUAL,!OUTPUT_VIS,!VISUAL |
| 从中途继续长时间分析 | 重启文件 | !RESTART |
| 减少输出容量 | 仅输出所需变量 | !OUTPUT_RES / !OUTPUT_VIS 的 ON / OFF 与 FREQUENCY |
在大规模分析中,如果保持默认输出并保存所有step,结果文件和可视化文件的容量可能会很大。应只将所需物理量设为 ON,将不需要确认的量设为 OFF。如果不需要精细跟踪时程,可增大 FREQUENCY,降低输出频率。
可以按照“需要确认的物理量”“保存目标”“频率”的顺序决定输出变量。例如,如果要在 ParaView 中确认应力分布,则启用可视化文件,并在 !OUTPUT_VIS 中选择 NSTRESS 或 NMISES。如果要将接触力作为数值进行后处理,则启用结果文件,并在 !OUTPUT_RES 中选择 CONTACT_NFORCE 等。
可输出的物理量¶
输出变量可分为结构分析、动态分析、热分析、接触分析、单元特有结果以及用于识别的元信息。下表整理了主要变量名、类型及其适用的分析类型。完整的变量名列表和数据行格式请参见 !OUTPUT_RES 与 !OUTPUT_VIS。
| 分类 | 变量名 | 类型 | 主要分析类型 | 内容 |
|---|---|---|---|---|
| 结构分析基本量 | DISP,ROT,REACTION |
向量 | 静力分析、动态分析 | 位移、转动、节点反力。ROT 对具有转动自由度的单元有效。 |
| 应力 | NSTRESS,ESTRESS,ISTRESS |
对称张量 | 结构分析 | 节点平均应力、单元应力、积分点应力。 |
| Mises 应力、主应力 | NMISES,EMISES,PRINC_NSTRESS,PRINC_ESTRESS,PRINCV_NSTRESS,PRINCV_ESTRESS |
标量、向量 | 结构分析 | Mises 应力、主应力值、主应力方向。 |
| 应变 | NSTRAIN,ESTRAIN,ISTRAIN |
对称张量 | 结构分析 | 节点应变、单元应变、积分点应变。 |
| 塑性、热应变 | PL_ISTRAIN,PL_ESTRAIN,TH_NSTRAIN,TH_ESTRAIN,TH_ISTRAIN |
标量、对称张量 | 非线性结构分析、热应力分析 | 等效塑性应变、热应变。 |
| 主应变 | PRINC_NSTRAIN,PRINC_ESTRAIN,PRINCV_NSTRAIN,PRINCV_ESTRAIN |
标量、向量 | 结构分析 | 主应变值、主应变方向。 |
| 动态分析 | VEL,ACC |
向量 | 动态分析 | 节点速度、节点加速度。 |
| 热分析 | TEMP |
标量 | 热传导分析 | 节点温度。在热分析的结果文件和可视化文件中作为温度场输出。 |
| 接触 | CONTACT_NFORCE,CONTACT_FRICTION,CONTACT_RELVEL,CONTACT_STATE,CONTACT_NTRACTION,CONTACT_FTRACTION |
向量、标量 | 接触分析 | 接触法向力、摩擦力、相对滑移速度、接触状态、单位面积上的接触力。 |
| 梁单元 | BEAM_NQM |
12 分量值 | 含梁单元的结构分析 | 梁单元的截面内力。 |
| 识别、状态 | NODE_ID,ELEM_ID,SECTION_ID,MATERIAL_ID,ELEMACT,YIELD_RATIO |
标量 | 结构分析、可视化 | 节点、单元、截面、材料的识别信息,单元激活状态,屈服比。ELEMACT 对有效单元输出 1,对无效(失活)单元输出 0。 |
| 壳辅助信息 | SHELL_LAYER,SHELL_SURFACE |
标量 | 含壳单元的结构分析 | 分层壳各层输出以及用于识别壳表面的辅助信息。 |
默认情况下,DISP、ROT、NSTRESS、NMISES 为 ON。但是,是否实际输出有意义的值取决于分析类型、单元类型、材料模型和接触设置。例如,VEL 和 ACC 用于动态分析,CONTACT_* 用于接触分析中生成接触信息的情况。
壳分层输出¶
壳单元沿厚度方向具有多个积分点或层,因此同一单元内不同层和表面的应力、应变值也可能不同。仅使用普通节点平均值或单元值时,不容易区分属于哪一层或哪一面。
将 SHELL_LAYER 设为 ON 后,可针对分层壳的各层区分 + 侧和 - 侧输出。输出的应力、应变分量会附带表示层号和面侧的标识,因此可用于厚度方向应力分布或各层损伤评估。
SHELL_SURFACE 是用于识别壳上表面/下表面等表面的辅助信息。可视化壳分层结果时,应启用 SHELL_LAYER 和所需的应力、应变变量,并在可视化工具中选择对应目标层或表面的结果分量。
壳分层输出会增加输出分量数量,因此在层数较多的模型中会增大文件容量。建议只输出所需的应力、应变变量。
输出目标¶
结果文件与可视化文件的用途和保存格式不同。在同一分析中,可以同时输出两者,也可以只输出其中一种。
结果文件¶
结果文件通过 !WRITE,RESULT 启用。它将分析结果保存为 FrontISTR / HEC-MW 的结果数据,用于数值后处理或其他分析中的读取。输出变量通过 !OUTPUT_RES 选择。
!WRITE,RESULT 也是作为 !WRITE 卡片的 RESULT 参数实现的,与可视化和 FEMAP 输出并列,属于输出目标选项。
结果文件中,结构分析可保存位移、应力、应变、反力、接触信息等,热分析可保存温度场。各step的输出间隔通过 FREQUENCY 指定。具体文件名、位置和运行后的确认方法请参见运行指南。
结果文件(扩展名 .res)为具有以下结构的文本数据。开头是格式版本和注释,随后是全局变量,最后依次列出各节点、单元的输出变量。
*fstrresult 2.0
*comment
<注释行>
*global
<全局变量数量>
<全局变量自由度>
<全局变量名称>
<全局变量值>
...
*data
<节点数> <单元数>
<节点数据数量> <单元数据数量>
<节点数据自由度> ...
<节点数据名称>
...
<节点数据值>
...
<单元数据自由度> ...
<单元数据名称>
...
<单元数据值>
...
日志文件¶
日志文件(扩展名 .log)是分析后始终输出的摘要文件。除各节点、单元的物理量外,还会输出位移、应变、应力分量的最大值/最小值。在模态分析中,还会输出特征值和特征向量的值。可通过 !WRITE 的 LOG 参数控制输出内容。文件名和位置请参见运行指南。
可视化文件¶
可视化文件通过 !WRITE,VISUAL 启用。网格与结果数据会转换为适合可视化工具的格式后输出。输出变量通过 !OUTPUT_VIS 选择,格式和可视化条件通过 !VISUAL 指定。
!WRITE,VISUAL 不是独立关键字,而是作为 !WRITE 卡片的 VISUAL 参数实现,与 !WRITE,RESULT / !WRITE,FEMAP 同级,用于切换输出目标(fistr1/src/common/fstr_ctrl_common.f90 中的 fstr_ctrl_get_WRITE)。
要启用可视化,至少需要在 !VISUAL 卡中指定可视化surface和输出格式。以下是最小数据集。
surface_num 和 !surface 不可省略。详细格式及可用选项请参见 !VISUAL。
主要可视化格式如下。
| 格式 | 用途 |
|---|---|
| VTK | 用于 ParaView 等的可视化。 |
| AVS(UCD) | 用于 AVS / UCD 格式的可视化与数据交换。 |
| BMP | 将可视化结果输出为图像。 |
| NEU | 用于 FEMAP neutral 格式的数据交换。 |
与结果文件相比,可视化文件更便于可视化工具直接处理,但根据所选格式和变量数量,容量也会增加。对于大规模模型,应只在 !OUTPUT_VIS 中启用显示所需的变量。
重启¶
重启功能用于保存分析中断时的内部状态,并在下次运行时从相同状态继续计算。普通结果文件是用于后处理的输出,而重启文件则用于保存求解器继续计算所需的状态。
当 !RESTART, FREQUENCY=n 中的 n 为正数时,会按指定的step间隔写出重启文件。当 n 为负数时,运行开始时读取已有重启文件,之后以绝对值 |n| 作为写出间隔继续写出重启文件。
结构分析的重启会保存当前step、substep、累计step、时刻、时间增量、载荷历程、位移、外力、各 Gauss 点的应力、应变、材料内部状态变量、接触状态等。动态分析除位移外,还保存速度、加速度、应变能、当前时刻、时间增量等继续时间积分所需的动态状态。热分析保存step编号、时刻和温度场,并在读取时将温度场恢复为初始状态。
静力分析重启的写出时机与继续行为¶
静力分析(fstr_solve_NLGEOM)的重启有两条写出路径,其继续行为不同。
- 在substep中途写出:在substep循环中,当
step_count为FREQUENCY的倍数时写出。记录的时刻信息作为“当前step的开始时刻”保存,并附带前一个step的载荷列表。 - 在step结束时写出:每个载荷step的substep循环结束后,无论是否为
FREQUENCY的倍数,都始终写出。记录的时刻信息作为“step结束时刻”保存,并附带当前step的载荷列表。
读取时,FrontISTR 根据所记录的“当前时刻”与“基准时刻”是否一致来判断step是否完成(fstr_Restart.f90 中的 fstr_read_restart)。
| 写出时状态 | 继续时行为 |
|---|---|
| substep中途 | 从同一step的下一个substep继续。继承写出时的substep位置,并执行剩余的substep循环。 |
| step结束 | 从下一个step的首个substep开始。将 cstep 前进 1,并将 substep=1 重置后继续分析。 |
因此,即使 FREQUENCY 设置相同,根据发生写出的时机(substep中途/step结束),继续后的step编号和时刻基准也会不同,需要注意。尤其是step结束时的写出与 FREQUENCY 设置无关,每个step结束时都会执行。
动态分析重启的写出时机与继续行为¶
时程动态分析的重启也区分substep中途写出与step结束写出。substep中途,当累计substep数 step_count 为 FREQUENCY 的倍数时写出;step结束时则无论 FREQUENCY 如何,都会在该step最后写出。
读取时,根据保存的step编号、substep编号和累计substep数恢复继续位置。现行格式(restart_version >= 5)使用与静力分析共通的header,并保存当前时刻、时间增量、Newton迭代统计以及自动增量状态。因此,即使动态分析使用多个 !STEP 和自动增量、cutback,也可以在继续后继承时间基准和时间增量。旧格式的动态分析重启文件也保留部分读取兼容性,但新分析应使用现行格式。
重启时 !STEP 卡的写法¶
重启继续时,FrontISTR 将 cnt 文件中的 !STEP 卡视为“继续后要执行的step序列”,始终从开头(tot_step=1)依次处理。所读取重启信息中的step编号用于与屏幕显示的累计step编号对齐,不影响 cnt 中 !STEP 的索引。此外,在现行格式中,cnt 中各 !STEP 的 starttime 会在读取重启时统一加上基准时刻,使时间线以继续时刻为基点。
因此,应按以下方针准备重启继续用的 cnt。
| 中断方式 | cnt 中保留的 !STEP 范围 |
|---|---|
| substep中途写出(step未完成) | 将中断的step 保留在开头,随后继续排列尚未执行的step。 |
| step结束写出(step已完成) | 删除已完成的step,从下一步要执行的step开始排列。 |
无论哪种情况,原则上都应从 cnt 中删除已经完成的step。由于重启时刻会自动加到 starttime 上,因此 cnt 侧可以从 0 起点(或相对step开始时刻)书写。边界条件、载荷等引用只需在 cnt 中保留与所保留 !STEP 卡对应的部分。该方针同样适用于使用多个 !STEP 的动态分析重启。
使用重启的典型流程如下。
- 首次运行时指定
!RESTART, FREQUENCY=n,写出重启文件。 - 继续分析的运行中指定
!RESTART, FREQUENCY=-n。 - FrontISTR 在启动时读取重启文件,此后每隔
n个step写出新的状态。
重启文件的命名、位置以及运行时的指定方法请参见运行指南。对旧版格式的读取也保留部分兼容性,但新分析应使用现行版本格式。
相关项目¶
- 串行运行 — 分析运行时文件位置与输出确认的基本方法。
- !OUTPUT_RES,!OUTPUT_VIS — 指定输出到结果文件、可视化文件中的变量。
- !WRITE — 启用结果文件、可视化文件、日志输出并指定输出频率(
RESULT/VISUAL/LOG/FEMAP参数)。 - !VISUAL — 指定可视化surface和输出格式(含最小数据集示例)。
- !RESTART — 指定重启文件的读取与写出。
- 分析类型 — 各分析类型的主要结果项目。
- 接触与嵌入 — 接触输出的含义与接触状态的处理。
- step控制 — 与输出step和时间点的关系。