创建新用户库
本节提供有关在 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++ 2013。早期版本可能无法正常运行,如果是这样,采用不同的方式。Windows 仅支持 64 位版本。链接到 UserFunctions.lib(位于 Simcenter STAR-CCM+ 安装目录的编译器子目录中),例如:
C:\Program Files\Siemens\18.02.002\STAR-CCM+18.02.002\star\lib\win64\clang15.0vc14.2\lib
要在 Windows 上创建用户库,执行以下步骤:
- 打开 VS2013 x64 Native Tools Command Prompt(VS2013 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\18.02.002\STAR-CCM+18.02.002\star\lib\win64\clang15.0vc14.2\lib \UserFunctions.lib”
- 检查是否已从 DLL 导出名为 uclib 的函数。Simcenter STAR-CCM+ 将在 DLL 中查找此函数:
dumpbin/exports libuser.dll
以下是转储输出的示例:
Microsoft (R) COFF/PE Dumper Version 12.00.30501.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 54D1FF8D time date stamp Wed Feb 04 11:16:29 2015 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 00001000 uclib Summary 1000 .data 1000 .pdata 1000 .rdata 1000 .reloc 1000 .text
对于 Visual Studio 2013,无需嵌入清单文件。构建的 DLL 依赖于 Visual Studio 运行时 (MSVCR120.DLL)。Visual Studio 运行时必须存储在磁盘上,便于 Simcenter STAR-CCM+ 找到它。通常,如果安装了 Visual Studio,则 MSVCR120.DLL 已位于机器上。否则,可以安装 Visual Studio Redistributable,或者直接将 DLL 复制到与用户编码 .dll 相同的位置。