9 #include <gsl/gsl_spline.h> 10 #include <gsl/gsl_spline2d.h> 14 #error Float precision must be defined in the Makefile 16 typedef FLOAT_TYPEDEF Real;
19 #define TINY_NUMBER 1.0e-20 20 #define PI 3.141592653589793 21 #define MP 1.672622e-24 // mass of proton, grams 22 #define KB 1.380658e-16 // boltzmann constant, cgs 24 #define GN 4.49451e-18 // gravitational constant, kpc^3 / M_sun / kyr^2 26 #define MYR 31.536e12 //Myears in secs 27 #define KPC 3.086e16 // kpc in km 28 #define G_COSMO 4.300927161e-06; // gravitational constant, kpc km^2 s^-2 Msun^-1 29 #define MSUN_CGS 1.98847e33; //Msun in gr 30 #define KPC_CGS 3.086e21; //kpc in cm 31 #define KM_CGS 1e5; //km in cm 33 #define TIME_UNIT 3.15569e10 // 1 kyr in s 34 #define LENGTH_UNIT 3.08567758e21 // 1 kpc in cm 35 #define MASS_UNIT 1.98855e33 // 1 solar mass in grams 36 #define DENSITY_UNIT (MASS_UNIT/(LENGTH_UNIT*LENGTH_UNIT*LENGTH_UNIT)) 37 #define VELOCITY_UNIT (LENGTH_UNIT/TIME_UNIT) 38 #define ENERGY_UNIT (DENSITY_UNIT*VELOCITY_UNIT*VELOCITY_UNIT) 39 #define PRESSURE_UNIT (DENSITY_UNIT*VELOCITY_UNIT*VELOCITY_UNIT) 40 #define SP_ENERGY_UNIT (VELOCITY_UNIT*VELOCITY_UNIT) 42 #define LOG_FILE_NAME "run_output.log" 45 #define TEMP_FLOOR 1e-3 46 #define DENS_FLOOR 1e-5 49 #define DE_ETA_1 0.001 //Ratio of U to E for wich Inetrnal Energy is used to compute the Pressure 50 #define DE_ETA_2 0.035 //Ratio of U to max(E_local) used to select wich Internal Energy is used for the update. 53 #define MAX_DELTA_A 0.001 54 #define MAX_EXPANSION_RATE 0.01 // Limit delta(a)/a 56 #ifdef COOLING_GRACKLE 63 #endif//COOLING_GRACKLE 66 #define INITIAL_FRACTION_HI 0.75984603480 67 #define INITIAL_FRACTION_HII 1.53965115054e-4 68 #define INITIAL_FRACTION_HEI 0.23999999997 69 #define INITIAL_FRACTION_HEII 9.59999999903e-15 70 #define INITIAL_FRACTION_HEIII 9.59999999903e-18 71 #define INITIAL_FRACTION_ELECTRON 1.53965115054e-4 72 #define INITIAL_FRACTION_METAL 1.00000000000e-10 76 #ifdef GRAVITY_5_POINTS_GRADIENT 77 #define N_GHOST_POTENTIAL 3 // 3 ghost cells are needed for 5 point gradient, ( one is for the CIC interpolation of the potential ) 79 #define N_GHOST_POTENTIAL 2 // 2 ghost cells are needed for first order gradient, ( one is for the CIC interpolation of the potential ) 81 #ifdef GRAVITY_LONG_INTS 82 typedef long int grav_int_t;
84 typedef int grav_int_t;
85 #endif//GRAVITY_LONG_INTS 89 #ifdef PARTICLES_LONG_INTS 90 typedef long int part_int_t;
92 typedef int part_int_t
93 #endif//PARTICLES_LONG_INTS 96 typedef std::vector<Real> real_vector_t;
97 typedef std::vector<part_int_t> int_vector_t;
101 extern int N_PARTICLES_TRANSFER;
102 extern int N_DATA_PER_PARTICLE_TRANSFER;
105 #ifdef AVERAGE_SLOW_CELLS 106 #define SLOW_FACTOR 10 107 #endif//AVERAGE_SLOW_CELLS 112 #define SIGN(a) ( ((a) < 0.) ? -1. : 1. ) 123 extern gsl_interp_accel *acc;
124 extern gsl_interp_accel *xacc;
125 extern gsl_interp_accel *yacc;
126 extern gsl_spline *highT_C_spline;
127 extern gsl_spline2d *lowT_C_spline;
128 extern gsl_spline2d *lowT_H_spline;
131 extern float *cooling_table;
132 extern float *heating_table;
137 extern void Set_Gammas(Real gamma_in);
141 extern double get_time(
void);
145 extern int sgn(Real x);
150 extern Real calc_eta(Real cW[], Real gamma);
186 char custom_bcnd[MAXLEN];
202 #ifdef ROTATED_PROJECTION 220 char scale_outputs_file[MAXLEN];
222 #ifdef TILED_INITIAL_CONDITIONS 224 #endif //TILED_INITIAL_CONDITIONS 237 extern void parse_params (
char *param_file,
struct parameters * parms);