bool Timer::trigger_month_time(uint64_t old_time) { ACE_Time_Value old_tv; old_tv.set_msec(old_time); ACE_Date_Time old_dt(old_tv); uint64_t new_time = now(); ACE_Time_Value new_tv; new_tv.set_msec(new_time); ACE_Date_Time new_dt(new_tv); if (new_time <= old_time) { return false; } if (new_time - old_time >= uint64_t(86400000) * 31) { return true; } int nw = new_dt.month(); int ow = old_dt.month(); if (nw != ow) { return true; } return false; }
int evolve(double tlim) { while (level0_Grid.time < tlim) { if ((tlim-level0_Grid.time) < level0_Grid.dt) { level0_Grid.dt = (tlim-level0_Grid.time); } (*Integrate)(&level0_Grid); Userwork_in_loop(&level0_Grid, &level0_Domain); #ifdef SELF_GRAVITY (*SelfGrav)(&level0_Grid, &level0_Domain); /* Only bvals for Phi set when last argument of set_bvals = 1 */ set_bvals(&level0_Grid, 1); selfg_flux_correction(&level0_Grid); #endif level0_Grid.nstep++; level0_Grid.time += level0_Grid.dt; new_dt(&level0_Grid); set_bvals(&level0_Grid, 0); } }
int initialize_grid() { set_bvals_init(&level0_Grid, &level0_Domain); set_bvals(&level0_Grid, 0); if(!is_dt_set_by_script) { new_dt(&level0_Grid); } lr_states_init(level0_Grid.Nx1,level0_Grid.Nx2,level0_Grid.Nx3); Integrate = integrate_init(level0_Grid.Nx1,level0_Grid.Nx2,level0_Grid.Nx3); #ifdef SELF_GRAVITY SelfGrav = selfg_init(&level0_Grid, &level0_Domain); if(is_restart == 0) { (*SelfGrav)(&level0_Grid, &level0_Domain); } /* Only bvals for Phi set when last argument of set_bvals = 1 */ set_bvals(&level0_Grid, 1); #endif return 0; }
bool Timer::trigger_time(uint64_t old_time, int hour, int minute) { ACE_Time_Value old_tv; old_tv.set_msec(old_time); ACE_Date_Time old_dt(old_tv); uint64_t new_time = now(); ACE_Time_Value new_tv; new_tv.set_msec(new_time); ACE_Date_Time new_dt(new_tv); if (new_time <= old_time) { return false; } if (new_time - old_time >= 86400000) { return true; } bool old_small = is_small(old_dt, hour, minute); bool new_small = is_small(new_dt, hour, minute); if (is_same_day(old_dt, new_dt)) { if (old_small && !new_small) { return true; } else { return false; } } else { if (!old_small && !new_small) { return true; } else if (old_small && new_small) { return true; } else { return false; } } return false; }
bool Timer::trigger_week_time(uint64_t old_time) { ACE_Time_Value old_tv; old_tv.set_msec(old_time); ACE_Date_Time old_dt(old_tv); uint64_t new_time = now(); ACE_Time_Value new_tv; new_tv.set_msec(new_time); ACE_Date_Time new_dt(new_tv); if (new_time <= old_time) { return false; } if (new_time - old_time >= 86400000 * 7) { return true; } int nw = new_dt.weekday(); if (nw == 0) { nw = 7; } int ow = old_dt.weekday(); if (ow == 0) { ow = 7; } if (nw < ow) { return true; } else if (new_dt.weekday() == old_dt.weekday()) { if (new_time - old_time >= 86400000 * 6) { return true; } } return false; }