20 #define PARTICLES_CREATE 1 21 #define PARTICLES_CREATE_WITH_ID 2 22 #define PARTICLES_TRANSFER 3 23 #define PARTICLES_RESTART 4 25 #ifndef PARTICLES_LP_SPECTRA 26 #define PARTICLES_LP_SPECTRA NO 29 #ifndef PARTICLES_SHAPE 30 #define PARTICLES_SHAPE 3 39 #ifndef PARTICLES_DEPOSIT 40 #define PARTICLES_DEPOSIT REAL 51 #ifndef PARTICLES_USE_MPI_DATATYPE 52 #if PARTICLES == PARTICLES_LP 53 #define PARTICLES_USE_MPI_DATATYPE YES 55 #define PARTICLES_USE_MPI_DATATYPE YES 63 #if PARTICLES == PARTICLES_CR 66 #ifndef PARTICLES_CR_GC 67 #define PARTICLES_CR_GC NO 70 #if PARTICLES_CR_GC == YES 72 #ifndef PARTICLES_CR_GC_INTEGRATOR 73 #define PARTICLES_CR_GC_INTEGRATOR RK_MIDPOINT 75 #ifndef PARTICLES_CR_GC_4VEL 76 #define PARTICLES_CR_GC_4VEL YES 78 #ifndef PARTICLES_CR_GC_DEBUG 79 #define PARTICLES_CR_GC_DEBUG NO 85 #ifndef PARTICLES_CR_C 87 #define PARTICLES_CR_C 1.0 89 #define PARTICLES_CR_C 10000.0 94 #ifndef PARTICLES_CR_E_MC 95 #define PARTICLES_CR_E_MC 1.0 99 #ifndef PARTICLES_CR_E_MC_GAS 100 #define PARTICLES_CR_E_MC_GAS 1.0 104 #ifndef PARTICLES_CR_FEEDBACK 105 #define PARTICLES_CR_FEEDBACK YES 108 #if PARTICLES_CR_FEEDBACK == NO 109 #undef PARTICLES_CR_UPWIND_FLUX 110 #define PARTICLES_CR_UPWIND_FLUX NO 116 #if !(defined EX1) && (PARTICLES_SHAPE < 0) 125 #ifndef PARTICLES_CR_LARMOR_EPS 126 #define PARTICLES_CR_LARMOR_EPS 0.3 130 #ifndef PARTICLES_CR_NCELL_MAX 131 #define PARTICLES_CR_NCELL_MAX 1.8 136 #ifndef PARTICLES_CR_NSUB 137 #if PARTICLES_CR_GC == YES 138 #define PARTICLES_CR_NSUB 1 140 #define PARTICLES_CR_NSUB 5 145 #ifndef PARTICLES_CR_PREDICTOR 146 #define PARTICLES_CR_PREDICTOR 2 149 #ifndef PARTICLES_CR_UPWIND_FLUX 150 #define PARTICLES_CR_UPWIND_FLUX NO 154 #ifndef PARTICLES_CR_MAX_FILE_SIZE 155 #define PARTICLES_CR_MAX_FILE_SIZE 1.9 164 #if PARTICLES == PARTICLES_DUST 167 #ifndef PARTICLES_DUST_FEEDBACK 168 #define PARTICLES_DUST_FEEDBACK YES 171 #ifndef PARTICLES_DUST_SB_ETA_VK 172 #define PARTICLES_DUST_SB_ETA_VK 0.0 176 #ifndef PARTICLES_DUST_TIME_STEPPING 177 #define PARTICLES_DUST_TIME_STEPPING EXP_MIDPOINT 182 #ifndef PARTICLES_DUST_STOPPING_TIME 183 #define PARTICLES_DUST_STOPPING_TIME CONSTANT 187 #ifndef PARTICLES_DUST_MAX_FILE_SIZE 188 #define PARTICLES_DUST_MAX_FILE_SIZE 1.9 197 #if PARTICLES == PARTICLES_LP 199 #ifndef PARTICLES_LP_NCOLORS 200 #define PARTICLES_LP_NCOLORS 4 204 #ifndef PARTICLES_LP_MAX_FILE_SIZE 205 #define PARTICLES_LP_MAX_FILE_SIZE 1.9 210 #if PARTICLES == PARTICLES_LP && PARTICLES_LP_SPECTRA == YES 211 #ifndef PARTICLES_LP_NEBINS 212 #define PARTICLES_LP_NEBINS 100 215 #ifndef PARTICLES_LP_SHK_THRESHOLD 216 #define PARTICLES_LP_SHK_THRESHOLD 50 219 #ifndef PARTICLES_LP_SPEC_ENERGY 220 #define PARTICLES_LP_SPEC_ENERGY (CONST_me*CONST_c*CONST_c) 223 #ifndef PARTICLES_LP_SHK_GRADP 224 #define PARTICLES_LP_SHK_GRADP 0.1 227 #ifndef PARTICLES_LP_NONTH_FRACN 228 #define PARTICLES_LP_NONTH_FRACN 0.1 231 #ifndef PARTICLES_LP_NONTH_FRACE 232 #define PARTICLES_LP_NONTH_FRACE 0.1 235 #ifndef PARTICLES_LP_MICROETA 236 #define PARTICLES_LP_MICROETA 1.4142135623730951 239 #ifndef PARTICLES_LP_ICCMBZ 240 #define PARTICLES_LP_ICCMBZ 0.0 243 #ifndef PARTICLES_LP_CONV_SPECTRA 244 #define PARTICLES_LP_CONV_SPECTRA YES 247 #define UNIT_MAGFIELD (UNIT_VELOCITY*sqrt(4.0*CONST_PI*UNIT_DENSITY)) 248 #define UNIT_TIME (UNIT_LENGTH/UNIT_VELOCITY) 249 #define SYNCHROTRON_CONST (0.0015829*UNIT_MAGFIELD*UNIT_MAGFIELD \ 250 *PARTICLES_LP_SPEC_ENERGY*UNIT_TIME) 259 extern long int p_nparticles;
260 extern long int p_idCounter;
261 extern int p_nrestart;
267 #if PARTICLES == PARTICLES_CR 268 typedef struct Particle_{
281 #if PARTICLES == PARTICLES_DUST 282 typedef struct Particle_{
294 #if (PARTICLES == PARTICLES_LP) && (PARTICLES_LP_SPECTRA == NO) 295 typedef struct Particle_{
302 float color[PARTICLES_LP_NCOLORS];
308 #if (PARTICLES == PARTICLES_LP) && (PARTICLES_LP_SPECTRA == YES) 309 typedef struct Particle_{
323 double Vshk_upst[NVAR];
324 double Vshk_dnst[NVAR];
325 double eng[PARTICLES_LP_NEBINS+1];
326 double chi[PARTICLES_LP_NEBINS];
330 float color[PARTICLES_LP_NCOLORS];
338 typedef struct particleProbe_{
343 typedef struct particleNode_{
345 struct particleNode_ *next;
346 struct particleNode_ *prev;
354 #ifndef PARTICLES_USE_ARRAY 355 #define PARTICLES_USE_ARRAY NO 360 #define PARTICLES_LOOP(a,b) for (a = b; a != NULL; a = a->next) 372 #if PARTICLES == PARTICLES_CR 376 void Particles_CR_EMFields(
double *,
double *,
double *);
386 Data_Arr,
int,
Grid *);
391 #if PARTICLES == PARTICLES_DUST 392 void Particles_Dust_ComputeForce (Data_Arr,
Data *,
Grid *);
395 double Particles_Dust_StoppingTime(
double *, Particle *);
410 double (*DistribFunc)(
double,
double,
double),
416 #if PARTICLES == PARTICLES_LP 418 #if PARTICLES_LP_SPECTRA == YES 423 void Particles_LP_GradP(
double*,
int,
double ***u[],
Grid *,
int indici[]);
425 #if PARTICLES_LP_CONV_SPECTRA == NO 426 double Particles_LP_GetEminAtShock(Particle *, particleProbe *,
double,
double);
430 void Particles_LP_Get_3vel(
double *,
double *,
double *);
431 void Particles_LP_Get_4mag(
double *,
double,
double *);
438 void Particles_LP_Spectra(
Data *,
float ***, Particle*,
Grid *,
double);
440 #if PARTICLES_LP_CONV_SPECTRA 442 long int,
double,
double);
461 void Particles_UserDefBoundary(
Data *d,
int,
Grid *);
465 void Particles_WriteTab (particleNode*,
char filename[]);
470 extern MPI_Datatype MPI_PARTICLE;
471 extern MPI_Datatype PartOutputType;
472 void Particles_StructDatatype();
void Particles_Dust_ConservativeFeedback(Data_Arr, Data_Arr, double, RBox *)
Definition: particles_dust_feedback.c:94
void Particles_SetOutput(Data *, Runtime *)
Definition: particles_set_output.c:16
void Particles_LP_InitSpectra(Particle *)
Definition: particles_init.c:139
void Particles_LP_SampleShock(Particle *, particleProbe *, Grid *)
Definition: particles_lp_dsa.c:24
int Particles_Insert(Particle *, Data *, char, Grid *)
Definition: plist_tools.c:17
void Particles_Dust_StatesSource(Sweep *, Data_Arr, double, int, int, Grid *)
Definition: particles_dust_feedback.c:18
void Particles_Dust_Update(Data *, timeStep *, double, Grid *)
Definition: particles_dust_update_cart.c:21
int Particles_CheckSingle(Particle *, int, Grid *)
Definition: particles_tools.c:45
void Particles_LP_IntegrateSpectra(Particle *, double, double *)
Definition: particles_lp_tools.c:96
void Particles_Init(Data *, Grid *)
Definition: particles_init.c:22
void Particles_LP_UpdateSpectra(Data *, double, Grid *)
Definition: particles_lp_spectra.c:21
void Particles_Boundary(Data *, Grid *)
Definition: particles_boundary.c:22
void Particles_ListToArray(Data *d)
Definition: particles_boundary.c:422
Definition: structs.h:394
Definition: structs.h:124
void Particles_Restart(Data *, int, Grid *)
Definition: particles_lp_restart.c:20
Particle * Particles_Select(particleNode *, int)
Definition: particles_tools.c:264
Definition: structs.h:425
void Particles_CR_Predictor(Data *, double, Grid *)
Definition: particles_cr_predictor.c:20
void Particles_SetID(particleNode *)
Definition: particles_mpi_datatype.c:186
double Particles_Interpolate(double ***, double ***, int *)
Definition: particles_tools.c:82
void Particles_CR_StatesSource(const Sweep *, double, int, int, Grid *)
Definition: particles_cr_feedback.c:217
void Particles_CR_ComputeForce(Data_Arr, const Data *, Grid *)
Definition: particles_cr_force.c:31
void Particles_WriteTrajectory(Particle *, char)
Definition: particles_write_trajectory.c:14
double Particles_LP_GetEmaxAtShock(Particle *, particleProbe *, double, Grid *)
Definition: particles_lp_dsa.c:64
void Particles_WriteData(Data *d, Output *, Grid *)
Definition: particles_write_data.c:16
void Particles_WriteBinary(particleNode *, double, Output *, char *)
Definition: particles_lp_write_bin.c:30
void Particles_CR_Update(Data *, timeStep *, double, Grid *)
Definition: particles_cr_update.c:60
void Particles_LP_FixValue(Particle *, particleProbe *, Data *, Grid *)
Definition: particles_lp_tools.c:18
void Particles_InterpolateArr(Data_Arr, int, double ***, int *, double *)
Definition: particles_tools.c:115
void Particles_CR_ConservativeFeedback(Data_Arr, Data_Arr, double, RBox *)
Definition: particles_cr_feedback.c:23
Definition: structs.h:514
void Particles_LoadUniform(int, int, double *, double *, double *)
Definition: particles_load.c:61
void Particles_CR_Flux(const State *, int, int)
Definition: particles_cr_feedback.c:51
void Particles_LP_FlagShock(Data *, char ***, Grid *)
Definition: particles_lp_tools.c:128
void Particles_DepositBoundaryExchange(Data_Arr, int, Grid *)
Definition: particles_deposit.c:177
void Particles_Destroy(particleNode *, Data *)
Definition: plist_tools.c:128
void Particles_Set(Data *, Grid *)
Definition: particles_set.c:17
void Particles_LP_IC_Emissivity(Particle *, double, double, double *)
Definition: particles_lp_emissivity.c:443
Definition: structs.h:261
int Particles_LocateCell(double *, int *, Grid *)
Definition: particles_tools.c:152
void Particles_Display(Particle *)
Definition: plist_tools.c:160
void Particles_LP_Get_3mag(double *, double, double *)
Definition: particles_lp_spectra.c:708
int Particles_BoundaryCheck(Particle *p, Grid *grid)
Definition: particles_boundary.c:490
void Particles_Density(Particle *, double *)
Definition: particles_deposit.c:367
void Particles_Inject(Data *d, Grid *grid)
Definition: particles_init.c:209
void Particles_ShowList(particleNode *, int)
Definition: plist_tools.c:206
void Particles_CR_States1DCopy(const Data *, const Sweep *, int, int)
Definition: particles_cr_feedback.c:141
void Particles_LP_ComputeShockNormalSpeed(Particle *, double *, double *)
Definition: particles_lp_dsa.c:112
void Particles_WriteVTK(particleNode *PHeadRef, Output *output, char filename[128])
Definition: particles_write_vtk.c:49
void Particles_LP_UpdateUpstreamSpectra(Particle *pl, Grid *grid, double q, double eng_max, long int TotpartSHK, double TotpartE, double TotpartN)
Definition: particles_lp_dsa.c:255
void Particles_BoundaryExchange(Data *, Grid *)
Definition: particles_boundary.c:198
void Particles_LP_Get_4vel(double *, double *, double *)
Definition: particles_lp_spectra.c:645
int Particles_Number(particleNode *)
Definition: plist_tools.c:185
Definition: structs.h:201
Definition: structs.h:363
void Particles_LoadRandom(double *qbeg, double *qend, double(*DistribFunc)(double, double, double), double *q)
Definition: particles_load.c:14
void Particles_CR_ComputeCurrent(const Data *, Grid *)
Definition: particles_cr_force.c:110
void Particles_LP_Update(Data *, timeStep *, double, Grid *)
Definition: particles_lp_update.c:19
void Particles_GetWeights(Particle *, int *, double ***, Grid *)
Definition: particles_weights.c:36
long Particles_CheckAll(particleNode *, int, Grid *)
Definition: particles_tools.c:16
void Particles_LP_Sync_Emissivity(Particle *, double, double, double *, double *, double *)
Definition: particles_lp_emissivity.c:122
Definition: structs.h:289
void Particles_Deposit(particleNode *, void(*Func)(Particle *, double *), Data_Arr, int, Grid *)
Definition: particles_deposit.c:40