109 MPI_Comm_rank(MPI_COMM_WORLD, &
ThisTask);
122 endrun(0,
"Cannot have OmegaLambda and Omega_fld (evolving dark energy) at the same time!\n");
170 endrun(2,
"You have enabled (kspace) massive neutrinos without radiation, but this will give an inconsistent cosmology!\n");
175 endrun(1,
"You try to use the code with star formation enabled,\n"
176 "but you did not switch on cooling.\nThis mode is not supported.\n");
179 MPI_Bcast(&
All,
sizeof(
All), MPI_BYTE, 0, MPI_COMM_WORLD);
185 message(0,
"Last Snapshot number is %d.\n", RestartSnapNum);
186 return RestartSnapNum;
250 if(RestartSnapNum < 0) {
270 int64_t total_active, total_particle;
287 int NumCurrentTiStep = 0;
296 int SnapshotFileCount = RestartSnapNum;
334 endrun(1,
"Negative timestep: %g New Time: %g Old time %g!\n", newatime - atime, newatime, atime);
357 stop =
hci_query(HCI_DEFAULT_MANAGER, action);
360 endrun(0,
"Human triggered termination.\n");
364 double rel_random_shift[3] = {0};
372 if(extradomain || is_PM) {
433 hydro_force(&Act, atime, &sph_predicted, MinEgySpec, times, &
All.
CP, &Tree);
478 message(0,
"Forces computed.\n");
522 if (is_PM && ((
All.
BlackHoleOn && atime >= TimeNextSeedingCheck) ||
528 fof_seed(&fof, &Act, atime, MPI_COMM_WORLD);
567 int WriteSnapshot = 0;
579 if(WriteSnapshot || WriteFOF) {
584 int compact[6] = {0};
591 fof =
fof_fof(ddecomp, 1, MPI_COMM_WORLD);
608 if(!next_sync || stop) {
611 message(0,
"Stopping: not enough time for another PM step before TimeLimitCPU is reached.\n");
623 message(0,
"bad timestep spotted: terminating and saving snapshot.\n");
625 endrun(0,
"Ending due to bad timestep");
void blackhole(const ActiveParticles *act, double atime, Cosmology *CP, ForceTree *tree, const struct UnitSystem units, FILE *FdBlackHoles, FILE *FdBlackholeDetails)
void write_checkpoint(int snapnum, int WriteGroupID, int MetalReturnOn, double Time, const Cosmology *CP, const char *OutputDir, const int OutputDebugFields)
void dump_snapshot(const char *dump, const double Time, const Cosmology *CP, const char *OutputDir)
int find_last_snapnum(const char *OutputDir)
void do_heiii_reionization(double atime, FOFGroups *fof, DomainDecomp *ddecomp, Cosmology *CP, double uu_in_cgs, FILE *FdHelium)
int need_change_helium_ionization_fraction(double atime)
int during_helium_reionization(double redshift)
void check_units(const Cosmology *CP, const struct UnitSystem units)
int hybrid_nu_tracer(const Cosmology *CP, double atime)
void init_cosmology(Cosmology *CP, const double TimeBegin, const struct UnitSystem units)
struct sph_pred_data slots_allocate_sph_pred_data(int nsph)
void slots_free_sph_pred_data(struct sph_pred_data *sph_scratch)
void density(const ActiveParticles *act, int update_hsml, int DoEgyDensity, int BlackHoleOn, double MinEgySpec, const DriftKickTimes times, Cosmology *CP, struct sph_pred_data *SPH_predicted, MyFloat *GradRho, const ForceTree *const tree)
void domain_free(DomainDecomp *ddecomp)
void domain_decompose_full(DomainDecomp *ddecomp)
void domain_maintain(DomainDecomp *ddecomp, struct DriftData *drift)
void drift_all_particles(inttime_t ti0, inttime_t ti1, Cosmology *CP, const double random_shift[3])
void message(int where, const char *fmt,...)
void endrun(int where, const char *fmt,...)
void fof_save_groups(FOFGroups *fof, const char *OutputDir, const char *FOFFileBase, int num, Cosmology *CP, double atime, const double *MassTable, int MetalReturnOn, int BlackholeOn, MPI_Comm Comm)
void fof_finish(FOFGroups *fof)
void fof_seed(FOFGroups *fof, ActiveParticles *act, double atime, MPI_Comm Comm)
FOFGroups fof_fof(DomainDecomp *ddecomp, const int StoreGrNr, MPI_Comm Comm)
void force_tree_rebuild(ForceTree *tree, DomainDecomp *ddecomp, const int HybridNuGrav, const int DoMoments, const char *EmergencyOutputDir)
void force_update_hmax(int *activeset, int size, ForceTree *tree, DomainDecomp *ddecomp)
void init_forcetree_params(const int FastParticleType)
void force_tree_free(ForceTree *tree)
void gravshort_fill_ntab(const enum ShortRangeForceWindowType ShortRangeForceWindowType, const double Asmth)
struct gravshort_tree_params get_gravshort_treepar(void)
void grav_short_pair(const ActiveParticles *act, PetaPM *pm, ForceTree *tree, double Rcut, double rho0, int NeutrinoTracer, int FastParticleType)
void gravpm_force(PetaPM *pm, ForceTree *tree, Cosmology *CP, double Time, double UnitLength_in_cm, const char *PowerOutputDir, double TimeIC, int FastParticleType)
void grav_short_tree(const ActiveParticles *act, PetaPM *pm, ForceTree *tree, double rho0, int NeutrinoTracer, int FastParticleType)
void gravpm_init_periodic(PetaPM *pm, double BoxSize, double Asmth, int Nmesh, double G)
ShortRangeForceWindowType
void hci_init(HCIManager *manager, char *prefix, double WallClockTimeLimit, double AutoCheckPointTime, int FOFEnabled)
int hci_query(HCIManager *manager, HCIAction *action)
void hci_action_init(HCIAction *action)
void hydro_force(const ActiveParticles *act, const double atime, struct sph_pred_data *SPH_predicted, double MinEgySpec, const DriftKickTimes times, Cosmology *CP, const ForceTree *const tree)
int DensityIndependentSphOn(void)
void check_density_entropy(Cosmology *CP, const double MinEgySpec, const double atime)
void setup_smoothinglengths(int RestartSnapNum, DomainDecomp *ddecomp, Cosmology *CP, int BlackHoleOn, double MinEgySpec, double uu_in_cgs, const inttime_t Ti_Current, const double atime, const int64_t NTotGasInit)
inttime_t init(int RestartSnapNum, const char *OutputDir, struct header_data *header, Cosmology *CP)
void init_timeline(int RestartSnapNum, double TimeMax, const struct header_data *header, const int SnapshotWithFOF)
void lightcone_compute(double a, double BoxSize, Cosmology *CP, inttime_t ti_curr, inttime_t ti_next)
void lightcone_init(Cosmology *CP, double timeBegin, const double UnitLength_in_cm, const char *OutputDir)
#define mymalloc2(name, size)
#define report_memory_usage(x)
void init_neutrinos_lra(const int nk_in, const double TimeTransfer, const double TimeMax, const double Omega0, const _omega_nu *const omnu, const double UnitTime_in_s, const double UnitLength_in_cm)
double param_get_double(ParameterSet *ps, const char *name)
void param_get_string2(ParameterSet *ps, const char *name, char *dst, size_t len)
int param_get_int(ParameterSet *ps, const char *name)
int param_get_enum(ParameterSet *ps, const char *name)
struct part_manager_type PartManager[1]
void update_random_offset(struct part_manager_type *PartManager, double *rel_random_shift, double RandomParticleOffset)
struct header_data petaio_read_header(int num, const char *OutputDir, Cosmology *CP)
void petapm_module_init(int Nthreads)
void runfof(const int RestartSnapNum, const inttime_t Ti_Current, const struct header_data *header)
int find_last_snapshot(void)
static struct ClockTable Clocks
static int use_pairwise_gravity(ActiveParticles *Act, struct part_manager_type *PartManager)
void set_all_global_params(ParameterSet *ps)
void run(const int RestartSnapNum, const inttime_t ti_init, const struct header_data *header)
void runtests(const int RestartSnapNum, const inttime_t Ti_Current, const struct header_data *header)
static struct run_params All
inttime_t begrun(const int RestartSnapNum, struct header_data *head)
void runpower(const struct header_data *header)
void run_gravity_test(int RestartSnapNum, Cosmology *CP, const double Asmth, const int Nmesh, const int FastParticleType, const inttime_t Ti_Current, const char *OutputDir, const struct header_data *header)
void init_cooling_and_star_formation(int CoolingOn, int StarformationOn, Cosmology *CP, const double avg_baryon_mass, const double BoxSize, const struct UnitSystem units)
double get_MinEgySpec(void)
void cooling_and_starformation(ActiveParticles *act, double Time, double dloga, ForceTree *tree, const Cosmology *CP, MyFloat *GradRho, FILE *FdSfr)
int sfr_need_to_compute_sph_grad_rho(void)
void slots_set_enabled(int ptype, size_t elsize, struct slots_manager_type *sman)
int slots_gc(int *compact_slots, struct part_manager_type *pman, struct slots_manager_type *sman)
struct slots_manager_type SlotsManager[1]
void slots_init(double increase, struct slots_manager_type *sman)
void write_cpu_log(int NumCurrentTiStep, const double atime, FILE *FdCPU, double ElapsedTime)
void close_outputfiles(struct OutputFD *fds)
void energy_statistics(FILE *FdEnergy, const double Time, struct part_manager_type *PartManager)
void open_outputfiles(int RestartSnapNum, struct OutputFD *fds, const char *OutputDir, int BlackHoleOn, int StarformationOn)
char * fastpm_strdup_printf(const char *fmt,...)
int64_t NumActiveParticle
FILE * FdBlackholeDetails
double UnitInternalEnergy_in_cgs
enum ShortRangeForceWindowType ShortRangeForceWindowType
double RandomParticleOffset
double TimeBetweenSeedingSearch
double SlotsIncreaseFactor
double PairwiseActiveFraction
int MaxDomainTimeBinDepth
void MPIU_write_pids(char *filename)
void set_random_numbers(int seed)
#define MPIU_Barrier(comm)
SyncPoint * find_next_sync_point(inttime_t ti)
double get_dloga_for_bin(int timebin, const inttime_t Ti_Current)
SyncPoint * find_current_sync_point(inttime_t ti)
void apply_PM_half_kick(Cosmology *CP, DriftKickTimes *times)
int is_PM_timestep(const DriftKickTimes *const times)
double get_atime(const inttime_t Ti_Current)
DriftKickTimes init_driftkicktime(inttime_t Ti_Current)
int find_timesteps(const ActiveParticles *act, DriftKickTimes *times, const double atime, int FastParticleType, const Cosmology *CP, const double asmth, const int isFirstTimeStep)
int rebuild_activelist(ActiveParticles *act, const DriftKickTimes *const times, int NumCurrentTiStep, const double Time)
int is_timebin_active(int i, inttime_t current)
void apply_half_kick(const ActiveParticles *act, Cosmology *CP, DriftKickTimes *times, const double atime, const double MinEgySpec)
inttime_t find_next_kick(inttime_t Ti_Current, int minTimeBin)
void update_lastactive_drift(DriftKickTimes *times)
void free_activelist(ActiveParticles *act)
struct UnitSystem get_unitsystem(double UnitLength_in_cm, double UnitMass_in_g, double UnitVelocity_in_cm_per_s)
void walltime_init(struct ClockTable *ct)
#define walltime_measure(name)