| | 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)]] |