MP-Gadget  5.0.1.dev1-76bc7d4726-dirty
proto.h
Go to the documentation of this file.
1 #ifndef GENIC_PROTO_H
2 #define GENIC_PROTO_H
3 #include <bigfile.h>
4 #include <stdint.h>
5 #include "power.h"
6 #include "allvars.h"
7 #include "libgadget/petapm.h"
8 
9 typedef struct IDGenerator {
10  int size[3];
11  int offset[3];
12  int Ngrid;
13  double BoxSize;
14  int NumPart;
16 
17 void
18 idgen_init(IDGenerator * idgen, PetaPM * pm, int Ngrid, double BoxSize);
19 
20 uint64_t
21 idgen_create_id_from_index(IDGenerator * idgen, int index);
22 
23 void
24 idgen_create_pos_from_index(IDGenerator * idgen, int index, double pos[3]);
25 
26 /* Compute the displacement and velocity from the initial homogeneous particle distribution,
27  * using the cosmological transfer functions. */
28 void displacement_fields(PetaPM * pm, enum TransferType Type, struct ic_part_data * dispICP, const int NumPart, Cosmology * CP, const struct genic_config GenicConfig);
29 
30 /* Fill ICP with NumPart particles spaced on a regular 3D grid, whose structure is stored in the IDGenerator. */
31 int setup_grid(IDGenerator * idgen, double shift, double mass, struct ic_part_data * ICP);
32 
33 /* Fill ICP with NumPart particles spaced out as a Lagrangian glass, calling glass_evolve
34  * to move the particles with reversed gravity. */
35 int setup_glass(IDGenerator * idgen, PetaPM * pm, double shift, int seed, double mass, struct ic_part_data * ICP, const double UnitLength_in_cm, const char * OutputDir);
36 
37 /* Evolve a distribution of particles with a reversed gravitational force. */
38 void glass_evolve(PetaPM * pm, int nsteps, const char * pkoutname, struct ic_part_data * ICP, const int NumPart, const double UnitLength_in_cm, const char * OutputDir);
39 
40 /* Save the header of the ICs. */
41 void saveheader(BigFile * bf, int64_t TotNumPartCDM, int64_t TotNumPartGas, int64_t TotNuPart, double nufrac, const double BoxSize, Cosmology * CP, const struct genic_config GenicConfig);
42 
43 /*Compute the mass array from the cosmology*/
44 void compute_mass(double * mass, int64_t TotNumPartCDM, int64_t TotNumPartGas, int64_t TotNuPart, double nufrac, const double BoxSize, Cosmology * CP, const struct genic_config GenicConfig);
45 
46 /* Save positions, velocities and IDs of a particle type to the ICs. */
47 void
49  const int Type,
50  BigFile * bf,
51  const uint64_t FirstID,
52  const int SavePrePos,
53  int NumFiles, int NumWriters,
54  struct ic_part_data * curICP);
55 
56 /*Read a parameter file*/
57 void read_parameterfile(char *fname, struct genic_config * GenicConfig, int * ShowBacktrace, double * MaxMemSizePerNode, Cosmology * CP);
58 
59 /*Defined in save.c used in power.c*/
60 void _bigfile_utils_create_block_from_c_array(BigFile * bf, void * baseptr, const char * name, const char * dtype, size_t dims[], ptrdiff_t elsize, int NumFiles, int NumWriters, MPI_Comm comm);
61 
62 #endif
const char * name
Definition: densitykernel.c:93
static int ShowBacktrace
Definition: endrun.c:100
static struct ic_part_data * curICP
Definition: glass.c:177
static Cosmology * CP
Definition: power.c:27
static double UnitLength_in_cm
Definition: power.c:26
TransferType
Definition: power.h:41
int setup_glass(IDGenerator *idgen, PetaPM *pm, double shift, int seed, double mass, struct ic_part_data *ICP, const double UnitLength_in_cm, const char *OutputDir)
Definition: glass.c:41
void compute_mass(double *mass, int64_t TotNumPartCDM, int64_t TotNumPartGas, int64_t TotNuPart, double nufrac, const double BoxSize, Cosmology *CP, const struct genic_config GenicConfig)
Definition: save.c:90
void glass_evolve(PetaPM *pm, int nsteps, const char *pkoutname, struct ic_part_data *ICP, const int NumPart, const double UnitLength_in_cm, const char *OutputDir)
Definition: glass.c:73
struct IDGenerator IDGenerator
void _bigfile_utils_create_block_from_c_array(BigFile *bf, void *baseptr, const char *name, const char *dtype, size_t dims[], ptrdiff_t elsize, int NumFiles, int NumWriters, MPI_Comm comm)
Definition: save.c:18
void idgen_create_pos_from_index(IDGenerator *idgen, int index, double pos[3])
Definition: zeldovich.c:79
void saveheader(BigFile *bf, int64_t TotNumPartCDM, int64_t TotNumPartGas, int64_t TotNuPart, double nufrac, const double BoxSize, Cosmology *CP, const struct genic_config GenicConfig)
Definition: save.c:112
void write_particle_data(IDGenerator *idgen, const int Type, BigFile *bf, const uint64_t FirstID, const int SavePrePos, int NumFiles, int NumWriters, struct ic_part_data *curICP)
Definition: save.c:61
int setup_grid(IDGenerator *idgen, double shift, double mass, struct ic_part_data *ICP)
Definition: zeldovich.c:91
void idgen_init(IDGenerator *idgen, PetaPM *pm, int Ngrid, double BoxSize)
Definition: zeldovich.c:48
void displacement_fields(PetaPM *pm, enum TransferType Type, struct ic_part_data *dispICP, const int NumPart, Cosmology *CP, const struct genic_config GenicConfig)
Definition: zeldovich.c:150
void read_parameterfile(char *fname, struct genic_config *GenicConfig, int *ShowBacktrace, double *MaxMemSizePerNode, Cosmology *CP)
Definition: params.c:75
uint64_t idgen_create_id_from_index(IDGenerator *idgen, int index)
Definition: zeldovich.c:69
int Ngrid
Definition: proto.h:12
double BoxSize
Definition: proto.h:13
int size[3]
Definition: proto.h:10
int NumPart
Definition: proto.h:14
int offset[3]
Definition: proto.h:11
Definition: petapm.h:62