1 | !> \file snaptime.f90 |
---|
2 | !! Pour le renvoie de la partie temporelle des noms de fichiers sortie |
---|
3 | !< |
---|
4 | |
---|
5 | !> SUBROUTINE: snaptime() |
---|
6 | !! \author ... |
---|
7 | !! \date ... |
---|
8 | !! @note Cette routine permet de le renvoie de la partie temporelle des noms de fichiers sortie |
---|
9 | !! \param ttt |
---|
10 | !! \param ffsnap |
---|
11 | !< |
---|
12 | |
---|
13 | |
---|
14 | |
---|
15 | ! renvoie la partie temporelle des noms de fichiers sortie |
---|
16 | |
---|
17 | subroutine snaptime(ttt,ffsnap) |
---|
18 | |
---|
19 | implicit none |
---|
20 | real :: ttt |
---|
21 | double precision :: tabs |
---|
22 | double precision :: tmin |
---|
23 | double precision :: decimale |
---|
24 | double precision :: tunit |
---|
25 | integer :: ipuissance |
---|
26 | integer :: itime |
---|
27 | character(len=1) :: signe,unit,mm |
---|
28 | character(len=1),dimension (4) :: unittab |
---|
29 | character(len=30):: ffsnap |
---|
30 | character(len=20):: ffnum |
---|
31 | character(len=8) :: form ! format de sortie i7.mm |
---|
32 | |
---|
33 | tmin=0.02 |
---|
34 | unittab=(/'a','d','c','k'/) |
---|
35 | |
---|
36 | |
---|
37 | ! determination du signe |
---|
38 | if (ttt.gt.0.) then |
---|
39 | signe='+' |
---|
40 | else |
---|
41 | signe='-' |
---|
42 | endif |
---|
43 | |
---|
44 | tabs=abs(dble(ttt)) |
---|
45 | decimale=abs(tabs-nint(tabs)) |
---|
46 | |
---|
47 | if (decimale.gt.tmin) then ! on sort le temps en annee avec decimale |
---|
48 | write(ffnum,'(f10.2)') tabs |
---|
49 | unit='a' |
---|
50 | |
---|
51 | ffsnap=signe//unit//adjustl(ffnum) |
---|
52 | |
---|
53 | else ! on sort le temps en entier |
---|
54 | |
---|
55 | do ipuissance=3,0,-1 ! balaye les puissances de 10 |
---|
56 | tunit=10.**(ipuissance) |
---|
57 | |
---|
58 | if (int(mod(tabs,tunit)).eq.0) then ! si multiple de tunit |
---|
59 | unit=unittab(ipuissance+1) ! type d'unite (k,c,d,a) |
---|
60 | itime=nint(tabs/tunit) ! temps dans cette unite |
---|
61 | write(mm,'(i1)') 7-ipuissance ! pour le format de sortie |
---|
62 | form='(i8.'//mm//')' ! remplace eventuellement mm blancs par 0 |
---|
63 | |
---|
64 | exit |
---|
65 | endif |
---|
66 | end do |
---|
67 | |
---|
68 | write(ffnum,fmt=form) itime |
---|
69 | ffsnap=signe//unit//adjustl(ffnum) |
---|
70 | |
---|
71 | |
---|
72 | endif |
---|
73 | return |
---|
74 | end subroutine snaptime |
---|