| 1 | = Users' Document |
| 2 | |
| 3 | == Introduction |
| 4 | ISSDE is a parallel program that is compiled and run on the Linux platform. |
| 5 | |
| 6 | == Install |
| 7 | |
| 8 | === Install Requirement |
| 9 | * gcc-7.5.0 |
| 10 | * openmpi-4.1.1 |
| 11 | * gsl lib |
| 12 | * Eigen lib |
| 13 | |
| 14 | === gcc-7.5.0 Install |
| 15 | {{{ |
| 16 | sudo apt install gcc-7.5.0 |
| 17 | }}} |
| 18 | |
| 19 | === openmpi-4.1.1 Install |
| 20 | * Download openmpi[https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.gz Install package] |
| 21 | * Decompress, compile, install |
| 22 | {{{ |
| 23 | tar -zxvf openmpi-4.1.1 |
| 24 | cd openmpi-4.1.1 |
| 25 | ./configure --prefix=/opt/openmpi-4.1.1 --enable-mpi-cxx --enable-mpi-cxx-seek --enable-debug |
| 26 | make |
| 27 | make install |
| 28 | }}} |
| 29 | |
| 30 | === openmpi-4.1.1 configuration |
| 31 | {{{ |
| 32 | vim ~/.bashrc |
| 33 | }}} |
| 34 | * Add contents to the end of .bashrc |
| 35 | {{{ |
| 36 | export PATH=$PATH:/opt/openmpi-4.1.1/bin |
| 37 | export C_PATH=$C_PATH:/opt/openmpi-4.1.1/include |
| 38 | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi-4.1.1/lib |
| 39 | export LIBRARY_PATH=/$LIBRARY_PATH:/opt/openmpi-4.1.1/lib |
| 40 | export INCLUDE=$INCLUDE:/opt/openmpi-4.1.1/include |
| 41 | }}} |
| 42 | * Update the configuration |
| 43 | {{{ |
| 44 | source ~/.bashrc |
| 45 | }}} |
| 46 | |
| 47 | === gsl lib install and configuration |
| 48 | * Download gsl lib[https://mirror.ibcp.fr/pub/gnu/gsl/gsl-latest.tar.gz Install package] |
| 49 | * Decompress, compile, install |
| 50 | {{{ |
| 51 | tar -zxvf gsl-lastest.tar.gz |
| 52 | cd gsl-2.7.1 |
| 53 | ./configure --prefix=/opt/gsl-2.7.1 |
| 54 | make |
| 55 | make install |
| 56 | }}} |
| 57 | |
| 58 | === Eigen lib install and configuration |
| 59 | * Download Eigen lib[https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz Install Package] |
| 60 | * Cecompress and mv to lib |
| 61 | {{{ |
| 62 | tar -zxvf eigen-3.4.0.tar.gz |
| 63 | cp -r Eigen path_of_lib |
| 64 | }}} |
| 65 | |
| 66 | |
| 67 | == ISSDE compile, run, function and parameter setting |
| 68 | |
| 69 | === ISSDE Obtain |
| 70 | Contact Us |
| 71 | {{{ |
| 72 | Email:yifeng.zheng@ipp.ac.cn |
| 73 | }}} |
| 74 | |
| 75 | === Program compile |
| 76 | {{{ |
| 77 | cd src |
| 78 | make |
| 79 | }}} |
| 80 | |
| 81 | === Program run |
| 82 | {{{ |
| 83 | cd bin |
| 84 | mpirun -np 4 ./a.out |
| 85 | }}} |
| 86 | |
| 87 | === Code structure |
| 88 | * bin Binary run files |
| 89 | * src Source code files |
| 90 | * include Head files and input files |
| 91 | * lib lib files |
| 92 | * configure configure files |
| 93 | |
| 94 | === Source code strctures |
| 95 | * Main function stochastic_process_uniform_field_mpi.cpp |
| 96 | * Input interview function read_data.cpp |
| 97 | * Newton Method function newton_raphason_general.cpp |
| 98 | * Runge-Kutta Method runge_kutta_general.cpp |
| 99 | * Extern function ext_fun.cpp |
| 100 | |
| 101 | === Parameter Setting |
| 102 | * Major paramters |
| 103 | {{{ |
| 104 | int store_size=10; //store size |
| 105 | int DATA_NUBEAM=2; //0 single particle, 1 multi-particles, 2 source from NUBEAM |
| 106 | int CO_CTR_TANG_PERP=2; //Numbers of beam |
| 107 | int A0BEAM=0; //0 for beam 1,1 for beam 2 |
| 108 | int CLOCKWISE=1; //Direction of longitudinal magnetic field, 1 for counterclockwise ,-1 for clockwise |
| 109 | int CHECKPOINT=0; //checkpoint, 1 use checkpoint data, 0 use initial data |
| 110 | int RIP=0; //Ripple setting, 0 no ripple, 1 analysis solution of ripple, 2 EAST Engineering ripple data, 3 Fish-tail ripple(DEVICE=4), 4 BEST Engineering ripple for 3.6m case(DEVICE=5), 5 CFETR Engineering data for 7.2m case (DEVICE=4) |
| 111 | int NORMALIZATION=1; //Normalization |
| 112 | int SPLITTING=1; //Splitting method |
| 113 | int DEVICE=7; //Devices, 0 for EAST discharge #93910, 1 for BEST 3.3m case with Q=1, 2 for BEST 3.3m case with Q=5, 3 for BEST 3.3m with Q=1, 4 for CFETR steady-state case with alpha particles, 5 for BEST 3.6m with alpha particle and Q=, 6 for BEST 3.6m with Q=5, 7 for EAST discharge #101735 |
| 114 | int ICRF=1; //When DEVICE=7, ICRF-NBI fast ion with different minority concentration, 0 for only NBI, 1 for 1% H, 2 for 5% H and 3 for 10% H |
| 115 | int COLLISION=0; //0 no collision, 1 collision with electron, 2 collision with D, 3 collision with T, 4 collision with electron and D, 5 collision with electron and T, 6 collision with D and t 7 collision with electron, D and T. |
| 116 | int BC=1; //0 for LCFS boundary, 1 for first wall |
| 117 | int MHD=1; //0 no MHD, 1 with MHD perturbation field |
| 118 | int MHD_OVERLAP=0; //0 no MHD overleaping,1 for overlaping of MHD (2,1) and (3,2) |
| 119 | }}} |
| 120 | |
| 121 | * Major output files |
| 122 | {{{ |
| 123 | v_para_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Parallel velocity distribution of particles |
| 124 | v_perp_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Perpendecular velocity distribution of particles |
| 125 | v_x_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Velocity distribution in x direction |
| 126 | v_y_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Velocity distribution in y direction |
| 127 | v_z_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Velocity distribution in z direction |
| 128 | x_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Position distribution in x direction |
| 129 | y_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Position distribution in y direction |
| 130 | z_dis_NBI_1_ICRF_EAST_mhd_one_particle_D_Limiter_g_nor_mi_e_i_t_f_mpi.txt; //Position distribution in z direction |
| 131 | }}} |
| 132 | |
| 133 | === Results |
| 134 | * The agreement between the results of ISSDE code and the analytical solution of FP equation |
| 135 | [[Image(htdocs:slowing_down_velocity_no_field_e_i_benckmark.png,50%,align=middle)]] |
| 136 | * The agreement between the results of ISSDE code and the physical process |
| 137 | [[Image(htdocs:slowing_down_thermal_e_e_maxwellian.png,50%,align=middle)]] |
| 138 | * Comparison of long-term stability between splitting method and stochastic Runge-Kutta method |
| 139 | [[Image(htdocs:relative_energy_error_of_splitting_method.png,50%,align=middle)]] |
| 140 | * Fast ion trajectory compared with the results of PTC |
| 141 | [[Image(htdocs:Fig.1.png,50%,align=middle)]] |
| 142 | * Fast ion loss in EAST |
| 143 | [[Image(htdocs:heat_NBI_H001_new_rip_3d_limiter_10ms.png,50%,align=middle)]] |