/[lmdze]/trunk/dyn3d/dynredem1.f
ViewVC logotype

Contents of /trunk/dyn3d/dynredem1.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/dynredem1.f90
File size: 3266 byte(s)
Initial import
1 SUBROUTINE dynredem1(fichnom,time, vcov,ucov,teta,q,nq,masse,ps)
2
3 ! From dyn3d/dynredem.F,v 1.2 2004/06/22 11:45:30
4
5 ! Ecriture du fichier de redémarrage au format NetCDF
6
7 use dimens_m
8 use paramet_m
9 use comgeom
10 use temps
11 use abort_gcm_m, only: abort_gcm
12 use advtrac_m, only: tname
13
14 IMPLICIT NONE
15 include "netcdf.inc"
16
17 INTEGER nq
18 REAL, intent(in):: vcov(ip1jm,llm),ucov(ip1jmp1,llm)
19 REAL teta(ip1jmp1,llm)
20 REAL, intent(in):: ps(ip1jmp1)
21 real masse(ip1jmp1,llm)
22 REAL, intent(in):: q(ip1jmp1,llm,nq)
23 CHARACTER(len=*) fichnom
24
25 REAL time
26 INTEGER nid, nvarid
27 INTEGER ierr
28 INTEGER iq
29 INTEGER length
30 PARAMETER (length = 100)
31 REAL tab_cntrl(length) ! tableau des parametres du run
32 character(len=20) modname
33 character(len=80) abort_message
34
35 INTEGER nb
36 SAVE nb
37 DATA nb / 0 /
38
39 !---------------------------------------------------------
40
41 print *, "Call sequence information: dynredem1"
42
43 modname = 'dynredem1'
44 ierr = NF_OPEN(fichnom, NF_WRITE, nid)
45 IF (ierr .NE. NF_NOERR) THEN
46 PRINT*, "Pb. d ouverture "//fichnom
47 stop 1
48 ENDIF
49
50 ! Ecriture/extension de la coordonnee temps
51
52 nb = nb + 1
53 ierr = NF_INQ_VARID(nid, "temps", nvarid)
54 IF (ierr .NE. NF_NOERR) THEN
55 print *, NF_STRERROR(ierr)
56 abort_message='Variable temps n est pas definie'
57 CALL abort_gcm(modname,abort_message,ierr)
58 ENDIF
59 ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time)
60 PRINT*, "Enregistrement pour ", nb, time
61
62 !
63 ! Re-ecriture du tableau de controle, itaufin n'est plus defini quand
64 ! on passe dans dynredem0
65 ierr = NF_INQ_VARID (nid, "controle", nvarid)
66 IF (ierr .NE. NF_NOERR) THEN
67 abort_message="dynredem1: Le champ <controle> est absent"
68 ierr = 1
69 CALL abort_gcm(modname,abort_message,ierr)
70 ENDIF
71 ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
72 tab_cntrl(31) = REAL(itau_dyn + itaufin)
73 ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
74
75 ! Ecriture des champs
76 !
77 ierr = NF_INQ_VARID(nid, "ucov", nvarid)
78 IF (ierr .NE. NF_NOERR) THEN
79 PRINT*, "Variable ucov n est pas definie"
80 stop 1
81 ENDIF
82 ierr = NF_PUT_VAR_REAL (nid,nvarid,ucov)
83
84 ierr = NF_INQ_VARID(nid, "vcov", nvarid)
85 IF (ierr .NE. NF_NOERR) THEN
86 PRINT*, "Variable vcov n est pas definie"
87 stop 1
88 ENDIF
89 ierr = NF_PUT_VAR_REAL (nid,nvarid,vcov)
90
91 ierr = NF_INQ_VARID(nid, "teta", nvarid)
92 IF (ierr .NE. NF_NOERR) THEN
93 PRINT*, "Variable teta n est pas definie"
94 stop 1
95 ENDIF
96 ierr = NF_PUT_VAR_REAL (nid,nvarid,teta)
97
98 IF(nq.GE.1) THEN
99 do iq=1,nq
100 ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
101 IF (ierr .NE. NF_NOERR) THEN
102 PRINT*, "Variable ", tname(iq), "n'est pas définie"
103 stop 1
104 ENDIF
105 ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
106 ENDDO
107 ENDIF
108 !
109 ierr = NF_INQ_VARID(nid, "masse", nvarid)
110 IF (ierr .NE. NF_NOERR) THEN
111 PRINT*, "Variable masse n est pas definie"
112 stop 1
113 ENDIF
114 ierr = NF_PUT_VAR_REAL (nid,nvarid,masse)
115 !
116 ierr = NF_INQ_VARID(nid, "ps", nvarid)
117 IF (ierr .NE. NF_NOERR) THEN
118 PRINT*, "Variable ps n est pas definie"
119 stop 1
120 ENDIF
121 ierr = NF_PUT_VAR_REAL (nid,nvarid,ps)
122
123 ierr = NF_CLOSE(nid)
124
125 END SUBROUTINE dynredem1

  ViewVC Help
Powered by ViewVC 1.1.21