第 23 章 教程-求解器SDK

(第一部分)了解如何安装和配置Rocky Solver SDK 软件开发套件)的工作环境。

(第二部分)了解如何使用Rocky Solver SDK以及我们在第一部分中设置的工作环境来构建简单的自定义模块。

23.1. 第一部分:工作环境设置

23.1.1. 目标

本教程旨在了解如何安装和配置Rocky Solver SDK的工作环境。

  • Rocky Solver SDK包括运行时库、仿真信息和编译机制,您需要创建您自己的custom modules

  • 自定义模块是使用Solver SDK构建的独立代码片段,它们附加到Rocky的solver code中,可扩展其功能

  • 例如,您可以创建自定义模块,将unique models、定律和其它特殊功能应用于您的Rocky仿真中

在本教程的第一部分中,您将了解如何:

  • 下载并安装Rocky Solver SDK包

  • 获取使用Solver SDK文件所需的工具和设置

  • 执行其它推荐设置,以获得最佳使用效果

稍后在第二部分中,您将了解如何使用Solver SDK来构建自己的示例模块。

23.1.2. 前提条件

在开始本高级教程之前,请确保您已满足以下先决条件:

  • 熟悉Rocky2025 R1用户界面(UI),清楚常见的设置和后处理任务,并牢固掌握Modules的概念。

    • 如果您还未达到这种熟悉程度,建议您在开始本教程之前至少先完成教程01~05。

  • 具有PythonC++编程语言的工作经验。

  • 您打算使用Rocky Solver SDK的系统至少安装了一款所支持的以下操作系统:

    • 64位Windows 10或11

    • 64位Linux(Rocky 8.10或9.4、Red Hat 8.10或9.4、SLES 15和Ubuntu 20.04或22.04)

23.1.3. 安装组件

构建您自己的自定义模块的第一步是安装所需的文件并设置下面定义的所需组件:

  1. Rocky Solver SDK文件:将模块代码(包括Rocky最终用户在模块UI中输入的值)转换为求解器的库数据包。这可简化自定义代码的开发与编译。


    重要:  您使用的Rocky Solver SDK必须与您打算在其上运行模块的Rocky程序具有相同的发布版本。也就是说,例如,如果您打算为Rocky2025 R1创建模块,就必须安装2025 R1Rocky Solver SDK。


  2. Solver SDK文件环境变量:指向解压缩的Solver SDK文件的文件夹位置。

  3. CUDA工具套件:提供GPU处理兼容所需的开发环境。


    注意:  无论您是否计划使用GPU来处理将使用自定义模块的仿真,都需要该工具套件。


  4. CUDA文件环境变量:指向已安装CUDA Toolkit文件的文件夹位置。Windows环境会自动创建该变量;在Linux中,我们将手动创建。

  5. 构建工具:编译C++脚本所需的工具。对于Windows,我们将使用Visual Studio构建工具;对于Linux,我们将使用Miniconda 3(或者Miniforge 3)来安装一些软件包。

    除必需的步骤外,还建议采取以下步骤:

  6. (可选)创建一个单独的文件夹来处理您的自定义模块。

  7. (可选)设置一个环境变量,指向编译模块的文件夹位置。

本教程将根据您所使用的操作系统类型,分别详细介绍所有设置项的指令:

23.1.4. Windows 10/11 64位工作环境设置

23.1.4.1. Solver SDK文件设置(WINDOWS)

第1步:为要针对其创建自定义模块的操作系统和Rocky版本下载并解压缩SDK和Modules包。


提示:  SDK和Modules包包含2025 R1求解器SDK和模块,可在Ansys客户门户网站上下载。

 


  1. 下载Windows操作系统的SDK和Modules包。

    提醒一下:您安装的Solver SDK版本允许您仅为相同版本的Rocky产品创建模块。这就意味着,例如,从2025 R1Solver SDK创建的模块将只在Rocky 2025 R1中运行。

  2. 提取文件,复制(或剪切)sdk文件夹并将其粘贴到您选择的文件夹中。(例如,在您的%HOMEPATH%/Documents/Rocky/Modules文件夹中。)

23.1.4.2. SDK变量创建(WINDOWS)

第2步:创建一个名为RockySDK_DIR的环境变量

  1. Windows Search 栏中,键入Edit the system environment variables,然后打开所出现的Control Panel 结果。

  2. System Properties对话框的Advanced 选项卡上,点击Environment Variables...按钮。

  3. Environment Variables 对话框的System variables框中,点击New..按钮。

  4. New System Variable对话框中,将Variable name定义为RockySDK_DIR ,并使用the SDK subdirectory的文件夹路径定义Variable value(如图所示),然后点击OK


    注意:  文件夹路径应该是在第1步中提取SDK文件所在的文件夹。


     

    环境变量现将列在System variables部分。

23.1.4.3. CUDA工具套件设置(WINDOWS)

第3步:安装并配置CUDA Toolkit 11.7


重要:  Rocky Solver SDK的2025 R1(及更新)版本只与11.7版的CUDA工具套件兼容。


  1. 从NVIDIA官方网站打开CUDA Toolkit 11.7 Archive页面,并为您的操作系统下载安装程序。

  2. 打开下载的*.exe文件,按提示提取安装文件。

  3. 使用Custom (Advanced)选项遵循NVIDIA安装程序。

  4. Custom installation选项步骤中,在CUDA组件下方,确保选择了RuntimeDevelopmentVisual Studio Integration复选框。

  5. 按照安装程序指令完成安装。

23.1.4.4. 确保CUDA变量的创建(WINDOWS)

第4步:确保创建了一个名为CUDA_PATH_V11_7的环境变量。

  1. 确认已安装CUDA工具套件在系统上的位置。


    提示:  该位置通常是C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7


  2. 按照第 23.1.4.2 节 “SDK变量创建(WINDOWS)”上的指令,确保自动创建了CUDA_PATH_V11_7环境变量并正确定义了已安装CUDA工具套件的路径。

23.1.4.5. 构建工具设置(WINDOWS)

第5步:下载并安装Visual Studio Build Tools

  1. 访问Microsoft | Visual Studio官方网站,并下载Visual Studio 2022 LTSC 17.6.17Build Tools

    1. 从Microsoft官方网站,访问Visual Studio 2022页面。

    2. 在打开的页面上,向下滚动直到找到Visual Studio下载列表,访问Tools for Visual Studio下拉列表,然后单击long term servicing baselines (LTSCs)链接。

    3. 从打开的页面中,访问version 17.6Release History

    4. Fixed version bootstrappers列表中,找到17.6.17 Version(单击Ctrl + F并搜索17.6.17),然后单击链接下载Build Tools的.exe安装程序。

  2. 打开下载的.exe文件。

  3. 从安装界面:

    • 选择Desktop development with C++(在Workloads选项卡的Desktop & Mobile下方)

    • 确保build toolsWindows SDKC++ CMake tools for Windows(在Installation details面板的Optional下方)。

  4. 点击Install并完成相应安装。

  5. 转到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\visual_studio_integration\MSBuildExtensions文件夹,并复制其文件。

     

  6. 转到C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Microsoft\VC\v170\BuildCustomizations文件夹,并粘贴您刚才复制的文件。

23.1.4.6. 工作文件夹设置(WINDOWS)

第6步:(可选)为您的自定义模块创建一个Working Folder

  1. 创建一个新文件夹,您将在该文件夹中处理自定义模块。(例如%HOMEPATH%/Documents/Rocky/Compiled_Modules


注意:  您的自定义模块将在工作文件夹中编译。

但要在Rocky UI中显示模块,编译后的文件必须位于%HOMEPATH%/Documents/Rocky/Modules文件夹。

要让Rocky在编译后识别出您的模块,可以执行一项以下操作:

  • 每次进行更新时,将编译后的文件从工作文件夹中复制出来,粘贴到%HOMEPATH%/Documents/Rocky/Modules文件夹中。

  • 创建一个名为ROCKY_PLUGINS_PATH 的环境变量,该变量将定义编译文件的路径。(第 23.1.4.7 节 “插件变量设置(WINDOWS)”)


23.1.4.7. 插件变量设置(WINDOWS)

第7步:(可选)创建一个名为ROCKY_PLUGINS_PATH的环境变量

  1. 按照第 23.1.4.2 节 “SDK变量创建(WINDOWS)”上的指令创建一个新的 ROCKY_PLUGINS_PATH环境变量,该变量指向将在其中创建编译模块文件的文件夹位置。(在本教程中,它是%HOMEPATH%/Documents/Rocky/Compiled_Modules 文件夹。)

     


注意:  稍后在第二部分中,我们将采取措施,确保在该位置创建已编译的文件。


23.1.5. Linux 64位工作环境设置

23.1.5.1. SDK文件设置(LINUX)

第1步:为要针对其创建自定义模块的操作系统和Rocky版本下载并解压缩SDK and Modules包。

  1. 下载Linux版本的软件包。

    提醒一下:您安装的Solver SDK版本允许您仅为相同版本的Rocky产品创建模块。这就意味着,例如,从2025 R1Solver SDK创建的模块将只在Rocky 2025 R1中运行。

  2. 将文件提取到您选择的文件夹中(例如,在~/.Rocky/Modules文件夹中)。

23.1.5.2. SDK变量创建(LINUX)

第2步:bashrc文件中创建一个名为RockySDK_DIR 的环境变量。

  1. 在终端输入sudo vi /.bashrc

  2. 在打开的vi编辑器中,按a键编辑并定义环境变量(如图所示)。

  3. esc 键,然后输入 :wq,保存并退出(如图所示)。

     

  4. 要刷新环境变量,请输入source /.bashrc

  5. 输入env,打印环境变量。将列出您刚刚定义的变量(如图所示)。

     

23.1.5.3. CUDA工具套件设置(LINUX)

第3步:安装并配置CUDA Toolkit 11.7


重要:  Rocky Solver SDK的2025 R1(及更新)版本只与11.7版的CUDA工具套件兼容。


  1. 从NVIDIA官方网站打开CUDA Toolkit 11.7 Archive页面,并为您的操作系统下载安装程序。

  2. 运行以下命令:

    $ bash {INSTALLERFILENAME} --silent --nox11 --override --no-man-page --toolkit 
    --toolkitpath={INSTALLATIONPATH}cuda/v11.7 
    $ echo export CUDA_PATH_V11_7={INSTALLATIONPATH}cuda/v11.7 >> $HOME/.bashrc 
    $ source $HOME/.bashrc 

    其中,{INSTALLERFILENAME}是下载文件的名称,{INSTALLATIONPATH}是所需的安装路径。

23.1.5.4. 构建工具设置(LINUX)

第5步:下载并安装Miniconda 3Miniforge 3,并启用所需的makecmakegxx_linux-64包。

  1. 下载Miniconda 3或Miniforge 3。

  2. 导航到您下载安装程序的文件夹,打开一个终端并执行它,如下例所示,然后继续安装。

    bash -Miniforge3-Linux-x86_64.sh

  3. 激活环境,如下例所示。

    source ~/miniforge3/bin/activate

  4. 输入以下命令,安装所需的三个软件包:

    conda install -c anaconda make

    conda install -c anaconda cmake

    conda install -c anaconda "gxx_linux-64>=11,<12"

    conda提示符现在包含了构建Rocky模块所需的最小工具集。

23.1.5.5. 工作文件夹设置(LINUX)

第6步:(可选)为您的自定义模块创建一个Working Folder

  1. 创建一个新文件夹,您将在该文件夹中处理自定义模块。(例如:~/.Rocky/Compiled_Modules


注意:  您的自定义模块将在工作文件夹中编译。

但要在Rocky UI中显示模块,编译后的文件必须位于~/.Rocky/Modules文件夹。

要让Rocky在编译后识别出您的模块,可以执行一项以下操作:

  • 每次进行更新时,将编译后的文件从工作文件夹中复制出来,粘贴到/.Rocky/Modules文件夹中。

  • 创建一个名为ROCKY_PLUGINS_PATH 的环境变量,该变量将定义编译文件的路径。(如下所示 )


23.1.5.6. 插件变量设置(LINUX)

第7步:(可选)创建一个名为ROCKY_PLUGINS_PATH的环境变量

  1. 按照第 23.1.5.2 节 “SDK变量创建(LINUX)”上的指令在bashrc 文件中创建一个新的 ROCKY_PLUGINS_PATH环境变量,该变量指向将在其中创建编译模块文件的文件夹位置。(在本教程中,它是/user/.Rocky/Compiled_Modules文件夹。)

     


注意:  稍后在第二部分中,我们将采取措施,确保在该位置创建已编译的文件。


23.1.6. 帮助-求解器SDK手册

这就完成了本教程的第一部分。

有关为Rocky Solver SDK设置工作环境的更多信息,我们建议搜索Rocky Solver SDK Manual

要查看该手册,请从Rocky Help菜单指向Manuals,然后点击Solver SDK Manual

23.1.7. 结论

在本教程中,可以:

  • 针对Windows和Linux机器下载并安装Rocky Solver SDK、CUDA Toolkit以及构建工具。

  • 定义所需及可选的环境变量,使编译自定义模块更便捷。

下一步是什么?

  • 既然您已成功设置工作环境,那就可以进行第二部分的操作,了解如何使用Solver SDK创建示例模块。

23.2. 第二部分:构建自定义模块

23.2.1. 目标

本教程的主要目的是了解如何使用Rocky Solver SDK以及我们在第一部分中设置的工作环境来构建简单的自定义模块。

我们将创建的模块可帮助最终用户在仿真域中定义一个球面区域,然后用自定义属性标记位于该区域内的所有颗粒。

在本教程的第二部分,您将:

  • 查看定义模块的文件,包括:

    • 了解每个文件的目的以及在模块功能中的作用

    • 了解使用Rocky Solver SDK的方法与时间

    • 查看自定义代码如何与Rocky求解器通信

  • 编译模块(提供单独的Windows和Linux指令)

  • 在Rocky用户界面(UI)测试模块

23.2.2. 前提条件

在开始本高级教程之前,请确保您已满足以下先决条件:

  • 熟悉Rocky2025 R1用户界面(UI),清楚常见的设置和后处理任务,并牢固掌握Modules的概念。

    • 如果您还未达到这种熟悉程度,建议您在开始本教程之前至少先完成教程01~05。

  • 您已正确配置工作环境,可通过Rocky Solver SDK构建自定义模块。如果情况并非如此,请参考一项以下资源:

    • 本教程第一部分

    • 《Rocky Solver SDK手册》的“1.1 先决条件 ”章节

  • 具有PythonC++编程语言的工作经验。

23.2.3. ROCKY SOLVER SDK概览

基于标准DEM仿真的core processes,您可通过Rocky Solver SDK中包含的不同Solver SDK models添加或修改Rocky行为。

 

23.2.4. 示例模块概览

我们将为我们称为Spherical Region的示例模块使用Custom Scalars API。

Spherical Region模块的主要目的是:

  • 【设置】:允许用户在仿真域内定义一个球面区。他们将通过定义球面中心点的X Y Z坐标值以及球面的半径来实现这一点。

  • 【处理】:在每一个单独的时间步,指示Rocky标记进入该球面区的任何颗粒。

  • 【后处理】:允许用户使用一个名为Inside Sphere Flag的新颗粒变量在任何给定的时间步隔离那些标记的颗粒,当颗粒在区域内时,该变量的值为1.0,否则为0.0。

我们会将这个示例作为理解如何最好地利用Rocky Solver SDK的框架。

第一步是理解定义自定义模块所需的文件。

23.2.5. 获取并查看定义模块的文件

23.2.5.1. 文件概览

自定义模块由五个文件组成,每个文件都有一个特定的目标,如下所述:

  • Info file (.plugin):向Rocky UI公开自定义模块的名称和其它相关信息。

  • Python file (.py):负责将自定义模块链接至Rocky用户界面(UI),并使Rocky知道动态链接库(DLL)。

  • CUDA file (.cu):模块的核心。所有的计算和循环指令都在这里。它采用C++编码。

  • CMake file (.txt):包含编译自定义模块所需的所有指令。编译过程基本上包括将CUDA file (.cu)指向编译器。这个过程会生成一个DLL(用于Windows)或.so(用于Linux)。

  • PDF file (.pdf):这是模块的可选帮助文件。如果选择包含它,则可通过Rocky UI中的模块界面访问该文件。

23.2.5.2. 第1步:获取文件

要开始构建Spherical Region模块,您需要创建一个特殊的文件夹,作为首选工作目录。

提醒一下:在第一部分中,我们为此创建了一个名为Compiled_Modules的工作文件夹。


提示:  SDK和Modules包包含2025 R1SDK和模块,可在Ansys客户门户网站上下载。

 


  1. 从您下载的软件包文件,转至Source Codes文件夹,然后转至Simple Modules文件夹。

  2. spherical_region-1.0.0-sdk...文件夹提取内容。

  3. 然后在您的工作目录中,粘贴spherical_region文件夹。你的文件夹结构现在应该类似于以下截图。

spherical_region/
    CMakeLists.txt
    spherical_region.cu
    spherical_region.pdf
    spherical_region.plugin
    spherical_region.py 

23.2.5.3. 第2步:查看信息文件

模块的Info file (spherical_region.plugin)可帮助您定义以下类型的信息:

  • 名称:指定您希望在Rocky UI中出现的模块名称。

  • Module:为模块编译的库文件列出名称。


    注意:  我们将在本教程后面介绍如何生成该工件。


     

[Documentation] 下的项将显示在模块Info选项卡的UI中:

  • AuthorWebsite:指定要与模块关联的公司信息。

  • VersionDescription:为模块提供进一步标识信息。


    注意:  如果要创建多行Description,则必须缩进首行之后的行(如图所示)。


     

23.2.5.4. 第3步:查看PYTHON文件

 

模块的Python file (spherical_region.py)指定了哪些模块参数必须显示在Rocky UI中。

从该文件中,Rocky提取了以下两个主要指令:

  • 自定义用户输入参数的初始值和位置。

  • 模块是否应该覆盖Rocky的任何内置模型。

该文件中的所有信息都是通过各种方法和类型组织的,这些方法和类型根据模块的目的提供不同的功能。


提示:  所提供的所有方法和类型都将在Rocky Solver SDK Manual中介绍。


下面将说明该文件的主要部分。

  • 第2-6行】导入指定模块数据所需的Solver SDK实用程序。

  • 【第9行】定义Rocky必须在UI中显示的模块的名称。

     

  • 【第12-22行】定义辅助类SphericalRegionModel,其中包括模块参数的定义。Rocky Solver SDK为此提供了一个名为Quantity的特殊类型,其中包括将单元关联至每个变量的功能。

     

  • 第26行】定义了SphericalRegionSpecs类型,其本身主要定义模块的规范。该函数用于告诉Rocky UI哪些组件会受到模块影响和/或会被模块替换,例如接触模型或材料交互属性。

  • 【第31行】模块的名称(name)。

  • 【第34行】受影响的组件(model),其在本例中仅包括先前包含在SphericalRegionModel类型中的参数规范。

  • 【第38-39行】模块的路径(CreateAddin方法),其将在仿真开始时处理模块编译库文件的加载。

     

  • 【第43行】包括SphericalRegionModule类型,其将模块定义为一个新的Rocky插件,并将模块规范与Rocky挂钩。

  • 【第44-45行】在该类型中只实施一种方法,get_addin_specs,其可使之前在文件中制定的所有规范都可用。

     

23.2.5.5. 第4步:查看CUDA文件

 

模块的CUDA file (spherical_region.cu)包括在仿真期间执行模块预期功能的所有C++代码。

该文件中定义的函数必须通过使用以下一种或多种类型的hooks在仿真处理期间(也可查看第 23.2.3 节 “ROCKY SOLVER SDK概览”)连接或hooked 至策略点的求解器:

  • Start/Termination Hooks:这些在仿真过程中只调用一次:要么在仿真初始化时调用,要么在仿真终止时调用。

  • Iteration Hooks:这些在仿真循环的每次迭代中调用一次(循环是求解运动和模型的地方,颗粒的状态因此会针对新的时间级更新为一个结果。许多循环的迭代将实现一次完整的仿真)。


    重要:  这种类型的所有迭代挂钩都需要包含一个函数调用来完成挂钩:{function name}_END()



提示:  完整的挂钩列表在Solver SDK Manual的第3章中提供。


下面将说明该文件的主要部分。

  • 第7行ROCKY_CUDA_API:在单个或多个GPU配置中启用该模块的执行。

  • 【第11-16行】struct ModuleData:创建一个结构来保存定义球面区的用户参数。

  • 【第19行】ROCKY_PLUGIN():初始化插件,定义名称和版本。这是一个强制性的定义。

     

  • 第23-37行ROCKY_PLUGIN_CONFIGURE():挂钩用于获取将出现在Rocky UI中的模块输入,其定义包括:

  • 【第26行】将分配一个自定义结构体ModuleData的实例,对应的指针命名为module_data

  • 【第29-33行】恢复通过Rocky UI输入的模块变量值,如在python文件(第 23.2.5.4 节 “第3步:查看PYTHON文件”)的SphericalRegionModel类型中的定义。这些值分配给ModuleData中相应的变量。

  • 【第36行】该指针会转换为一个void指针,以便将其分配给函数参数数据,Rocky将存储这些数据并在仿真的后续阶段提供。

     

  • 【第39-47行】ROCKY_PLUGIN_SETUP():挂钩用于为仿真分配资源,在这种情况下,其只定义一个在球面区内标记颗粒的颗粒标量变量。具体而言:

  • 【第43行】要访问先前存储的数据,就得将void指针转换回ModuleData指针。

  • 【第46行】定义处理颗粒标量操作的对象。

  • 【第47行】指定自定义颗粒标量。add 函数中的两个参数是必须与Rocky UI中的颗粒标量相关联的标签,以及单位。

     

  • 【第51-61行】ROCKY_PLUGIN_NON_DIMENSIONALIZE():挂钩用于将以前定义的所有自定义参数非量纲化,以便将其用于涉及来自Rocky求解器的数据的操作中,这些数据为无量纲。

    • 在该示例模块中,所有参数都是长度,这就意味着它们使用由模型参数的相应方法提供的长度因子进行非量纲化。

     

  • 【第64-72行】ROCKY_PLUGIN_INITIALIZE_CUDA():用于将模块数据复制到GPU的挂钩。当一个模块打算在单GPU或多GPU配置下执行时,会强制执行这种操作。

     

  • 【第76-98行】ROCKY_PLUGIN _POST_MOVE_PARTICLES():在Rocky中更新了颗粒的位置和速度之后,挂钩通过仿真中的活动颗粒在循环(时间迭代)中执行。

  • 【第88-91行】计算当前颗粒的质心和球面区中心之间的距离。

  • 【第94-97行】将Inside Sphere Flag的变量设置为0.0或1.0,这取决于距离是大于球面区的半径,还是小于球面区的半径。

  • 【第100行】ROCKY_PLUGIN_POST_MOVE_PARTICLES_END():将在ROCKY_PLUGIN_POST_MOVE_PARTICLES()之后定义的强制函数。在时间迭代循环期间执行的任何挂钩,都需要类似的关闭函数。

     

  • 【第103-107行】ROCKY_PLUGIN_TEAR_DOWN():执行所有所需的仿真结束操作,例如取消内存分配或输出所有最终/累积值。

  • 【第110-114行】ROCKY_PLUGIN_TEAR_DOWN_CUDA():在这个挂钩中,模块必须在执行ROCKY_PLUGIN_INITIALIZE_CUDA()期间释放为GPU器件中的自定义数据分配的内存。

  • 【第117行】ROCKY_PLUGIN_END:强制完成模块声明。

     

23.2.5.6. 第5步:查看PDF文件

  

模块的(可选)PDF file (.pdf)可帮助您为模块的最终用户提供使用说明和/或技术参考。


注意:  占位符.pdf 文件spherical_region.pdf) 仅供教程演示之用。


如果添加,PDF将自动链接至Rocky UI中的模块,并可通过点击问号图标打开(如图所示)。

创建PDF之后,您需要采用与模块文件夹相同的名称保存该文件,并将其与.plugin.py 文件放在同一个文件夹中。

23.2.5.7. 第6步:查看CMAKE文件

 

模块的CMake file (CMakeLists.txt)旨在管理模块的构建过程。

它包括关于Rocky Solver SDK和CUDA文件位置的所有指令。

下面将说明该文件的主要部分。

23.2.5.8. 第6步:查看CMAKE文件

  • 第4行】定义模块的数据包名称。该变量需要根据模块的名称更新。


    重要:  假设所有文件(.py, .plugin, .cu, .pdf)都与模块的命名相同。


  • 【第10行】默认的安装文件夹是由前面在第一部分中创建的ROCKY_PLUGINS_PATH 环境变量定义的。

    • 因为该环境变量直接指向工作目录,并且我们已经将模块的文件设置为在那里编译,所以无论何时编译这个新模块,Rocky UI都会自动获悉有关它的信息。

    • 如果因为任何其它原因,您希望将模块安装在另一个文件夹中,请取消这一行的注释并手动设置位置。

     

23.2.6. 为模块开发启用自动完成功能(WINDOWS-可选)

当使用Solver SDK函数开发模块时,您可以在Visual Studio Code中启用自动完成功能来编辑CUDA文件。该功能将帮助您快速访问函数建议,使模块开发变得更快、更高效。

  1. 确保您已经安装了Visual Studio Code,打开它并打开您的模块文件夹(在本例中是spherial_region)。

  2. 单击Ctrl + Shift + P并选择C/C++: Edit Configurations (JSON)。它将在您的工作目录中创建一个.vscode文件夹和一个c_cpp_properties.json文件。

  3. 从这个新的.json文件中,在IncludePath选项中包含Rocky SDK的路径("${env:RockySDK_DIR}/include",),如图所示。

  4. 如果有configurationProvider选项,请删除该行并保存文件。

     

  5. 单击Ctrl+Shift+P并选择Reload Window

这样就配置好了自动完成功能。

 

23.2.7. 编译概览

现在我们将编译自定义模块,该模块涉及以下所有步骤:

  1. 执行构建命令:在Windows中,这将使用一个特殊的Visual Studio命令提示符或在Visual Studio Code中完成;而在Linux中,这将使用终端完成。

  2. 验证编译的文件:在编译过程中,Rocky将在工作目录中自动创建一个以Rocky版本命名的文件夹,然后在该新文件夹中存放结果模块。

将为每个操作系统提供单独的构建指令。

23.2.8. 第1步:执行构建命令(WINDOWS)

  1. Windows Search 栏中,键入x64 Native Tools Command Prompt for VS,然后打开所出现的App结果。

  2. x64 Native Tools Command Prompt for VS窗口导航至您的工作目录(如图所示)。

     

  3. 在命令提示符中,分别执行以下三条命令:

    cmake -DCMAKE_GENERATOR_PLATFORM=x64 spherical_region
    cmake --build .--config Release
    cmake -P cmake_install.cmake


提示:  您可以配置Visual Studio Code来构建模块(无需每次都键入这三个命令)。


若要设置环境来通过Visual Studio Code编译模块,请按照下面的过程操作:

  1. 确保您安装了Visual Studio Code并将其打开。

  2. Extensions面板中,搜索并安装CMake Tools扩展。

  3. 访问Extension Settings并启用Status bar visibility(使其可见)。

  4. 打开您的工作目录(从File | Open Folder...打开module文件夹,例如spherical_region)。

    CMake Tools状态栏将出现在屏幕底部,显示您需要设置的选项,如下所述。

  5. 对于active kit,选择amd64版本。

  6. 对于build variant,选择Release

  7. default build target从ALL_BUILD更改为install

  8. 单击Build


注意:  对于打开的目录,设置将被保存,但是当打开一个不同的目录时,您必须在编译模块之前再次遵循第5-7步。


23.2.9. 第1步:执行构建命令(LINUX)

  1. 使用终端,导航至您的工作目录。


    注意:  本教程将工作目录定义为~/user/Documents/Rocky/Compiled_modules


  2. 请分别执行以下两条命令:

    cmake spherical_region
    make install

23.2.10. 第2步:验证编译的文件

  1. 将以下文件结构作为指导,导航至您的工作文件夹,以验证spherical_region 模块的编译内容现在是否已在与您安装的Solver SDK匹配的版本文件夹(例如25.1.0文件夹)中提供。


    注意:  在Windows机器上,编译将生成两个新文件(*.dll*.lib)。在Linux机器上,只会生成一个新文件(*.so)。


Windows:

25.1.0/
    spherical_region/
        spherical_region.dll
        spherical_region.lib
        spherical_region.pdf
        spherical_region.plugin
        spherical_region.py

Linux:

25.1.0/
    spherical_region/
        spherical_region.pdf
        spherical_region.plugin
        spherical_region.py
        spherical_region.so

23.2.11. 测试模块

23.2.11.1. 打开Rocky

检查模块是否正确构建的最简单方法是打开Rocky,然后启动一个新项目。


提示:  如果编译时打开了Rocky,您必须关闭Rocky并再次打开,刷新Modules文件夹。


您从Data面板中选择Modules时,Data Editors面板中应该会出现一个新模块的复选框(如图所示)。

 

选中该复选框并展开Data面板上的Modules实体之后,您可以选择新模块,然后在Data Editors面板中查看可针对其设置的参数(如图所示)。

 

23.2.11.2. 在项目中使用模块

要测试模块参数的设置,可以使用教程-传送槽中提供的仿真示例。


提示:  如果您还没有完成本教程,可以从这里 下载并提取dem_tut01_files.zip文件夹。

然后从tutorial_01_A_pre-processing 文件夹中打开tutorial_01_A_pre-processing.rocky


启用新的Spherical Region 模块(在第 23.2.11.1 节 “打开Rocky”上有详细说明),然后定义参数(如图所示)。

照常处理仿真。

仿真完成后,您就能通过在3D View 窗口上查看Inside Sphere Flag 属性来可视化处于所定义区内的颗粒。

 

所有进入由Spherical Region 模块指定的球面区的颗粒将采用等于1的Inside Sphere Flag 分配。

 

23.2.12. 帮助-求解器SDK手册

这就完成了本教程的第二部分。

有关Solver SDK结构及其用法的更多信息,请参阅Rocky Solver SDK Manual

要查看该手册,请从Rocky Help菜单指向Manuals,然后点击Solver SDK Manual

 

23.2.13. 结论

在本教程中,可以:

  • 了解构建自定义模块所涉及的文件

  • 了解使用Rocky Solver SDK的方法与时间

  • 查看自定义代码如何与Rocky求解器通信

  • 编译模块

  • 在Rocky用户界面(UI)测试模块

下一步是什么?

  • 如果您成功完成了本教程,那么您就可以继续学习下一个教程了。