source: LMDZ6/branches/Amaury_dev/libf/dyn3d/wrgrads.f90 @ 5218

Last change on this file since 5218 was 5159, checked in by abarral, 5 months ago

Put dimensions.h and paramet.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1! $Header$
2
3subroutine wrgrads(if, nl, field, name, titlevar)
4  USE lmdz_formcoord, ONLY: formcoord
5  USE lmdz_gradsdef
6
7  IMPLICIT NONE
8
9  !   Declarations
10  !    if indice du fichier
11  !    nl nombre de couches
12  !    field   champ
13  !    name    petit nom
14  !    titlevar   Titre
15
16  !   arguments
17  INTEGER :: if, nl
18  REAL :: field(imx * jmx * lmx)
19
20  INTEGER, parameter :: wp = selected_real_kind(p = 6, r = 36)
21  real(wp) field4(imx * jmx * lmx)
22
23  CHARACTER(LEN = 10) :: name, file
24  CHARACTER(LEN = 10) :: titlevar
25
26  !   local
27
28  INTEGER :: im, jm, lm, i, j, l, iv, iii, iji, iif, ijf
29
30  LOGICAL :: writectl
31
32  writectl = .FALSE.
33
34  ! print*,if,iid(if),jid(if),ifd(if),jfd(if)
35  iii = iid(if)
36  iji = jid(if)
37  iif = ifd(if)
38  ijf = jfd(if)
39  im = iif - iii + 1
40  jm = ijf - iji + 1
41  lm = lmd(if)
42
43  ! print*,'im,jm,lm,name,firsttime(if)'
44  ! print*,im,jm,lm,name,firsttime(if)
45
46  IF(firsttime(if)) THEN
47    IF(name==var(1, if)) THEN
48      firsttime(if) = .FALSE.
49      ivar(if) = 1
50      print*, 'fin de l initialiation de l ecriture du fichier'
51      print*, file
52      print*, 'fichier no: ', if
53      print*, 'unit ', unit(if)
54      print*, 'nvar  ', nvar(if)
55      print*, 'vars ', (var(iv, if), iv = 1, nvar(if))
56    else
57      ivar(if) = ivar(if) + 1
58      nvar(if) = ivar(if)
59      var(ivar(if), if) = name
60      tvar(ivar(if), if) = trim(titlevar)
61      nld(ivar(if), if) = nl
62      ! print*,'initialisation ecriture de ',var(ivar(if),if)
63      ! print*,'if ivar(if) nld ',if,ivar(if),nld(ivar(if),if)
64    endif
65    writectl = .TRUE.
66    itime(if) = 1
67  else
68    ivar(if) = mod(ivar(if), nvar(if)) + 1
69    IF (ivar(if)==nvar(if)) THEN
70      writectl = .TRUE.
71      itime(if) = itime(if) + 1
72    endif
73
74    IF(var(ivar(if), if)/=name) THEN
75      print*, 'Il faut stoker la meme succession de champs a chaque'
76      print*, 'pas de temps'
77      print*, 'fichier no: ', if
78      print*, 'unit ', unit(if)
79      print*, 'nvar  ', nvar(if)
80      print*, 'vars ', (var(iv, if), iv = 1, nvar(if))
81      CALL abort_gcm("wrgrads", "problem", 1)
82    endif
83  ENDIF
84
85  ! print*,'ivar(if),nvar(if),var(ivar(if),if),writectl'
86  ! print*,ivar(if),nvar(if),var(ivar(if),if),writectl
87  field4(1:imd(if) * jmd(if) * nl) = field(1:imd(if) * jmd(if) * nl)
88  DO l = 1, nl
89    irec(if) = irec(if) + 1
90    ! print*,'Ecrit rec=',irec(if),iii,iif,iji,ijf,
91    !    s (l-1)*imd(if)*jmd(if)+(iji-1)*imd(if)+iii
92    !    s ,(l-1)*imd(if)*jmd(if)+(ijf-1)*imd(if)+iif
93    WRITE(unit(if) + 1, rec = irec(if)) &
94            ((field4((l - 1) * imd(if) * jmd(if) + (j - 1) * imd(if) + i) &
95                    , i = iii, iif), j = iji, ijf)
96  enddo
97  IF (writectl) THEN
98    file = fichier(if)
99    !   WARNING! on reecrase le fichier .ctl a chaque ecriture
100    open(unit(if), file = trim(file) // '.ctl' &
101            , form = 'formatted', status = 'unknown')
102    WRITE(unit(if), '(a5,1x,a40)') &
103            'DSET ', '^' // trim(file) // '.dat'
104
105    WRITE(unit(if), '(a12)') 'UNDEF 1.0E30'
106    WRITE(unit(if), '(a5,1x,a40)') 'TITLE ', title(if)
107    CALL formcoord(unit(if), im, xd(iii, if), 1., .FALSE., 'XDEF')
108    CALL formcoord(unit(if), jm, yd(iji, if), 1., .TRUE., 'YDEF')
109    CALL formcoord(unit(if), lm, zd(1, if), 1., .FALSE., 'ZDEF')
110    WRITE(unit(if), '(a4,i10,a30)') &
111            'TDEF ', itime(if), ' LINEAR 02JAN1987 1MO '
112    WRITE(unit(if), '(a4,2x,i5)') 'VARS', nvar(if)
113    DO iv = 1, nvar(if)
114      ! print*,'if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)'
115      ! print*,if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)
116      WRITE(unit(if), 1000) var(iv, if), nld(iv, if) - 1 / nld(iv, if) &
117              , 99, tvar(iv, if)
118    enddo
119    WRITE(unit(if), '(a7)') 'ENDVARS'
120
121    1000   format(a5, 3x, i4, i3, 1x, a39)
122
123    close(unit(if))
124
125  ENDIF ! writectl
126
127END SUBROUTINE wrgrads
128
Note: See TracBrowser for help on using the repository browser.