总体介绍
PTC code 是Particle Tracer Code for Energetic Particles in Tokamak的简称,是基于托卡马克几何的三维非圆截面,包含全轨道和导心漂移轨道的混合测试粒子程序。PTC code 采用读取 gfile (eqdsk) 平衡磁场,追踪粒子,模拟托卡马克位形电磁场扰动引起的高能粒子损失。
源代码:
https://gitee.com/openfusion/open-ptc
软件组成
PTC软件目前主要有三个部分:
- 网格生成工具:mesh_creater
- ptc计算程序:ptc
- 基本的数据处理工具
在登录集群后,通过命令 module load ptc,可以将ptc软件需要的环境变量设置好。
网格生成工具mesh_creater
mesh_creater利用托卡马克平衡文件 gfile (eqdsk)文件和网格配置文件 mesh.cfg 构造 ptc 程序所需要输入的网格文件 mesh.h5。
运行命令:mesh_creater
/* mesh config input file */
mesh=
{
nr=101; //
ntheta0=3;
ntheta1=300;
nphi=8;
nr_i=0; //1, dl in guass space; 0 dl in uniform space.
mesh_refine=1;
nr_cpu=1;
nphi_cpu=1;
ntheta_cpu=4; //
}
其中主要的参数为 nr (小半径方向格点数量),ntheta_cpu(极向密度参数,一般取3-6)。
在正确运行完mesh_creater后,将得到4个hdf5格式的数据文件,分别是
- mesh.h5 //芯部网格文件;
- meshall.h5 //芯部+边界到壁面的网格文件;
- poin.h5 //等离子体芯部的磁面信;
- vertex.h5 //等离子体芯部,磁面上的网格顶点数据。
其中目前最常用到的文件为mesh.h5(芯部网格文件),ptc采用三角形网格描述极向截面。
ptc计算程序
运行ptc计算程序,需要准备上最少三个文件,
- 第一个是刚刚在产生网格时已经用的gfile,
- 利用上一步 网格生成工具mesh_creater所生成的网格文件。
- 还有一个ptc物理参数的设置文件input.cfg。
第一个文件和第二个文件在一般情况下应该匹配(即生成网格所需要的gfile和运行ptc所需要的gfile相同)。
将上述三个文件放在一个文件夹中,分别以gfile, mesh.h5 和input.cfg命名,得到ptc的输入配置文件夹。
以ptc包中所带的例子 (data文件夹中,放有多个ptc输入数据)为例:
运行ptc的命令为:
ptc -c data/one_particle_test
依赖的环境
PTC所需要的编译环境及所依赖的一些软件包,ptc核心代码采用c++语言编写,并行计算目前主要采用mpi方式,目前需要依赖的库有:mpi,gsl,hdf5,libconfig,petsc。
ptc目前有两个部分,
1:网格生成程序 mesh_main,网格构造程序,读取tokamak平衡文件(eqdsk文件)构造三角形网格(mesh.h5文件)。
这个模块位于ptc目录的equ下面。
编译该模块需要一些第三方的软件包支持:
- cgal (cgal/4.11 经过测试)
- hdf5(hdf5-1.8.20经过测试)
- gsl(gsl2.4 经过测试)
- libconfig(libconfig/1.5 经过测试)
在psc工作站上的配置(10.8.128.160: 2022)
(Currently Loaded Modulefiles:
- cmake.3.13.0 4) cgal/4.11-forptc_Release 7) libconfig/1.5
- intel/2018 5) gsl/2.4_static
- impi/intel.mpi.2018_intel 6) hdf5/hdf5_parallel-1.8.20)
2:ptc ptc的主程序,用来计算粒子运动,位于目录triangle_pic下面
在团队集群上,可以通过ptc/mymodule 脚本来设置ptc编译环境:
source ptc/mymodule
不同的机器,所需要的环境稍有区别,比如我们组里的集群SC_Cluster上可以用预先设置的脚本
1 | source ptc/mymodule_scc_new |
设置好相关的环境变量。
编译程序
进入ptc/trangle_pic
目录,运行make
命令进行编译,如果没有错误的话,
得到两个可执行文件:
1 | mesh/mesh_creater |