wiki:user_page

Version 13 (modified by tingke, 3 months ago) ( diff )

--

用户手册

基本介绍

ISSDE是并行程序,在Linux平台编译运行。

程序安装

安装需求

  • gcc-7.5.0
  • openmpi-4.1.1
  • gsl函数库
  • Eigen函数库

gcc-7.5.0安装

sudo apt install gcc-7.5.0

openmpi-4.1.1安装

  • 在openmpi官网下载安装包
  • 解压,编译,安装
    tar -zxvf openmpi-4.1.1
    cd openmpi-4.1.1
    ./configure --prefix=/opt/openmpi-4.1.1 --enable-mpi-cxx --enable-mpi-cxx-seek --enable-debug
    make
    make install
    

openmpi-4.1.1配置

vim ~/.bashrc
  • 将以下内容添加到.bashrc结尾
    export PATH=$PATH:/opt/openmpi-4.1.1/bin
    export C_PATH=$C_PATH:/opt/openmpi-4.1.1/include
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi-4.1.1/lib
    export LIBRARY_PATH=/$LIBRARY_PATH:/opt/openmpi-4.1.1/lib
    export INCLUDE=$INCLUDE:/opt/openmpi-4.1.1/include
    
  • 更新配置
    source ~/.bashrc
    

gsl函数库安装配置

  • 在gsl官网下载安装包
  • 解压,编译,安装
    tar -zxvf gsl-lastest.tar.gz
    cd gsl-2.7.1
    ./configure --prefix=/opt/gsl-2.7.1
    make
    make install
    

Eigen函数库安装配置

  • 在Eigen函数库官网下载安装包
  • 解压,移动到lib目录下
    tar -zxvf eigen-3.4.0.tar.gz
    cp -r Eigen path_of_lib
    

ISSDE程序编译,运行,函数及参数设置

ISSDE程序获取

联系本人获取

Email:yifeng.zheng@ipp.ac.cn

程序编译

cd src
make

程序运行

cd bin
mpirun -np 4 ./a.out

程序文件夹

  • bin 二进制文件
  • src 源程序文件
  • include 头文件和输入文件
  • lib 库文件
  • configure 配置文件

源程序函数构成

  • 主函数 stochastic_process_uniform_field_mpi.cpp
  • 输入接口函数 read_data.cpp
  • 牛顿法函数 newton_raphason_general.cpp
  • 龙格库塔函数 runge_kutta_general.cpp
  • 额外函数集合 ext_fun.cpp

基本思路

Error: Processor Mermaid failed
name 'unicode' is not defined

参数设置

  • 主要参数开关
        int store_size=10;  //数据储存步长
        int DATA_NUBEAM=2;  //0 单粒子, 1 多粒子束, 2 由NUBEAM生成的源分布
        int CO_CTR_TANG_PERP=2;     //束编号
        int A0BEAM=0;   //0 束1,1 束2
        int CLOCKWISE=1;    //纵向磁场方向 1 逆时针 ,-1 顺时针
        int CHECKPOINT=0;   //checkpoint开关 1 使用checkpoint处数据, 0 使用初始设定数据
        int RIP=0;      //波纹场设置 0 无波纹, 1 解析波纹场, 2 EAST工程波纹场, 3 鱼尾波纹场(DEVICE=4), 4 BEST 3.6m半径波纹场工程数据(DEVICE=5), 5 CFETR 7.2m半径波纹场工程数据 (DEVICE=4)
        int NORMALIZATION=1;       //归一化开关
        int SPLITTING=1;    //分裂法开关
        int DEVICE=7;           //装置参数, 0 EAST放电#93910, 1 BEST 3.3m半径 Q=1情况, 2 BEST 3.3m半径 Q=5情况, 3 BEST 3.3m大半径NBI Q=1情况, 4 CFETR稳态alpha粒子分布, 5 BEST 3.6m alpha粒子 Q=1情况, 6 BEST 3.6m半径 Q=5情况, 7 EAST放电#101735
        int ICRF=1;             //当DEVICE=7, 不同少子浓度下ICRF加热NBI, 0 只有NBI, 1 1% H, 2 5% H and 3 10% H
        int COLLISION=0;    //0 无碰撞, 1 和电子碰撞, 2 和D离子碰撞, 3与T离子的碰撞, 4 和电子以及D的碰撞, 5 和电子以及T的碰撞, 6 和离子D以及T的碰撞, 7 同时包含对电子以及所有类型离子的碰撞ions.
        int BC=1;           //0 最外层闭合磁面边界, 1 第一壁边界
        int MHD=1;          //0 没有MHD, 1 含有MHD扰动场
        int MHD_OVERLAP=0;  //0 MHD没有重叠,1 MHD的(2,1)和(3,2)重叠
    
  • 主要输出文件
    v_para_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子平行方向速度分布
    v_perp_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子垂直方向速度分布
    v_x_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子x方向速度分布
    v_y_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子y方向速度分布
    v_z_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子z方向速度分布
    x_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子x方向位置分布
    y_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子y方向位置分布
    z_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt;    //粒子z方向位置分布
    

结果示例

  • ISSDE程序计算结果与FP方程解析解的一致性

slowing_down_velocity_no_field_e_i_benckmark.png

  • ISSDE程序结果与物理结果的一致性

slowing_down_thermal_e_e_maxwellian.png

  • 分裂法与随机Runge-Kutta方法长期稳定性的对比

relative_energy_error_of_splitting_method.png

  • 快离子轨迹与PTC程序轨迹的对比

Fig.1.png

  • EAST中快离子损失图

heat_NBI_H001_new_rip_3d_limiter_10ms.png

Note: See TracWiki for help on using the wiki.