创建新用户库

本节提供有关在 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 上创建用户库:

  1. 打开 VS20XX x64 本机工具命令提示符以编译 64 位库。
  2. 使用以下命令将源程序编译到对象文件中:
    cl /MD /D_WINDOWS -c *.c

    对于 *.cpp 文件,将 *.c 替换为 *.cpp。

    对于双精度程序,包括编译器选项 /DDOUBLE_PRECISION。

  3. 使用 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 等

  4. 检查是否已从 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 相同的位置。