The FARGO_THORIN code developer's guide
 All Data Structures Files Functions Variables Typedefs Macros
Interpret.c
Go to the documentation of this file.
1 /** \file Interpret.c
2 
3 Contains the functions required to read the parameter file,
4 and functions that provide runtime information. The function
5 var() associates a string to a global variable. The function
6 ReadVariables() reads the content of a parameter file.
7 In addition, this file contains a function that prints the
8 command line usage to the standard output, a function that
9 provides verbose information about the setup (if the -v switch
10 is set on the command line), and functions that act as a
11 chronometer (if the -t switch is set on the command line).
12 
13 @author THORIN modifications by
14 Ondřej Chrenko <chrenko@sirrah.troja.mff.cuni.cz>, Copyright (C) 2017;
15 original code by Frédéric Masset
16 
17 */
18 
19 #include "fargo.h"
20 #define MAXVARIABLES 500
21 
22 extern int begin_i;
23 extern boolean OpenInner, Restart; /* #THORIN Restart added */
25 static int VariableIndex = 0;
26 static int FirstStep = YES;
28 static long Ticks;
32 
33 void
34 var(name, ptr, type, necessary, deflt)
35 char *name;
36 char *ptr;
37 int type;
38 int necessary;
39 char *deflt;
40 {
41  real valuer;
42  int valuei;
43  double temp;
44  sscanf (deflt, "%lf", &temp);
45  valuer = (real) (temp);
46  valuei = (int) valuer;
47  strcpy(VariableSet[VariableIndex].name, name);
48  VariableSet[VariableIndex].variable = ptr;
49  VariableSet[VariableIndex].type = type;
50  VariableSet[VariableIndex].necessary = necessary;
51  VariableSet[VariableIndex].read = NO;
52  if (necessary == NO) {
53  if (type == INT) {
54  *((int *) ptr) = valuei;
55  } else if (type == REAL) {
56  *((real *) ptr) = valuer;
57  } else if (type == STRING) {
58  strcpy (ptr, deflt);
59  }
60  }
61  VariableIndex++;
62 }
63 
64 void
65 ReadVariables(filename)
66 char *filename;
67 {
68  char nm[300], s[350],stringval[290];
69  char *s1;
70  double temp;
71  real valuer;
72  int i, found, valuei, success, type;
73  int *ptri;
74  real *ptrr;
75  FILE *input;
76 
77  InitVariables();
78  input = fopen(filename, "r");
79  if (input == NULL) {
80  mastererr ("Unable to read '%s'. Program stopped.\n",filename);
81  prs_exit(1);
82  }
83  mastererr ("Reading parameters file '%s'.\n", filename);
84  while (fgets(s, 349, input) != NULL) {
85  success = sscanf(s, "%s ", nm);
86  if ((nm[0] != '#') && (success == 1)) { /* # begins a comment
87  * line */
88  s1 = s + strlen(nm);
89  sscanf(s1 + strspn(s1, "\t :=>_"), "%lf", &temp);
90  sscanf(s1 + strspn(s1, "\t :=>_"), "%289s ", stringval);
91  valuer = (real) temp;
92  valuei = (int) temp;
93  for (i = 0; i < strlen(nm); i++) {
94  nm[i] = (char) toupper(nm[i]);
95  }
96  found = NO;
97  for (i = 0; i < VariableIndex; i++) {
98  if (strcmp(nm, VariableSet[i].name) == 0) {
99  if (VariableSet[i].read == YES) {
100  mastererr("Warning : %s defined more than once.\n", nm);
101  }
102  found = YES;
103  VariableSet[i].read = YES;
104  ptri = (int *) (VariableSet[i].variable);
105  ptrr = (real *) (VariableSet[i].variable);
106  if (VariableSet[i].type == INT) {
107  *ptri = valuei;
108  } else if (VariableSet[i].type == REAL) {
109  *ptrr = valuer;
110  } else if (VariableSet[i].type == STRING) {
111  strcpy (VariableSet[i].variable, stringval);
112  }
113  }
114  }
115  if (found == NO) {
116  mastererr("Warning : variable %s defined but non-existent in code.\n", nm);
117  }
118  }
119  }
120 
121  found = NO;
122  for (i = 0; i < VariableIndex; i++) {
123  if ((VariableSet[i].read == NO) && (VariableSet[i].necessary == YES)) {
124  if (found == NO) {
125  mastererr("Fatal error : undefined mandatory variable(s):\n");
126  found = YES;
127  }
128  mastererr("%s\n", VariableSet[i].name);
129  }
130  if (found == YES)
131  prs_exit(1);
132 
133  }
134  found = NO;
135  for (i = 0; i < VariableIndex; i++) {
136  if (VariableSet[i].read == NO) {
137  if (found == NO) {
138  mastererr("Secondary variables omitted :\n");
139  found = YES;
140  }
141  if ((type = VariableSet[i].type) == REAL)
142  mastererr("%s ;\t Default Value : %.5g\n", VariableSet[i].name, *((real *) VariableSet[i].variable));
143  if (type == INT)
144  mastererr("%s ;\t Default Value : %d\n", VariableSet[i].name, *((int *) VariableSet[i].variable));
145  if (type == STRING)
146  mastererr("%s ;\t Default Value : %s\n", VariableSet[i].name, VariableSet[i].variable);
147  }
148  }
149  if ((*ADVLABEL == 'y') || (*ADVLABEL == 'Y')) AdvecteLabel = YES;
150  if ((*OUTERSOURCEMASS == 'y') || (*OUTERSOURCEMASS == 'Y')) OuterSourceMass = YES;
151  if ((*TRANSPORT == 's') || (*TRANSPORT == 'S')) FastTransport = NO;
152  if ((*OPENINNERBOUNDARY == 'O') || (*OPENINNERBOUNDARY == 'o')) OpenInner = YES;
153  if ((*OPENINNERBOUNDARY == 'N') || (*OPENINNERBOUNDARY == 'n')) NonReflecting = YES;
154  /* #THORIN ---> */
155  if ((*OPENINNERBOUNDARY == 'D') || (*OPENINNERBOUNDARY == 'd')) {
156  Damping = YES;
157  }
158  if ((*DAMPTOWARDS == 'Z') || (*DAMPTOWARDS == 'z')) DampVrad = YES;
159  if ((*DAMPTOWARDS == 'I') || (*DAMPTOWARDS == 'i')) DampInit = YES;
160  /* <--- */
161  if ((*GRIDSPACING == 'L') || (*GRIDSPACING == 'l')) LogGrid = YES;
162  if ((*DISK == 'N') || (*DISK == 'n')) IsDisk = NO;
163  if ((*FRAME == 'C') || (*FRAME == 'c')) Corotating = YES;
164  if ((*FRAME == 'G') || (*FRAME == 'g')) {
165  Corotating = YES;
166  GuidingCenter = YES;
167  }
168  if ((*WRITEVELOCITY == 'N') || (*WRITEVELOCITY == 'n')) Write_Velocity = NO;
169  if ((*WRITEDENSITY == 'N') || (*WRITEDENSITY == 'n')) Write_Density = NO;
170  if ((*INDIRECTTERM == 'N') || (*INDIRECTTERM == 'n')) Indirect_Term = NO;
171  if ((*EXCLUDEHILL == 'Y') || (*EXCLUDEHILL == 'y')) ExcludeHill = YES;
172  if ((ALPHAVISCOSITY != 0.0) && (VISCOSITY != 0.0)) {
173  mastererr ("You cannot use at the same time\n");
174  mastererr ("VISCOSITY and ALPHAVISCOSITY.\n");
175  mastererr ("Edit the parameter file so as to remove\n");
176  mastererr ("one of these variables and run again.\n");
177  prs_exit (1);
178  }
179  if (ALPHAVISCOSITY != 0.0) {
181  masterprint ("Viscosity is of alpha type\n");
182  }
183  if ((THICKNESSSMOOTHING != 0.0) && (ROCHESMOOTHING != 0.0)) {
184  mastererr ("You cannot use at the same time\n");
185  mastererr ("`ThicknessSmoothing' and `RocheSmoothing'.\n");
186  mastererr ("Edit the parameter file so as to remove\n");
187  mastererr ("one of these variables and run again.\n");
188  prs_exit (1);
189  }
190  if ((THICKNESSSMOOTHING <= 0.0) && (ROCHESMOOTHING <= 0.0)) {
191  mastererr ("A non-vanishing potential smoothing length is required.\n");
192  mastererr ("Please use either of the following variables:\n");
193  mastererr ("`ThicknessSmoothing' *or* `RocheSmoothing'.\n");
194  mastererr ("before launching the run again.\n");
195  prs_exit (1);
196  }
197  if (ROCHESMOOTHING != 0.0) {
199  masterprint ("Planet potential smoothing scales with their Hill sphere.\n");
200  }
201  if (OverridesOutputdir == YES) {
202  sprintf (OUTPUTDIR, "%s", NewOutputdir);
203  }
204  /* Add a trailing slash to OUTPUTDIR if needed */
205  if (*(OUTPUTDIR+strlen(OUTPUTDIR)-1) != '/')
206  strcat (OUTPUTDIR, "/");
207  /* #THORIN */
208  if ((*ENERGYEQUATION == 'Y') || (*ENERGYEQUATION == 'y')) {
209  EnergyEq = YES;
211  }
212  if ((*WRITETEMPERATURE == 'Y') || (*WRITETEMPERATURE == 'y')) Write_Temperature = YES;
213  if ((*WRITEENERGY == 'Y') || (*WRITEENERGY == 'y')) Write_Energy = YES;
214  if ((*WRITEDIVV == 'Y') || (*WRITEDIVV == 'y')) Write_Divergence = YES;
215  if ((*WRITEQPLUS == 'Y') || (*WRITEQPLUS == 'y')) Write_Qplus = YES;
216  if ((*WRITEQBALANCE == 'Y') || (*WRITEQBALANCE == 'y')) Write_Qbalance = YES;
217  if (COOLINGTIME > 0.0) ParametricCooling = YES;
218  if ((*STELLARIRRADIATION == 'y') || (*STELLARIRRADIATION == 'Y')) StellarIrradiation = YES;
219  if ((*INITIALIZEFROMFILE == 'y') || (*INITIALIZEFROMFILE == 'Y')) InitFromFile = YES;
220  if ((*WRITETORQUEFILES == 'y') || (*WRITETORQUEFILES == 'Y')) WriteTorque = YES;
221  if ((*TORQUEMAPINFILE == 'y') || (*TORQUEMAPINFILE == 'Y')) WriteTorqueMapFile = YES;
222  if ((*RESOLVECOLLISIONS == 'y') || (*RESOLVECOLLISIONS == 'Y')) Collisions = YES;
223  if (TARGETNPL >= 0) MonitorNPL = YES;
224  if ((*PLANETSFEELDISK == 'y') || (*PLANETSFEELDISK == 'Y')) {
225  FeelDisk = YES;
226  } else {
227  FeelDisk = NO;
228  }
229  if ((*PEBBLEACCRETION == 'y') || (*PEBBLEACCRETION == 'Y')) Pebbles = YES;
230  if ((*BACKREACTION == 'y') || (*BACKREACTION == 'Y')) BackReaction = YES;
231  if ((*PARTICLEDIFFUSION == 'y') || (*PARTICLEDIFFUSION = 'Y')) DiffusiveParticles = YES;
232  if ((*ACCRETIONALHEATING == 'y') || (*ACCRETIONALHEATING == 'Y')) AccretHeating = YES;
233  if ((*WRITEETA == 'y') || (*WRITEETA == 'Y')) Write_Eta = YES;
236 }
237 
238 void PrintUsage (execname)
239 char *execname;
240 {
241  mastererr("\n#THORIN : Please note that the following usage description corresponds\n");
242  mastererr("to the original FARGO code and thus may be inaccurate when using the\n");
243  mastererr("THORIN modification. See the THORIN code documentation, README file and\n");
244  mastererr("user guide for more information about usage. 2DO: The usage log will be\n");
245  mastererr("updated in the next version.\n\n");
246  mastererr("Usage : %s [-abcdeimnptvz] [-(0-9)] [-s number] [-f scaling] parameters file\n", execname);
247  mastererr("\n-a : Monitor mass and angular momentum at each timestep\n");
248  mastererr("-b : Adjust azimuthal velocity to impose strict centrifugal balance at t=0\n");
249  mastererr("-c : Sloppy CFL condition (checked at each DT, not at each timestep)\n");
250  mastererr("-d : Print some debugging information on 'stdout' at each timestep\n");
251  mastererr("-e : Activate EU test problem torque file output\n");
252  mastererr("-f : Scale density array by 'scaling'. Useful to increase/decrease\n");
253  mastererr(" disk surface density after a restart, for instance. \n");
254  mastererr("-i : tabulate Sigma profile as given by restart files\n");
255  mastererr("-m : Merge output files from different CPUs\n");
256  mastererr("-n : Disable simulation. The program just reads parameters file\n");
257  mastererr("-o : Overrides output directory of input file.\n");
258  mastererr("-p : Give profiling information at each time step\n");
259  mastererr("-s : Restart simulation, taking #'number' files as initial conditions\n");
260  mastererr("-t : Monitor CPU time usage at each time step\n");
261  mastererr("-v : Verbose mode. Tells everything about parameters file\n");
262  mastererr("-z : fake sequential built when evaluating sums on HD meshes\n");
263  mastererr("-(0-9) : only write initial (or restart) HD meshes,\n");
264  mastererr(" proceed to the next nth output and exit\n");
265  mastererr(" This option must stand alone on one switch (-va -4 is legal, -v4a is not)\n");
266  prs_exit (1);
267 }
268 
270 real time;
271 {
272  return time/2.0/PI*sqrt(G*1.0/1.0/1.0/1.0);
273 }
274 
276 real time;
277 {
278  return (time/DT/NINTERM);
279 }
280 
281 void TellEverything () {
282  int nhdout;
283  real temp;
284  if (!CPU_Master) return;
285  printf ("\n#THORIN: Please note that the information below correspond\n");
286  printf ("to the original version of FARGO and are inaccurate in some\n");
287  printf ("cases when using the THORIN modification. 2DO: this will be\n");
288  printf ("improved in the next version.\n\n");
289  printf ("\nDisc properties:\n");
290  printf ("----------------\n");
291  printf ("Inner Radius : %g\n", RMIN);
292  printf ("Outer Radius : %g\n", RMAX);
293  printf ("Aspect Ratio : %g\n", ASPECTRATIO);
294  printf ("VKep at inner edge : %.3g\n", sqrt(G*1.0*(1.-0.0)/RMIN));
295  printf ("VKep at outer edge : %.3g\n", sqrt(G*1.0/RMAX));
296  temp=SIGMA0*PI*(RMAX*RMAX-RMIN*RMIN);
297  printf ("Disk Mass : %g\n", temp);
298  temp=SIGMA0*PI*(1.0-RMIN*RMIN);
299  printf ("Mass inner to r=1.0 : %g \n", temp);
300  temp=SIGMA0*PI*(RMAX*RMAX-1.0);
301  printf ("Mass outer to r=1.0 : %g \n", temp);
302  printf ("Travelling time for acoustic density waves :\n");
303  temp = 2.0/3.0/ASPECTRATIO*(pow(RMAX,1.5)-pow(RMIN,1.5));
304  printf (" * From Rmin to Rmax : %.2g = %.2f orbits ~ %.1f outputs\n", temp, TellNbOrbits(temp), TellNbOutputs(temp));
305  temp = 2.0/3.0/ASPECTRATIO*(pow(RMAX,1.5)-pow(1.0,1.5));
306  printf (" * From r=1.0 to Rmax: %.2g = %.2f orbits ~ %.1f outputs\n", temp, TellNbOrbits(temp), TellNbOutputs(temp));
307  temp = 2.0/3.0/ASPECTRATIO*(pow(1.0,1.5)-pow(RMIN,1.5));
308  printf (" * From r=1.0 to Rmin: %.2g = %.2f orbits ~ %.1f outputs\n", temp, TellNbOrbits(temp), TellNbOutputs(temp));
309  temp = 2.0*PI*sqrt(RMIN*RMIN*RMIN/G/1.0);
310  printf ("Orbital time at Rmin : %.3g ~ %.2f outputs\n", temp, TellNbOutputs(temp));
311  temp = 2.0*PI*sqrt(RMAX*RMAX*RMAX/G/1.0);
312  printf ("Orbital time at Rmax : %.3g ~ %.2f outputs\n", temp, TellNbOutputs(temp));
313  printf ("Sound speed :\n");
314  printf (" * At unit radius : %.3g\n", ASPECTRATIO*sqrt(G*1.0));
315  printf (" * At outer edge : %.3g\n", ASPECTRATIO*sqrt(G*1.0/RMAX));
316  printf (" * At inner edge : %.3g\n", ASPECTRATIO*sqrt(G*1.0/RMIN));
317  printf ("\nGrid properties:\n");
318  printf ("----------------\n");
319  printf ("Number of rings : %d\n", NRAD);
320  printf ("Number of sectors : %d\n", NSEC);
321  printf ("Total cells : %d\n", NRAD*NSEC);
322  printf ("\nOutputs properties:\n");
323  printf ("-------------------\n");
324  printf ("Time increment between outputs : %.3f = %.3f orbits\n", NINTERM*DT, TellNbOrbits(NINTERM*DT));
325  printf ("At each output #i, the following files are written:\n");
326  printf ("gasdens[i].dat : %d bytes\n",(int)(NRAD*NSEC*sizeof(real)));
327  printf ("gasvrad[i].dat : %d bytes\n",(int)(NRAD*NSEC*sizeof(real)));
328  printf ("gasvtheta[i].dat : %d bytes\n",(int)(NRAD*NSEC*sizeof(real)));
329  if (EnergyEq == YES) /* #THORIN */
330  printf ("gastemper[i].dat : %d bytes\n",(int)(NRAD*NSEC*sizeof(real)));
331  if (AdvecteLabel == YES)
332  printf ("gaslabel[i].dat : %d bytes\n",(int)(NRAD*NSEC*sizeof(real)));
333  printf ("There will be in total %d outputs\n", NTOT/NINTERM);
334  printf ("(which correspond to an elapsed time = %.3f or to %.2f orbits)\n", NTOT*DT, TellNbOrbits(NTOT*DT));
335  nhdout=3;
336  if (EnergyEq == YES) nhdout++;
337  if (AdvecteLabel == YES) nhdout++;
338  temp = ((real)nhdout)*NRAD*NSEC*sizeof(real);
339  /* <--- */
340  temp *= (real)NTOT/(real)NINTERM;
341  temp /= 1024.0*1024.0;
342  printf ("So the code will produce ~%.2f Mbytes of data\n", temp);
343  printf ("Check (eg by issuing a 'df' command) that you have enough disk space,\n");
344  printf ("otherwise you will get a system full and the code will stop.\n");
345  /* #THORIN ---> */
346  printf ("\nSpecifications of the energy setup:\n");
347  printf ("----------------\n");
348  if (!EnergyEq) {
349  printf ("This run is isothermal.\n");
350  } else {
351  printf ("This run is non-isothermal (solves the energy equation).\n");
352  }
353  if (ParametricCooling && EnergyEq) printf ("Parametric cooling is set. No self-consistent heating/cooling source terms will be used!\n\n");
354  if (!ParametricCooling && EnergyEq) printf ("Implicit solution of the energy equation with all implemented heating/cooling source terms will be performed.\n\n");
355  fflush (stdout);
356 }
357 
358 void GiveTimeInfo (number)
359 int number;
360 {
361  struct tms buffer;
362  real total, last, mean, totalu;
363  Current = times (&buffer);
364  CurrentUser = buffer.tms_utime;
365  if (FirstStep == YES) {
366  First = Current;
368  fprintf (stderr, "Time counters initialized\n");
369  FirstStep = NO;
370  Ticks = sysconf (_SC_CLK_TCK);
371  }
372  else {
373  total = (real)(Current - First)/Ticks;
374  totalu= (real)(CurrentUser-FirstUser)/Ticks;
375  last = (real)(CurrentUser - PreceedingUser)/Ticks;
376  number -= begin_i/NINTERM;
377  mean = totalu / number;
378  fprintf (stderr, "Total Real Time elapsed : %.3f s\n", total);
379  fprintf (stderr, "Total CPU Time of process : %.3f s (%.1f %%)\n", totalu, 100.*totalu/total);
380  fprintf (stderr, "CPU Time since last time step : %.3f s\n", last);
381  fprintf (stderr, "Mean CPU Time between time steps : %.3f s\n", mean);
382  fprintf (stderr, "CPU Load on last time step : %.1f %% \n", (real)(CurrentUser-PreceedingUser)/(real)(Current-Preceeding)*100.);
383 
384  }
387 }
388 
389 void InitSpecificTime (profiling, process_name, title)
390 boolean profiling;
391 TimeProcess *process_name;
392 char *title;
393 {
394  struct tms buffer;
395  if (profiling == NO) return;
396  Ticks = sysconf (_SC_CLK_TCK);
397  times (&buffer);
398  process_name->clicks = buffer.tms_utime;
399  strcpy (process_name->name, title);
400 }
401 
402 void GiveSpecificTime (profiling, process_name)
403 boolean profiling;
404 TimeProcess process_name;
405 {
406  struct tms buffer;
407  long ticks;
408  real t;
409  if (profiling == NO) return;
410  Ticks = sysconf (_SC_CLK_TCK);
411  times (&buffer);
412  ticks = buffer.tms_utime - process_name.clicks;
413  t = (real)ticks / (real)Ticks;
414  fprintf (stderr, "Time spent in %s : %.3f s\n", process_name.name, t);
415 }
416 
void PrintUsage(char *execname)
Definition: Interpret.c:238
int TARGETNPL
Definition: param_noex.h:74
double real
Definition of the type 'real' used throughout the code.
Definition: types.h:20
void TellEverything()
Definition: Interpret.c:281
#define YES
Definition: types.h:46
boolean OuterSourceMass
Definition: Interpret.c:30
boolean FeelDisk
Definition: global.h:26
#define REAL
Definition: types.h:48
char name[80]
Definition: types.h:87
real DT
Definition: param_noex.h:7
char WRITEQBALANCE[512]
Definition: param_noex.h:53
This structure is used for monitoring CPU time usage.
Definition: types.h:86
boolean PrescribedAccretion
Definition: global.h:27
char TORQUEMAPINFILE[512]
Definition: param_noex.h:94
boolean StellarIrradiation
Definition: global.h:24
char OUTPUTDIR[512]
Definition: param_noex.h:11
int boolean
The boolean type will be used mainly for the variables corresponding to the command line switches...
Definition: types.h:15
boolean DampVrad
Definition: global.h:24
boolean Indirect_Term
Definition: Interpret.c:31
boolean Collisions
Definition: global.h:26
boolean OpenInner
Definition: main.c:14
int NINTERM
Definition: param_noex.h:9
char WRITEDENSITY[512]
Definition: param_noex.h:34
char WRITETEMPERATURE[512]
Definition: param_noex.h:49
char TRANSPORT[512]
Definition: param_noex.h:14
char WRITEENERGY[512]
Definition: param_noex.h:50
char INDIRECTTERM[512]
Definition: param_noex.h:36
char WRITETORQUEFILES[512]
Definition: param_noex.h:77
boolean DampInit
Definition: global.h:24
boolean WriteTorqueMapFile
Definition: global.h:26
char GRIDSPACING[512]
Definition: param_noex.h:17
char PEBBLEACCRETION[512]
Definition: param_noex.h:82
char WRITEVELOCITY[512]
Definition: param_noex.h:35
char PLANETSFEELDISK[512]
Definition: param_noex.h:80
real TellNbOrbits(real time)
Definition: Interpret.c:269
boolean Restart
Definition: main.c:14
real ALPHAVISCOSITY
Definition: param_noex.h:26
int begin_i
Definition: main.c:15
char ENERGYEQUATION[512]
Definition: param_noex.h:48
boolean EnergyEq
Definition: global.h:24
static clock_t Current
Definition: Interpret.c:27
int necessary
Tell whether defining the parameter is optional or mandatory.
Definition: types.h:79
boolean Damping
Definition: global.h:24
real THICKNESSSMOOTHING
Definition: param_noex.h:22
boolean Write_Qplus
Definition: global.h:25
boolean Write_Energy
Definition: global.h:25
char RESOLVECOLLISIONS[512]
Definition: param_noex.h:73
char ACCRETIONALHEATING[512]
Definition: param_noex.h:84
boolean Corotating
Definition: Interpret.c:30
real ROCHESMOOTHING
Definition: param_noex.h:23
real VISCOSITY
Definition: param_noex.h:25
char OUTERSOURCEMASS[512]
Definition: param_noex.h:33
static clock_t First
Definition: Interpret.c:27
char WRITEQPLUS[512]
Definition: param_noex.h:52
char DISK[512]
Definition: param_noex.h:31
#define G
Definition: fondam.h:11
char INITIALIZEFROMFILE[512]
Definition: param_noex.h:62
char STELLARIRRADIATION[512]
Definition: param_noex.h:56
boolean TorqueDensity
Definition: global.h:28
char * variable
A pointer to the corresponding variable.
Definition: types.h:77
char WRITEDIVV[512]
Definition: param_noex.h:51
char DAMPTOWARDS[512]
Definition: param_noex.h:67
#define INT
Definition: types.h:49
void InitVariables()
Definition: var.c:17
void GiveTimeInfo(int number)
Definition: Interpret.c:358
boolean RocheSmoothing
Definition: global.h:30
boolean FastTransport
Definition: Interpret.c:29
boolean AdvecteLabel
Definition: global.h:29
int NSEC
Definition: param_noex.h:19
The Param structure handles the parameters of the parameter file.
Definition: types.h:74
char BACKREACTION[512]
Definition: param_noex.h:83
static int VariableIndex
Definition: Interpret.c:25
real RMIN
Definition: param_noex.h:20
static clock_t FirstUser
Definition: Interpret.c:27
void var(char *name, char *ptr, int type, int necessary, char *deflt)
Definition: Interpret.c:34
real ASPECTRATIO
Definition: param_noex.h:24
char WRITEETA[512]
Definition: param_noex.h:85
boolean GuidingCenter
Definition: Interpret.c:29
char FRAME[512]
Definition: param_noex.h:32
#define NO
Definition: types.h:47
real RMAX
Definition: param_noex.h:21
char OPENINNERBOUNDARY[512]
Definition: param_noex.h:12
boolean Write_Qbalance
Definition: global.h:25
void mastererr(const char *template,...)
Definition: LowTasks.c:49
int GETTORQUEFORPLANET
Definition: param_noex.h:95
static clock_t PreceedingUser
Definition: Interpret.c:27
boolean MonitorNPL
Definition: global.h:26
int NRAD
Definition: param_noex.h:18
boolean InitFromFile
Definition: global.h:25
#define MAXVARIABLES
Definition: Interpret.c:20
real TellNbOutputs(real time)
Definition: Interpret.c:275
int read
This variable is set to YES if and only if the parameter has been found in the parameter file...
Definition: types.h:78
static Param VariableSet[MAXVARIABLES]
Definition: Interpret.c:24
char ADVLABEL[512]
Definition: param_noex.h:13
Contains all the include directives requested by the code.
boolean Write_Eta
Definition: global.h:27
static long Ticks
Definition: Interpret.c:28
boolean Write_Temperature
Definition: global.h:25
real SIGMA0
Definition: param_noex.h:8
boolean AccretHeating
Definition: global.h:27
int type
Type of the parameter (e.g.
Definition: types.h:76
boolean ViscosityAlpha
Definition: global.h:30
boolean Write_Density
Definition: Interpret.c:31
static clock_t CurrentUser
Definition: Interpret.c:27
boolean IsDisk
Definition: Interpret.c:30
boolean LogGrid
Definition: global.h:41
char NewOutputdir[1024]
Definition: global.h:43
boolean BackReaction
Definition: global.h:27
boolean ParametricCooling
Definition: global.h:24
void GiveSpecificTime(boolean profiling, TimeProcess process_name)
Definition: Interpret.c:402
boolean WriteTorque
Definition: global.h:26
boolean ExcludeHill
Definition: global.h:31
boolean NonReflecting
Definition: Interpret.c:30
void ReadVariables(char *filename)
Definition: Interpret.c:65
char EXCLUDEHILL[512]
Definition: param_noex.h:37
clock_t clicks
Definition: types.h:88
real PARAMETRICACCRETION
Definition: param_noex.h:93
boolean CPU_Master
Definition: global.h:3
static clock_t Preceeding
Definition: Interpret.c:27
real COOLINGTIME
Definition: param_noex.h:55
static int FirstStep
Definition: Interpret.c:26
void InitSpecificTime(boolean profiling, TimeProcess *process_name, char *title)
Definition: Interpret.c:389
int NTOT
Definition: param_noex.h:10
#define PI
Definition: fondam.h:12
boolean OverridesOutputdir
Definition: global.h:42
void prs_exit(int numb)
Definition: LowTasks.c:33
char PARTICLEDIFFUSION[512]
Definition: param_noex.h:91
boolean Write_Velocity
Definition: Interpret.c:31
void masterprint(const char *template,...)
Definition: LowTasks.c:40
boolean Write_Divergence
Definition: global.h:25
boolean Pebbles
Definition: global.h:27
boolean DiffusiveParticles
Definition: global.h:27
#define STRING
Definition: types.h:50