Reference Manual¶
-
struct buff_part¶
- #include <structures.h>
Particle buffer, managing particles’ MPI communications and injection.
This structure contains all required information when particles need to be either injected or communicated from one MPI process to another.
Public Members
-
int idx_free[buff_size_cst]¶
An array containing indices of free particles, indices corresponding to the particles’ pool object.
-
int next_idx = 0¶
Gives a single temporary index of a particle.
-
float buff_send[7 * buff_size_cst]¶
Send buffer, containing pool indices of particles to be communicated out.
-
float buff_rece[7 * buff_size_cst]¶
Receive buffer, containing pool indices of particles to be communicated in.
-
int next_idx_comm = 0¶
Temporary index.
-
int nb_part_send = 0¶
Number of particles to be sent.
-
int nb_part_rece = 0¶
Number of particles to be received.
-
int exosphere[3][nb_part_add_pla_cst]¶
-
int idx_free[buff_size_cst]¶
-
struct fields_time_space¶
- #include <structures.h>
Public Members
-
float E[3][len_save_t_cst][len_save_x_cst]¶
-
float B[3][len_save_t_cst][len_save_x_cst]¶
-
float density[len_save_t_cst][len_save_x_cst]¶
-
float E[3][len_save_t_cst][len_save_x_cst]¶
-
struct house_keeping¶
- #include <structures.h>
Public Members
-
int nbTruePart = 0¶
-
int nbFreeIndTot = 0¶
-
int nbPartSW[len_save_t_cst]¶
-
int nbPartPla[len_save_t_cst]¶
-
float simuTime[len_save_t_cst]¶
-
int runTime[len_save_t_cst]¶
-
int nb_part_comm_up[len_save_t_cst]¶
-
int nb_part_comm_down[len_save_t_cst]¶
-
int nb_pla_proba[len_save_t_cst]¶
-
int nbTruePart = 0¶
-
struct injector¶
- #include <structures.h>
Public Members
-
float B[3][2 + nb_cell_per_shift_cst][len_y_cst + 4][len_z_cst + 4]¶
-
float E[3][2 + nb_cell_per_shift_cst][len_y_cst + 4][len_z_cst + 4]¶
-
float Ji[3][2 + nb_cell_per_shift_cst][len_y_cst + 4][len_z_cst + 4]¶
-
float density[2 + nb_cell_per_shift_cst][len_y_cst + 4][len_z_cst + 4]¶
-
float rx[injec_size_cst]¶
-
float ry[injec_size_cst]¶
-
float rz[injec_size_cst]¶
-
float vx[injec_size_cst]¶
-
float vy[injec_size_cst]¶
-
float vz[injec_size_cst]¶
-
float B[3][2 + nb_cell_per_shift_cst][len_y_cst + 4][len_z_cst + 4]¶
-
struct moments¶
- #include <structures.h>
Public Members
-
float E_mag[len_save_t_cst]¶
-
float E_elec[len_save_t_cst]¶
-
float E_kin[len_save_t_cst]¶
-
float B_mean[3][len_save_t_cst]¶
-
float B_var[3][len_save_t_cst]¶
-
float dens_tot[len_save_t_cst]¶
-
float vel_tot[len_save_t_cst]¶
-
float Ji_mean[3][len_save_t_cst]¶
-
float vel_part[3][len_save_t_cst]¶
-
float vel_th_part[3][len_save_t_cst]¶
-
float temp_tot[len_save_t_cst]¶
-
int nb_part_tot[len_save_t_cst]¶
-
float E_mag[len_save_t_cst]¶
-
struct particles¶
- #include <structures.h>
Public Members
-
float rx[pool_size_cst]¶
-
float ry[pool_size_cst]¶
-
float rz[pool_size_cst]¶
-
float vx[pool_size_cst]¶
-
float vy[pool_size_cst]¶
-
float vz[pool_size_cst]¶
-
bool active[pool_size_cst]¶
-
int ID[pool_size_cst]¶
-
float rx[pool_size_cst]¶
-
struct root_mean_sqr¶
- #include <structures.h>
Public Members
-
float meansqr¶
-
float mean¶
-
float B[3][len_save_t_cst]¶
-
float E[3][len_save_t_cst]¶
-
float Ji[3][len_save_t_cst]¶
-
float J_tot[3][len_save_t_cst]¶
-
float vort[3][len_save_t_cst]¶
-
float meansqr¶
-
struct simu_B_field¶
- #include <structures.h>
-
struct simu_fields¶
- #include <structures.h>
Public Members
-
struct simu_grid¶
- #include <structures.h>
-
struct simu_param¶
- #include <parameters.h>
Public Members
-
float dX = 1.¶
-
float dt = 0.1¶
-
float n0_no_norm = 1.e6¶
-
float B0_no_norm = 2.5e-9¶
-
float v0 = 0.¶
-
float E0 = -v0 * B0_no_norm¶
-
float beta = 1.¶
-
float Ti_inf = beta * B0_no_norm * B0_no_norm / (n0_no_norm * k_B * 2. * mu0)¶
-
float e_mot = 1.¶
-
float e_hal = 1.¶
-
float e_amb = 1.¶
-
float poly_ind = 1.¶
-
float eta_res_norm = 0.¶
-
float eta_hyp_res = 1.e-2¶
-
float eta_res_vac = 1.e1¶
-
float eta_sm = 0.¶
-
float fluctu_sqrt = 0.5¶
-
float B0_x = 0.¶
-
float B0_y = 0.¶
-
float B0_z = -1.¶
-
float Q = 5.e26¶
-
float nu_i = 2.e-7¶
-
float nu_d = 5.0e-7¶
-
float u0 = 1000.¶
-
int Z_pla = 18¶
-
float centre_x = 5. / 8.¶
-
float centre_y = 1. / 2.¶
-
float centre_z = 1. / 2.¶
-
float dip_mom = 1.e5¶
-
float r_obs = 57.¶
-
float omega_ci = e * B0_no_norm / m_i¶
-
float v_A = B0_no_norm / std::sqrt(mu0 * m_i * n0_no_norm)¶
-
float p0 = B0_no_norm * B0_no_norm / (2. * mu0)¶
-
float omega_ce = e * B0_no_norm / m_e¶
-
float Beta_p = 2 * mu0 * n0_no_norm * k_B * Ti_inf / (B0_no_norm * B0_no_norm)¶
-
float Beta_e = 2 * mu0 * n0_no_norm * k_B * Te_inf / (B0_no_norm * B0_no_norm)¶
-
float v0_com = v_A * dX * nb_cell_per_shift_cst / (nb_it_per_shift_cst * dt)¶
-
float v_obs = dX * nb_cell_per_shift_cst / (nb_it_per_shift_cst * dt)¶
-
int nb_dim = NB_DIM¶
-
float tMax = dt * nb_it_max_cst¶
-
int nb_sub_cycles = 11¶
-
float sub_dt = dt / nb_sub_cycles¶
-
int nb_part_add_sw = len_y_cst * len_z_cst * nb_part_node_cst¶
-
int nb_part_add_pla = 0¶
-
float sum_pla_proba = 0¶
-
float w_sw = 1. / nb_part_node_cst¶
-
float w_pla = 1.¶
-
float dens_min = 0.05¶
-
float nb_oscillations = 3.¶
-
float lambda_oscillation = xLen * dX / nb_oscillations¶
-
float k_oscillation = 2. * PI / lambda_oscillation¶
-
float omega_iaw = k_oscillation * v_s / v_A¶
-
int mpi_rank = 0¶
-
int mpi_nb_proc = 0¶
-
int nb_part_tank = 0¶
-
float dX = 1.¶
-
struct simu_tank¶
- #include <structures.h>
Public Members
-
std::vector<size_t> idx_ordered¶
-
int sliceWidth[int(len_x_cst / nb_cell_per_shift_cst)]¶
-
int indFirstPartSlice[int(len_x_cst / nb_cell_per_shift_cst)]¶
-
int idx_x = 0¶
-
std::vector<size_t> idx_ordered¶
-
struct state_solver¶
- #include <structures.h>
Public Members
-
bool breakSolver = false¶
-
bool invalidB = false¶
-
bool invalidE = false¶
-
bool invalidDens = false¶
-
bool invalidCurr = false¶
-
bool invalidCurrTot = false¶
-
bool invalid_new_part_idx = false¶
-
int error_ID = 0¶
-
std::string cuda_error_str = "cudaSuccess"¶
-
std::string error_str2[20] = {std::string("Error ID 1, cudaMalloc of particles."), std::string("Error ID 2, cudaMalloc of fields."), std::string("Error ID 3, empty."), std::string("Error ID 4, empty."), std::string("Error ID 5, empty."), std::string("Error ID 6, empty."), std::string("Error ID 7, empty."), std::string("Error ID 8, empty."), std::string("Error ID 9, empty."), std::string("Error ID 10, empty."), std::string("Error ID 11, empty."), std::string("Error ID 12, empty."), std::string("Error ID 13, empty."), std::string("Error ID 14, empty."), std::string("Error ID 15, empty."), std::string("Error ID 16, empty."), std::string("Error ID 17, empty."), std::string("Error ID 18, empty."), std::string("Error ID 19, empty."), std::string("Error ID 20, empty.")}¶
-
bool breakSolver = false¶
-
struct trajectory¶
- #include <structures.h>
Public Members
-
float rx[len_save_t_cst]¶
-
float ry[len_save_t_cst]¶
-
float rz[len_save_t_cst]¶
-
float vx[len_save_t_cst]¶
-
float vy[len_save_t_cst]¶
-
float vz[len_save_t_cst]¶
-
float rx[len_save_t_cst]¶
-
namespace cnpy¶
-
Functions
-
char BigEndianTest()¶
-
char map_type(const std::type_info &t)¶
-
template<typename T>
std::vector<char> create_npy_header(const std::vector<size_t> &shape)¶
-
void parse_npy_header(FILE *fp, size_t &word_size, std::vector<size_t> &shape, bool &fortran_order)¶
-
void parse_npy_header(unsigned char *buffer, size_t &word_size, std::vector<size_t> &shape, bool &fortran_order)¶
-
template<>
std::vector<char> &operator+=(std::vector<char> &lhs, const std::string rhs)¶
-
template<>
std::vector<char> &operator+=(std::vector<char> &lhs, const char *rhs)¶
-
template<typename T>
void npy_save(std::string fname, const T *data, const std::vector<size_t> shape, std::string mode = "w")¶
-
template<typename T>
void npz_save(std::string zipname, std::string fname, const T *data, const std::vector<size_t> &shape, std::string mode = "w")¶
-
char BigEndianTest()¶
- file cnpy.cpp
- #include “cnpy.h”#include <complex>#include <cstdlib>#include <algorithm>#include <cstring>#include <iomanip>#include <stdint.h>#include <stdexcept>#include <regex>
- file cnpy.h
- #include <string>#include <stdexcept>#include <sstream>#include <vector>#include <cstdio>#include <typeinfo>#include <iostream>#include <cassert>#include <zlib.h>#include <map>#include <memory>#include <stdint.h>#include <numeric>
- file functions_i.cpp
- #include <cmath>#include <time.h>#include “parameters.h”#include “structures.h”#include “functions_i.h”#include “functions_o.h”#include “cnpy.h”#include <iostream>#include <fstream>#include <algorithm>#include “mpi.h”
Functions
-
float normalSample(float mean = 0.0, float standardDeviation = 1.0)¶
… Yo ye yi …
-
void shuffleOwn(int *arr, size_t n)¶
-
void init_house_keeping(moments *mom, trajectory *traj, root_mean_sqr *rms, simu_param *sP, house_keeping *h_k, state_solver *sta_sol)¶
-
void init_grid(simu_grid *grid, simu_param *sP)¶
-
void init_fields(simu_fields *fields, simu_param *sP)¶
-
void init_B(simu_B_field *B, simu_param *sP)¶
-
void init_B_2(simu_B_field_2 *B, simu_param *sP)¶
-
void init_B_dipole(simu_B_field *B, simu_param *sP, simu_grid *grid)¶
-
void init_alfven_fluctuations(simu_B_field *B, simu_param *sP)¶
-
void init_part_node(particles *p, simu_grid *grid, simu_param *sP)¶
Initialises the particles “locally”.
Iterates over each node, distributing nb_part_nodes_cst per node uniformly, using a maxwellian distribution for velocity components.
- Param
-
void init_part_acoustic(particles *p, simu_grid *grid, simu_param *sP)¶
-
void init_part_2_stream(particles *p, simu_grid *grid, simu_param *sP)¶
-
void init_fluctuations(simu_B_field *B, particles *p, simu_grid *grid, simu_param *sP, MPI_Comm comm)¶
-
void init_exosphere(buff_part *b_p, simu_grid *grid, simu_param *sP, MPI_Comm comm)¶
-
void load_B_field(simu_B_field *B, simu_tank *tank, simu_param *sP)¶
-
void load_fields(simu_fields *fields, simu_tank *tank, simu_param *sP)¶
-
void load_particles(particles *p, simu_grid *grid, simu_tank *tank, simu_param *sP, MPI_Comm comm)¶
-
float normalSample(float mean = 0.0, float standardDeviation = 1.0)¶
- file functions_i.h
- #include “parameters.h”#include “mpi.h”
Functions
-
float normalSample(float mean, float standardDeviation)
… Yo ye yi …
-
void shuffleOwn(int *arr, size_t n)
-
void init_house_keeping(moments *mom, trajectory *traj, root_mean_sqr *rms, simu_param *sP, house_keeping *h_k, state_solver *sta_sol)
-
void init_grid(simu_grid *grid, simu_param *sP)
-
void init_grid_test(simu_grid *grid, simu_param *sP)¶
-
void init_fields(simu_fields *fields, simu_param *sP)
-
void init_B(simu_B_field *B, simu_param *sP)
-
void init_B_2(simu_B_field_2 *B, simu_param *sP)
-
void init_B_dipole(simu_B_field *B, simu_param *sP, simu_grid *grid)
-
void init_alfven_fluctuations(simu_B_field *B, simu_param *sP)
-
void init_part_node(particles *p, simu_grid *grid, simu_param *sP)
Initialises the particles “locally”.
Iterates over each node, distributing nb_part_nodes_cst per node uniformly, using a maxwellian distribution for velocity components.
- Param
-
void init_part_global(particles *p, simu_grid *grid, simu_param *sP)¶
-
void init_part_2_stream(particles *p, simu_grid *grid, simu_param *sP)
-
void init_part_acoustic(particles *p, simu_grid *grid, simu_param *sP)
-
void correctBulk(particles *p, simu_param *sP)¶
-
void addFluctuations(simu_B_field *B, particles *p, simu_grid *grid, simu_param *sP, MPI_Comm comm)¶
-
void init_fluctuations(simu_B_field *B, particles *p, simu_grid *grid, simu_param *sP, MPI_Comm comm)
-
void initFluctuations(simu_B_field *B, particles *p, simu_grid *grid, simu_param *sP)¶
-
void initFluctuationsNew(simu_B_field *B, particles *p, simu_grid *grid, simu_param *sP)¶
-
void init_exosphere(buff_part *b_p, simu_grid *grid, simu_param *sP, MPI_Comm comm)
-
void load_B_field(simu_B_field *B, simu_tank *tank, simu_param *sP)
-
void load_fields(simu_fields *fields, simu_tank *tank, simu_param *sP)
-
void load_particles(particles *p, simu_grid *grid, simu_tank *tank, simu_param *sP, MPI_Comm comm)
-
float normalSample(float mean, float standardDeviation)
- file functions_o.cpp
- #include <cmath>#include <time.h>#include “parameters.h”#include “structures.h”#include “functions_o.h”#include “cnpy.h”#include <iostream>#include <fstream>#include <algorithm>#include “mpi.h”
Functions
-
template<typename T>
int sgn(T val)
-
void output_HK(house_keeping *HK, trajectory *traj, moments *mom, root_mean_sqr *rms, simu_param *sP, int idx_save)¶
-
void output_particles(particles *p, int indIt, simu_param *sP)¶
-
void output_fields(simu_fields *fields, int indIt, simu_param *sP)¶
-
void output_fields_time_space(fields_time_space *fields_t_s, int indIt, simu_param *sP)¶
-
void output_density_species(simu_fields *fields, int ind_it, simu_param *sP)¶
-
void output_ohm_components(simu_B_field *B, simu_fields *fields, simu_param *sP, int ind_it)¶
-
void output_B_field(simu_B_field *B, int ind_it, simu_param *sP)¶
-
void output_grid(simu_grid *grid, simu_param *sP)¶
-
template<typename T>
- file functions_o.h
- #include “parameters.h”
Functions
-
void output_HK(house_keeping *HK, trajectory *traj, moments *mom, root_mean_sqr *rms, simu_param *sP, int idx_save)
-
void output_particles(particles *p, int indIt, simu_param *sP)
-
void output_fields(simu_fields *fields, int indIt, simu_param *sP)
-
void output_fields_time_space(fields_time_space *fields_t_s, int indIt, simu_param *sP)
-
void output_density_species(simu_fields *fields, int ind_it, simu_param *sP)
-
void output_ohm_components(simu_B_field *B, simu_fields *fields, simu_param *sP, int ind_it)
-
void output_B_field(simu_B_field *B, int indIt, simu_param *sP)
-
void output_grid(simu_grid *grid, simu_param *sP)
-
void outputFiles(particles *p, simu_grid *grid, float curr[3][len_x_cst][len_y_cst], float dens[len_x_cst][len_y_cst], float E[3][len_x_cst][len_y_cst], float B[3][len_x_cst][len_y_cst], int indIt, float energies[12][nb_it_max_cst])¶
-
void sortie()¶
-
void output_HK(house_keeping *HK, trajectory *traj, moments *mom, root_mean_sqr *rms, simu_param *sP, int idx_save)
- file kernels_calls.h
- #include “kernels_fields.cuh”#include “kernels_particles.cuh”#include “kernels_HK.cuh”#include “kernels_particles_to_grid.cuh”#include “mpi.h”
Functions
-
void count_rms(simu_B_field *B, simu_fields *fields, root_mean_sqr *rms, int idx_save, int threadsPerBlock, simu_param *sP_h, simu_param *sP_d)¶
-
void MPI_receive_send_guard_cells_down(simu_fields *fields, simu_param *sP, MPI_Comm comm)¶
-
void MPI_receive_send_guard_cells_up(simu_fields *fields, simu_param *sP, MPI_Comm comm)¶
-
void MPI_communicate_scalar(float G[len_x_cst + 4][len_y_cst + 4][len_z_cst + 4], simu_fields *fields, simu_param *sP, MPI_Comm comm, bool copy_long = true)¶
-
void comm_boundaries_density(simu_fields *fields, float density[len_x_cst + 4][len_y_cst + 4][len_z_cst + 4], injector *injec, simu_param *sP, MPI_Comm comm, int idx_it)¶
-
void comm_boundaries_curr(simu_fields *fields, float Ji[3][len_x_cst + 4][len_y_cst + 4][len_z_cst + 4], injector *injec, simu_param *sP, MPI_Comm comm)¶
-
void comm_boundaries_vector_field(simu_fields *fields, float G[3][len_x_cst + 4][len_y_cst + 4][len_z_cst + 4], simu_param *sP, MPI_Comm comm)¶
-
void moments_mapping(particles *pa, simu_fields *fields, simu_grid *grid, injector *injec, simu_param *sP_d, simu_param *sP_h, int idx_it, bool moments_b, int tag)¶
-
void ohm(simu_B_field *B, simu_fields *fields, simu_grid *grid, int indIt, simu_param *sP_h, simu_param *sP_d, MPI_Comm comm, int ohm_ID)¶
-
void faraday(simu_B_field *Bb, simu_B_field *Ba, simu_fields *fields, float sub_dt, simu_param *sP_d, simu_param *sP_h)¶
-
void check_grids(simu_B_field *B, simu_fields *fields, state_solver *staSol, int indIt, int nb_nodes_tot, int tag, simu_param *sP_h, simu_param *sP_d)¶
-
void copy_injector(particles *p, simu_tank *tank_h, injector *injec_h, int nb_part_in_slice, simu_param *sP, int idx_it)¶
-
void receive_send_part_down(buff_part *b_p, simu_param *sP, house_keeping *h_k, MPI_Comm comm, int idx_it)¶
-
void receive_send_part_up(buff_part *b_p, simu_param *sP, house_keeping *h_k, MPI_Comm comm, int idx_it)¶
-
void comm_part(particles *p, simu_grid *grid, buff_part *b_p, simu_param *sP_h, simu_param *sP_d, house_keeping *h_k, MPI_Comm comm, int idx_it)¶
-
void count_rms(simu_B_field *B, simu_fields *fields, root_mean_sqr *rms, int idx_save, int threadsPerBlock, simu_param *sP_h, simu_param *sP_d)¶
- file kernels_fields.cuh
- #include <cuda_runtime.h>#include <curand.h>#include <curand_kernel.h>#include “parameters.h”
Defines
-
__KERNELSFIELDS_CUH_INCLUDED__¶
Functions
- __global__ void faraday_k (simu_B_field *Bout, simu_B_field *Bin, simu_fields *fields, float deltaT, simu_param *sP)
- __global__ void curlB_k (simu_B_field *B, simu_fields *fields, simu_param *sP)
- __global__ void pressure_k (simu_fields *fields, float dens[len_x_cst+4][len_y_cst+4][len_z_cst+4], simu_param *sP)
- __global__ void ohm_k (simu_fields *fields, simu_B_field *B, simu_grid *grid, float density[len_x_cst+4][len_y_cst+4][len_z_cst+4], float Ji[3][len_x_cst+4][len_y_cst+4][len_z_cst+4], int indIt, simu_param *sP)
- __global__ void ohm_components_k (simu_fields *fields, simu_B_field *B, int indIt, simu_param *sP)
- __global__ void predict_correct_k (simu_B_field *Bout, simu_B_field *Bin)
- __global__ void add_counts_k (simu_fields *fields, simu_param *sP)
- __global__ void add_curr_k (simu_fields *fields, simu_param *sP)
- __global__ void add_counts_b_k (simu_fields *fields, simu_param *sP)
- __global__ void add_curr_b_k (simu_fields *fields, simu_param *sP, int ind_it)
- __global__ void current_advance_k (simu_fields *fields, simu_B_field *B, simu_param *sP, int indIt)
- __global__ void average_moments_k (simu_fields *fields)
- __global__ void copy_fields_k (simu_B_field *Ba, simu_B_field *Bb, simu_fields *fields)
- __global__ void shift_field_k (simu_B_field *Bb, simu_B_field *Ba, simu_fields *fields)
- __global__ void inject_E_B_k (injector *injec, simu_B_field *Ba, simu_B_field *Bb, simu_fields *fields)
- __global__ void inject_dens_k (injector *injec, float density[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void inject_curr_k (injector *injec, float Ji[3][len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void inject_const_B_k (simu_B_field *B, simu_param *sP)
- __global__ void inject_dens_const_k (float density[len_x_cst+4][len_y_cst+4][len_z_cst+4], simu_param *sP)
- __global__ void clear_counts_flux_num_k (simu_fields *fields)
- __global__ void add_copy_guard_X_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void add_copy_guard_Y_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void add_copy_guard_Z_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_guard_X_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_guard_Y_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_guard_Z_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_neighbour_X_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void fill_buff_down_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void add_buff_down_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_buff_down_long_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_buff_down_short_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void fill_buff_up_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_buff_up_long_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void copy_buff_up_short_k (simu_fields *fields, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void vorticity_k (simu_fields *fields, int nbNode, simu_param *sP)
- __global__ void smooth_field_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4], simu_fields *fields)
- __global__ void copy_smooth_k (float G[len_x_cst+4][len_y_cst+4][len_z_cst+4], simu_fields *fields)
-
__KERNELSFIELDS_CUH_INCLUDED__¶
- file kernels_HK.cuh
- #include <cuda_runtime.h>#include <curand.h>#include <curand_kernel.h>#include “parameters.h”
Defines
-
__KERNELSHK_H_INCLUDED__¶
Functions
- __global__ void print_param_k (simu_param *sP)
- __global__ void moments_particles_k (particles *p, moments *mom, int idx_save, simu_param *sP, house_keeping *HK)
- __global__ void moments_grids_k (simu_B_field *B, simu_fields *fields, moments *mom, int idx_save)
- __global__ void divide_moments_k (moments *mom, int idx_save, simu_param *sP)
- __global__ void update_traj_k (particles *p, trajectory *traj, int ind_it, int indPart)
- __global__ void update_fields_time_space_k (simu_fields *fields, simu_B_field *B, fields_time_space *fields_t_s, int idx_save, simu_param *sP)
- __global__ void reset_rms_k (root_mean_sqr *rms)
- __global__ void rms_k (root_mean_sqr *rms, simu_param *sP, float G[len_x_cst+4][len_y_cst+4][len_z_cst+4])
- __global__ void sum_rms_k (root_mean_sqr *rms, simu_param *sP, float G[nb_it_max_cst], int idx_save)
- __global__ void reset_state_solver_k (state_solver *sta_sol)
- __global__ void check_grids_k (simu_B_field *B, simu_fields *fields, state_solver *staSol, int indIt, int nbNode, int tag, simu_param *sP)
- __global__ void print_sta_sol_k (state_solver *staSol, int indIt, int tag)
- __global__ void HK_run_time_k (house_keeping *HK, int idx_save, float t, int run_time)
- __global__ void HK_nb_part_send_down_k (house_keeping *h_k, int nb_part_send, int idx_save)
- __global__ void HK_nb_part_send_up_k (house_keeping *h_k, int nb_part_send, int idx_save)
-
__KERNELSHK_H_INCLUDED__¶
- file kernels_particles.cuh
- #include <cuda_runtime.h>#include <curand.h>#include <curand_kernel.h>#include “parameters.h”
Defines
-
__KERNELSPARTICLES_CUH_INCLUDED__¶
Functions
- __global__ void setup_rand_k (curandState *state, unsigned long seed, int n)
- __device__ float generate (curandState *globalState, int ind)
- __global__ void rand_uniform_k (float *randomFloatUni, curandState *globalState, int n)
- __device__ float normal_sample_k (float mean=0.0, float standardDeviation=1.0, float u1=1., float u2=1.)
- __global__ void boris_pos_k (particles *p, simu_grid *grid, simu_param *sP)
- __global__ void boris_vel_k (particles *p, simu_fields *fields, simu_B_field *B, simu_grid *grid, simu_param *sP)
- __global__ void boundaries_per_spec_k (particles *p, simu_grid *grid, simu_param *sP)
- __global__ void upstream_downstream_boundary_k (particles *p, simu_grid *grid, simu_param *sP, int idx_it)
- __global__ void add_part_SW_node_k (particles *p, buff_part *b_p, simu_grid *grid, float *randomFloatUni, simu_param *sP, float dx=0.)
- __global__ void add_part_com_node_k (particles *p, buff_part *b_p, simu_grid *grid, float *randomFloatUni, int indIt, simu_param *sP)
- __global__ void add_proba_com_k (particles *p, buff_part *b_p, simu_grid *grid, float *randomFloatUni, int indIt, simu_param *sP, state_solver *sta_sol, house_keeping *h_k)
- __global__ void reset_idx_free_k (buff_part *b_p)
- __global__ void update_idx_free_k (particles *p, buff_part *b_p)
- __global__ void reset_idx_comm_k (buff_part *b_p)
- __global__ void print_idx_comm_k (buff_part *b_p, int mpi_rank)
- __global__ void search_idx_down_k (particles *p, simu_grid *grid, buff_part *b_p, simu_param *sP, int idx_it)
- __global__ void search_idx_up_k (particles *p, simu_grid *grid, buff_part *b_p, simu_param *sP)
- __global__ void update_nb_part_rece_k (buff_part *b_p, int nb_part_rece)
- __global__ void copy_buff_part_k (particles *p, buff_part *b_p)
- __global__ void shift_particles_k (particles *p, simu_param *sP)
- __global__ void inject_part_k (injector *injec, particles *p, buff_part *b_p, simu_grid *grid, simu_param *sP, int nb_part_add, bool reinjection)
-
__KERNELSPARTICLES_CUH_INCLUDED__¶
- file kernels_particles_to_grid.cuh
- #include <cuda_runtime.h>#include <curand.h>#include <curand_kernel.h>#include “parameters.h”
Defines
-
__KERNELSPARTICLESTOGRID_CUH_INCLUDED__¶
Functions
- __global__ void part2grid_counts_flux_num_k (particles *p, simu_grid *grid, simu_fields *fields, simu_param *sP, int ind_it, int flag)
-
__KERNELSPARTICLESTOGRID_CUH_INCLUDED__¶
- file menura.cu
- #include <stdio.h>#include <iostream>#include <fstream>#include “parameters.h”#include “structures.h”#include “functions_i.h”#include “functions_o.h”#include “utils.h”#include “kernels_calls.h”#include “kernels_particles.cuh”#include “kernels_fields.cuh”#include “kernels_HK.cuh”#include “mpi.h”#include <cuda.h>#include <cuda_runtime.h>
Functions
-
int main(int argc, char *argv[])¶
-
int main(int argc, char *argv[])¶
- file output_parameters.cpp
- #include <fstream>#include “parameters.h”#include “structures.h”
Functions
-
int main(int argc, char *argv[])
-
int main(int argc, char *argv[])
- file parameters.h
- #include <stdio.h>#include <iostream>#include <fstream>#include <cmath>
Defines
-
NB_DIM¶
-
decay_turb_cst¶
-
obstacle_cst¶
-
inject_pla_cst¶
-
inject_turb_cst¶
-
solid_body_cst¶
-
dipole_cst¶
Variables
-
const float e = 1.602e-19¶
-
const float m_i = 1.673e-27¶
-
const float m_e = 9.109e-31¶
-
const float mu0 = 1.257e-6¶
-
const float eps0 = 8.85e-12¶
-
const float k_B = 1.3806e-23¶
-
const float c = 299792458.¶
-
const float PI = 3.14159265359f¶
-
const int len_x_cst = 24¶
-
const int len_y_cst = 6¶
-
const int len_z_cst = 12¶
-
const int nb_part_node_cst = 140¶
-
const int rate_save_x_cst = 2¶
-
const int len_save_x_cst = int(len_x_cst / rate_save_x_cst)¶
-
const int rate_save_y_cst = 2¶
-
const int len_save_y_cst = int(len_y_cst / rate_save_y_cst)¶
-
const int nb_it_max_cst = 10000¶
-
const int rate_save_t_cst = 10¶
-
const int len_save_t_cst = int(nb_it_max_cst / rate_save_t_cst)¶
-
const int rate_save_field_cst = 200¶
-
const int rate_save_particles_cst = 4000¶
-
const int nb_it_per_shift_cst = 3¶
-
const int nb_cell_per_shift_cst = 1¶
-
const unsigned int pool_size_cst = static_cast<unsigned int>(1.02 * nb_part_node_cst * len_x_cst * len_y_cst * len_z_cst)¶
-
const unsigned int tank_size_cst = static_cast<unsigned int>(1.1 * nb_part_node_cst * len_x_cst * len_y_cst * len_z_cst)¶
-
const unsigned int buff_size_cst = static_cast<unsigned int>((2 * nb_cell_per_shift_cst + .5) * nb_part_node_cst * len_y_cst * len_z_cst)¶
-
const unsigned int injec_size_cst = static_cast<unsigned int>((2 * nb_cell_per_shift_cst + .5) * nb_part_node_cst * len_y_cst * len_z_cst)¶
-
const unsigned int nb_part_add_pla_cst = 1000¶
-
const int idx_it_inject_cst = 10000¶
-
const int seed_val_cst = 0¶
-
const int tpb_cst = 256¶
-
const bool debug_mode_cst = false¶
-
NB_DIM¶
- file structures.h
- #include “parameters.h”#include <vector>
- file utils.h
- #include <stdio.h>#include <iostream>#include <fstream>#include <cuda.h>#include <cuda_runtime.h>#include “mpi.h”#include <sys/types.h>#include <sys/stat.h>
Functions
-
void pre_checks()¶
-
void initialisation_cuda()¶
-
void debug_leo(int idx_it, int ind_it_save, int str_ind_save, bool exit_leo, particles *pa_h, particles *pa_d, simu_fields *fields_h, simu_fields *fields_d, simu_B_field *B_h, simu_B_field *B_d, simu_param *simu_param_h, house_keeping *HK_h, trajectory *traj_h, trajectory *traj_d, moments *mom_h, moments *mom_d, root_mean_sqr *rms_h, root_mean_sqr *rms_d)¶
-
void check_state(state_solver *sta_sol, simu_param *s_p, int error_ID = 0, cudaError_t err = cudaSuccess)¶
-
void check_memory_device(int rank, int tag)¶
-
void sortie()
-
void pre_checks()¶
- dir /home/etienneb/Models/Menura/menura
- dir /home/etienneb/Models/Menura/menura/src