8 integer,
dimension(MaxWriteField),
save ::
fieldid
11 character(len=255),
dimension(MaxWriteField) ::
fieldname
22 integer :: GetFieldindex
23 character(len=*) :: name
25 character(len=255) :: TrueName
29 truename=trim(adjustl(name))
42 character(len=*) :: name
43 real,
dimension(:,:,:) :: Field
44 integer,
dimension(3) :: Dim
53 character(len=*) :: name
54 real,
dimension(:,:) :: Field
55 integer,
dimension(2) :: Dim
64 character(len=*) :: name
65 real,
dimension(:) :: Field
66 integer,
dimension(1) :: Dim
76 character(len=*) :: name
77 integer :: dimx,dimy,dimz
78 real,
dimension(dimx,dimy,dimz) :: Field
79 integer,
dimension(dimx*dimy*dimz) :: ndex
105 status = nf_sync(
fieldid(index))
112 character(len=*) :: name
113 integer :: dimx,dimy,dimz
123 status = nf_create(trim(adjustl(name))//
'.nc', nf_clobber,
fieldid(
nbfield))
127 status = nf_def_dim(
fieldid(
nbfield),
'iter',nf_unlimited,tabdim(4))
138 integer,
parameter :: MaxDim=1
139 character(len=*) :: name
140 real,
dimension(:) :: Field
141 real,
dimension(:),
allocatable :: New_Field
142 character(len=20) :: str
143 integer,
dimension(MaxDim) :: Dim
145 integer,
parameter :: id=10
146 integer,
parameter :: NbCol=4
147 integer :: ColumnSize
149 character(len=255) :: form
150 character(len=255) :: MaxLen
153 open(
unit=id,file=name//
'.field',form=
'formatted',status=
'replace')
154 write (id,
'("----- Field '//name//
'",//)')
157 columnsize=20+6+3+len(trim(
int2str(dim(1))))
163 if (mod(nb,nbcol)==0)
then
164 form=
'(t'//trim(
int2str(pos))//
',i'//trim(maxlen) //
'," ---> ",g22.16,/)'
167 form=
'(t'//trim(
int2str(pos))//
',i'//trim(maxlen) //
'," ---> ",g22.16," | ",)'
170 write (id,form,advance=
'no') i,field(i)
180 integer,
parameter :: MaxDim=2
181 character(len=*) :: name
182 real,
dimension(:,:) :: Field
183 real,
dimension(:,:),
allocatable :: New_Field
184 character(len=20) :: str
185 integer,
dimension(MaxDim) :: Dim
187 integer,
parameter :: id=10
188 integer,
parameter :: NbCol=4
189 integer :: ColumnSize
190 integer :: pos,offset
191 character(len=255) :: form
192 character(len=255) :: spacing
194 open(
unit=id,file=name//
'.field',form=
'formatted',status=
'replace')
195 write (id,
'("----- Field '//name//
'",//)')
199 columnsize=20+6+3+offset
201 spacing=
'(t2,"'//repeat(
'-',columnsize*nbcol)//
'")'
209 if (mod(nb,nbcol)==0)
then
210 form=
'(t'//trim(
int2str(pos))// &
214 //
'," ---> ",g22.16,/)'
217 form=
'(t'//trim(
int2str(pos))// &
221 //
'," ---> ",g22.16," | ")'
224 write (id,form,advance=
'no') field(j,i)
226 if (mod(nb,nbcol)==0)
then
239 integer,
parameter :: MaxDim=3
240 character(len=*) :: name
241 real,
dimension(:,:,:) :: Field
242 real,
dimension(:,:,:),
allocatable :: New_Field
243 integer,
dimension(MaxDim) :: Dim
245 integer,
parameter :: id=10
246 integer,
parameter :: NbCol=4
247 integer :: ColumnSize
248 integer :: pos,offset
249 character(len=255) :: form
250 character(len=255) :: spacing
252 open(
unit=id,file=name//
'.field',form=
'formatted',status=
'replace')
253 write (id,
'("----- Field '//name//
'"//)')
257 columnsize=22+6+3+offset
261 spacing=
'(t2,"'//repeat(
'-',columnsize*nbcol)//
'")'
272 if (mod(nb,nbcol)==0)
then
273 form=
'(t'//trim(
int2str(pos))// &
278 //
'," ---> ",g22.16,/)'
281 form=
'(t'//trim(
int2str(pos))// &
286 //
'," ---> ",g22.16," | ")'
290 write (id,form,advance=
'no') field(k,j,i)
292 if (mod(nb,nbcol)==0)
then
308 integer,
parameter :: MaxLen=10
309 integer,
intent(in) :: int
310 character(len=MaxLen) :: int2str
319 int2str=char(mod(i,10)+48)//int2str
321 if (i==0) flag=.
false.
integer, dimension(maxwritefield), save fieldindex
subroutine write_field2d(name, Field)
subroutine write_field3d(name, Field)
subroutine createnewfield(name, dimx, dimy, dimz)
subroutine writefield1d(name, Field)
integer, dimension(maxwritefield), save fieldvarid
integer, dimension(maxwritefield), save fieldid
integer function getfieldindex(name)
character(len=255), dimension(maxwritefield) fieldname
subroutine writefield_gen(name, Field, dimx, dimy, dimz)
subroutine write_field1d(name, Field)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine writefield3d(name, Field)
subroutine writefield2d(name, Field)
character(len=maxlen) function int2str(int)
integer, parameter maxwritefield
!$Header!integer nvarmx s s unit