Andrew Moa Blog Site

STAR-CCM+宏文件录制和编写

STAR-CCM+宏本质上就是一个java文件,语法和普通的java没有什么区别。使用宏可以帮助我们简化处理过程,尤其是一些重复的流程性的操作。通过编写宏文件完成一些流程操作可以极大地解放人力资源,甚至可以在求解过程中完成某些特定的操作。

1. 录制宏

STAR-CCM+宏本质就是分析过程中的各种操作命令的集合,与其从头开始讲解复杂繁琐的java语法+API,不如直接从工程问题上手。

STAR-CCM+宏操作的入口在左上角工具栏里,从左到右依次是“播放宏”、“开始录制”、“暂停录制”和“停止录制”按钮,相关操作选项也可以在“文件”菜单中找到。

8eb213bb22b885f81c06dcdb3eedd943.png

点击“开始录制”会弹出对话框,提示宏的保存位置。如果过程中用到一些场景化的图形操作,可以勾选上“包括图形命令”;但一般情况下不建议勾选,尤其是涉及到超算提交的场合。

07127786a188bff13345a15a58d3e7e4.png

接下来就可以在输出窗口中看到录制java过程的代码,此时可以正常地执行分析操作,STAR-CCM+会把相关操作转换成对应的java代码,并显示在输出窗口中。

51fce847b53231bf3cda774399192e37.png

当分析操作完成后点击“停止录制”,可以在输出窗口中看到完整的java代码,同时该代码也被保存到java文件中。

下面是录制的宏代码示例,作用是将原有网格清除并重新划分体网格。

// Simcenter STAR-CCM+ macro: reGenerateMesh.java
// Written by Simcenter STAR-CCM+ 19.06.009
// 上面两行注释是录制时生成的,记录保存宏的文件名、STAR-CCM+版本信息
package macro;

import java.util.*;

import star.common.*;
import star.meshing.*;

// 类名和文件名要一致
public class reGenerateMesh extends StarMacro {

  //这个函数是整个宏的入口	
  public void execute() {
    execute0();
  }

  //这个函数执行网格清除和划分操作
  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    MeshPipelineController meshPipelineController_0 = 
      simulation_0.get(MeshPipelineController.class);

	//清除原来的网格
    meshPipelineController_0.clearGeneratedMeshes();

	//生成体网格
    meshPipelineController_0.generateVolumeMesh();
  }
}

具体代码的作用可以查看STAR-CCM+的帮助文件,不过大部分的API的命名都比较直观,根据其命名也能推测出来。

3f50c712cf6d83b26df0cd1ea4f56c30.png

阅读时长2分钟
Andrew Moa

解决OpenMPI的"Authorization required, but no authorization protocol specified"错误提示

最近在用OpenFOAM和SU2提交计算时,反复出现"Authorization required, but no authorization protocol specified"报错信息。尽管不理会它最终还是能完成计算,但总是出现的报错信息让人心里不安。

怀疑是OpenMPI的问题,通过以下命令验证:

mpirun -np 2 hostname

果然出现报错信息:

9369ef647d5aff57821c1d728ec4eca1.png

翻阅网上信息,比较靠谱的解决方案是这个1:在Slurm脚本中增加以下环境变量:

export HWLOC_COMPONENTS=-gl

测试一下,报错问题解决了:

b3c56243fce578a837d01d68ab24e935.png

阅读时长1分钟
Andrew Moa

Linux挂载Windows共享文件夹无法运行Abaqus和CFX求解器的问题

近期发现一个问题,Abaqus和CFX无法在Linux挂载的Windows共享文件夹上进行计算。Linux是虚拟机部署的,在虚拟机本地路径上启动计算程序,虽然不会出现报错,但会导致虚拟磁盘占用空间增大,并且对读写效率也有一定的影响。

1. SMB版本问题

1.1 SMBv3

之前用cifs挂载共享文件夹的时候,没有仔细关注SMB协议的版本1。以下命令行没有指定协议版本:

mount -t cifs //172.25.64.1/Share /home/dell/Share -o uid=xxx,gid=xxx,username=xxx

mount命令查看,默认连接协议是3.1版本:

8eb0d44e21043275d3b1241235da9048.png

在3.1版本协议的挂载目录下运行Abaqus程序,无法计算,报错如下:

mpirun: Warning one or more remote shell commands exited with non-zero status, which may indicate a remote access problem.
driverExceptions.AbaqusExecutionError: ('SIMULIA Job Layout Engine', 255, 'abaqus_test')
!!!
!!! SIM wrap utility command error:
!!!   System Error open: 无效的参数
!!!
driverExceptions.AbaqusExecutionError: ('SIM Wrap-up', 1, 'abaqus_test')

在3.1版本协议的挂载目录下运行CFX求解器,无法计算,报错如下:

阅读时长1分钟
Andrew Moa