关于CuLH这个代码的一些注释。我整理了两个源代码分别是CuLH_box.cuf和CuLH_fireball.cuf,代表box计算和火球计算,分别都包含了完整的计算轻核的chanel。这两个代码的区别如下:
1 | ! 计算的chanel不一样,fireball多了SCpiDt和599两个关于共振态的过程,并且只测试deuteron |
怎么run
fortran的cuda代码需要nvfortran编译器,组里服务器安装的有,不建议自己本地配置。首先登录到组里服务器,然后切换到gpu的节点:
1 | ssh -Y gpufarm211 |
编译确保自己的当前目录里有后缀为cuf的源文件代码,运行确保当前目录有input文件SP-IN.dat。
chanel
首先定位到代码最后的主函数。
代码的各种Chanel用数组来记录,比如SCpi,表示piN到delta的chanel,包含了10个chanel,具体的过程通过具体的元素可以搜索到。然后将要计算的chanel添加到SPC这个数组:
1 | INTEGER, DIMENSION(NSPC) :: SPC = [SCpi,SCdPC,SCthPC,SCaPC], SPCR, od ! 这四个chanel分别是piN->delta,delta+N->pi+d, delta+NN->pi+t/he3,以及he4. |
最后在主函数开始的地方,修改NSPC这个参数,值等于所有chanel的数量之和,比如上面的box计算轻核的chanel,就是10+9+16+9=44
box计算
几个重要的函数:
1 |
|
fireball 计算
fireball的计算为了不让delta跑出fireball外面,需要增大box的size。
1 | CALL INIT_hydro(NTmx,dt,3.0,0) !计算fireball的初始化程序。参数分别是总步长,dt,快度cut,是否读取轻核。 |
output
主要看CuLH_yld.dat这个文件,分别是dt,p,n,delta++,delta+,delta0,delta-,pi+,pi0,pi-,d,he3,t,he4,he41st, he42st, he43st
rp0000.dat是初态分布,rp0500.dat是末态分布。