创建新用户库
本节提供有关在 Linux 或 Windows 上创建用户库的信息。
用户库是从其构成用户函数和库注册函数创建的。
在 Linux 上创建用户库
在 Linux 上,Simcenter STAR-CCM+ 不需要对此过程使用特定编译器。对于所选的通用编译器,下表提供了从 C 或 Fortran 源文件创建基本名为 user(用户) 的库的示例命令。还可以使用可选编译标志,例如针对优化;有关详细信息,请参阅编译器手册。
| 编译器 | 精度 | 编译命令 |
|---|---|---|
|
GCC |
混合精度 |
gcc -fPIC -shared *.c -o libuser.so |
|
GCC |
双精度 |
gcc -DDOUBLE_PRECISION -fPIC -shared *.c -o libuser.so |
|
GNU Fortran 77 |
混合精度 |
g77 -fPIC -shared *.f -o libuser.so |
|
G95 |
混合精度 |
g95 -fPIC -shared *.f -o libuser.so |
在 Windows 上创建用户库
Windows 不支持 FORTRAN。
以下说明适用于 Microsoft Visual C++ 20XX。Windows 仅支持 64 位版本。链接到 UserFunctions.lib(位于 Simcenter STAR-CCM+ 安装目录的编译器子目录中),例如:
C:\Program Files\Siemens\<star-ccm+-version>\STAR-CCM+<star-ccm+-version>\star\lib\win64\<clang-version>\lib
其中,
<star-ccm+-version> 是 star-ccm+ 版本,例如:19.06.###
<clang-version> 是 clang 编译器版本,例如:clang15.0vc14.2、clang17.0vc14.2 等。
要在 Windows 上创建用户库:
- 打开 VS20XX x64 本机工具命令提示符以编译 64 位库。
- 使用以下命令将源程序编译到对象文件中:
cl /MD /D_WINDOWS -c *.c对于
*.cpp文件,将*.c替换为*.cpp。对于双精度程序,包括编译器选项
/DDOUBLE_PRECISION。 - 使用
UserFunctions.lib(位于 Simcenter STAR-CCM+ 安装目录的编译器子目录中)将对象链接到动态链接库 (DLL):link -dll /out:libuser.dll *.obj "C:\Program Files\Siemens\<star-ccm+-version>\STAR-CCM+<star-ccm+-version>\star\lib\win64\<clang-version>\lib \UserFunctions.lib"其中,
<star-ccm+-version>是star-ccm+版本,例如:19.06.###<clang-version>是 clang 编译器版本,例如:clang15.0vc14.2、clang17.0vc14.2等 - 检查是否已从 DLL 导出名为
uclib的函数。Simcenter STAR-CCM+ 将在 DLL 中查找此函数:dumpbin/exports libuser.dll以下是转储输出的示例:
dumpbin/exports libuser.dll Microsoft (R) COFF/PE Dumper Version 14.34.31937.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file libuser.dll File Type: DLL Section Contains the following exports for libuser.dll 00000000 characteristics FFFFFFFF time date stamp 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0.00001030 uclib Summary 1000 .data 2000 .pdata 4000 .rdata 1000 .reloc D000 .text
对于 Visual Studio 20XX,无需嵌入清单文件。构建的 DLL 依赖于 Visual Studio 运行时 (MSVCR120.DLL)。Visual Studio 运行时必须存储在磁盘上,便于 Simcenter STAR-CCM+ 找到它。通常,如果安装了 Visual Studio,则 MSVCR120.DLL 已位于机器上。否则,可以安装 Visual Studio Redistributable,或者直接将 DLL 复制到与用户编码 .dll 相同的位置。