# YHOpenSn **Repository Path**: e-level-parallel-algorithm/yhopensn ## Basic Information - **Project Name**: YHOpenSn - **Description**: 高保真仿真的需求日益增强,从而开发高精度高并发高可扩展的输运软件迫在眉睫。 YH-OpenSN是一款基于多群离散纵标法的可靠易用性软件中子输运仿真软件,针对银河天河体系进行高度优化的高并发高可扩展性的并行软件。目前,它能够求解有效增值系数问题以及次临界倍增因子问题,支持二维和三维的直角坐标系和圆柱坐标系,支持规则网格且兼容TORT的非规则网格,几乎包含所有常用差分格式,负源修正策略以及加速策略。它既能够兼容TORT的输入卡片,也能够采用几何构建(CSG)的方式进行建模。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2021-02-24 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: cae **Tags**: None ## README # OpenSN ## 一 软件概述 ## 1.1 软件功能 OpenSN是一款基于多群离散纵标法的可靠易用性软件中子输运仿真软件,基于C++ 14标准语言开发出来的高可扩展性和高模块化并行软件。它能够求解有效增值系数问题以及次临界倍增因子问题,支持二维和三维的直角坐标系和圆柱坐标系,目前支持规则网格且兼容TORT的非规则网格,含有多种差分格式,如加权差分法、(激进/安全)线性节点法、线性特征值法等,含有改负为零经济型以及满足中子守恒法负源修正策略,支持真空、反射、灰色、圆柱形、周期性等外边界条件,支持局部空间再平衡法和全局再平衡法内迭代加速策略,支持上散射再平衡法、误差外推法以及次临界增值系数再平衡法等外迭代加速策略。它还能够直接读取TORT的输入卡片,也如OpenMOC一样能够通过Python采用几何构建的方式建模。 ### 1.2 软件结构 OpenSN主要包括以下模块: - 前处理模块:TORT的读卡函数,构建几何建模的Python接口,宏截面系数处理和读取。 - 扫描模块:两次迭代SN扫描算法以及其并行算法。 - 内迭代加速模块:阻尼局部再平衡加速法 - 外迭代加速模块:上散射再平衡法、误差外推法和次临界增值再平衡法 - 差分模块:加权差分算法、线性结块法和特征值法 ### 1.3 软件特点 OpenSN是用C++编写的,具有以下特点: - 面向对象设计,支持MPI; - 完整独立的代码,不依赖其它库; - 良好的算法可扩展性和并行可扩展性; - 支持Python接口,易于用户使用。 ## 二 软件安装 ### 2.1 依赖组件 您必须先在计算机上安装一些先决条件,才能构建和安装OpenSN。可以使用标准的软件包管理器轻松安装所有必备组件,例如Ubuntu的apt-get。以下说明详细说明了需要哪些软件包,其中一些说明如何使用它们安装apt-get,另外一些说明如何从源代码安装。 以下命令将在Ubuntu 12.04或更高版本上安装所有必需和可选的依赖项: ``` sudo apt-get install build-essential git swig python-dev python-numpy python-matplotlib python-h5py python-pillow python-vtk ``` ### 2.2 编译安装 #### 2.2.1标准构建 要将代码编译并安装在用户本地目录中(推荐),只需从控制台运行以下命令: ``` python setup.py install --user ``` 注意:该--user标志应原样使用,并且不能用您的用户名代替。 要将代码编译并安装在机器的所有用户均可访问的所有Python软件包的目录中(不推荐),请运行以下命令: ``` python setup.py install ``` 现在,可以从系统上的任何位置将这些代码作为Python模块进行访问。可以将主要OpenSN Python包导入以下任何Python脚本中: import opensn #### 2.2.2 自定义构建 OpenSN提供了许多用户选项,以自定义在系统上编译和构建OpenSN源的内容和方式。OpenSN利用Python的distutils构建配置管理模块。要查看Python distutils支持的所有构建命令的列表,请在控制台中键入以下内容: ``` python setup.py --help-commands ``` 要安装OpenSN,我们通常建议使用install命令,该命令可与其他通常引用的Python 包一起构建和安装代码。要查看这些选项的列表,请在控制台中键入以下内容: ``` python setup.py install --help ``` 其中最常用的构建选项是: - --user: 将OpenSN安装在用户本地目录(即/home/username/.local/lib/pythonX.X/site-packages)中,该目录只能由您的用户名访问。如果不使用此选项进行安装,则会在机器的所有用户均可访问的Python主目录中安装OpenSN(即/usr/lib/pythonX.X/site-packages/)。强烈建议开发人员使用此选项,因为它将防止您的Python软件包被尚未验证的代码污染。 - --prefix=: 将OpenSN安装到显式定义的目录。除非您的目录包含在您的目录中,否则此选项通常没有用PYTHONPATH这样您就可以导入opensn到Python脚本中。 - --cc=: 为主opensn模块设置C ++编译器。当前,如果二进制文件的路径是由Windows指向的,则GNU的gcc,英特尔的icpc,苹果的clang和IBM的bgxlc都已配置。PATH环境变量。默认设置是gcc编译器。 - --fp=: 设置主opensn模块的浮点精度级别。这设置FP_PRECISION源代码中的宏,方法是在编译时将其设置为环境变量。默认设置是single。 # 实例 OpenSN作为Python API提供给用户。与许多其他科学模拟代码一样,对如何为OpenSN模拟编写输入文件没有严格的限制。取而代之的是,用户可以编写Python脚本或程序并导入OpenSN,而仅使用特定模拟所必需的类或例程。例如:OpenSN/sample-input/文件夹下包括用于单个棒的实例,也包含了C5G7基准问题。以下各节描述了反应堆特征值计算所需的OpenSN API的基本部分。有关OpenSN功能完整范围的更多详细信息,用户应参考OpenSN API文档。