GADGET-4
allvars.cc
Go to the documentation of this file.
1 /*******************************************************************************
2  * \copyright This file is part of the GADGET4 N-body/SPH code developed
3  * \copyright by Volker Springel. Copyright (C) 2014-2020 by Volker Springel
4  * \copyright (vspringel@mpa-garching.mpg.de) and all contributing authors.
5  *******************************************************************************/
6 
12 #include "gadgetconfig.h"
13 
14 #include "../data/allvars.h"
15 #include "../data/constants.h"
16 #include "../data/dtypes.h"
17 #include "../data/macros.h"
18 #include "../time_integration/driftfac.h"
19 
21 {
23  {
24  cf_atime = Time;
25  cf_atime2 = Time * Time;
26  cf_ainv = 1 / Time;
27  cf_a2inv = 1 / (Time * Time);
28  cf_a3inv = 1 / (Time * Time * Time);
29  cf_afac1 = pow(Time, 3 * GAMMA_MINUS1);
30  cf_afac2 = 1 / pow(Time, 3 * GAMMA - 2);
31  cf_afac3 = pow(Time, 3 * (1 - GAMMA) / 2.0);
35  cf_redshift = 1 / Time - 1;
36  }
37  else
38  {
39  cf_atime = 1;
40  cf_atime2 = 1;
41  cf_ainv = 1;
42  cf_a2inv = 1;
43  cf_a3inv = 1;
44  cf_afac1 = 1;
45  cf_afac2 = 1;
46  cf_afac3 = 1;
47  cf_hubble_a = 1;
48  cf_H = 0;
51  cf_redshift = 0;
52  }
53 }
54 
56 {
58 
63 
65  add_param("OmegaBaryon", &OmegaBaryon, PARAM_DOUBLE, PARAM_FIXED);
66  add_param("OmegaLambda", &OmegaLambda, PARAM_DOUBLE, PARAM_FIXED);
68  add_param("HubbleParam", &HubbleParam, PARAM_DOUBLE, PARAM_FIXED);
70 
73  add_param("CpuTimeBetRestartFile", &CpuTimeBetRestartFile, PARAM_DOUBLE, PARAM_CHANGEABLE);
76  add_param("TimeMax", &TimeMax, PARAM_DOUBLE, PARAM_FIXED); /* can be changed nevertheless through special function */
77 
79 
80  add_param("UnitVelocity_in_cm_per_s", &UnitVelocity_in_cm_per_s, PARAM_DOUBLE, PARAM_FIXED);
81  add_param("UnitLength_in_cm", &UnitLength_in_cm, PARAM_DOUBLE, PARAM_FIXED);
82  add_param("UnitMass_in_g", &UnitMass_in_g, PARAM_DOUBLE, PARAM_FIXED);
83  add_param("GravityConstantInternal", &GravityConstantInternal, PARAM_DOUBLE, PARAM_FIXED);
84 
89 
96  add_param("ActivePartFracForNewDomainDecomp", &ActivePartFracForNewDomainDecomp, PARAM_DOUBLE, PARAM_CHANGEABLE);
98 
99  add_param("ComovingIntegrationOn", &ComovingIntegrationOn, PARAM_INT, PARAM_FIXED);
100 
103 
104  add_param("NumFilesPerSnapshot", &NumFilesPerSnapshot, PARAM_INT, PARAM_CHANGEABLE);
105  add_param("MaxFilesWithConcurrentIO", &MaxFilesWithConcurrentIO, PARAM_INT, PARAM_CHANGEABLE);
106 
107  add_param("TypeOfOpeningCriterion", &TypeOfOpeningCriterion, PARAM_INT, PARAM_FIXED);
108 
110 
111  add_param("InitGasTemp", &InitGasTemp, PARAM_DOUBLE, PARAM_FIXED);
113 
114  for(int i = 0; i < NSOFTCLASSES; i++)
115  {
116  char buf_l[100];
117  sprintf(buf_l, "SofteningComovingClass%d", i);
119  }
120 
121  for(int i = 0; i < NSOFTCLASSES; i++)
122  {
123  char buf_l[100];
124  sprintf(buf_l, "SofteningMaxPhysClass%d", i);
126  }
127 
128  for(int i = 0; i < NTYPES; i++)
129  {
130  char buf_l[100];
131  sprintf(buf_l, "SofteningClassOfPartType%d", i);
133  }
134 
135 #if defined(TREEPM_NOTIMESPLIT) || defined(PLACEHIGHRESREGION)
136  add_param("ActivePartFracForPMinsteadOfEwald", &ActivePartFracForPMinsteadOfEwald, PARAM_DOUBLE, PARAM_CHANGEABLE);
137 #endif
138 
139 #ifdef ADAPTIVE_HYDRO_SOFTENING
140  add_param("MinimumComovingHydroSoftening", &MinimumComovingHydroSoftening, PARAM_DOUBLE, PARAM_FIXED);
141  add_param("AdaptiveHydroSofteningSpacing", &AdaptiveHydroSofteningSpacing, PARAM_DOUBLE, PARAM_FIXED);
142  add_param("GasSoftFactor", &GasSoftFactor, PARAM_DOUBLE, PARAM_FIXED);
143 #endif
144 
145 #ifdef TIMEDEP_ART_VISC
146  add_param("ViscosityAlphaMin", &AlphaMin, PARAM_DOUBLE, PARAM_CHANGEABLE);
147 #endif
148 
149 #ifdef SUBFIND
150  add_param("DesLinkNgb", &DesLinkNgb, PARAM_INT, PARAM_CHANGEABLE);
151 #endif
152 
153 #ifdef LIGHTCONE_PARTICLES
154  add_param("LightConeDefinitionFile", LightConeDefinitionFile, PARAM_STRING, PARAM_CHANGEABLE);
155 #endif
156 
157 #ifdef LIGHTCONE_MASSMAPS
158  add_param("LightConeMassMapsNside", &LightConeMassMapsNside, PARAM_INT, PARAM_FIXED);
159  add_param("LightConeMassMapThickness", &LightConeMassMapThickness, PARAM_DOUBLE, PARAM_CHANGEABLE);
160  add_param("LightConeMassMapMaxRedshift", &LightConeMassMapMaxRedshift, PARAM_DOUBLE, PARAM_CHANGEABLE);
161 #endif
162 
163 #ifdef REDUCE_FLUSH
164  add_param("FlushCpuTimeDiff", &FlushCpuTimeDiff, PARAM_DOUBLE, PARAM_CHANGEABLE);
165 #endif
166 
167 #ifdef COOLING
168  add_param("TreecoolFile", TreecoolFile, PARAM_STRING, PARAM_CHANGEABLE);
169 #endif
170 
171 #ifdef STARFORMATION
172  add_param("CritOverDensity", &CritOverDensity, PARAM_DOUBLE, PARAM_FIXED);
173  add_param("CritPhysDensity", &CritPhysDensity, PARAM_DOUBLE, PARAM_FIXED);
174  add_param("FactorSN", &FactorSN, PARAM_DOUBLE, PARAM_FIXED);
175  add_param("FactorEVP", &FactorEVP, PARAM_DOUBLE, PARAM_FIXED);
176  add_param("TempSupernova", &TempSupernova, PARAM_DOUBLE, PARAM_FIXED);
177  add_param("TempClouds", &TempClouds, PARAM_DOUBLE, PARAM_FIXED);
178  add_param("MaxSfrTimescale", &MaxSfrTimescale, PARAM_DOUBLE, PARAM_FIXED);
179 #endif
180 
181 #ifdef NGENIC
182  add_param("NSample", &NSample, PARAM_INT, PARAM_FIXED);
183  add_param("SphereMode", &SphereMode, PARAM_INT, PARAM_FIXED);
184  add_param("PowerSpectrumType", &PowerSpectrumType, PARAM_INT, PARAM_FIXED);
185  add_param("ReNormalizeInputSpectrum", &ReNormalizeInputSpectrum, PARAM_INT, PARAM_FIXED);
186  add_param("PrimordialIndex", &PrimordialIndex, PARAM_DOUBLE, PARAM_FIXED);
187  add_param("ShapeGamma", &ShapeGamma, PARAM_DOUBLE, PARAM_FIXED);
188  add_param("Sigma8", &Sigma8, PARAM_DOUBLE, PARAM_FIXED);
189  add_param("PowerSpectrumFile", PowerSpectrumFile, PARAM_STRING, PARAM_FIXED);
190  add_param("InputSpectrum_UnitLength_in_cm", &InputSpectrum_UnitLength_in_cm, PARAM_DOUBLE, PARAM_FIXED);
191  add_param("Seed", &NgenicSeed, PARAM_INT, PARAM_FIXED);
192 #endif
193 
194 #ifdef CREATE_GRID
195  add_param("GridSize", &GridSize, PARAM_INT, PARAM_FIXED);
196 #endif
197 
198 #ifdef EXTERNALGRAVITY_STATICHQ
199  add_param("A_StaticHQHalo", &A_StaticHQHalo, PARAM_DOUBLE, PARAM_FIXED);
200  add_param("Mass_StaticHQHalo", &Mass_StaticHQHalo, PARAM_DOUBLE, PARAM_FIXED);
201 #endif
202 }
203 
212 {
213  if(ThisTask == 0)
214  {
215  FILE *fd;
216 
217  if(!(fd = fopen(fname, "r")))
218  {
219  Terminate("can't read output list in file '%s'\n", fname);
220  }
221 
222  OutputListLength = 0;
223 
224  while(1)
225  {
226  char buf[512];
227  if(fgets(buf, 500, fd) != buf)
228  break;
229 
230  int flag;
231  int count = sscanf(buf, " %lg %d ", &OutputListTimes[OutputListLength], &flag);
232 
233  if(count == 1)
234  flag = 1;
235 
236  if(count == 1 || count == 2)
237  {
239  Terminate("\ntoo many entries in output-list. You should increase MAXLEN_OUTPUTLIST=%d.\n", MAXLEN_OUTPUTLIST);
240 
243  }
244  }
245 
246  fclose(fd);
247 
248  mpi_printf("\nfound %d times in output-list.\n", OutputListLength);
249  }
250 
251  /* tell all other processes */
252  MPI_Bcast(get_data_ptr(), get_data_size(), MPI_BYTE, 0, Communicator);
253 }
254 
256 {
258  {
259  mpi_printf("NOTICE: MaxFilesWithConcurrentIO has been reduced to the number of processors\n");
261  }
262 
263  if(MaxFilesWithConcurrentIO == 0)
264  {
265  mpi_printf("NOTICE: MaxFilesWithConcurrentIO has been set to be equal to the number of processors\n");
267  }
268 
269  if(SnapFormat < 1 || SnapFormat > 3)
270  Terminate("Unsupported File-Format: SnapFormat = %d\n", SnapFormat);
271 
273  {
274  mpi_printf("WARNING: Number of processors less than 'NumFilesPerSnapshot=%d' - reducing this to NumFilesPerSnapshot=%d\n",
277  }
278 
279  for(int i = 0; i < NTYPES; i++)
280  {
282  Terminate("SofteningClassOfPartType%d invalid (NSOFTCLASSES=%d)\n", i, NSOFTCLASSES);
283  }
284 }
static double hubble_function(double a)
Definition: driftfac.h:39
void add_param(const char *name, void *buf, int type, int flag)
Definition: parameters.cc:30
void mpi_printf(const char *fmt,...)
Definition: setcomm.h:55
int ThisTask
Definition: setcomm.h:33
int NTask
Definition: setcomm.h:32
MPI_Comm Communicator
Definition: setcomm.h:31
#define MAXLEN_OUTPUTLIST
Definition: constants.h:297
#define NSOFTCLASSES
Definition: constants.h:312
#define GAMMA_MINUS1
Definition: constants.h:110
#define GAMMA
Definition: constants.h:99
#define NTYPES
Definition: constants.h:308
#define Terminate(...)
Definition: macros.h:19
driftfac Driftfac
Definition: main.cc:41
expr pow(half base, half exp)
Definition: half.hpp:2803
#define PARAM_CHANGEABLE
Definition: parameters.h:23
#define PARAM_INT
Definition: parameters.h:20
#define PARAM_STRING
Definition: parameters.h:19
#define PARAM_DOUBLE
Definition: parameters.h:18
#define PARAM_FIXED
Definition: parameters.h:22
int SofteningClassOfPartType[NTYPES]
Definition: allvars.h:250
double UnitVelocity_in_cm_per_s
Definition: allvars.h:119
void read_outputlist(char *fname)
This function reads a table with a list of desired output times.
Definition: allvars.cc:211
char * get_data_ptr(void)
Definition: allvars.h:360
double SofteningMaxPhys[NSOFTCLASSES]
Definition: allvars.h:253
void register_parameters(void)
Definition: allvars.cc:55
char OutputListFilename[MAXLEN_PATH]
Definition: allvars.h:272
char OutputDir[MAXLEN_PATH]
Definition: allvars.h:272
double SofteningComoving[NSOFTCLASSES]
Definition: allvars.h:252
void some_parameter_checks(void)
Definition: allvars.cc:255
double OutputListTimes[MAXLEN_OUTPUTLIST]
Definition: allvars.h:275
char SnapshotFileBase[MAXLEN_PATH]
Definition: allvars.h:272
double GravityConstantInternal
Definition: allvars.h:128
void set_cosmo_factors_for_current_time(void)
Definition: allvars.cc:20
double ActivePartFracForNewDomainDecomp
Definition: allvars.h:161
size_t get_data_size(void)
Definition: allvars.h:362
char OutputListFlag[MAXLEN_OUTPUTLIST]
Definition: allvars.h:276
char InitCondFile[MAXLEN_PATH]
Definition: allvars.h:272