source: trunk/LMDZ.TITAN/libf/phytitan/writerestartphy.F @ 881

Last change on this file since 881 was 779, checked in by slebonnois, 12 years ago

SL: follow-up on previous commit for one forgotten file...

File size: 7.0 KB
Line 
1      SUBROUTINE writerestartphy(fichnom,tab_cntrl,klon,klev,
2     .           rlat,rlon, tsol,tsoil,
3     .           albedo,
4     .           solsw, sollw,fder,
5     .           radsol,
6     .           t_ancien)
7
8
9c======================================================================
10c Ecriture de l'etat de redemarrage pour la physique (pour newstart)
11c======================================================================
12      IMPLICIT none
13#include "dimensions.h"
14#include "netcdf.inc"
15#include "dimsoil.h"
16c======================================================================
17      CHARACTER*13 fichnom
18      INTEGER length,klon,klev
19      PARAMETER (length=100)
20      REAL tab_cntrl(length)
21      REAL rlat(klon), rlon(klon)
22      REAL tsol(klon)
23      REAL tsoil(klon,nsoilmx)
24      REAL albedo(klon)
25      real solsw(klon)
26      real sollw(klon)
27      real fder(klon)
28      REAL radsol(klon)
29      REAL t_ancien(klon,klev)
30c
31      INTEGER nid, nvarid, idim1, idim2, idim3
32      INTEGER ierr
33c
34      INTEGER isoil
35      CHARACTER*2 str2
36c
37c-----------------------------------------------------------------------
38c Creation du fichier:
39c-----------------------------------------------------------------------
40c
41c     print*,'fichnom',fichnom
42      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
43      IF (ierr.NE.NF_NOERR) THEN
44        write(6,*)' Pb d''ouverture du fichier '//fichnom
45        write(6,*)' ierr = ', ierr
46        CALL ABORT
47      ENDIF
48c
49      ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 28,
50     .                       "Fichier redemarrage physique")
51c
52      ierr = NF_DEF_DIM (nid, "index", length, idim1)
53      ierr = NF_DEF_DIM (nid, "points_physiques", klon, idim2)
54      ierr = NF_DEF_DIM (nid, "horizon_vertical", klon*klev, idim3)
55c
56
57#ifdef NC_DOUBLE
58      ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1, idim1,nvarid)
59#else
60      ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1, idim1,nvarid)
61#endif
62      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,
63     .                        "Parametres de controle")
64      ierr = NF_ENDDEF(nid)
65#ifdef NC_DOUBLE
66      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
67#else
68      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
69#endif
70c
71      ierr = NF_REDEF (nid)
72#ifdef NC_DOUBLE
73      ierr = NF_DEF_VAR (nid, "longitude", NF_DOUBLE, 1, idim2,nvarid)
74#else
75      ierr = NF_DEF_VAR (nid, "longitude", NF_FLOAT, 1, idim2,nvarid)
76#endif
77      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,
78     .                        "Longitudes de la grille physique")
79      ierr = NF_ENDDEF(nid)
80#ifdef NC_DOUBLE
81      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlon)
82#else
83      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlon)
84#endif
85c
86      ierr = NF_REDEF (nid)
87#ifdef NC_DOUBLE
88      ierr = NF_DEF_VAR (nid, "latitude", NF_DOUBLE, 1, idim2,nvarid)
89#else
90      ierr = NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim2,nvarid)
91#endif
92      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 31,
93     .                        "Latitudes de la grille physique")
94      ierr = NF_ENDDEF(nid)
95#ifdef NC_DOUBLE
96      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlat)
97#else
98      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlat)
99#endif
100c
101c-----------------------------------------------------------------------
102c Ecriture des variables:
103c-----------------------------------------------------------------------
104c
105        ierr = NF_REDEF (nid)
106#ifdef NC_DOUBLE
107        ierr = NF_DEF_VAR (nid, "TS", NF_DOUBLE, 1, idim2,nvarid)
108#else
109        ierr = NF_DEF_VAR (nid, "TS", NF_FLOAT, 1, idim2,nvarid)
110#endif
111        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,
112     .                        "Temperature de surface")
113        ierr = NF_ENDDEF(nid)
114#ifdef NC_DOUBLE
115        ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tsol)
116#else
117        ierr = NF_PUT_VAR_REAL (nid,nvarid,tsol)
118#endif
119c
120      DO isoil=1, nsoilmx
121        IF (isoil.LE.99) THEN
122        WRITE(str2,'(i2.2)') isoil
123        ierr = NF_REDEF (nid)
124#ifdef NC_DOUBLE
125        ierr = NF_DEF_VAR (nid, "Tsoil"//str2,NF_DOUBLE,1,idim2,nvarid)
126#else
127        ierr = NF_DEF_VAR (nid, "Tsoil"//str2,NF_FLOAT,1,idim2,nvarid)
128#endif
129        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 24,
130     .                        "Temperature du sol No."//str2)
131        ierr = NF_ENDDEF(nid)
132        ELSE
133        PRINT*, "Trop de couches"
134        CALL abort
135        ENDIF
136#ifdef NC_DOUBLE
137        ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tsoil(1,isoil))
138#else
139        ierr = NF_PUT_VAR_REAL (nid,nvarid,tsoil(1,isoil))
140#endif
141      ENDDO
142c
143        ierr = NF_REDEF (nid)
144#ifdef NC_DOUBLE
145        ierr = NF_DEF_VAR (nid,"ALBE",NF_DOUBLE,1,idim2,nvarid)
146#else
147        ierr = NF_DEF_VAR (nid,"ALBE",NF_FLOAT,1,idim2,nvarid)
148#endif
149        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 18,
150     .                        "albedo de surface")
151        ierr = NF_ENDDEF(nid)
152#ifdef NC_DOUBLE
153      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,albedo)
154#else
155      ierr = NF_PUT_VAR_REAL (nid,nvarid,albedo)
156#endif
157c
158      ierr = NF_REDEF (nid)
159#ifdef NC_DOUBLE
160      ierr = NF_DEF_VAR (nid, "solsw", NF_DOUBLE, 1, idim2,nvarid)
161#else
162      ierr = NF_DEF_VAR (nid, "solsw", NF_FLOAT, 1, idim2,nvarid)
163#endif
164      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,
165     .                        "Rayonnement solaire a la surface")
166      ierr = NF_ENDDEF(nid)
167#ifdef NC_DOUBLE
168      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,solsw)
169#else
170      ierr = NF_PUT_VAR_REAL (nid,nvarid,solsw)
171#endif
172c
173      ierr = NF_REDEF (nid)
174#ifdef NC_DOUBLE
175      ierr = NF_DEF_VAR (nid, "sollw", NF_DOUBLE, 1, idim2,nvarid)
176#else
177      ierr = NF_DEF_VAR (nid, "sollw", NF_FLOAT, 1, idim2,nvarid)
178#endif
179      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 27,
180     .                        "Rayonnement IF a la surface")
181      ierr = NF_ENDDEF(nid)
182#ifdef NC_DOUBLE
183      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,sollw)
184#else
185      ierr = NF_PUT_VAR_REAL (nid,nvarid,sollw)
186#endif
187c
188      ierr = NF_REDEF (nid)
189#ifdef NC_DOUBLE
190      ierr = NF_DEF_VAR (nid, "fder", NF_DOUBLE, 1, idim2,nvarid)
191#else
192      ierr = NF_DEF_VAR (nid, "fder", NF_FLOAT, 1, idim2,nvarid)
193#endif
194      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 14,
195     .                        "Derive de flux")
196      ierr = NF_ENDDEF(nid)
197#ifdef NC_DOUBLE
198      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,fder)
199#else
200      ierr = NF_PUT_VAR_REAL (nid,nvarid,fder)
201#endif
202c
203      ierr = NF_REDEF (nid)
204#ifdef NC_DOUBLE
205      ierr = NF_DEF_VAR (nid, "RADS", NF_DOUBLE, 1, idim2,nvarid)
206#else
207      ierr = NF_DEF_VAR (nid, "RADS", NF_FLOAT, 1, idim2,nvarid)
208#endif
209      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
210     .                        "Rayonnement net a la surface")
211      ierr = NF_ENDDEF(nid)
212#ifdef NC_DOUBLE
213      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,radsol)
214#else
215      ierr = NF_PUT_VAR_REAL (nid,nvarid,radsol)
216#endif
217c
218      ierr = NF_REDEF (nid)
219#ifdef NC_DOUBLE
220      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_DOUBLE, 1, idim3,nvarid)
221#else
222      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_FLOAT, 1, idim3,nvarid)
223#endif
224      ierr = NF_ENDDEF(nid)
225#ifdef NC_DOUBLE
226      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,t_ancien)
227#else
228      ierr = NF_PUT_VAR_REAL (nid,nvarid,t_ancien)
229#endif
230c
231      ierr = NF_CLOSE(nid)
232c
233      RETURN
234      END
Note: See TracBrowser for help on using the repository browser.