banner

The site's hierarchy



Home page :: Private area :: Site Map :: Credits
Science / Lecture et formats des données / Lecture et écriture de fichiers GADGET en F90

Navigation

Mar 2009
MTWTFSS
2324252627281
2345678
9101112131415
16171819202122
23242526272829
303112345
News
  • Les premiers zoom de galaxies sont accessibles
  • Le halo FOF 6133 de la boite Horizon L et le halo FOF 544 de Horizon S ont été resimulés avec plusieurs techniques de zoom. Il est important que chaque "zoomer" valide sa méthode, avant de lancer une campagne de zoom sur un plus grand cataloque.
  • Les données de la simulation Mare Nostrum sont disponibles
  • 34 snapshots jusqu’à z=4 sont accessibles sur horizon3 et sur le serveur de fichiers de l’IDRIS à la collaboration Horizon.
  • Méso Machine HPC1 opérationnelle
  • Depuis le 23 Octobre 2005, la Méso machine du site horizon est operationnelle. Elle correspond à 3 quadriprocesseurs avec chacun 64 Giga de RAM reliés par infiniband, ainsi qu’un access conséquent (sur une base de projet dédié) au reste de la ferme). Son acces est ouvert a toute personne de la collaboration ayant acces à la minigrille et qui en fait la demande a admin-minigrille
  • http://
  • Workshop Horizon le 14 et 15 novembre 2005
  • Il aura lieu à Paris les 14 et 15 novembre 2005 (prévoir une nuit sur place). L’enregistrement est ouvert dans la rubrique "meeting!"
  • http://

Lecture et écriture de fichiers GADGET en F90


by Colombi Stéphane (Friday 18 November 2005)

Ce module,

GZ - 4.4 kb

, contient 3 subroutines largements commentees.


!===============================================================================
! CONTENTS :
! ++++++++++
!
! read_gadget  : reads a (multiple or single) GADGET file
!
! write_gadget : writes a (single) GADGET file
!
! read_write_gadget : read a (multiple or single) GADGET file, performs a folded
!                     dilution and outputs the result in another GADGET file.  
!
! Utilities of secondary interest: perform_folded_dilution, convtoasc
!
!=======================================================================  
 subroutine read_gadget(option,filein,nmpi,verbose,megaverbose, &
&                     Lbox,hubble,omega0,omegaL,aexp,mass_in_sol, &
&                     npart)
!=======================================================================
 ! This routine reads positions and velocities in a (multiple) GADGET
 ! file.
 !
 ! INPUTS :
 ! --------
 ! option (integer)       : 1 to read only header of the files,
 !                          other number to read the full data
 ! filein (string)        : name of the input file (see below)
 ! nmpi   (integer)       : number of outputs per snapshot. The routine
 !          works only for nmpi <= 1000.
 !          - if nmpi=-1, then there is only one input file with name filein
 !          - if 2 <= nmpi <= 1000, then there are nmpi input files with
 !             extension impi where 0 <= impi <= nmpi-1.
 !          - Exemple : filein='toto.', nmpi=3. The input files read are
 !            toto.0, toto.1 and toto.2
 !          - Note : nmpi=1 is not allowed
 ! verbose (logical)      : .true. for verbose mode, .false. otherwise
 ! megaverbose(logical)   : .true. for detailed verbose mode,
 !                          .false. otherwise
 !
 ! OUTPUTS :
 ! ---------
 ! Lbox   (real 4)        : size of the simulation cube in Mpc
 ! hubble (real 4)        : H0/100 where H0 is the present time Hubble
 !                          constant in km/s/Mpc
 ! Omega0 (real 4)        : density parameter
 ! OmegaL (real 4)        : cosmological constant
 ! aexp   (real 4)        : expansion factor normalized to unity at present time
 ! mass_in_sol (real 4)   : mass of each particle in solar masses
 ! npart (integer)        : number of particles in the simulation
 ! ((pos(i,j),i=1,3),j=1,npart) (real 4) : particles coordinates in Mpc
 !                         0 <= pos(1,:) < Lbox
 !                         0 <= pos(2,:) < Lbox
 !                         0 <= pos(3,:) < Lbox
 ! ((vel(i,j),i=1,3),j=1,npart) (real 4) : particles velocities in km/s
 !
 ! NOTE :
 ! ------
 ! pos and vel are global module variables.
 ! These allocatable arrays must be unallocated prior to the call of this
 ! routine.
 !=======================================================================
 !=======================================================================
 subroutine write_gadget(fileout,npart,verbose,megaverbose, &
&                     Lbox,hubble,omega0,omegaL,aexp)
 !=======================================================================
 ! This routine outputs in the GADGET format positions and velocities
 ! of particles in a file.
 !
 ! INPUTS :
 ! --------
 ! fileout (string)      : name of the output file
 ! npart (integer)       : number of particles
 ! verbose (logical)     : verbose mode (.true. or .false.)
 ! megaverbose (logical) : detailed verbose mode
 ! Lbox (real 4)         : size of the box in Mpc
 ! hubble (real 4)       : H0/100 where H0 is the present time Hubble
 !                         constant expressed in km/s/Mpc
 ! omega0                : the density parameter
 ! omegaL                : the cosmological constant
 ! aexp                  : the value of the expansion factor normalized
 !                         to unity at present time
 ! pos(3,npart)          : coordinates of the particles in Mpc
 !                         in [0,Lbox[
 ! vel(3,npart)          : velocities of particles in km/s
 !
 ! OUTPUT :
 ! --------
 ! A binary file at the GADGET format with name fileout.
 !
 ! NOTE :
 ! ------
 ! pos and vel are global module variables.
 !=======================================================================
!=======================================================================
 subroutine read_write_gadget(filein,fileout,nmpi,verbose,megaverbose,nfold,ndim)
 !=======================================================================
 ! This routine reads a GADGET file and operates folded dilution by
 ! a factor nfold**3, then output the result in another GADGET file.
 !
 ! INPUTS :
 ! --------
 ! filein (string)       : name of the input file
 ! fileout (string)      : name of the output file
 ! nmpi (integer)        : number of outputs per snapshot for filein (see
 !                         readgadget for details)
 !                         Right now, the routine works only for
 !                         nmpi=-1 : single file
 !                         2 <= nmpi <= 1000 : multiple file.
 ! verbose (logical)     : verbose mode (.true. or .false.)
 ! megaverbose (logical) : detailed verbose mode
 ! nfold (integer)       : the dilution factor applied in each direction :
 !                         the total number of particles will be divided
 !                         by nfold**3. The number npart of particles in
 !                         the input file must be a multiple of nfold**3
 ! ndim (integer)        : fudge number related to the organization of
 !                         the structure of particles in GADGET.
 !                         We suspect that ndim=nmpi_orig**(1/3) is the correct
 !                         choice, where nmpi_orig correspond to the original
 !                         file structure choice taken in the parallel version
 !                         of GADGET. For the simulation we are working on,
 !                         take ndim=2.
 !
 ! OUTPUTS :
 ! --------
 ! A binary output GADGET file of name fileout with the diluted sample of particles
 !
 ! NOTE :
 ! ------
 ! The global module arrays pos and vel must be deallocated prior to the
 ! call of this routine.
!=======================================================================