!> \file snaptime.f90 !! Pour le renvoie de la partie temporelle des noms de fichiers sortie !< !> SUBROUTINE: snaptime() !! \author ... !! \date ... !! @note Cette routine permet de le renvoie de la partie temporelle des noms de fichiers sortie !! \param ttt !! \param ffsnap !< ! renvoie la partie temporelle des noms de fichiers sortie subroutine snaptime(ttt,ffsnap) implicit none real :: ttt double precision :: tabs double precision :: tmin double precision :: decimale double precision :: tunit integer :: ipuissance integer :: itime,m character(len=1) :: signe,unit,mm character(len=1),dimension (4) :: unittab character(len=30):: ffsnap character(len=20):: ffnum character(len=8) :: form ! format de sortie i7.mm tmin=0.02 unittab=(/'a','d','c','k'/) ! determination du signe if (ttt.gt.0.) then signe='+' else signe='-' endif tabs=abs(dble(ttt)) decimale=abs(tabs-nint(tabs)) if (decimale.gt.tmin) then ! on sort le temps en annee avec decimale write(ffnum,'(f10.2)') tabs unit='a' ffsnap=signe//unit//adjustl(ffnum) else ! on sort le temps en entier do ipuissance=3,0,-1 ! balaye les puissances de 10 tunit=10.**(ipuissance) if (int(mod(tabs,tunit)).eq.0) then ! si multiple de tunit unit=unittab(ipuissance+1) ! type d'unite (k,c,d,a) itime=nint(tabs/tunit) ! temps dans cette unite write(mm,'(i1)') 7-ipuissance ! pour le format de sortie form='(i8.'//mm//')' ! remplace eventuellement mm blancs par 0 exit endif end do write(ffnum,fmt=form) itime ffsnap=signe//unit//adjustl(ffnum) endif return end subroutine snaptime