● 求解器的工作原理

为了梳理求解器在实际计算中可能出现的问题,需要先理解一个通用的求解器通常都需要包含哪些环节。一般而言,一个求解器等价于一系列的计算流程的有序连接,一个计算流程包含输入数据,执行计算命令,输出数据等部分。通常需要通过配置写入模板,将优化器产生的设计变量的值传递给求解器,通过读入模板将求解器产生的输出数据传入优化器,作为优化器对应设计变量的目标值。

 

 

图 1 一个通用子求解器模块的组成

 

 

AIPOD 智能优化设计软件

图2 写入模板管理外界变量传入计算流程

 

图 3 读入模板管理计算流程中的数据传出到其他流程


● 求解器计算失败的常见问题及解决办法

1. 设计变量传入过程不完整或者缺失,比如配置写入模板替换的变量遗漏,或者替换位置错误;

2. 读入模板配置不完整,标记数据位置错误;

3. 实际计算过程中生成的结果数据异常,比如没有获得具体的数值而是NaN,None等非正常的数值;

4. 实际计算过程中结果数据没有正常生成,结果文件查询失败,这类问题往往与计算的命令和配置的不合理有关;

5. 文件覆盖,在配置的依赖文件或者生成文件中出现重名,而进行文件覆盖,导致解析格式不匹配,致使求解器执行失败,这类问题可以通过恰当的子求解器的添加与设置处理;

6. 配置文件中存在绝对路径,导致引用或者生成的文件不在当前的工作路径下,因此,配置文件中尽量不要使用绝对路径描述文件名称,应优先使用文件名称本身(即相对路径);

7. 计算失效,即计算命令没有执行或者没有正常执行,依赖的计算文件缺失或者不完整;

8. 命令填写错误,比如调用软件的版本,位置等与预期的不符;

9. 计算设置本身不在合理的范畴内(比如CFD中边界条件与网格不匹配),导致计算不能正常执行,没有对应的计算结果产生。