need help on isothermal galaxy simulation with Gadget2

From: yanbin YANG <yanbin.yang_at_gmail.com>
Date: Tue, 24 Nov 2009 13:44:40 +0100

Dear all,

I'm testing galaxy simulations with gadget2, the public version of 2.0.4.

When I run an isolate galaxy with *isothermal* gas, I find that, the
mean internal
energy of gas is kept increasing quickly, i.e., over 1 Gyr, by a factor
of >1000.
I think the gas in the simulation is not "isothermal". The situation
is even worse
when I run a galaxy collision, all the gas particle were so heated and
pushed out.

I have compile the code with option of "-DISOTHERMAL". Could anyone help
me on this? Or point out where I have made a mistake. I have paste the
detailed
information of simulation below in case you have time to check.


Many thanks in advance!

Yanbin YANG.



PS, details of my simulation.

======================
CONTENT below
 - Sect. 1) Setup of IC
 - Sect. 2) Makefile I used.
 - Sect. 3) parameter file for gadget.
======================


Sect. 1) Setup of IC
--------------------
IC is an isolate galaxy that have been reached equilibrium. According to
the manual,
I have set the block of "u" to be zero. Actually, I set all gas
properties to be zero,
except the positions and velocities. Then specify the initial
temperature in
the parameter file.


Sect. 2) Make file I used.
#----------------------------------------------------------------------
# From the list below, please activate/deactivate the options that
# apply to your run. If you modify any of these options, make sure
# that you recompile the whole code by typing "make clean; make".
#
# Look at end of file for a brief guide to the compile-time options.
#----------------------------------------------------------------------


#--------------------------------------- Basic operation mode of code
#OPT += -DPERIODIC
OPT += -DUNEQUALSOFTENINGS


#--------------------------------------- Things that are always recommended
OPT += -DPEANOHILBERT
OPT += -DWALLCLOCK


#--------------------------------------- TreePM Options
#OPT += -DPMGRID=256
#OPT += -DPLACEHIGHRESREGION=3
#OPT += -DENLARGEREGION=1.2
#OPT += -DASMTH=1.25
#OPT += -DRCUT=4.5


#--------------------------------------- Single/Double Precision
#OPT += -DDOUBLEPRECISION
#OPT += -DDOUBLEPRECISION_FFTW


#--------------------------------------- Time integration options
OPT += -DSYNCHRONIZATION
#OPT += -DFLEXSTEPS
#OPT += -DPSEUDOSYMMETRIC
OPT += -DNOSTOP_WHEN_BELOW_MINTIMESTEP
#OPT += -DNOPMSTEPADJUSTMENT


#--------------------------------------- Output options
#OPT += -DHAVE_HDF5
#OPT += -DOUTPUTPOTENTIAL
#OPT += -DOUTPUTACCELERATION
#OPT += -DOUTPUTCHANGEOFENTROPY
#OPT += -DOUTPUTTIMESTEP


#--------------------------------------- Things for special behaviour
#OPT += -DNOGRAVITY
#OPT += -DNOTREERND
#OPT += -DNOTYPEPREFIX_FFTW
#OPT += -DLONG_X=60
#OPT += -DLONG_Y=5
#OPT += -DLONG_Z=0.2
#OPT += -DTWODIMS
#OPT += -DSPH_BND_PARTICLES
#OPT += -DNOVISCOSITYLIMITER
OPT += -DCOMPUTE_POTENTIAL_ENERGY
#OPT += -DLONGIDS
OPT += -DISOTHERMAL
#OPT += -DSELECTIVE_NO_GRAVITY=2+4+8+16

#--------------------------------------- Testing and Debugging options
#OPT += -DFORCETEST=0.1


#--------------------------------------- Glass making
#OPT += -DMAKEGLASS=262144


#----------------------------------------------------------------------
# Here, select compile environment for the target machine. This may need
# adjustment, depending on your local system. Follow the examples to add
# additional target platforms, and to get things properly compiled.
#----------------------------------------------------------------------

#--------------------------------------- Select some defaults

CC = mpicc # sets the C-compiler
OPTIMIZE = -O2 -Wall -g # sets optimization and warning flags
MPICHLIB = -lmpich


#--------------------------------------- Select target computer

SYSTYPE="MPA"
#SYSTYPE="Mako"
#SYSTYPE="Regatta"
#SYSTYPE="RZG_LinuxCluster"
#SYSTYPE="RZG_LinuxCluster-gcc"
#SYSTYPE="Opteron"

#--------------------------------------- Adjust settings for target computer

ifeq ($(SYSTYPE),"MPA")
CC = mpicc
OPTIMIZE = -O3 -Wall
GSL_INCL = -I/usr/include
GSL_LIBS = -L/usr/lib
FFTW_INCL=
FFTW_LIBS=
MPICHLIB =
#HDF5INCL = -I/opt/hdf5/include
#HDF5LIB = -L/opt/hdf5/lib -static -lhdf5 -lz
endif


ifeq ($(SYSTYPE),"Opteron")
CC = mpicc
OPTIMIZE = -O3 -Wall -m64
GSL_INCL = -L/usr/local/include
GSL_LIBS = -L/usr/local/lib -static
FFTW_INCL=
FFTW_LIBS=
MPICHLIB =
HDF5INCL = -I/opt/hdf5/include
HDF5LIB = -L/opt/hdf5/lib -static -lhdf5 -lz
endif


ifeq ($(SYSTYPE),"Mako")
CC = mpicc # sets the C-compiler
OPTIMIZE = -O3 -march=athlon-mp -mfpmath=sse
GSL_INCL =
GSL_LIBS =
FFTW_INCL=
FFTW_LIBS=
MPICHLIB =
endif


ifeq ($(SYSTYPE),"Regatta")
CC = mpcc_r
OPTIMIZE = -O5 -qstrict -qipa -q64
GSL_INCL = -I/afs/rzg/u/vrs/gsl_psi64/include
GSL_LIBS = -L/afs/rzg/u/vrs/gsl_psi64/lib
FFTW_INCL= -I/afs/rzg/u/vrs/fftw_psi64/include
FFTW_LIBS= -L/afs/rzg/u/vrs/fftw_psi64/lib -q64 -qipa
MPICHLIB =
HDF5INCL = -I/afs/rzg/u/vrs/hdf5_psi64/include
HDF5LIB = -L/afs/rzg/u/vrs/hdf5_psi64/lib -lhdf5 -lz
endif


ifeq ($(SYSTYPE),"RZG_LinuxCluster")
CC = mpicci
OPTIMIZE = -O3 -ip # Note: Don't use the "-rcd" optimization of
Intel's compiler! (causes code crashes)
GSL_INCL =
-I/afs/rzg/u/vrs/gsl_linux/include

GSL_LIBS = -L/afs/rzg/u/vrs/gsl_linux/lib
-static
FFTW_INCL=
-I/afs/rzg/u/vrs/fftw_linux/include

FFTW_LIBS=
-L/afs/rzg/u/vrs/fftw_linux/lib

HDF5INCL =
-I/afs/rzg/u/vrs/hdf5_linux/include

HDF5LIB = -L/afs/rzg/u/vrs/hdf5_linux/lib -static -lhdf5
-L/afs/rzg/u/vrs/zlib_linux/lib -lz
endif



ifeq ($(SYSTYPE),"RZG_LinuxCluster-gcc")
CC = mpiccg
OPTIMIZE = -Wall -g -O3 -march=pentium4
GSL_INCL = -I/afs/rzg/u/vrs/gsl_linux_gcc3.2/include
GSL_LIBS = -L/afs/rzg/u/vrs/gsl_linux_gcc3.2/lib
FFTW_INCL= -I/afs/rzg/u/vrs/fftw_linux_gcc3.2/include
FFTW_LIBS= -L/afs/rzg/u/vrs/fftw_linux_gcc3.2/lib
HDF5INCL = -I/afs/rzg/u/vrs/hdf5_linux/include
HDF5LIB = -L/afs/rzg/u/vrs/hdf5_linux/lib -static -lhdf5
-L/afs/rzg/u/vrs/zlib_linux/lib -lz
endif



ifneq (HAVE_HDF5,$(findstring HAVE_HDF5,$(OPT)))
HDF5INCL =
HDF5LIB =
endif


OPTIONS = $(OPTIMIZE) $(OPT)

EXEC = Gadget2

OBJS = main.o run.o predict.o begrun.o endrun.o global.o \
         timestep.o init.o restart.o io.o \
         accel.o read_ic.o ngb.o \
         system.o allocate.o density.o \
         gravtree.o hydra.o driftfac.o \
         domain.o allvars.o potential.o \
         forcetree.o peano.o gravtree_forcetest.o \
         pm_periodic.o pm_nonperiodic.o longrange.o

INCL = allvars.h proto.h tags.h Makefile


CFLAGS = $(OPTIONS) $(GSL_INCL) $(FFTW_INCL) $(HDF5INCL)


ifeq (NOTYPEPREFIX_FFTW,$(findstring NOTYPEPREFIX_FFTW,$(OPT))) #
fftw installed with type prefix?
  FFTW_LIB = $(FFTW_LIBS) -lrfftw_mpi -lfftw_mpi -lrfftw
-lfftw
else

ifeq (DOUBLEPRECISION_FFTW,$(findstring
DOUBLEPRECISION_FFTW,$(OPT)))
  FFTW_LIB = $(FFTW_LIBS) -ldrfftw_mpi -ldfftw_mpi -ldrfftw
-ldfftw
else

  FFTW_LIB = $(FFTW_LIBS) -lsrfftw_mpi -lsfftw_mpi -lsrfftw
-lsfftw
endif

endif



LIBS = $(HDF5LIB) -g $(MPICHLIB) $(GSL_LIBS) -lgsl -lgslcblas -lm
$(FFTW_LIB)

$(EXEC): $(OBJS)
        $(CC) $(OBJS) $(LIBS) -o $(EXEC)

$(OBJS): $(INCL)


clean:
        rm -f $(OBJS) $(EXEC)





Sect. 3) my parameter file

% Relevant
files


InitCondFile gdMRv9Ae.go.10.00C
OutputDir gdMRv9Ae/

EnergyFile energy.txt
InfoFile info.txt
TimingsFile timings.txt
CpuFile cpu.txt

RestartFile restart
SnapshotFileBase gdMRv9Ae

OutputListFilename gdMRv9Ae/output_list.txt

% CPU time -limit

TimeLimitCPU 360000 % = 10 hours
ResubmitOn 0
ResubmitCommand my-scriptfile


% Code options


ICFormat 1
SnapFormat 1
ComovingIntegrationOn 0

TypeOfTimestepCriterion 0
OutputListOn 0
PeriodicBoundariesOn 0

% Caracteristics of run

TimeBegin 0.0 % Begin of the simulation
TimeMax 3.0 % End of the simulation

Omega0 0
OmegaLambda 0
OmegaBaryon 0
HubbleParam 0.7
BoxSize 0

% Output frequency

TimeBetSnapshot 0.006
TimeOfFirstSnapshot 0

CpuTimeBetRestartFile 3600.0 ; here in seconds
TimeBetStatistics 0.05

NumFilesPerSnapshot 1
NumFilesWrittenInParallel 1



% Accuracy of time integration

ErrTolIntAccuracy 0.025

CourantFac 0.15

MaxSizeTimestep 0.005
MinSizeTimestep 0.0001




% Tree algorithm, force accuracy, domain update frequency

ErrTolTheta 0.3
TypeOfOpeningCriterion 1
ErrTolForceAcc 0.005


TreeDomainUpdateFrequency 0.1


% Further parameters of SPH

DesNumNgb 40
MaxNumNgbDeviation 2
ArtBulkViscConst 3.8
InitGasTemp 10000 % always ignored if set to 0
MinGasTemp 10000


% Memory allocation

PartAllocFactor 9.5
TreeAllocFactor 9.5
BufferSize 100 % in MByte


% System of units

UnitLength_in_cm 3.085678e21 ; 1.0 kpc
UnitMass_in_g 1.989e43 ; 1.0e10 solar masses
UnitVelocity_in_cm_per_s 1e5 ; 1 km/sec
GravityConstantInternal 0
                                                                  

% Softening lengths

MinGasHsmlFractional 0.25

SofteningGas 0.5
SofteningHalo 0.5
SofteningDisk 0.5
SofteningBulge 0.5
SofteningStars 0.5
SofteningBndry 0.5

SofteningGasMaxPhys 0.5
SofteningHaloMaxPhys 0.5
SofteningDiskMaxPhys 0.5
SofteningBulgeMaxPhys 0.5
SofteningStarsMaxPhys 0.5
SofteningBndryMaxPhys 0.5




MaxRMSDisplacementFac 0.2
Received on 2009-11-24 13:44:45

This archive was generated by hypermail 2.3.0 : 2023-01-10 10:01:31 CET