ven oct 20 09:42:19 CEST 2006 correction dans cooling.c, multiplication de ne par h. Sun Oct 22 16:06:46 CEST 2006 * dans timestep.c, on ajoute la variable : adotinv = 1./(hubble_a*All.Time); dtEntropyRad -> dtEntropyRad*adotinv * dans starformation.c,, on ajoute la variable : adotinv = 1./(hubble_a*All.Time); * dans cooling.c on corrige de h l = l * All.HubbleParam; Wed Nov 1 17:26:54 CET 2006 * Makefile -> option OUTPUT_EVERY_TIMESTEP * run.c #ifdef OUTPUT_EVERY_TIMESTEP savepositions(All.SnapshotFileCount++); /* write snapshot file */ #endif * !!! correction importante !!! if((SphP[i].DtEntropy + dtEntropyRad) * dt_entr > 0.5 * SphP[i].Entropy) dtEntropyRad = +0.5*SphP[i].Entropy/dt_entr - SphP[i].DtEntropy; * !!! correction mega importante !!! /* finally compute the entropy */ SphP[i].Entropy += (SphP[i].DtEntropy+dtEntropyRad) * dt_entr; /* merge DtEntropy with dtEntropyRad (important for predicted temperature) */ SphP[i].DtEntropy = SphP[i].DtEntropy+dtEntropyRad; Wed Jan 24 15:23:24 CET 2007 * forcetree.c updated with version 2.0.3 * timestep.c updated with version 2.0.3 * longrange.c updated with version 2.0.3 * init.c updated with version 2.0.3 * run.c updated with version 2.0.3 * potential.c updated with version 2.0.3 * pm_nonperiodic.c updated with version 2.0.3 * read_ic.c updated with version 2.0.3 * proto.h updated with version 2.0.3 * allvars.h updated with version 2.0.3 * predict.c dt_entr = (All.Ti_Current - (P[i].Ti_begstep + P[i].Ti_endstep) / 2) * All.Timebase_interval; --> dt_entr = (time1 - (P[i].Ti_begstep + P[i].Ti_endstep) / 2) * All.Timebase_interval; Thu Jan 25 17:51:35 CET 2007 * cooling.c + some related modif in timestep.c * agn_heating.c + some related modif in timestep.c Wed Jan 31 12:39:55 CET 2007 * hydra.c hfc_feedback = sqrt(0.5*(ekinspec/dt)*wk *0.5*(mass + P[j].Mass) /rho_ij/dt)/r; hfc_feedback = dmin(hfc_feedback, 0.25*(sqrt(dvx*dvx+dvy*dvy+dvz*dvz)/dt)); Thu Feb 15 14:11:47 CET 2007 * hydra.c correction of feedback in comoving integration dt = imax(timestep, (P[j].Ti_endstep - P[j].Ti_begstep)) * All.Timebase_interval/ hubble_a; hfc_feedback = sqrt(0.5*(ekinspec/dt)*wk *0.5*(mass + P[j].Mass) /rho_ij/dt)/r * atime*fac_egy; hfc_feedback = dmin(hfc_feedback, 0.25*fac_egy*(sqrt(dvx*dvx+dvy*dvy+dvz*dvz)/dt/r)); uintspec = 2*(uintspec/dt) *wk *0.5*(mass + P[j].Mass) /rho_ij *fac_pow ; Tue Mar 27 11:15:35 CEST 2007 * cooling.c add the resolution of ionisation equilibrium equations -> cooling + heating * new parameter : CoolingType : 0=Sutherland 1=+heating * begrun.c All.SupernovaTime *= 3.1536e+13*All.HubbleParam/All.UnitTime_in_s; SupernovaTime is now given in Myr Tue Apr 3 09:06:10 CEST 2007 * accel.c Cooling after heating heating(); agn_heating(); cooling(); * cooling.c Add isochoric cooling : double DoCooling(...) * starformation.c tstar = 1./ All.StarFormationParameter / pow(SphP[i].Density,0.5); > tstar = 1./ All.StarFormationParameter / pow(SphP[i].Density*a3inv,0.5); WARNING : THE COOLING_RAD IS PROBABLY NOT TAKEN INTO ACCOUNT THE VOLKER IMPLEMENTATION IS USED IN timestep.c Thu Apr 5 09:06:10 CEST 2007 add the possibility to choose the starformation type Rasera - Springel * starformation.c switch (All.StarFormationType) { case 0: ThresholdDensity = All.StarFormationDensity; break; case 1: MeanDensity = All.Omega0 * (3 * All.Hubble * All.Hubble / (8 * M_PI * All.G)); ThresholdDensity = dmin(All.StarFormationDensity/a3inv,200*MeanDensity); break; } if (SphP[i].Density > ThresholdDensity) tstar = All.StarFormationTime / pow(SphP[i].Density*a3inv/All.StarFormationDensity,0.5); if (T < All.StarFormationTemperature) * begrun.c All.StarFormationType = all.StarFormationType; All.StarFormationDensity = all.StarFormationDensity; All.StarFormationTemperature = all.StarFormationTemperature; All.StarFormationTime = All.StarFormationTime/All.UnitTime_in_s * 3.1536e16; All.StarFormationDensity = All.StarFormationDensity/All.UnitDensity_in_cgs; Wed Apr 25 08:11:42 CEST 2007 * hydra.c fac_pow = 1.0; * starformation.c - some corrections of the starformation threashold - merge the code (one phase/multiphase) Wed Apr 25 08:45:17 CEST 2007 change #ifdef STICKY in #ifdef MULTIPHASE Fri May 25 10:52:08 CEST 2007 * a huge number of changes * modification of the feedback, feedback_wind * modification of the sticky * add the cold cycle * other small !!! faire un flag pour meanweight = 4.0 / (1 + 3 * HYDROGEN_MASSFRAC); /* note: we assume neutral gas here */ /*meanweight = 4 / (8 - 5 * (1 - HYDROGEN_MASSFRAC));*/ /* note: we assume FULL ionized gas here */ Wed Jul 4 13:28:45 CEST 2007 * outer plummer potential (PLUMMER) * possibility to compute velocity dispersion (COMPUTE_VELOCITY_DISPERSION) Wed Oct 31 09:53:39 CET 2007 This code has been used to compute the multiphase simulations * new implementation of sticky * ngb.c /* GAS_SPH sees only GAS_SPH */ /* GAS_STICKY sees GAS_SPH, GAS_STICKY but not GAS_DARK */ /* GAS_DARK sees everybody */ * cooling.c heating_compton : z dependency compute_cooling_from_Egyspec_and_Density : take the dmax(0,val) * hydra.c : add sticky_evaluate * phase.c : add cold gas add possibility of collision * timestep.c : modification of sticky energy computation Tue Apr 15 15:31:23 CEST 2008 Merging of different diverging versions * updated with respect to the "multiphase" version used for the paper * add regor and leo in the Makefile * definitively disable compton heating (heating_compton()) * update outerpotential : potential can now be summed add plummer potential + proto.h + outerpotential.c + begrun.c Tue May 27 14:21:50 CEST 2008 * lot's of cleaning * sph as been rewriten, but not finnished (do not use it) Wed May 28 19:48:32 CEST 2008 * sticky.c replace sticky_evaluate in hydra -> new implementation of sticky -> when need to collide, each particle try to find a particle in the same proc -> ngb_treefind_sticky_collision * in hydra, we have removed sticky_evaluate and multi_hydro_evaluate Tue Jun 3 13:59:59 CEST 2008 * coriolis added in outerpotential.c * in phase.c for(i = 0; i < N_gas; i++) instead of for(i = 0; i < NumPart; i++) Mon Jun 16 21:08:09 CEST 2008 * modifications in sticky.c sticky collisions are computed using a grid (Bournaud) or neighbors. Fri Jun 20 15:52:43 CEST 2008 * add a velocity condition (StickyMinVelocity) for sticky collisions Sun Sep 14 12:08:41 CEST 2008 * new cooling function based on "treeasph" format file the cooling function may now depends on metallicity * for the old cooling function, we no longer use the MetallicityIndex, but give the Metallicity using the InitGasMetallicity parameter Tue Sep 16 17:25:24 CEST 2008 * bug correction in cooling.c add case in function of the cooling type Tue Nov 11 13:57:34 CET 2008 * in restart.c use again system function system(buf_mv); /* move old restart files to .bak files */ * move all initializations at the end of begrun() in begrun.c this is important to restart the simulation properly /* other initialization for special behavior */ init_cooling(); init_outer_potential(); init_bubble(); init_sticky(); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! we should also check that : star formation, feedback, bondi_accretion, agn_feedback, agn_heating, phase !!! are correctly initialized in restart mode !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Wed Jan 28 13:04:25 CET 2009 * The cooling is now computed in timestep.c and not in accel.c This has the advantage to use the real timestep used to advance the velocities. The energy lost is better taken into account. The entropy variation due to cooling is computed with an adaptative timestep integration. However, it appears not to be so usefull. It is now possible to use the option IMPLICIT_COOLING_INTEGRATION if one need to integrated implicitely the cooling. Usefull in the case of UV heating. A new cooling function has been introduced : CoolingForOne Wed Jan 28 13:39:46 CET 2009 * use StarFormationNStarsFromGas instead of NStarsFromGas !!! this was done before, but not mentionned !!! now, we can use StarFormationType=2 and specify StarFormationCstar then, StarFormationTime All.ThresholdDensity = All.StarFormationDensity; All.StarFormationTime = 1./All.StarFormationCstar / pow(4*PI*All.G*All.StarFormationDensity,0.5); Tue Feb 3 17:38:55 CET 2009 * introduce StP - allvars.h - allvars.c - allocate.c - domain.c - peano.c reorder_gas reorder_particles - starformation.c - restart.c - io.c # OUTPUTSTELLAR_PROP * introduction of : do_chimie() - chimie.c - run.c but the chimie is not implemented * tests of the new star formation routine the energy is correctly conserved if TreeDomainUpdateFrequency=0 when StarFormationNStarsFromGas > 1. Wed Jul 29 19:03:55 CEST 2009 * work of several weeks. - modification of sfr (energy is now conserved) - implementation of chimie (seems to work) - implementation of chimie_thermalfeedback - energy is more or less well conserved when chimie is switched on with thermal feedback - However, we observe a slight derive of the energy if sfr is strong, even, with a small CourantFac=0.01 The increase in energy is due to feedback. The increased specific energy is badly converted in kinetic energy... This has to be fixed. - Without kinetic feedback, the energy is well conserved. Fri Jul 31 11:43:11 CEST 2009 * little change in cooling.c to be compatible with treeasph. The new option DO_NO_USE_HYDROGEN_MASSFRAC_IN_COOLING allow to run the cooling without using HYDROGEN_MASSFRAC (assumed to be 1). This is wrong, but compatible with treeasph. The temperature is still computed correctly (as in treeasph). Thu Aug 13 19:22:37 CEST 2009 * the conservation in energy is now fixed for CHIMIE_KINETIC_FEEDBACK. This is solved by anticipating the wind injection and setting the timesteps of all actives particles to the minimal value (ti_step=1); Some changes is also done in timestep.c in order to allow the timesteps to quickly increase. while(((TIMEBASE - P[i].Ti_endstep) % ti_step) > 0) ti_step = ti_step/2; instead of //if(((TIMEBASE - P[i].Ti_endstep) % ti_step) > 0) // ti_step = P[i].Ti_endstep - P[i].Ti_begstep; /* leave at old step */ * fix some problems during restar Wed Aug 19 12:43:10 CEST 2009 * remove some printf in domain.c and starformation.c * !!! add force_update_hmax(); after density() in run.c hmax is needed for ngb search, in : ngb_treefind_pairs : hydra.c, chimie.c ngb_treefind_phase_pairs : bondi_accretion.c: * remove : ngb_treefind_pairs_for_chimie in chimie.c, we use ngb_treefind_pairs NOTE : in stars_density.c we use ngb_treefind_variable_for_chimie but it is similar to ngb_treefind_variable Mon Aug 31 18:18:27 CEST 2009 * some modification of sticky - add CPU_Sticky - check energy conservation - check restart Thu Sep 3 11:20:17 CEST 2009 * some minor modification of sticky Thu Sep 10 11:17:16 CEST 2009 * work on the work-load balance problem In some cases, where the number of procs is too high comparing to the number of particles, the load balance is bad. It means that some procs needs much less time to computre gravity forces comparing to others and they have to wait after. I have tried to improve the load balance by spliting the domains not base on gravcost but on the time spend to computre the gravity forces. Unfortunately, as the forces are computed in two parts (local particles and exported particles) it is difficult to reduce the imbalance for the two parts. The gain of the new method is thus limited. If the option SPLIT_DOMAIN_USING_TIME is enabled, domain_findSplityr and domain_shiftSplityr are used instead of domain_findSplit and domain_shiftSplit WARNING - In domain_findSplityr we do not check the memory constaints. - Not tested with adaptative timesteps Fri Sep 11 11:50:42 CEST 2009 * io.c /* set fill to " " : yr Thu Aug 13 17:34:07 CEST 2009*/ for (i=0;i All.TotNumPart / (TOPNODEFACTOR * NTask)) instead of if(TopNodes[sub].Count > All.TotNumPart / (TOPNODEFACTOR * NTask * NTask)) This should improve the time needed for domain decomposition. http://www.mpa-garching.mpg.de/gadget/gadget-list/0197.html Thu May 20 16:16:11 CEST 2010 * merge correction performed on the sticky part * a lot of changes conserning the feedback and feedback_wind (tested with sticky) ------------------------------------------------------------------------------------