13 include
"dimensions.h"
22 REAL,
DIMENSION(iip1,jjp1),
INTENT(IN) :: masque
23 REAL,
DIMENSION(iip1,jjp1),
INTENT(IN) ::
phis
27 INTEGER ncid_out,rcode_out
28 INTEGER out_lonuid,out_lonvid,out_latuid,out_latvid,out_levid
30 INTEGER out_lonudim,out_lonvdim
31 INTEGER out_latudim,out_latvdim,out_dim(3)
34 INTEGER,
PARAMETER :: longcles = 20
35 REAL clesphy0(longcles)
37 INTEGER start(4),count(4)
40 REAL rlatudeg(
jjp1),rlatvdeg(jjm),rlevdeg(llm)
41 REAL rlonudeg(iip1),rlonvdeg(iip1)
43 REAL dlon1(iip1),dlon2(iip1),dlat1(
jjp1),dlat2(
jjp1)
44 REAL acoslat,dxkm,dykm,resol(iip1,
jjp1)
45 REAL,
DIMENSION(iip1,jjp1) :: phis_loc
46 INTEGER masque_int(iip1,
jjp1)
61 CALL
conf_gcm( 99, .true. , clesphy0 )
82 status=nf_create(
'grilles_gcm.nc',nf_noclobber,ncid_out)
83 status=nf_def_dim(ncid_out,
'lonu',
iim+1,out_lonudim)
84 status=nf_def_dim(ncid_out,
'lonv',
iim+1,out_lonvdim)
85 status=nf_def_dim(ncid_out,
'latu',jjm+1,out_latudim)
86 status=nf_def_dim(ncid_out,
'latv',jjm,out_latvdim)
90 status=nf_def_var(ncid_out,
'lonu',nf_float,1,out_lonudim, out_lonuid)
92 status=nf_put_att_text(ncid_out,out_lonuid,
'units', 12,
'degrees_east')
93 status=nf_put_att_text(ncid_out,out_lonuid,
'long_name',9,
'Longitude en u')
96 status=nf_def_var(ncid_out,
'lonv',nf_float,1,out_lonvdim, out_lonvid)
98 status=nf_put_att_text(ncid_out,out_lonvid,
'units', 12,
'degrees_east')
99 status=nf_put_att_text(ncid_out,out_lonvid,
'long_name', 9,
'Longitude en v')
102 status=nf_def_var(ncid_out,
'latu',nf_float,1,out_latudim, out_latuid)
104 status=nf_put_att_text(ncid_out,out_latuid,
'units', 13,
'degrees_north')
105 status=nf_put_att_text(ncid_out,out_latuid,
'long_name', 8,
'Latitude en u')
108 status=nf_def_var(ncid_out,
'latv',nf_float,1,out_latvdim, out_latvid)
110 status=nf_put_att_text(ncid_out,out_latvid,
'units', 13,
'degrees_north')
111 status=nf_put_att_text(ncid_out,out_latvid,
'long_name', 8,
'Latitude en v')
114 out_dim(1)=out_lonudim
115 out_dim(2)=out_latudim
116 status=nf_def_var(ncid_out,
'grille_u',nf_float,2,out_dim, out_varid)
118 status=nf_put_att_text(ncid_out,out_varid,
'units', 6,
'Kelvin')
119 status=nf_put_att_text(ncid_out,out_varid,
'long_name', 16,
'Grille aux point u')
122 out_dim(1)=out_lonvdim
123 out_dim(2)=out_latvdim
124 status=nf_def_var(ncid_out,
'grille_v',nf_float,2,out_dim, out_varid)
126 status=nf_put_att_text(ncid_out,out_varid,
'units', 6,
'Kelvin')
127 status=nf_put_att_text(ncid_out,out_varid,
'long_name', 16,
'Grille aux point v')
130 out_dim(1)=out_lonvdim
131 out_dim(2)=out_latudim
132 status=nf_def_var(ncid_out,
'grille_s',nf_float,2,out_dim, out_varid)
134 status=nf_put_att_text(ncid_out,out_varid,
'units', 6,
'Kelvin')
135 status=nf_put_att_text(ncid_out,out_varid,
'long_name',16,
'Grille aux point u')
137 status=nf_enddef(ncid_out)
144 status=nf_put_vara_double(ncid_out,out_lonuid,1,
iim+1,rlonudeg)
145 status=nf_put_vara_double(ncid_out,out_lonvid,1,
iim+1,rlonvdeg)
146 status=nf_put_vara_double(ncid_out,out_latuid,1,jjm+1,rlatudeg)
147 status=nf_put_vara_double(ncid_out,out_latvid,1,jjm,rlatvdeg)
149 status=nf_put_vara_real(ncid_out,out_lonuid,1,
iim+1,rlonudeg)
150 status=nf_put_vara_real(ncid_out,out_lonvid,1,
iim+1,rlonvdeg)
151 status=nf_put_vara_real(ncid_out,out_latuid,1,jjm+1,rlatudeg)
152 status=nf_put_vara_real(ncid_out,out_latvid,1,jjm,rlatvdeg)
172 status=nf_put_vara_double(ncid_out,out_varid,start, count,
temp)
174 status=nf_put_vara_real(ncid_out,out_varid,start, count,
temp)
180 phis_loc(:,:) =
phis(:,:)/
g
183 status = nf_redef(ncid_out)
184 status=nf_def_dim(ncid_out,
'lev',llm,out_levdim)
187 out_dim(1)=out_lonvdim
188 out_dim(2)=out_latudim
190 status = nf_def_var(ncid_out,
'phis',nf_float,2,out_dim,phis_id)
192 status = nf_def_var(ncid_out,
'aire',nf_float,2,out_dim,area_id)
194 status = nf_def_var(ncid_out,
'mask',nf_int ,2,out_dim,mask_id)
197 status=nf_enddef(ncid_out)
201 status=nf_put_vara_double(ncid_out,out_levid,1,llm,rlevdeg)
203 status=nf_put_vara_real(ncid_out,out_levid,1,llm,rlevdeg)
215 status = nf_put_vara_double(ncid_out, phis_id,start,count, phis_loc)
216 status = nf_put_vara_double(ncid_out, area_id,start,count,
aire)
217 masque_int(:,:) = nint(masque(:,:))
218 status = nf_put_vara_int(ncid_out, mask_id,start,count,masque_int)
222 CALL ncclos(ncid_out,rcode_out)
232 IF (status.NE.nf_noerr)
THEN
233 print *,nf_strerror(status)
234 CALL
abort_gcm(
'grilles_gcm_netcdf',
'netcdf error',1)