Andrew Moa Blog Site

使用VSCode开发STAR-CCM+用户程序:通过CoolProp计算物性参数

STAR-CCM+用户程序(用户库)1是通过外部编译器(通常是C/C++,也支持Fortran)按一定的规则编译构建的动态链接库,将构建好的动态链接库注册到sim文件中,可以实现某些自定义功能。一个用户程序通常包含一个或多个用户自定义的函数,这些自定义函数一般用于实现特殊的配置或场函数。

用户程序需要先注册动态链接库才能调用,而动态链接库的格式往往与操作系统、硬件平台等密切相关,因此用户程序通常都是针对特定平台进行编译,无法实现跨平台运行。

本文尝试用VSCode编写STAR-CCM+动态链接库,利用开源的热力学库CoolProp为STAR-CCM+拓展物性参数计算功能;通过CMake构建用户程序,确保在不同平台下能正确生成动态链接库文件。

1. CoolProp介绍

CoolProp 是一个开源跨平台的热力学库,定位上类似于NIST的REFPROP,包含各种流体物性参数,同时支持多种编程语言,也支持通过MATLAB、Excel甚至javascript调用进行物性参数计算2

Windows平台通过以下命令下载编译、安装CoolProp3

# 推荐使用PowerShell,需要先安装cmake、git及clang-cl编译器
# 下载CoolProp源码及其依赖
git clone https://github.com/CoolProp/CoolProp --recursive
cd CoolProp
# 建立工作目录
mkdir build && cd build
# 配置静态库编译文件
cmake .. -DCOOLPROP_STATIC_LIBRARY=ON -G "Visual Studio 17 2022" -T ClangCL,host=x64 -A x64 
# 编译静态库
cmake --build . --config Release
# 安装静态库
cmake --install . --prefix $PWD/../../CoolPropLib

Linux平台通过以下命令编译、安装CoolProp:

# 需要先安装cmake、git及gcc编译器
# 下载CoolProp源码及其依赖
git clone https://github.com/CoolProp/CoolProp --recursive
cd CoolProp
# 建立工作目录
mkdir -p build && cd build
# 配置静态库编译文件,默认架构为64位
cmake .. -DCOOLPROP_STATIC_LIBRARY=ON -DCOOLPROP_FPIC=ON -G "Ninja"
# 编译静态库,使用32个核心加速编译
cmake --build . --config Release -- -j32
# 安装静态库
cmake --install . --prefix $PWD/../../CoolPropLib

得益于软件良好的封装,CoolProp相关函数的调用十分简单,以下是官方示例代码4

阅读时长5分钟
Andrew Moa

使用VSCode开发STAR-CCM+模拟助手

STAR-CCM+模拟助手(Simulation Assistant)相当于一个插件,在插件内部封装了java宏命令。使用的时候,通过调用宏命令,执行一些流程性的操作。相比于直接执行java宏文件,可以更好地与用户进行交互,对不熟悉java的用户来说明显更加友好。因为模拟助手大多应用于前后处理当中,许多咨询公司针对这方面开发的定制化插件也更倾向于采用相同的方式。

官方文档采用NetBeans演示了创建模拟助手项目的流程,但是演示的NetBeans版本已经很老旧了。官方文档更新缓慢,描述又过于笼统。这里采用VSCode重新实现并演示一遍,相关配置可以参考使用VSCode调试STAR-CCM+宏 ,以下演示材料来自于STAR-CCM+官方的教程文件。

1. 建立模拟助手项目

参考使用VSCode调试STAR-CCM+宏 中的内容建立java项目,项目类型一样选择No build tools,名称根据自己需要起一个。

项目创建完成后,编辑[项目文件夹]/.vscode下的settings.json文件,将下面这些目录添加到项目依赖中1

  • [STAR-CCM+_Installation]/star/lib/java/platform/core
  • [STAR-CCM+_Installation]/star/lib/java/platform/core/locale
  • [STAR-CCM+_Installation]/star/lib/java/platform/lib
  • [STAR-CCM+_Installation]/star/lib/java/platform/modules
  • [STAR-CCM+_Installation]/star/lib/java/platform/modules/ext
  • [STAR-CCM+_Installation]/star/lib/java/platform/modules/locale
    7f5cd0780c9474a6fedde666d32345f9.png

因为模拟助手需要加载到STAR-CCM+中,需要保证两者jdk版本一致。编辑[项目文件夹]/.vscode下的settings.json文件,增加一行设置,指定jdk为STAR-CCM+自带的版本。

"java.jdt.ls.java.home": "[STAR-CCM+_Installation]/jdk/[platform]/jdk[version]"

2d65d65d95dd1c70148bd6d3e1799ac0.png

JAVA PROJECTS里确认jdk版本,确保和STAR-CCM+自带的版本一致。

faa980ab915d9e4f8cc472f9fe54167a.png

2. 项目开发

将自动生成的[项目文件夹]/src下面的源文件删除,创建文件夹Assistant,将官方教程中的java源文件复制粘贴到其中2

70cc6904b31e239e7da1853d42eb9941.png

阅读时长1分钟
Andrew Moa

使用VSCode调试STAR-CCM+宏

前面讲过STAR-CCM+宏文件的录制和编写,宏文件的本质就是java文件,因此可以用java编程的方法来对它进行开发和调试。如果涉及到复杂的业务场景,需要增加额外的功能,程序本身比较复杂,很难等到整个程序编写完成后再对它进行测试,免不了要在开发过程中进行调试。官方文档采用的开发工具是古早版本的NetBeans,很多功能已经发生变化,加之官方文档描述过于简略,大多数人阅读完后对于STAR-CCM+的调试过程还是一头雾水。VSCode 作为新兴IDE的佼佼者,不仅可以通过拓展支持java编程,还可以通过copilot 拓展集成强大的AI编程能力,本文便采用VSCode演示一下STAR-CCM+宏文件的调试过程。

1. VSCode配置

首先要在VSCode中安装支持java的拓展,至少要安装下面几个:

  1. Language Support for Java(TM) by Red Hat
  2. Debugger for Java
  3. Project Manager for Java

也可以直接安装这个拓展包,一次性把所有需要用到的java拓展都装齐了:Extension Pack for Java

下载一个JDK并安装,如果不想下载JDK的话,也可以在STAR-CCM+安装路径中找到安装包附带的JDK,把它添加到环境变量中。

53d9d7c07aca055269657c5ccf18a81f.png

2. 建立java项目

在VSCode命令面板(Ctrl+Shift+P)中输入Java: Create Java Project,创建一个新的java项目。

56a3e9ec89aa1f165d0bbf43818f8843.png

项目类型选择No build tools

e3fe06a5c9f45db8e2bb95dd2229afb3.png

阅读时长1分钟
Andrew Moa