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;
26 cf_ainv = 1 / Time;
27 cf_a2inv = 1 / (Time * Time);
28 cf_a3inv = 1 / (Time * Time * Time);
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
70
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);
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
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
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
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:15
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
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 * get_data_ptr(void)
Definition: allvars.h:360
char InitCondFile[MAXLEN_PATH]
Definition: allvars.h:272