65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84#if !defined PARALLEL_IO && defined DISTRIBUTE
86#endif
87
88
89
90 integer, intent(in) :: ng, model, ncid
91
92 character (len=*), intent(in) :: ncname
93
94
95
96 logical :: Cgrid = .true.
97
98 integer :: LBi, UBi, LBj, UBj
99 integer :: i, j, k, ibry, ilev, itrc, status, varid
100
101#ifdef DISTRIBUTE
102 integer, dimension(2) :: ibuffer
103#endif
104 integer :: ifield = 0
105
106 real(dp) :: scale
107#ifdef SOLVE3D
108# ifdef TS_DIF4
109 real(r8), dimension(NT(ng)) :: diff
110# endif
111 real(r8), dimension(NT(ng)) :: nudg
112 real(r8), dimension(NT(ng),4) :: Tobc
113#endif
114#ifdef STATIONS
115 real(r8), dimension(Nstation(ng)) :: Zpos, wrk
116#endif
117
118 character (len=*), parameter :: MyFile = &
119 & __FILE__//", wrt_info_nf90"
120
121 sourcefile=myfile
122
123 IF (ncid.ne.xtr(ng)%ncid) THEN
124 lbi=lbound(grid(ng)%h,dim=1)
125 ubi=ubound(grid(ng)%h,dim=1)
126 lbj=lbound(grid(ng)%h,dim=2)
127 ubj=ubound(grid(ng)%h,dim=2)
128#ifdef GRID_EXTRACT
129 ELSE
130 lbi=lbound(extract(ng)%h,dim=1)
131 ubi=ubound(extract(ng)%h,dim=1)
132 lbj=lbound(extract(ng)%h,dim=2)
133 ubj=ubound(extract(ng)%h,dim=2)
134#endif
135 END IF
136
137
138
139
140
141
142
143 CALL netcdf_inq_var (ng, model, ncname, ncid)
144 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
145
146
147
148 CALL netcdf_put_ivar (ng, model, ncname, 'ntimes', &
149 & ntimes(ng), (/0/), (/0/), &
150 & ncid = ncid)
151 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
152
153 CALL netcdf_put_ivar (ng, model, ncname, 'ndtfast', &
154 & ndtfast(ng), (/0/), (/0/), &
155 & ncid = ncid)
156 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
157
158 CALL netcdf_put_fvar (ng, model, ncname, 'dt', &
159 & dt(ng), (/0/), (/0/), &
160 & ncid = ncid)
161 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
162
163 CALL netcdf_put_fvar (ng, model, ncname, 'dtfast', &
164 & dtfast(ng), (/0/), (/0/), &
165 & ncid = ncid)
166 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
167
168 CALL netcdf_put_fvar (ng, model, ncname, 'dstart', &
169 & dstart, (/0/), (/0/), &
170 & ncid = ncid)
171 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
172
173#ifdef RBL4DVAR_FCT_SENSITIVITY
174 CALL netcdf_put_ivar (ng, model, ncname, 'ntimes_ana', &
175 & ntimes_ana(ng), (/0/), (/0/), &
176 & ncid = ncid)
177 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
178
179 CALL netcdf_put_ivar (ng, model, ncname, 'ntimes_fct', &
180 & ntimes_fct(ng), (/0/), (/0/), &
181 & ncid = ncid)
182 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
183#endif
184
185#if defined HDF5 && defined DEFLATE
186 CALL netcdf_put_ivar (ng, model, ncname, 'shuffle', &
187 & shuffle, (/0/), (/0/), &
188 & ncid = ncid)
189 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
190
191 CALL netcdf_put_ivar (ng, model, ncname, 'deflate', &
192 & deflate, (/0/), (/0/), &
193 & ncid = ncid)
194 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
195
196 CALL netcdf_put_ivar (ng, model, ncname, 'deflate_level', &
197 & deflate_level, (/0/), (/0/), &
198 & ncid = ncid)
199 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
200#endif
201
202 CALL netcdf_put_ivar (ng, model, ncname, 'nHIS', &
203 & nhis(ng), (/0/), (/0/), &
204 & ncid = ncid)
205 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
206
207 CALL netcdf_put_ivar (ng, model, ncname, 'ndefHIS', &
208 & ndefhis(ng), (/0/), (/0/), &
209 & ncid = ncid)
210 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
211
212#ifdef GRID_EXTRACT
213 CALL netcdf_put_ivar (ng, model, ncname, 'nXTR', &
214 & nxtr(ng), (/0/), (/0/), &
215 & ncid = ncid)
216 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
217
218 CALL netcdf_put_ivar (ng, model, ncname, 'ndefXTR', &
219 & ndefxtr(ng), (/0/), (/0/), &
220 & ncid = ncid)
221 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
222
223 CALL netcdf_put_ivar (ng, model, ncname, 'ExtractFlag', &
224 & extractflag(ng), (/0/), (/0/), &
225 & ncid = ncid)
226 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
227#endif
228
229 CALL netcdf_put_ivar (ng, model, ncname, 'nRST', &
230 & nrst(ng), (/0/), (/0/), &
231 & ncid = ncid)
232 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
233
234#if defined AVERAGES || \
235 (defined ad_averages && defined adjoint) || \
236 (defined rp_averages && defined tl_ioms) || \
237 (defined tl_averages && defined tangent)
238 CALL netcdf_put_ivar (ng, model, ncname, 'ntsAVG', &
239 & ntsavg(ng), (/0/), (/0/), &
240 & ncid = ncid)
241 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
242
243 CALL netcdf_put_ivar (ng, model, ncname, 'nAVG', &
244 & navg(ng), (/0/), (/0/), &
245 & ncid = ncid)
246 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
247
248 CALL netcdf_put_ivar (ng, model, ncname, 'ndefAVG', &
249 & ndefavg(ng), (/0/), (/0/), &
250 & ncid = ncid)
251 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
252#endif
253
254#ifdef ADJOINT
255 CALL netcdf_put_ivar (ng, model, ncname, 'nADJ', &
256 & nadj(ng), (/0/), (/0/), &
257 & ncid = ncid)
258 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
259
260 CALL netcdf_put_ivar (ng, model, ncname, 'ndefADJ', &
261 & ndefadj(ng), (/0/), (/0/), &
262 & ncid = ncid)
263 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
264#endif
265
266#ifdef TANGENT
267 CALL netcdf_put_ivar (ng, model, ncname, 'nTLM', &
268 & ntlm(ng), (/0/), (/0/), &
269 & ncid = ncid)
270 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
271
272 CALL netcdf_put_ivar (ng, model, ncname, 'ndefTLM', &
273 & ndeftlm(ng), (/0/), (/0/), &
274 & ncid = ncid)
275 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
276#endif
277
278#ifdef ADJUST_BOUNDARY
279 CALL netcdf_put_ivar (ng, model, ncname, 'nOBC', &
280 & nobc(ng), (/0/), (/0/), &
281 & ncid = ncid)
282 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
283#endif
284
285#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
286 CALL netcdf_put_ivar (ng, model, ncname, 'nSFF', &
287 & nsff(ng), (/0/), (/0/), &
288 & ncid = ncid)
289 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
290#endif
291
292#ifdef PROPAGATOR
293 CALL netcdf_put_lvar (ng, model, ncname, 'LmultiGST', &
294 & lmultigst, (/0/), (/0/), &
295 & ncid = ncid)
296 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
297
298 CALL netcdf_put_lvar (ng, model, ncname, 'LrstGST', &
299 & lrstgst, (/0/), (/0/), &
300 & ncid = ncid)
301 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
302
303 CALL netcdf_put_ivar (ng, model, ncname, 'MaxIterGST', &
304 & maxitergst, (/0/), (/0/), &
305 & ncid = ncid)
306 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
307
308 CALL netcdf_put_ivar (ng, model, ncname, 'nGST', &
309 & ngst, (/0/), (/0/), &
310 & ncid = ncid)
311 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
312
313 CALL netcdf_put_ivar (ng, model, ncname, 'NEV', &
314 & nev, (/0/), (/0/), &
315 & ncid = ncid)
316 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
317
318 CALL netcdf_put_ivar (ng, model, ncname, 'NCV', &
319 & ncv, (/0/), (/0/), &
320 & ncid = ncid)
321 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
322
323 CALL netcdf_put_fvar (ng, model, ncname, 'Ritz_tol', &
324 & ritz_tol, (/0/), (/0/), &
325 & ncid = ncid)
326 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
327#endif
328
329#ifdef DIAGNOSTICS
330 CALL netcdf_put_ivar (ng, model, ncname, 'ntsDIA', &
331 & ntsdia(ng), (/0/), (/0/), &
332 & ncid = ncid)
333 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
334
335 CALL netcdf_put_ivar (ng, model, ncname, 'nDIA', &
336 & ndia(ng), (/0/), (/0/), &
337 & ncid = ncid)
338 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
339
340 CALL netcdf_put_ivar (ng, model, ncname, 'ndefDIA', &
341 & ndefdia(ng), (/0/), (/0/), &
342 & ncid = ncid)
343 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
344#endif
345
346#ifdef STATIONS
347 CALL netcdf_put_ivar (ng, model, ncname, 'nSTA', &
348 & nsta(ng), (/0/), (/0/), &
349 & ncid = ncid)
350 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
351#endif
352
353#ifdef FOUR_DVAR
354 CALL netcdf_put_ivar (ng, model, ncname, 'Nouter', &
355 & nouter, (/0/), (/0/), &
356 & ncid = ncid)
357 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
358
359 CALL netcdf_put_ivar (ng, model, ncname, 'Ninner', &
360 & ninner, (/0/), (/0/), &
361 & ncid = ncid)
362 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
363#endif
364
365#if defined POWER_LAW && defined SOLVE3D
366
367
368
369
370 CALL netcdf_put_fvar (ng, model, ncname, 'Falpha', &
371 & falpha, (/0/), (/0/), &
372 & ncid = ncid)
373 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
374
375 CALL netcdf_put_fvar (ng, model, ncname, 'Fbeta', &
376 & fbeta, (/0/), (/0/), &
377 & ncid = ncid)
378 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
379
380 CALL netcdf_put_fvar (ng, model, ncname, 'Fgamma', &
381 & fgamma, (/0/), (/0/), &
382 & ncid = ncid)
383 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
384#endif
385
386
387
388#if defined SOLVE3D && defined TS_DIF2
389 CALL netcdf_put_fvar (ng, model, ncname, 'nl_tnu2', &
390 & nl_tnu2(:,ng), (/1/), (/nt(ng)/), &
391 & ncid = ncid)
392 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
393
394# ifdef ADJOINT
395 CALL netcdf_put_fvar (ng, model, ncname, 'ad_tnu2', &
396 & ad_tnu2(:,ng), (/1/), (/nt(ng)/), &
397 & ncid = ncid)
398 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
399# endif
400
401# if defined TANGENT || defined TL_IOMS
402 CALL netcdf_put_fvar (ng, model, ncname, 'tl_tnu2', &
403 & tl_tnu2(:,ng), (/1/), (/nt(ng)/), &
404 & ncid = ncid)
405 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
406# endif
407
408#endif
409
410#if defined SOLVE3D && defined TS_DIF4
411 DO itrc=1,nt(ng)
412 diff(itrc)=nl_tnu4(itrc,ng)*nl_tnu4(itrc,ng)
413 END DO
414 CALL netcdf_put_fvar (ng, model, ncname, 'nl_tnu4', &
415 & diff, (/1/), (/nt(ng)/), &
416 & ncid = ncid)
417 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
418
419# ifdef ADJOINT
420 DO itrc=1,nt(ng)
421 diff(itrc)=ad_tnu4(itrc,ng)*ad_tnu4(itrc,ng)
422 END DO
423 CALL netcdf_put_fvar (ng, model, ncname, 'ad_tnu4', &
424 & diff, (/1/), (/nt(ng)/), &
425 & ncid = ncid)
426 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
427# endif
428
429# if defined TANGENT || defined TL_IOMS
430 DO itrc=1,nt(ng)
431 diff(itrc)=tl_tnu4(itrc,ng)*tl_tnu4(itrc,ng)
432 END DO
433 CALL netcdf_put_fvar (ng, model, ncname, 'tl_tnu4', &
434 & diff, (/1/), (/nt(ng)/), &
435 & ncid = ncid)
436 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
437# endif
438#endif
439
440#ifdef UV_VIS2
441 CALL netcdf_put_fvar (ng, model, ncname, 'nl_visc2', &
442 & nl_visc2(ng), (/0/), (/0/), &
443 & ncid = ncid)
444 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
445
446# ifdef ADJOINT
447 CALL netcdf_put_fvar (ng, model, ncname, 'ad_visc2', &
448 & ad_visc2(ng), (/0/), (/0/), &
449 & ncid = ncid)
450 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
451# endif
452
453# if defined TANGENT || defined TL_IOMS
454 CALL netcdf_put_fvar (ng, model, ncname, 'tl_visc2', &
455 & tl_visc2(ng), (/0/), (/0/), &
456 & ncid = ncid)
457 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
458# endif
459#endif
460
461#ifdef UV_VIS4
462 CALL netcdf_put_fvar (ng, model, ncname, 'nl_visc4', &
463 & nl_visc4(ng)**2, (/0/), (/0/), &
464 & ncid = ncid)
465 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
466
467# ifdef ADJOINT
468 CALL netcdf_put_fvar (ng, model, ncname, 'ad_visc4', &
469 & ad_visc4(ng)**2, (/0/), (/0/), &
470 & ncid = ncid)
471 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
472# endif
473
474# if defined TANGENT || defined TL_IOMS
475 CALL netcdf_put_fvar (ng, model, ncname, 'tl_visc4', &
476 & tl_visc4(ng)**2, (/0/), (/0/), &
477 & ncid = ncid)
478 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
479# endif
480#endif
481
482#if defined SOLVE3D && (defined MY25_MIXING || defined GLS_MIXING)
483# ifdef TKE_DIF2
484 CALL netcdf_put_fvar (ng, model, ncname, 'tkenu2', &
485 & tkenu2(ng), (/0/), (/0/), &
486 & ncid = ncid)
487 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
488# endif
489
490# ifdef TKE_DIF4
491 CALL netcdf_put_fvar (ng, model, ncname, 'tkenu4', &
492 & tkenu4(ng)**2, (/0/), (/0/), &
493 & ncid = ncid)
494 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
495# endif
496#endif
497
498#if defined UV_VIS2 || defined UV_VIS4
499 CALL netcdf_put_lvar (ng, model, ncname, 'LuvSponge', &
500 & luvsponge(ng), (/0/), (/0/), &
501 & ncid = ncid)
502 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
503#endif
504
505#if (defined TS_DIF2 || defined TS_DIF4) && defined SOLVE3D
506 CALL netcdf_put_lvar (ng, model, ncname, 'LtracerSponge', &
507 & ltracersponge(:,ng), (/1/), (/nt(ng)/), &
508 & ncid = ncid)
509 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
510#endif
511
512#ifdef SOLVE3D
513
514
515
516 CALL netcdf_put_fvar (ng, model, ncname, 'Akt_bak', &
517 & akt_bak(:,ng), (/1/), (/nt(ng)/), &
518 & ncid = ncid)
519 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
520
521 CALL netcdf_put_fvar (ng, model, ncname, 'Akv_bak', &
522 & akv_bak(ng), (/0/), (/0/), &
523 & ncid = ncid)
524 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
525
526# if defined MY25_MIXING || defined GLS_MIXING
527 CALL netcdf_put_fvar (ng, model, ncname, 'Akk_bak', &
528 & akk_bak(ng), (/0/), (/0/), &
529 & ncid = ncid)
530 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
531
532 CALL netcdf_put_fvar (ng, model, ncname, 'Akp_bak', &
533 & akp_bak(ng), (/0/), (/0/), &
534 & ncid = ncid)
535 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
536# endif
537
538# ifdef FORWARD_MIXING
539
540
541
542# ifdef ADJOINT
543 CALL netcdf_put_fvar (ng, model, ncname, 'ad_Akt_fac', &
544 & ad_akt_fac(:,ng), (/1/), (/nt(ng)/), &
545 & ncid = ncid)
546 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
547# endif
548
549# if defined TANGENT || defined TL_IOMS
550 CALL netcdf_put_fvar (ng, model, ncname, 'tl_Akt_fac', &
551 & tl_akt_fac(:,ng), (/1/), (/nt(ng)/), &
552 & ncid = ncid)
553 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
554# endif
555
556# ifdef ADJOINT
557 CALL netcdf_put_fvar (ng, model, ncname, 'ad_Akv_fac', &
558 & ad_akv_fac(ng), (/0/), (/0/), &
559 & ncid = ncid)
560 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
561# endif
562
563# if defined TANGENT || defined TL_IOMS
564 CALL netcdf_put_fvar (ng, model, ncname, 'tl_Akv_fac', &
565 & tl_akv_fac(ng), (/0/), (/0/), &
566 & ncid = ncid)
567 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
568# endif
569# endif
570#endif
571
572
573
574 CALL netcdf_put_fvar (ng, model, ncname, 'rdrg', &
575 & rdrg(ng), (/0/), (/0/), &
576 & ncid = ncid)
577 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
578
579 CALL netcdf_put_fvar (ng, model, ncname, 'rdrg2', &
580 & rdrg2(ng), (/0/), (/0/), &
581 & ncid = ncid)
582 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
583
584#ifdef SOLVE3D
585 CALL netcdf_put_fvar (ng, model, ncname, 'Zob', &
586 & zob(ng), (/0/), (/0/), &
587 & ncid = ncid)
588 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
589
590 CALL netcdf_put_fvar (ng, model, ncname, 'Zos', &
591 & zos(ng), (/0/), (/0/), &
592 & ncid = ncid)
593 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
594#endif
595
596#if defined SOLVE3D && defined GLS_MIXING
597
598
599
600 CALL netcdf_put_fvar (ng, model, ncname, 'gls_p', &
601 & gls_p(ng), (/0/), (/0/), &
602 & ncid = ncid)
603 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
604
605 CALL netcdf_put_fvar (ng, model, ncname, 'gls_m', &
606 & gls_m(ng), (/0/), (/0/), &
607 & ncid = ncid)
608 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
609
610 CALL netcdf_put_fvar (ng, model, ncname, 'gls_n', &
611 & gls_n(ng), (/0/), (/0/), &
612 & ncid = ncid)
613 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
614
615 CALL netcdf_put_fvar (ng, model, ncname, 'gls_cmu0', &
616 & gls_cmu0(ng), (/0/), (/0/), &
617 & ncid = ncid)
618 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
619
620 CALL netcdf_put_fvar (ng, model, ncname, 'gls_c1', &
621 & gls_c1(ng), (/0/), (/0/), &
622 & ncid = ncid)
623 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
624
625 CALL netcdf_put_fvar (ng, model, ncname, 'gls_c2', &
626 & gls_c2(ng), (/0/), (/0/), &
627 & ncid = ncid)
628 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
629
630 CALL netcdf_put_fvar (ng, model, ncname, 'gls_c3m', &
631 & gls_c3m(ng), (/0/), (/0/), &
632 & ncid = ncid)
633 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
634
635 CALL netcdf_put_fvar (ng, model, ncname, 'gls_c3p', &
636 & gls_c3p(ng), (/0/), (/0/), &
637 & ncid = ncid)
638 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
639
640 CALL netcdf_put_fvar (ng, model, ncname, 'gls_sigk', &
641 & gls_sigk(ng), (/0/), (/0/), &
642 & ncid = ncid)
643 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
644
645 CALL netcdf_put_fvar (ng, model, ncname, 'gls_sigp', &
646 & gls_sigp(ng), (/0/), (/0/), &
647 & ncid = ncid)
648 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
649
650 CALL netcdf_put_fvar (ng, model, ncname, 'gls_Kmin', &
651 & gls_kmin(ng), (/0/), (/0/), &
652 & ncid = ncid)
653 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
654
655 CALL netcdf_put_fvar (ng, model, ncname, 'gls_Pmin', &
656 & gls_pmin(ng), (/0/), (/0/), &
657 & ncid = ncid)
658 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
659
660 CALL netcdf_put_fvar (ng, model, ncname, 'Charnok_alpha', &
661 & charnok_alpha(ng), (/0/), (/0/), &
662 & ncid = ncid)
663 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
664
665 CALL netcdf_put_fvar (ng, model, ncname, 'Zos_hsig_alpha', &
666 & zos_hsig_alpha(ng), (/0/), (/0/), &
667 & ncid = ncid)
668 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
669
670 CALL netcdf_put_fvar (ng, model, ncname, 'sz_alpha', &
671 & sz_alpha(ng), (/0/), (/0/), &
672 & ncid = ncid)
673 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
674
675 CALL netcdf_put_fvar (ng, model, ncname, 'CrgBan_cw', &
676 & crgban_cw(ng), (/0/), (/0/), &
677 & ncid = ncid)
678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
679#endif
680#ifdef WEC
681 CALL netcdf_put_fvar (ng, model, ncname, 'wec_alpha', &
682 & wec_alpha(ng), (/0/), (/0/), &
683 & ncid = ncid)
684 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
685#endif
686
687
688
689 CALL netcdf_put_fvar (ng, model, ncname, 'Znudg', &
690 & znudg(ng)/sec2day, (/0/), (/0/), &
691 & ncid = ncid)
692 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
693
694 CALL netcdf_put_fvar (ng, model, ncname, 'M2nudg', &
695 & m2nudg(ng)/sec2day, (/0/), (/0/), &
696 & ncid = ncid)
697 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
698
699#ifdef SOLVE3D
700 CALL netcdf_put_fvar (ng, model, ncname, 'M3nudg', &
701 & m3nudg(ng)/sec2day, (/0/), (/0/), &
702 & ncid = ncid)
703 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
704
705 DO itrc=1,nt(ng)
706 nudg(itrc)=tnudg(itrc,ng)/sec2day
707 END DO
708 CALL netcdf_put_fvar (ng, model, ncname, 'Tnudg', &
709 & nudg, (/1/), (/nt(ng)/), &
710 & ncid = ncid)
711 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
712#endif
713
714#ifndef DEBUGGING
715
716
717
718 IF (nudgingcoeff(ng)) THEN
719 CALL netcdf_put_fvar (ng, model, ncname, 'FSobc_in', &
720 & fsobc_in(ng,:), (/1/), (/4/), &
721 & ncid = ncid)
722 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
723
724 CALL netcdf_put_fvar (ng, model, ncname, 'FSobc_out', &
725 & fsobc_out(ng,:), (/1/), (/4/), &
726 & ncid = ncid)
727 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
728
729 CALL netcdf_put_fvar (ng, model, ncname, 'M2obc_in', &
730 & m2obc_in(ng,:), (/1/), (/4/), &
731 & ncid = ncid)
732 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
733
734 CALL netcdf_put_fvar (ng, model, ncname, 'M2obc_out', &
735 & m2obc_out(ng,:), (/1/), (/4/), &
736 & ncid = ncid)
737 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
738
739# ifdef SOLVE3D
740 DO ibry=1,4
741 DO itrc=1,nt(ng)
742 tobc(itrc,ibry)=tobc_in(itrc,ng,ibry)
743 END DO
744 END DO
745 CALL netcdf_put_fvar (ng, model, ncname, 'Tobc_in', &
746 & tobc, (/1,1/), (/nt(ng),4/), &
747 & ncid = ncid)
748 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
749
750 DO ibry=1,4
751 DO itrc=1,nt(ng)
752 tobc(itrc,ibry)=tobc_out(itrc,ng,ibry)
753 END DO
754 END DO
755 CALL netcdf_put_fvar (ng, model, ncname, 'Tobc_out', &
756 & tobc, (/1,1/), (/nt(ng),4/), &
757 & ncid = ncid)
758 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
759
760 CALL netcdf_put_fvar (ng, model, ncname, 'M3obc_in', &
761 & m3obc_in(ng,:), (/1/), (/4/), &
762 & ncid = ncid)
763 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
764
765 CALL netcdf_put_fvar (ng, model, ncname, 'M3obc_out', &
766 & m3obc_out(ng,:), (/1/), (/4/), &
767 & ncid = ncid)
768 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
769# endif
770 END IF
771#endif
772
773
774
775 CALL netcdf_put_fvar (ng, model, ncname, 'rho0', &
776 & rho0, (/0/), (/0/), &
777 & ncid = ncid)
778 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
779
780#if defined SOLVE3D && defined PROPAGATOR
781 CALL netcdf_put_fvar (ng, model, ncname, 'bvf_bak', &
782 & bvf_bak, (/0/), (/0/), &
783 & ncid = ncid)
784 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
785#endif
786
787#if defined SOLVE3D && \
788 (
789 CALL netcdf_put_fvar (ng, model, ncname, 'R0', &
790 & r0(ng), (/0/), (/0/), &
791 & ncid = ncid)
792 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
793
794 CALL netcdf_put_fvar (ng, model, ncname, 'Tcoef', &
795 & tcoef(ng), (/0/), (/0/), &
796 & ncid = ncid)
797 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
798
799 CALL netcdf_put_fvar (ng, model, ncname, 'Scoef', &
800 & scoef(ng), (/0/), (/0/), &
801 & ncid = ncid)
802 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
803#endif
804#ifdef SOLVE3D
805# ifdef BODYFORCE
806
807
808
809 CALL netcdf_put_ivar (ng, model, ncname, 'levsfrc', &
810 & levsfrc(ng), (/0/), (/0/), &
811 & ncid = ncid)
812 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
813
814 CALL netcdf_put_ivar (ng, model, ncname, 'levbfrc', &
815 & levbfrc(ng), (/0/), (/0/), &
816 & ncid = ncid)
817 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
818# endif
819#endif
820
821
822
823 CALL netcdf_put_fvar (ng, model, ncname, 'gamma2', &
824 & gamma2(ng), (/0/), (/0/), &
825 & ncid = ncid)
826 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
827
828
829
830
831
832 CALL netcdf_put_lvar (ng, model, ncname, 'LuvSrc', &
833 & luvsrc(ng), (/0/), (/0/), &
834 & ncid = ncid)
835 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
836
837 CALL netcdf_put_lvar (ng, model, ncname, 'LwSrc', &
838 & lwsrc(ng), (/0/), (/0/), &
839 & ncid = ncid)
840 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
841
842#ifdef SOLVE3D
843
844
845
846 CALL netcdf_put_lvar (ng, model, ncname, 'LtracerSrc', &
847 & ltracersrc(:,ng), (/1/), (/nt(ng)/), &
848 & ncid = ncid)
849 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
850#endif
851
852
853
854 CALL netcdf_put_lvar (ng, model, ncname, 'LsshCLM', &
855 & lsshclm(ng), (/0/), (/0/), &
856 & ncid = ncid)
857 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
858
859 CALL netcdf_put_lvar (ng, model, ncname, 'Lm2CLM', &
860 & lm2clm(ng), (/0/), (/0/), &
861 & ncid = ncid)
862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
863
864#ifdef SOLVE3D
865 CALL netcdf_put_lvar (ng, model, ncname, 'Lm3CLM', &
866 & lm3clm(ng), (/0/), (/0/), &
867 & ncid = ncid)
868 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
869
870 CALL netcdf_put_lvar (ng, model, ncname, 'LtracerCLM', &
871 & ltracerclm(:,ng), (/1/), (/nt(ng)/), &
872 & ncid = ncid)
873 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
874#endif
875
876
877
878 CALL netcdf_put_lvar (ng, model, ncname, 'LnudgeM2CLM', &
879 & lnudgem2clm(ng), (/0/), (/0/), &
880 & ncid = ncid)
881 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
882
883#ifdef SOLVE3D
884 CALL netcdf_put_lvar (ng, model, ncname, 'LnudgeM3CLM', &
885 & lnudgem3clm(ng), (/0/), (/0/), &
886 & ncid = ncid)
887 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
888
889 CALL netcdf_put_lvar (ng, model, ncname, 'LnudgeTCLM', &
890 & lnudgetclm(:,ng), (/1/), (/nt(ng)/), &
891 & ncid = ncid)
892 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
893#endif
894
895#ifdef FOUR_DVAR
896
897
898
899# ifdef ADJUST_STFLUX
900 CALL netcdf_put_lvar (ng, model, ncname, 'Lstflux', &
901 & lstflux(:,ng), (/1/), (/nt(ng)/), &
902 & ncid = ncid)
903 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
904# endif
905# ifdef ADJUST_BOUNDARY
906 CALL netcdf_put_lvar (ng, model, ncname, 'Lobc', &
907 & lobc(:,:,ng), (/1,1/), (/4,nstatevar(ng)/), &
908 & ncid = ncid)
909 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
910# endif
911# ifndef I4DVAR_ANA_SENSITIVITY
912 CALL netcdf_put_lvar (ng, model, ncname, 'LhessianEV', &
913 & lhessianev, (/0/), (/0/), &
914 & ncid = ncid)
915 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
916
917# ifdef WEAK_CONSTRAINT
918 CALL netcdf_put_lvar (ng, model, ncname, 'LhotStart', &
919 & lhotstart, (/0/), (/0/), &
920 & ncid = ncid)
921 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
922# endif
923
924 CALL netcdf_put_lvar (ng, model, ncname, 'Lprecond', &
925 & lprecond, (/0/), (/0/), &
926 & ncid = ncid)
927 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
928
929 CALL netcdf_put_lvar (ng, model, ncname, 'Lritz', &
930 & lritz, (/0/), (/0/), &
931 & ncid = ncid)
932 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
933
934# ifdef WEAK_CONSTRAINT
935 IF (lprecond.and.(nritzev.gt.0)) THEN
936 CALL netcdf_put_ivar (ng, model, ncname, 'NritzEV', &
937 & nritzev, (/0/), (/0/), &
938 & ncid = ncid)
939 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
940 END IF
941# endif
942# endif
943# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
944 CALL netcdf_put_ivar (ng, model, ncname, 'NpostI', &
945 & nposti, (/0/), (/0/), &
946 & ncid = ncid)
947# endif
948# if defined ARRAY_MODES || \
949 defined i4dvar_ana_sensitivity || \
950 defined rbl4dvar_ana_sensitivity || \
951 defined rbl4dvar_fct_sensitivity || \
952 defined r4dvar_ana_sensitivity
953 CALL netcdf_put_ivar (ng, model, ncname, 'Nimpact', &
954 & nimpact, (/0/), (/0/), &
955 & ncid = ncid)
956# endif
957# ifndef I4DVAR_ANA_SENSITIVITY
958 CALL netcdf_put_fvar (ng, model, ncname, 'GradErr', &
959 & graderr, (/0/), (/0/), &
960 & ncid = ncid)
961 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
962
963 CALL netcdf_put_fvar (ng, model, ncname, 'HevecErr', &
964 & hevecerr, (/0/), (/0/), &
965 & ncid = ncid)
966 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
967# endif
968
969 CALL netcdf_put_ivar (ng, model, ncname, 'Nmethod', &
970 & nmethod(ng), (/0/), (/0/), &
971 & ncid = ncid)
972 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
973
974 CALL netcdf_put_ivar (ng, model, ncname, 'Rscheme', &
975 & rscheme(ng), (/0/), (/0/), &
976 & ncid = ncid)
977 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
978
979 CALL netcdf_put_ivar (ng, model, ncname, 'Nrandom', &
980 & nrandom, (/0/), (/0/), &
981 & ncid = ncid)
982 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
983
984 CALL netcdf_put_fvar (ng, model, ncname, 'Hgamma', &
985 & hgamma(1), (/0/), (/0/), &
986 & ncid = ncid)
987 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
988
989# ifdef WEAK_CONSTRAINT
990 CALL netcdf_put_fvar (ng, model, ncname, 'HgammaM', &
991 & hgamma(2), (/0/), (/0/), &
992 & ncid = ncid)
993 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
994# endif
995
996# ifdef ADJUST_BOUNDARY
997 CALL netcdf_put_fvar (ng, model, ncname, 'HgammaB', &
998 & hgamma(3), (/0/), (/0/), &
999 & ncid = ncid)
1000 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1001# endif
1002
1003# ifdef ADJUST_STFLUX
1004 CALL netcdf_put_fvar (ng, model, ncname, 'HgammaF', &
1005 & hgamma(4), (/0/), (/0/), &
1006 & ncid = ncid)
1007 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1008# endif
1009
1010# ifdef SOLVE3D
1011 CALL netcdf_put_fvar (ng, model, ncname, 'Vgamma', &
1012 & vgamma(1), (/0/), (/0/), &
1013 & ncid = ncid)
1014 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1015
1016# ifdef WEAK_CONSTRAINT
1017 CALL netcdf_put_fvar (ng, model, ncname, 'VgammaM', &
1018 & vgamma(2), (/0/), (/0/), &
1019 & ncid = ncid)
1020 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1021# endif
1022
1023# ifdef ADJUST_BOUNDARY
1024 CALL netcdf_put_fvar (ng, model, ncname, 'VgammaB', &
1025 & vgamma(3), (/0/), (/0/), &
1026 & ncid = ncid)
1027 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1028# endif
1029# endif
1030
1031 CALL netcdf_put_fvar (ng, model, ncname, 'Hdecay', &
1032 & hdecay(1,:,ng), (/1/), (/nstatevar(ng)/), &
1033 & ncid = ncid)
1034 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1035
1036# ifdef SOLVE3D
1037 CALL netcdf_put_fvar (ng, model, ncname, 'Vdecay', &
1038 & vdecay(1,:,ng), (/1/), (/nstatevar(ng)/), &
1039 & ncid = ncid)
1040 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1041# endif
1042
1043 IF (nsa.eq.2) THEN
1044 CALL netcdf_put_fvar (ng, model, ncname, 'HdecayM', &
1045 & hdecay(2,:,ng), (/1/), (/nstatevar(ng)/), &
1046 & ncid = ncid)
1047 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1048
1049# ifdef SOLVE3D
1050 CALL netcdf_put_fvar (ng, model, ncname, 'VdecayM', &
1051 & vdecay(2,:,ng), (/1/), (/nstatevar(ng)/), &
1052 & ncid = ncid)
1053 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1054# endif
1055 END IF
1056
1057# ifdef ADJUST_BOUNDARY
1058 CALL netcdf_put_fvar (ng, model, ncname, 'HdecayB', &
1059 & hdecayb(:,:,ng), &
1060 & (/1,1/), (/nstatevar(ng),4/), &
1061 & ncid = ncid)
1062 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1063
1064# ifdef SOLVE3D
1065 CALL netcdf_put_fvar (ng, model, ncname, 'VdecayB', &
1066 & vdecayb(:,:,ng), &
1067 & (/1,1/), (/nstatevar(ng),4/), &
1068 & ncid = ncid)
1069 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1070# endif
1071# endif
1072
1073# ifdef RPM_RELAXATION
1074 CALL netcdf_put_fvar (ng, model, ncname, 'tl_M2diff', &
1075 & tl_m2diff(ng), (/0/), (/0/), &
1076 & ncid = ncid)
1077 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1078
1079# ifdef SOLVE3D
1080 CALL netcdf_put_fvar (ng, model, ncname, 'tl_M3diff', &
1081 & tl_m3diff(ng), (/0/), (/0/), &
1082 & ncid = ncid)
1083 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1084
1085 CALL netcdf_put_fvar (ng, model, ncname, 'tl_Tdiff', &
1086 & tl_tdiff(:,ng), (/1/), (/nt(ng)/), &
1087 & ncid = ncid)
1088 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1089# endif
1090# endif
1091
1092# ifdef BALANCE_OPERATOR
1093# ifdef ZETA_ELLIPTIC
1094 CALL netcdf_put_ivar (ng, model, ncname, 'Nbico', &
1095 & nbico(ng), (/0/), (/0/), &
1096 & ncid = ncid)
1097# endif
1098
1099 CALL netcdf_put_lvar (ng, model, ncname, 'Lbalance', &
1100 & balance, (/1/), (/nstatevar(ng)/), &
1101 & ncid = ncid)
1102 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1103
1104 CALL netcdf_put_ivar (ng, model, ncname, 'LNM_flag', &
1105 & lnm_flag, (/0/), (/0/), &
1106 & ncid = ncid)
1107 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1108
1109 CALL netcdf_put_fvar (ng, model, ncname, 'LNM_depth', &
1110 & lnm_depth(ng), (/0/), (/0/), &
1111 & ncid = ncid)
1112 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1113
1114 CALL netcdf_put_fvar (ng, model, ncname, 'dTdz_min', &
1115 & dtdz_min(ng), (/0/), (/0/), &
1116 & ncid = ncid)
1117 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1118
1119 CALL netcdf_put_fvar (ng, model, ncname, 'ml_depth', &
1120 & ml_depth(ng), (/0/), (/0/), &
1121 & ncid = ncid)
1122 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1123# endif
1124
1125# ifdef STD_MODEL
1126
1127
1128
1129 CALL netcdf_put_fvar (ng, model, ncname, 'Sigma_max', &
1130 & sigma_max(:,ng), (/1/), (/nstatevar(ng)/), &
1131 & ncid = ncid)
1132 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1133
1134 CALL netcdf_put_fvar (ng, model, ncname, 'Sigma_ml', &
1135 & sigma_ml(:,ng), (/1/), (/nstatevar(ng)/), &
1136 & ncid = ncid)
1137 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1138
1139 CALL netcdf_put_fvar (ng, model, ncname, 'Sigma_do', &
1140 & sigma_do(:,ng), (/1/), (/nstatevar(ng)/), &
1141 & ncid = ncid)
1142 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1143
1144 CALL netcdf_put_fvar (ng, model, ncname, 'Sigma_dz', &
1145 & sigma_dz(:,ng), (/1/), (/nstatevar(ng)/), &
1146 & ncid = ncid)
1147 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1148
1149# ifndef COMPUTE_MLD
1150 CALL netcdf_put_fvar (ng, model, ncname, 'mld_uniform', &
1151 & mld_uniform(ng), (/0/), (/0/), &
1152 & ncid = ncid)
1153 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1154# endif
1155# endif
1156#endif
1157
1158#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1159 defined opt_observations || defined sensitivity_4dvar || \
1160 defined so_semi
1161
1162
1163
1164 CALL netcdf_put_lvar (ng, model, ncname, 'Lzeta', &
1165 & scalars(ng)%Lstate(isfsur), &
1166 & (/0/), (/0/), &
1167 & ncid = ncid)
1168 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1169
1170 CALL netcdf_put_lvar (ng, model, ncname, 'Lubar', &
1171 & scalars(ng)%Lstate(isubar), &
1172 & (/0/), (/0/), &
1173 & ncid = ncid)
1174 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1175
1176 CALL netcdf_put_lvar (ng, model, ncname, 'Lvbar', &
1177 & scalars(ng)%Lstate(isvbar), &
1178 & (/0/), (/0/), &
1179 & ncid = ncid)
1180 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1181
1182# ifdef SOLVE3D
1183 CALL netcdf_put_lvar (ng, model, ncname, 'Luvel', &
1184 & scalars(ng)%Lstate(isuvel), &
1185 & (/0/), (/0/), &
1186 & ncid = ncid)
1187 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1188
1189 CALL netcdf_put_lvar (ng, model, ncname, 'Lvvel', &
1190 & scalars(ng)%Lstate(isvvel), &
1191 & (/0/), (/0/), &
1192 & ncid = ncid)
1193 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1194
1195 CALL netcdf_put_lvar (ng, model, ncname, 'Ltracer', &
1196 & scalars(ng)%Lstate(istvar(:)), &
1197 & (/1/), (/nt(ng)/), &
1198 & ncid = ncid)
1199 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1200
1201 CALL netcdf_put_ivar (ng, model, ncname, 'KstrS', &
1202 & kstrs(ng), (/0/), (/0/), &
1203 & ncid = ncid)
1204 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1205
1206 CALL netcdf_put_ivar (ng, model, ncname, 'KendS', &
1207 & kends(ng), (/0/), (/0/), &
1208 & ncid = ncid)
1209 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1210# endif
1211#endif
1212
1213#if defined FORCING_SV || defined SO_SEMI || defined STOCHASTIC_OPT
1214
1215
1216
1217 CALL netcdf_put_lvar (ng, model, ncname, 'Fzeta', &
1218 & scalars(ng)%Fstate(isfsur), &
1219 & (/0/), (/0/), &
1220 & ncid = ncid)
1221 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1222
1223# ifndef SOLVE3D
1224 CALL netcdf_put_lvar (ng, model, ncname, 'Fubar', &
1225 & scalars(ng)%Fstate(isubar), &
1226 & (/0/), (/0/), &
1227 & ncid = ncid)
1228 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1229
1230 CALL netcdf_put_lvar (ng, model, ncname, 'Fvbar', &
1231 & scalars(ng)%Fstate(isvbar), &
1232 & (/0/), (/0/), &
1233 & ncid = ncid)
1234 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1235
1236# else
1237
1238 CALL netcdf_put_lvar (ng, model, ncname, 'Fuvel', &
1239 & scalars(ng)%Fstate(isuvel), &
1240 & (/0/), (/0/), &
1241 & ncid = ncid)
1242 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1243
1244 CALL netcdf_put_lvar (ng, model, ncname, 'Fvvel', &
1245 & scalars(ng)%Fstate(isvvel), &
1246 & (/0/), (/0/), &
1247 & ncid = ncid)
1248 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1249
1250 CALL netcdf_put_lvar (ng, model, ncname, 'Ftracer', &
1251 & scalars(ng)%Fstate(istvar(:)), &
1252 & (/1/), (/nt(ng)/), &
1253 & ncid = ncid)
1254 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1255# endif
1256
1257 CALL netcdf_put_lvar (ng, model, ncname, 'Fsustr', &
1258 & scalars(ng)%Fstate(isustr), &
1259 & (/0/), (/0/), &
1260 & ncid = ncid)
1261 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1262
1263 CALL netcdf_put_lvar (ng, model, ncname, 'Fsvstr', &
1264 & scalars(ng)%Fstate(isvstr), &
1265 & (/0/), (/0/), &
1266 & ncid = ncid)
1267 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1268
1269# ifdef SOLVE3D
1270 CALL netcdf_put_lvar (ng, model, ncname, 'Fstflx', &
1271 & scalars(ng)%Fstate(istsur(:)), &
1272 & (/1/), (/nt(ng)/), &
1273 & ncid = ncid)
1274 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1275# endif
1276#endif
1277
1278#ifdef SO_SEMI
1279# ifndef SO_SEMI_WHITE
1280 CALL netcdf_put_fvar (ng, model, ncname, 'SO_decay', &
1281 & so_decay(ng), (/0/), (/0/), &
1282 & ncid = ncid)
1283 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1284# endif
1285
1286 CALL netcdf_put_fvar (ng, model, ncname, 'SO_trace', &
1287 & trnorm(ng), (/0/), (/0/), &
1288 & ncid = ncid)
1289 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1290
1291 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_zeta', &
1292 & so_sdev(isfsur,ng), (/0/), (/0/), &
1293 & ncid = ncid)
1294 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1295
1296# ifndef SOLVE3D
1297 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_ubar', &
1298 & so_sdev(isubar,ng), (/0/), (/0/), &
1299 & ncid = ncid)
1300 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1301
1302 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_vbar', &
1303 & so_sdev(isubar,ng), (/0/), (/0/), &
1304 & ncid = ncid)
1305 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1306
1307# else
1308
1309 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_uvel', &
1310 & so_sdev(isuvel,ng), (/0/), (/0/), &
1311 & ncid = ncid)
1312 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1313
1314 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_vvel', &
1315 & so_sdev(isvvel,ng), (/0/), (/0/), &
1316 & ncid = ncid)
1317 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1318
1319 DO itrc=1,nt(ng)
1320 nudg(itrc)=so_sdev(istvar(itrc),ng)
1321 END DO
1322 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_tracer', &
1323 & nudg, (/1/), (/nt(ng)/), &
1324 & ncid = ncid)
1325 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1326# endif
1327
1328 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_sustr', &
1329 & so_sdev(isustr,ng), (/0/), (/0/), &
1330 & ncid = ncid)
1331 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1332
1333
1334 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_svstr', &
1335 & so_sdev(isvstr,ng), (/0/), (/0/), &
1336 & ncid = ncid)
1337 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1338
1339# ifdef SOLVE3D
1340 DO itrc=1,nt(ng)
1341 nudg(itrc)=so_sdev(istsur(itrc),ng)
1342 END DO
1343 CALL netcdf_put_fvar (ng, model, ncname, 'SOsdev_stflx', &
1344 & nudg, (/1/), (/nt(ng)/), &
1345 & ncid = ncid)
1346 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1347# endif
1348#endif
1349
1350#if defined BIOLOGY && defined SOLVE3D
1351# if defined BIO_FENNEL
1352# include <fennel_wrt.h>
1353# elif defined ECOSIM
1354# include <ecosim_wrt.h>
1355# elif defined HYPOXIA_SRM
1356# include <hypoxia_srm_wrt.h>
1357# elif defined NEMURO
1358# include <nemuro_wrt.h>
1359# elif defined NPZD_FRANKS
1360# include <npzd_Franks_wrt.h>
1361# elif defined NPZD_IRON
1362# include <npzd_iron_wrt.h>
1363# elif defined NPZD_POWELL
1364# include <npzd_Powell_wrt.h>
1365# elif defined RED_TIDE
1366# include <red_tide_wrt.h>
1367# endif
1368#endif
1369
1370#if defined FLOATS && defined FLOAT_BIOLOGY
1371# if defined FLOAT_OYSTER
1372# include <oyster_floats_wrt.h>
1373# endif
1374#endif
1375
1376#ifdef SEDIMENT
1377# include <sediment_wrt.h>
1378#endif
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388 CALL netcdf_put_lvar (ng, model, ncname, 'spherical', &
1389 & spherical, (/0/), (/0/), &
1390 & ncid = ncid)
1391 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1392
1393
1394
1395 CALL netcdf_put_fvar (ng, model, ncname, 'xl', &
1396 & xl(ng), (/0/), (/0/), &
1397 & ncid = ncid)
1398 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1399
1400 CALL netcdf_put_fvar (ng, model, ncname, 'el', &
1401 & el(ng), (/0/), (/0/), &
1402 & ncid = ncid)
1403 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1404
1405#ifdef SOLVE3D
1406
1407
1408
1409 CALL netcdf_put_ivar (ng, model, ncname, 'Vtransform', &
1410 & vtransform(ng), (/0/), (/0/), &
1411 & ncid = ncid)
1412 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1413
1414 CALL netcdf_put_ivar (ng, model, ncname, 'Vstretching', &
1415 & vstretching(ng), (/0/), (/0/), &
1416 & ncid = ncid)
1417 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1418
1419 CALL netcdf_put_fvar (ng, model, ncname, 'theta_s', &
1420 & theta_s(ng), (/0/), (/0/), &
1421 & ncid = ncid)
1422 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1423
1424 CALL netcdf_put_fvar (ng, model, ncname, 'theta_b', &
1425 & theta_b(ng), (/0/), (/0/), &
1426 & ncid = ncid)
1427 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1428
1429 CALL netcdf_put_fvar (ng, model, ncname, 'Tcline', &
1430 & tcline(ng), (/0/), (/0/), &
1431 & ncid = ncid)
1432 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1433
1434 CALL netcdf_put_fvar (ng, model, ncname, 'hc', &
1435 & hc(ng), (/0/), (/0/), &
1436 & ncid = ncid)
1437 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1438
1439
1440
1441
1442
1443 CALL netcdf_put_ivar (ng, model, ncname, 'grid', &
1444 & (/1/), (/0/), (/0/), &
1445 & ncid = ncid)
1446 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1447
1448
1449
1450 CALL netcdf_put_fvar (ng, model, ncname, 's_rho', &
1451 & scalars(ng)%sc_r(:), (/1/), (/n(ng)/), &
1452 & ncid = ncid)
1453 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1454
1455 CALL netcdf_put_fvar (ng, model, ncname, 's_w', &
1456 & scalars(ng)%sc_w(0:), (/1/), (/n(ng)+1/), &
1457 & ncid = ncid)
1458 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1459
1460
1461
1462 CALL netcdf_put_fvar (ng, model, ncname, 'Cs_r', &
1463 & scalars(ng)%Cs_r(:), (/1/), (/n(ng)/), &
1464 & ncid = ncid)
1465 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1466
1467 CALL netcdf_put_fvar (ng, model, ncname, 'Cs_w', &
1468 & scalars(ng)%Cs_w(0:), (/1/), (/n(ng)+1/), &
1469 & ncid = ncid)
1470 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1471#endif
1472
1473
1474
1475 IF (nuser.gt.0) THEN
1476 CALL netcdf_put_fvar (ng, model, ncname, 'user', &
1477 & user, (/1/), (/nuser/), &
1478 & ncid = ncid)
1479 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1480 END IF
1481
1482#ifdef STATIONS
1483
1484
1485
1486 IF (ncid.eq.sta(ng)%ncid) THEN
1487 CALL netcdf_put_fvar (ng, model, ncname, 'Ipos', &
1488 & scalars(ng)%SposX(:), (/1/), &
1489 & (/nstation(ng)/), ncid = ncid)
1490 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1491
1492 CALL netcdf_put_fvar (ng, model, ncname, 'Jpos', &
1493 & scalars(ng)%SposY(:), (/1/), &
1494 & (/nstation(ng)/), ncid = ncid)
1495 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1496 END IF
1497#endif
1498
1499
1500
1501
1502
1503#ifdef NO_WRITE_GRID
1504 grid_vars : IF (ncid.eq.sta(ng)%ncid) THEN
1505#else
1506 grid_vars : IF (ncid.ne.flt(ng)%ncid) THEN
1507#endif
1508#if !(defined SED_MORPH && defined SEDIMENT)
1509
1510
1511
1512 IF (exit_flag.eq.noerror) THEN
1513 scale=1.0_dp
1514 IF ((ncid.ne.sta(ng)%ncid).and. &
1515 & (ncid.ne.xtr(ng)%ncid)) THEN
1516 IF (find_string(var_name, n_var, trim(vname(1,idtopo)), &
1517 & varid)) THEN
1518 status=nf_fwrite2d(ng, model, ncid, idtopo, &
1519 & varid, 0, r2dvar, &
1520 & lbi, ubi, lbj, ubj, scale, &
1521# ifdef MASKING
1522 & grid(ng) % rmask, &
1523# endif
1524 & grid(ng) % h, &
1525 & setfillval = .false.)
1526 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1527 IF (master) WRITE (stdout,10) trim(vname(1,idtopo)), &
1528 & trim(ncname)
1529 exit_flag=3
1530 ioerror=status
1531 END IF
1532 ELSE
1533 IF (master) WRITE (stdout,20) trim(vname(1,idtopo)), &
1534 & trim(ncname)
1535 exit_flag=3
1536 ioerror=nf90_enotvar
1537 END IF
1538# ifdef GRID_EXTRACT
1539 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1540 IF (find_string(var_name, n_var, trim(vname(1,idtopo)), &
1541 & varid)) THEN
1542 status=nf_fwrite2d(ng, model, ncid, idtopo, &
1543 & varid, 0, r2dvar, &
1544 & lbi, ubi, lbj, ubj, scale, &
1545# ifdef MASKING
1546 & extract(ng) % rmask, &
1547# endif
1548 & extract(ng) % h, &
1549 & setfillval = .false., &
1550 & extractfield = -1)
1551 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1552 IF (master) WRITE (stdout,10) trim(vname(1,idtopo)), &
1553 & trim(ncname)
1554 exit_flag=3
1555 ioerror=status
1556 END IF
1557 ELSE
1558 IF (master) WRITE (stdout,20) trim(vname(1,idtopo)), &
1559 & trim(ncname)
1560 exit_flag=3
1561 ioerror=nf90_enotvar
1562 END IF
1563# endif
1564# ifdef STATIONS
1565 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
1566 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
1567 & lbi, ubi, lbj, ubj, &
1568 & scale, grid(ng)%h, &
1569 & nstation(ng), scalars(ng)%SposX, &
1570 & scalars(ng)%SposY, wrk)
1571 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idtopo), &
1572 & wrk, (/1/), (/nstation(ng)/), &
1573 & ncid = ncid)
1574 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1575# endif
1576 END IF
1577 END IF
1578#endif
1579
1580
1581
1582 IF (exit_flag.eq.noerror) THEN
1583 IF ((ncid.ne.sta(ng)%ncid).and. &
1584 & (ncid.ne.xtr(ng)%ncid)) THEN
1585 scale=1.0_dp
1586 IF (find_string(var_name, n_var, trim(vname(1,idfcor)), &
1587 & varid)) THEN
1588 status=nf_fwrite2d(ng, model, ncid, idfcor, &
1589 & varid, 0, r2dvar, &
1590 & lbi, ubi, lbj, ubj, scale, &
1591#ifdef MASKING
1592 & grid(ng) % rmask, &
1593#endif
1594 & grid(ng) % f, &
1595 & setfillval = .false.)
1596 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1597 IF (master) WRITE (stdout,10) trim(vname(1,idfcor)), &
1598 & trim(ncname)
1599 exit_flag=3
1600 ioerror=status
1601 END IF
1602 ELSE
1603 IF (master) WRITE (stdout,20) trim(vname(1,idfcor)), &
1604 & trim(ncname)
1605 exit_flag=3
1606 ioerror=nf90_enotvar
1607 END IF
1608#ifdef GRID_EXTRACT
1609 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1610 scale=1.0_dp
1611 IF (find_string(var_name, n_var, trim(vname(1,idfcor)), &
1612 & varid)) THEN
1613 status=nf_fwrite2d(ng, model, ncid, idfcor, &
1614 & varid, 0, r2dvar, &
1615 & lbi, ubi, lbj, ubj, scale, &
1616# ifdef MASKING
1617 & extract(ng) % rmask, &
1618# endif
1619 & extract(ng) % f, &
1620 & setfillval = .false., &
1621 & extractfield = -1)
1622 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1623 IF (master) WRITE (stdout,10) trim(vname(1,idfcor)), &
1624 & trim(ncname)
1625 exit_flag=3
1626 ioerror=status
1627 END IF
1628 ELSE
1629 IF (master) WRITE (stdout,20) trim(vname(1,idfcor)), &
1630 & trim(ncname)
1631 exit_flag=3
1632 ioerror=nf90_enotvar
1633 END IF
1634#endif
1635 END IF
1636 END IF
1637
1638
1639
1640 IF (exit_flag.eq.noerror) THEN
1641 IF ((ncid.ne.sta(ng)%ncid).and. &
1642 & (ncid.ne.xtr(ng)%ncid)) THEN
1643 scale=1.0_dp
1644 IF (find_string(var_name, n_var, trim(vname(1,idpmdx)), &
1645 & varid)) THEN
1646 status=nf_fwrite2d(ng, model, ncid, idpmdx, &
1647 & varid, 0, r2dvar, &
1648 & lbi, ubi, lbj, ubj, scale, &
1649#ifdef MASKING
1650 & grid(ng) % rmask, &
1651#endif
1652 & grid(ng) % pm, &
1653 & setfillval = .false.)
1654 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1655 IF (master) WRITE (stdout,10) trim(vname(1,idpmdx)), &
1656 & trim(ncname)
1657 exit_flag=3
1658 ioerror=status
1659 END IF
1660 ELSE
1661 IF (master) WRITE (stdout,20) trim(vname(1,idpmdx)), &
1662 & trim(ncname)
1663 exit_flag=3
1664 ioerror=nf90_enotvar
1665 END IF
1666#ifdef GRID_EXTRACT
1667 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1668 scale=1.0_dp
1669 IF (find_string(var_name, n_var, trim(vname(1,idpmdx)), &
1670 & varid)) THEN
1671 status=nf_fwrite2d(ng, model, ncid, idpmdx, &
1672 & varid, 0, r2dvar, &
1673 & lbi, ubi, lbj, ubj, scale, &
1674# ifdef MASKING
1675 & extract(ng) % rmask, &
1676# endif
1677 & extract(ng) % pm, &
1678 & setfillval = .false., &
1679 & extractfield = -1)
1680 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1681 IF (master) WRITE (stdout,10) trim(vname(1,idpmdx)), &
1682 & trim(ncname)
1683 exit_flag=3
1684 ioerror=status
1685 END IF
1686 ELSE
1687 IF (master) WRITE (stdout,20) trim(vname(1,idpmdx)), &
1688 & trim(ncname)
1689 exit_flag=3
1690 ioerror=nf90_enotvar
1691 END IF
1692#endif
1693 END IF
1694 END IF
1695
1696 IF (exit_flag.eq.noerror) THEN
1697 IF ((ncid.ne.sta(ng)%ncid).and. &
1698 & (ncid.ne.xtr(ng)%ncid)) THEN
1699 scale=1.0_dp
1700 IF (find_string(var_name, n_var, trim(vname(1,idpndy)), &
1701 & varid)) THEN
1702 status=nf_fwrite2d(ng, model, ncid, idpndy, &
1703 & varid, 0, r2dvar, &
1704 & lbi, ubi, lbj, ubj, scale, &
1705#ifdef MASKING
1706 & grid(ng) % rmask, &
1707#endif
1708 & grid(ng) % pn, &
1709 & setfillval = .false.)
1710 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1711 IF (master) WRITE (stdout,10) trim(vname(1,idpndy)), &
1712 & trim(ncname)
1713 exit_flag=3
1714 ioerror=status
1715 END IF
1716 ELSE
1717 IF (master) WRITE (stdout,20) trim(vname(1,idpndy)), &
1718 & trim(ncname)
1719 exit_flag=3
1720 ioerror=nf90_enotvar
1721 END IF
1722#ifdef GRID_EXTRACT
1723 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1724 scale=1.0_dp
1725 IF (find_string(var_name, n_var, trim(vname(1,idpndy)), &
1726 & varid)) THEN
1727 status=nf_fwrite2d(ng, model, ncid, idpndy, &
1728 & varid, 0, r2dvar, &
1729 & lbi, ubi, lbj, ubj, scale, &
1730# ifdef MASKING
1731 & extract(ng) % rmask, &
1732# endif
1733 & extract(ng) % pn, &
1734 & setfillval = .false., &
1735 & extractfield = -1)
1736 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1737 IF (master) WRITE (stdout,10) trim(vname(1,idpndy)), &
1738 & trim(ncname)
1739 exit_flag=3
1740 ioerror=status
1741 END IF
1742 ELSE
1743 IF (master) WRITE (stdout,20) trim(vname(1,idpndy)), &
1744 & trim(ncname)
1745 exit_flag=3
1746 ioerror=nf90_enotvar
1747 END IF
1748#endif
1749 END IF
1750 END IF
1751
1752
1753
1754 IF (spherical) THEN
1755 IF (exit_flag.eq.noerror) THEN
1756 scale=1.0_dp
1757 IF ((ncid.ne.sta(ng)%ncid).and. &
1758 & (ncid.ne.xtr(ng)%ncid)) THEN
1759 IF (find_string(var_name, n_var, trim(vname(1,idlonr)), &
1760 & varid)) THEN
1761 status=nf_fwrite2d(ng, model, ncid, idlonr, &
1762 & varid, 0, r2dvar, &
1763 & lbi, ubi, lbj, ubj, scale, &
1764#ifdef MASKING
1765 & grid(ng) % rmask, &
1766#endif
1767 & grid(ng) % lonr, &
1768 & setfillval = .false.)
1769 IF (founderror(status, nf90_noerr, &
1770 & __line__, myfile)) THEN
1771 IF (master) WRITE (stdout,10) trim(vname(1,idlonr)), &
1772 & trim(ncname)
1773 exit_flag=3
1774 ioerror=status
1775 END IF
1776 ELSE
1777 IF (master) WRITE (stdout,20) trim(vname(1,idlonr)), &
1778 & trim(ncname)
1779 exit_flag=3
1780 ioerror=nf90_enotvar
1781 END IF
1782#ifdef GRID_EXTRACT
1783 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1784 IF (find_string(var_name, n_var, trim(vname(1,idlonr)), &
1785 & varid)) THEN
1786 status=nf_fwrite2d(ng, model, ncid, idlonr, &
1787 & varid, 0, r2dvar, &
1788 & lbi, ubi, lbj, ubj, scale, &
1789# ifdef MASKING
1790 & extract(ng) % rmask, &
1791# endif
1792 & extract(ng) % lonr, &
1793 & setfillval = .false., &
1794 & extractfield = -1)
1795 IF (founderror(status, nf90_noerr, &
1796 & __line__, myfile)) THEN
1797 IF (master) WRITE (stdout,10) trim(vname(1,idlonr)), &
1798 & trim(ncname)
1799 exit_flag=3
1800 ioerror=status
1801 END IF
1802 ELSE
1803 IF (master) WRITE (stdout,20) trim(vname(1,idlonr)), &
1804 & trim(ncname)
1805 exit_flag=3
1806 ioerror=nf90_enotvar
1807 END IF
1808#endif
1809#ifdef STATIONS
1810 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
1811 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
1812 & lbi, ubi, lbj, ubj, &
1813 & scale, grid(ng)%lonr, &
1814 & nstation(ng), scalars(ng)%SposX, &
1815 & scalars(ng)%SposY, wrk)
1816 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idlonr), &
1817 & wrk, (/1/), (/nstation(ng)/), &
1818 & ncid = ncid)
1819 IF (founderror(exit_flag, noerror, &
1820 & __line__, myfile)) RETURN
1821#endif
1822 END IF
1823 END IF
1824
1825 IF (exit_flag.eq.noerror) THEN
1826 scale=1.0_dp
1827 IF ((ncid.ne.sta(ng)%ncid).and. &
1828 & (ncid.ne.xtr(ng)%ncid)) THEN
1829 IF (find_string(var_name, n_var, trim(vname(1,idlatr)), &
1830 & varid)) THEN
1831 status=nf_fwrite2d(ng, model, ncid, idlatr, &
1832 & varid, 0, r2dvar, &
1833 & lbi, ubi, lbj, ubj, scale, &
1834#ifdef MASKING
1835 & grid(ng) % rmask, &
1836#endif
1837 & grid(ng) % latr, &
1838 & setfillval = .false.)
1839 IF (founderror(status, nf90_noerr, &
1840 & __line__, myfile)) THEN
1841 IF (master) WRITE (stdout,10) trim(vname(1,idlatr)), &
1842 & trim(ncname)
1843 exit_flag=3
1844 ioerror=status
1845 END IF
1846 ELSE
1847 IF (master) WRITE (stdout,20) trim(vname(1,idlatr)), &
1848 & trim(ncname)
1849 exit_flag=3
1850 ioerror=nf90_enotvar
1851 END IF
1852#ifdef GRID_EXTRACT
1853 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1854 IF (find_string(var_name, n_var, trim(vname(1,idlatr)), &
1855 & varid)) THEN
1856 status=nf_fwrite2d(ng, model, ncid, idlatr, &
1857 & varid, 0, r2dvar, &
1858 & lbi, ubi, lbj, ubj, scale, &
1859# ifdef MASKING
1860 & extract(ng) % rmask, &
1861# endif
1862 & extract(ng) % latr, &
1863 & setfillval = .false., &
1864 & extractfield = -1)
1865 IF (founderror(status, nf90_noerr, &
1866 & __line__, myfile)) THEN
1867 IF (master) WRITE (stdout,10) trim(vname(1,idlatr)), &
1868 & trim(ncname)
1869 exit_flag=3
1870 ioerror=status
1871 END IF
1872 ELSE
1873 IF (master) WRITE (stdout,20) trim(vname(1,idlatr)), &
1874 & trim(ncname)
1875 exit_flag=3
1876 ioerror=nf90_enotvar
1877 END IF
1878#endif
1879#ifdef STATIONS
1880 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
1881 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
1882 & lbi, ubi, lbj, ubj, &
1883 & scale, grid(ng)%latr, &
1884 & nstation(ng), scalars(ng)%SposX, &
1885 & scalars(ng)%SposY, wrk)
1886 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idlatr), &
1887 & wrk, (/1/), (/nstation(ng)/), &
1888 & ncid = ncid)
1889 IF (founderror(exit_flag, noerror, &
1890 & __line__, myfile)) RETURN
1891#endif
1892 END IF
1893 END IF
1894 END IF
1895
1896 IF (.not.spherical) THEN
1897 IF (exit_flag.eq.noerror) THEN
1898 scale=1.0_dp
1899 IF ((ncid.ne.sta(ng)%ncid).and. &
1900 & (ncid.ne.xtr(ng)%ncid)) THEN
1901 IF (find_string(var_name, n_var, trim(vname(1,idxgrr)), &
1902 & varid)) THEN
1903 status=nf_fwrite2d(ng, model, ncid, idxgrr, &
1904 & varid, 0, r2dvar, &
1905 & lbi, ubi, lbj, ubj, scale, &
1906#ifdef MASKING
1907 & grid(ng) % rmask, &
1908#endif
1909 & grid(ng) % xr, &
1910 & setfillval = .false.)
1911 IF (founderror(status, nf90_noerr, &
1912 & __line__, myfile)) THEN
1913 IF (master) WRITE (stdout,10) trim(vname(1,idxgrr)), &
1914 & trim(ncname)
1915 exit_flag=3
1916 ioerror=status
1917 END IF
1918 ELSE
1919 IF (master) WRITE (stdout,20) trim(vname(1,idxgrr)), &
1920 & trim(ncname)
1921 exit_flag=3
1922 ioerror=nf90_enotvar
1923 END IF
1924#ifdef GRID_EXTRACT
1925 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1926 IF (find_string(var_name, n_var, trim(vname(1,idxgrr)), &
1927 & varid)) THEN
1928 status=nf_fwrite2d(ng, model, ncid, idxgrr, &
1929 & varid, 0, r2dvar, &
1930 & lbi, ubi, lbj, ubj, scale, &
1931# ifdef MASKING
1932 & extract(ng) % rmask, &
1933# endif
1934 & extract(ng) % xr, &
1935 & setfillval = .false., &
1936 & extractfield = -1)
1937 IF (founderror(status, nf90_noerr, &
1938 & __line__, myfile)) THEN
1939 IF (master) WRITE (stdout,10) trim(vname(1,idxgrr)), &
1940 & trim(ncname)
1941 exit_flag=3
1942 ioerror=status
1943 END IF
1944 ELSE
1945 IF (master) WRITE (stdout,20) trim(vname(1,idxgrr)), &
1946 & trim(ncname)
1947 exit_flag=3
1948 ioerror=nf90_enotvar
1949 END IF
1950#endif
1951#ifdef STATIONS
1952 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
1953 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
1954 & lbi, ubi, lbj, ubj, &
1955 & scale, grid(ng)%xr, &
1956 & nstation(ng), scalars(ng)%SposX, &
1957 & scalars(ng)%SposY, wrk)
1958 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idxgrr), &
1959 & wrk, (/1/), (/nstation(ng)/), &
1960 & ncid = ncid)
1961 IF (founderror(exit_flag, noerror, &
1962 & __line__, myfile)) RETURN
1963#endif
1964 END IF
1965 END IF
1966
1967 IF (exit_flag.eq.noerror) THEN
1968 scale=1.0_dp
1969 IF ((ncid.ne.sta(ng)%ncid).and. &
1970 & (ncid.ne.xtr(ng)%ncid)) THEN
1971 IF (find_string(var_name, n_var, trim(vname(1,idygrr)), &
1972 & varid)) THEN
1973 status=nf_fwrite2d(ng, model, ncid, idygrr, &
1974 & varid, 0, r2dvar, &
1975 & lbi, ubi, lbj, ubj, scale, &
1976#ifdef MASKING
1977 & grid(ng) % rmask, &
1978#endif
1979 & grid(ng) % yr, &
1980 & setfillval = .false.)
1981 IF (founderror(status, nf90_noerr, &
1982 & __line__, myfile)) THEN
1983 IF (master) WRITE (stdout,10) trim(vname(1,idygrr)), &
1984 & trim(ncname)
1985 exit_flag=3
1986 ioerror=status
1987 END IF
1988 ELSE
1989 IF (master) WRITE (stdout,20) trim(vname(1,idygrr)), &
1990 & trim(ncname)
1991 exit_flag=3
1992 ioerror=nf90_enotvar
1993 END IF
1994#ifdef GRID_EXTRACT
1995 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
1996 IF (find_string(var_name, n_var, trim(vname(1,idygrr)), &
1997 & varid)) THEN
1998 status=nf_fwrite2d(ng, model, ncid, idygrr, &
1999 & varid, 0, r2dvar, &
2000 & lbi, ubi, lbj, ubj, scale, &
2001# ifdef MASKING
2002 & extract(ng) % rmask, &
2003# endif
2004 & extract(ng) % yr, &
2005 & setfillval = .false., &
2006 & extractfield = -1)
2007 IF (founderror(status, nf90_noerr, &
2008 & __line__, myfile)) THEN
2009 IF (master) WRITE (stdout,10) trim(vname(1,idygrr)), &
2010 & trim(ncname)
2011 exit_flag=3
2012 ioerror=status
2013 END IF
2014 ELSE
2015 IF (master) WRITE (stdout,20) trim(vname(1,idygrr)), &
2016 & trim(ncname)
2017 exit_flag=3
2018 ioerror=nf90_enotvar
2019 END IF
2020#endif
2021#ifdef STATIONS
2022 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
2023 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
2024 & lbi, ubi, lbj, ubj, &
2025 & scale, grid(ng)%yr, &
2026 & nstation(ng), scalars(ng)%SposX, &
2027 & scalars(ng)%SposY, wrk)
2028 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idygrr), &
2029 & wrk, (/1/), (/nstation(ng)/), &
2030 & ncid = ncid)
2031 IF (founderror(exit_flag, noerror, &
2032 & __line__, myfile)) RETURN
2033# endif
2034 END IF
2035 END IF
2036 END IF
2037
2038
2039
2040 IF (spherical) THEN
2041 IF (exit_flag.eq.noerror) THEN
2042 IF ((ncid.ne.sta(ng)%ncid).and. &
2043 & (ncid.ne.xtr(ng)%ncid)) THEN
2044 scale=1.0_dp
2045 IF (find_string(var_name, n_var, trim(vname(1,idlonu)), &
2046 & varid)) THEN
2047 status=nf_fwrite2d(ng, model, ncid, idlonu, &
2048 & varid, 0, u2dvar, &
2049 & lbi, ubi, lbj, ubj, scale, &
2050#ifdef MASKING
2051 & grid(ng) % umask, &
2052#endif
2053 & grid(ng) % lonu, &
2054 & setfillval = .false.)
2055 IF (founderror(status, nf90_noerr, &
2056 & __line__, myfile)) THEN
2057 IF (master) WRITE (stdout,10) trim(vname(1,idlonu)), &
2058 & trim(ncname)
2059 exit_flag=3
2060 ioerror=status
2061 END IF
2062 ELSE
2063 IF (master) WRITE (stdout,20) trim(vname(1,idlonu)), &
2064 & trim(ncname)
2065 exit_flag=3
2066 ioerror=nf90_enotvar
2067 END IF
2068#ifdef GRID_EXTRACT
2069 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2070 scale=1.0_dp
2071 IF (find_string(var_name, n_var, trim(vname(1,idlonu)), &
2072 & varid)) THEN
2073 status=nf_fwrite2d(ng, model, ncid, idlonu, &
2074 & varid, 0, u2dvar, &
2075 & lbi, ubi, lbj, ubj, scale, &
2076# ifdef MASKING
2077 & extract(ng) % umask, &
2078# endif
2079 & extract(ng) % lonu, &
2080 & setfillval = .false., &
2081 & extractfield = -1)
2082 IF (founderror(status, nf90_noerr, &
2083 & __line__, myfile)) THEN
2084 IF (master) WRITE (stdout,10) trim(vname(1,idlonu)), &
2085 & trim(ncname)
2086 exit_flag=3
2087 ioerror=status
2088 END IF
2089 ELSE
2090 IF (master) WRITE (stdout,20) trim(vname(1,idlonu)), &
2091 & trim(ncname)
2092 exit_flag=3
2093 ioerror=nf90_enotvar
2094 END IF
2095#endif
2096 END IF
2097 END IF
2098
2099 IF (exit_flag.eq.noerror) THEN
2100 IF ((ncid.ne.sta(ng)%ncid).and. &
2101 & (ncid.ne.xtr(ng)%ncid)) THEN
2102 scale=1.0_dp
2103 IF (find_string(var_name, n_var, trim(vname(1,idlatu)), &
2104 & varid)) THEN
2105 status=nf_fwrite2d(ng, model, ncid, idlatu, &
2106 & varid, 0, u2dvar, &
2107 & lbi, ubi, lbj, ubj, scale, &
2108#ifdef MASKING
2109 & grid(ng) % umask, &
2110#endif
2111 & grid(ng) % latu, &
2112 & setfillval = .false.)
2113 IF (founderror(status, nf90_noerr, &
2114 & __line__, myfile)) THEN
2115 IF (master) WRITE (stdout,10) trim(vname(1,idlatu)), &
2116 & trim(ncname)
2117 exit_flag=3
2118 ioerror=status
2119 END IF
2120 ELSE
2121 IF (master) WRITE (stdout,20) trim(vname(1,idlatu)), &
2122 & trim(ncname)
2123 exit_flag=3
2124 ioerror=nf90_enotvar
2125 END IF
2126#ifdef GRID_EXTRACT
2127 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2128 scale=1.0_dp
2129 IF (find_string(var_name, n_var, trim(vname(1,idlatu)), &
2130 & varid)) THEN
2131 status=nf_fwrite2d(ng, model, ncid, idlatu, &
2132 & varid, 0, u2dvar, &
2133 & lbi, ubi, lbj, ubj, scale, &
2134# ifdef MASKING
2135 & extract(ng) % umask, &
2136# endif
2137 & extract(ng) % latu, &
2138 & setfillval = .false., &
2139 & extractfield = -1)
2140 IF (founderror(status, nf90_noerr, &
2141 & __line__, myfile)) THEN
2142 IF (master) WRITE (stdout,10) trim(vname(1,idlatu)), &
2143 & trim(ncname)
2144 exit_flag=3
2145 ioerror=status
2146 END IF
2147 ELSE
2148 IF (master) WRITE (stdout,20) trim(vname(1,idlatu)), &
2149 & trim(ncname)
2150 exit_flag=3
2151 ioerror=nf90_enotvar
2152 END IF
2153#endif
2154 END IF
2155 END IF
2156 END IF
2157
2158 IF (.not.spherical) THEN
2159 IF (exit_flag.eq.noerror) THEN
2160 IF ((ncid.ne.sta(ng)%ncid).and. &
2161 & (ncid.ne.xtr(ng)%ncid)) THEN
2162 scale=1.0_dp
2163 IF (find_string(var_name, n_var, trim(vname(1,idxgru)), &
2164 & varid)) THEN
2165 status=nf_fwrite2d(ng, model, ncid, idxgru, &
2166 & varid, 0, u2dvar, &
2167 & lbi, ubi, lbj, ubj, scale, &
2168#ifdef MASKING
2169 & grid(ng) % umask, &
2170#endif
2171 & grid(ng) % xu, &
2172 & setfillval = .false.)
2173 IF (founderror(status, nf90_noerr, &
2174 & __line__, myfile)) THEN
2175 IF (master) WRITE (stdout,10) trim(vname(1,idxgru)), &
2176 & trim(ncname)
2177 exit_flag=3
2178 ioerror=status
2179 END IF
2180 ELSE
2181 IF (master) WRITE (stdout,20) trim(vname(1,idxgru)), &
2182 & trim(ncname)
2183 exit_flag=3
2184 ioerror=nf90_enotvar
2185 END IF
2186#ifdef GRID_EXTRACT
2187 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2188 scale=1.0_dp
2189 IF (find_string(var_name, n_var, trim(vname(1,idxgru)), &
2190 & varid)) THEN
2191 status=nf_fwrite2d(ng, model, ncid, idxgru, &
2192 & varid, 0, u2dvar, &
2193 & lbi, ubi, lbj, ubj, scale, &
2194# ifdef MASKING
2195 & extract(ng) % umask, &
2196# endif
2197 & extract(ng) % xu, &
2198 & setfillval = .false., &
2199 & extractfield = -1)
2200 IF (founderror(status, nf90_noerr, &
2201 & __line__, myfile)) THEN
2202 IF (master) WRITE (stdout,10) trim(vname(1,idxgru)), &
2203 & trim(ncname)
2204 exit_flag=3
2205 ioerror=status
2206 END IF
2207 ELSE
2208 IF (master) WRITE (stdout,20) trim(vname(1,idxgru)), &
2209 & trim(ncname)
2210 exit_flag=3
2211 ioerror=nf90_enotvar
2212 END IF
2213#endif
2214 END IF
2215 END IF
2216
2217 IF (exit_flag.eq.noerror) THEN
2218 IF ((ncid.ne.sta(ng)%ncid).and. &
2219 & (ncid.ne.xtr(ng)%ncid)) THEN
2220 scale=1.0_dp
2221 IF (find_string(var_name, n_var, trim(vname(1,idygru)), &
2222 & varid)) THEN
2223 status=nf_fwrite2d(ng, model, ncid, idygru, &
2224 & varid, 0, u2dvar, &
2225 & lbi, ubi, lbj, ubj, scale, &
2226#ifdef MASKING
2227 & grid(ng) % umask, &
2228#endif
2229 & grid(ng) % yu, &
2230 & setfillval = .false.)
2231 IF (founderror(status, nf90_noerr, &
2232 & __line__, myfile)) THEN
2233 IF (master) WRITE (stdout,10) trim(vname(1,idygru)), &
2234 & trim(ncname)
2235 exit_flag=3
2236 ioerror=status
2237 END IF
2238 ELSE
2239 IF (master) WRITE (stdout,20) trim(vname(1,idygru)), &
2240 & trim(ncname)
2241 exit_flag=3
2242 ioerror=nf90_enotvar
2243 END IF
2244#ifdef GRID_EXTRACT
2245 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2246 scale=1.0_dp
2247 IF (find_string(var_name, n_var, trim(vname(1,idygru)), &
2248 & varid)) THEN
2249 status=nf_fwrite2d(ng, model, ncid, idygru, &
2250 & varid, 0, u2dvar, &
2251 & lbi, ubi, lbj, ubj, scale, &
2252# ifdef MASKING
2253 & extract(ng) % umask, &
2254# endif
2255 & extract(ng) % yu, &
2256 & setfillval = .false., &
2257 & extractfield = -1)
2258 IF (founderror(status, nf90_noerr, &
2259 & __line__, myfile)) THEN
2260 IF (master) WRITE (stdout,10) trim(vname(1,idygru)), &
2261 & trim(ncname)
2262 exit_flag=3
2263 ioerror=status
2264 END IF
2265 ELSE
2266 IF (master) WRITE (stdout,20) trim(vname(1,idygru)), &
2267 & trim(ncname)
2268 exit_flag=3
2269 ioerror=nf90_enotvar
2270 END IF
2271#endif
2272 END IF
2273 END IF
2274 END IF
2275
2276
2277
2278 IF (spherical) THEN
2279 IF (exit_flag.eq.noerror) THEN
2280 IF ((ncid.ne.sta(ng)%ncid).and. &
2281 & (ncid.ne.xtr(ng)%ncid)) THEN
2282 scale=1.0_dp
2283 IF (find_string(var_name, n_var, trim(vname(1,idlonv)), &
2284 & varid)) THEN
2285 status=nf_fwrite2d(ng, model, ncid, idlonv, &
2286 & varid, 0, v2dvar, &
2287 & lbi, ubi, lbj, ubj, scale, &
2288#ifdef MASKING
2289 & grid(ng) % vmask, &
2290#endif
2291 & grid(ng) % lonv, &
2292 & setfillval = .false.)
2293 IF (founderror(status, nf90_noerr, &
2294 & __line__, myfile)) THEN
2295 IF (master) WRITE (stdout,10) trim(vname(1,idlonv)), &
2296 & trim(ncname)
2297 exit_flag=3
2298 ioerror=status
2299 END IF
2300 ELSE
2301 IF (master) WRITE (stdout,10) trim(vname(1,idlonv)), &
2302 & trim(ncname)
2303 exit_flag=3
2304 ioerror=nf90_enotvar
2305 END IF
2306#ifdef GRID_EXTRACT
2307 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2308 scale=1.0_dp
2309 IF (find_string(var_name, n_var, trim(vname(1,idlonv)), &
2310 & varid)) THEN
2311 status=nf_fwrite2d(ng, model, ncid, idlonv, &
2312 & varid, 0, v2dvar, &
2313 & lbi, ubi, lbj, ubj, scale, &
2314# ifdef MASKING
2315 & extract(ng) % vmask, &
2316# endif
2317 & extract(ng) % lonv, &
2318 & setfillval = .false., &
2319 & extractfield = -1)
2320 IF (founderror(status, nf90_noerr, &
2321 & __line__, myfile)) THEN
2322 IF (master) WRITE (stdout,10) trim(vname(1,idlonv)), &
2323 & trim(ncname)
2324 exit_flag=3
2325 ioerror=status
2326 END IF
2327 ELSE
2328 IF (master) WRITE (stdout,10) trim(vname(1,idlonv)), &
2329 & trim(ncname)
2330 exit_flag=3
2331 ioerror=nf90_enotvar
2332 END IF
2333#endif
2334 END IF
2335 END IF
2336
2337 IF (exit_flag.eq.noerror) THEN
2338 IF ((ncid.ne.sta(ng)%ncid).and. &
2339 & (ncid.ne.xtr(ng)%ncid)) THEN
2340 scale=1.0_dp
2341 IF (find_string(var_name, n_var, trim(vname(1,idlatv)), &
2342 & varid)) THEN
2343 status=nf_fwrite2d(ng, model, ncid, idlatv, &
2344 & varid, 0, v2dvar, &
2345 & lbi, ubi, lbj, ubj, scale, &
2346#ifdef MASKING
2347 & grid(ng) % vmask, &
2348#endif
2349 & grid(ng) % latv, &
2350 & setfillval = .false.)
2351 IF (founderror(status, nf90_noerr, &
2352 & __line__, myfile)) THEN
2353 IF (master) WRITE (stdout,10) trim(vname(1,idlatv)), &
2354 & trim(ncname)
2355 exit_flag=3
2356 ioerror=status
2357 END IF
2358 ELSE
2359 IF (master) WRITE (stdout,20) trim(vname(1,idlatv)), &
2360 & trim(ncname)
2361 exit_flag=3
2362 ioerror=nf90_enotvar
2363 END IF
2364#ifdef GRID_EXTRACT
2365 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2366 scale=1.0_dp
2367 IF (find_string(var_name, n_var, trim(vname(1,idlatv)), &
2368 & varid)) THEN
2369 status=nf_fwrite2d(ng, model, ncid, idlatv, &
2370 & varid, 0, v2dvar, &
2371 & lbi, ubi, lbj, ubj, scale, &
2372# ifdef MASKING
2373 & extract(ng) % vmask, &
2374# endif
2375 & extract(ng) % latv, &
2376 & setfillval = .false., &
2377 & extractfield = -1)
2378 IF (founderror(status, nf90_noerr, &
2379 & __line__, myfile)) THEN
2380 IF (master) WRITE (stdout,10) trim(vname(1,idlatv)), &
2381 & trim(ncname)
2382 exit_flag=3
2383 ioerror=status
2384 END IF
2385 ELSE
2386 IF (master) WRITE (stdout,20) trim(vname(1,idlatv)), &
2387 & trim(ncname)
2388 exit_flag=3
2389 ioerror=nf90_enotvar
2390 END IF
2391#endif
2392 END IF
2393 END IF
2394 END IF
2395
2396 IF (.not.spherical) THEN
2397 IF (exit_flag.eq.noerror) THEN
2398 IF ((ncid.ne.sta(ng)%ncid).and. &
2399 & (ncid.ne.xtr(ng)%ncid)) THEN
2400 scale=1.0_dp
2401 IF (find_string(var_name, n_var, trim(vname(1,idxgrv)), &
2402 & varid)) THEN
2403 status=nf_fwrite2d(ng, model, ncid, idxgrv, &
2404 & varid, 0, v2dvar, &
2405 & lbi, ubi, lbj, ubj, scale, &
2406#ifdef MASKING
2407 & grid(ng) % vmask, &
2408#endif
2409 & grid(ng) % xv, &
2410 & setfillval = .false.)
2411 IF (founderror(status, nf90_noerr, &
2412 & __line__, myfile)) THEN
2413 IF (master) WRITE (stdout,10) trim(vname(1,idxgrv)), &
2414 & trim(ncname)
2415 exit_flag=3
2416 ioerror=status
2417 END IF
2418 ELSE
2419 IF (master) WRITE (stdout,10) trim(vname(1,idxgrv)), &
2420 & trim(ncname)
2421 exit_flag=3
2422 ioerror=nf90_enotvar
2423 END IF
2424#ifdef GRID_EXTRACT
2425 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2426 scale=1.0_dp
2427 IF (find_string(var_name, n_var, trim(vname(1,idxgrv)), &
2428 & varid)) THEN
2429 status=nf_fwrite2d(ng, model, ncid, idxgrv, &
2430 & varid, 0, v2dvar, &
2431 & lbi, ubi, lbj, ubj, scale, &
2432# ifdef MASKING
2433 & extract(ng) % vmask, &
2434# endif
2435 & extract(ng) % xv, &
2436 & setfillval = .false., &
2437 & extractfield = -1)
2438 IF (founderror(status, nf90_noerr, &
2439 & __line__, myfile)) THEN
2440 IF (master) WRITE (stdout,10) trim(vname(1,idxgrv)), &
2441 & trim(ncname)
2442 exit_flag=3
2443 ioerror=status
2444 END IF
2445 ELSE
2446 IF (master) WRITE (stdout,10) trim(vname(1,idxgrv)), &
2447 & trim(ncname)
2448 exit_flag=3
2449 ioerror=nf90_enotvar
2450 END IF
2451#endif
2452 END IF
2453 END IF
2454
2455 IF (exit_flag.eq.noerror) THEN
2456 IF ((ncid.ne.sta(ng)%ncid).and. &
2457 & (ncid.ne.xtr(ng)%ncid)) THEN
2458 scale=1.0_dp
2459 IF (find_string(var_name, n_var, trim(vname(1,idygrv)), &
2460 & varid)) THEN
2461 status=nf_fwrite2d(ng, model, ncid, idygrv, &
2462 & varid, 0, v2dvar, &
2463 & lbi, ubi, lbj, ubj, scale, &
2464#ifdef MASKING
2465 & grid(ng) % vmask, &
2466#endif
2467 & grid(ng) % yv, &
2468 & setfillval = .false.)
2469 IF (founderror(status, nf90_noerr, &
2470 & __line__, myfile)) THEN
2471 IF (master) WRITE (stdout,10) trim(vname(1,idygrv)), &
2472 & trim(ncname)
2473 exit_flag=3
2474 ioerror=status
2475 END IF
2476 ELSE
2477 IF (master) WRITE (stdout,20) trim(vname(1,idygrv)), &
2478 & trim(ncname)
2479 exit_flag=3
2480 ioerror=nf90_enotvar
2481 END IF
2482#ifdef GRID_EXTRACT
2483 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2484 scale=1.0_dp
2485 IF (find_string(var_name, n_var, trim(vname(1,idygrv)), &
2486 & varid)) THEN
2487 status=nf_fwrite2d(ng, model, ncid, idygrv, &
2488 & varid, 0, v2dvar, &
2489 & lbi, ubi, lbj, ubj, scale, &
2490# ifdef MASKING
2491 & extract(ng) % vmask, &
2492# endif
2493 & extract(ng) % yv, &
2494 & setfillval = .false., &
2495 & extractfield = -1)
2496 IF (founderror(status, nf90_noerr, &
2497 & __line__, myfile)) THEN
2498 IF (master) WRITE (stdout,10) trim(vname(1,idygrv)), &
2499 & trim(ncname)
2500 exit_flag=3
2501 ioerror=status
2502 END IF
2503 ELSE
2504 IF (master) WRITE (stdout,20) trim(vname(1,idygrv)), &
2505 & trim(ncname)
2506 exit_flag=3
2507 ioerror=nf90_enotvar
2508 END IF
2509#endif
2510 END IF
2511 END IF
2512 END IF
2513
2514
2515
2516 IF (spherical) THEN
2517 IF (exit_flag.eq.noerror) THEN
2518 IF ((ncid.ne.sta(ng)%ncid).and. &
2519 & (ncid.ne.xtr(ng)%ncid)) THEN
2520 scale=1.0_dp
2521 IF (find_string(var_name, n_var, trim(vname(1,idlonp)), &
2522 & varid)) THEN
2523 status=nf_fwrite2d(ng, model, ncid, idlonp, &
2524 & varid, 0, p2dvar, &
2525 & lbi, ubi, lbj, ubj, scale, &
2526#ifdef MASKING
2527 & grid(ng) % pmask, &
2528#endif
2529 & grid(ng) % lonp, &
2530 & setfillval = .false.)
2531 IF (founderror(status, nf90_noerr, &
2532 & __line__, myfile)) THEN
2533 IF (master) WRITE (stdout,10) trim(vname(1,idlonp)), &
2534 & trim(ncname)
2535 exit_flag=3
2536 ioerror=status
2537 END IF
2538 ELSE
2539 IF (master) WRITE (stdout,20) trim(vname(1,idlonp)), &
2540 & trim(ncname)
2541 exit_flag=3
2542 ioerror=nf90_enotvar
2543 END IF
2544#ifdef GRID_EXTRACT
2545 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2546 scale=1.0_dp
2547 IF (find_string(var_name, n_var, trim(vname(1,idlonp)), &
2548 & varid)) THEN
2549 status=nf_fwrite2d(ng, model, ncid, idlonp, &
2550 & varid, 0, p2dvar, &
2551 & lbi, ubi, lbj, ubj, scale, &
2552# ifdef MASKING
2553 & extract(ng) % pmask, &
2554# endif
2555 & extract(ng) % lonp, &
2556 & setfillval = .false., &
2557 & extractfield = -1)
2558 IF (founderror(status, nf90_noerr, &
2559 & __line__, myfile)) THEN
2560 IF (master) WRITE (stdout,10) trim(vname(1,idlonp)), &
2561 & trim(ncname)
2562 exit_flag=3
2563 ioerror=status
2564 END IF
2565 ELSE
2566 IF (master) WRITE (stdout,20) trim(vname(1,idlonp)), &
2567 & trim(ncname)
2568 exit_flag=3
2569 ioerror=nf90_enotvar
2570 END IF
2571#endif
2572 END IF
2573 END IF
2574
2575 IF (exit_flag.eq.noerror) THEN
2576 IF ((ncid.ne.sta(ng)%ncid).and. &
2577 & (ncid.ne.xtr(ng)%ncid)) THEN
2578 scale=1.0_dp
2579 IF (find_string(var_name, n_var, trim(vname(1,idlatp)), &
2580 & varid)) THEN
2581 status=nf_fwrite2d(ng, model, ncid, idlatp, &
2582 & varid, 0, p2dvar, &
2583 & lbi, ubi, lbj, ubj, scale, &
2584#ifdef MASKING
2585 & grid(ng) % pmask, &
2586#endif
2587 & grid(ng) % latp, &
2588 & setfillval = .false.)
2589 IF (founderror(status, nf90_noerr, &
2590 & __line__, myfile)) THEN
2591 IF (master) WRITE (stdout,10) trim(vname(1,idlatp)), &
2592 & trim(ncname)
2593 exit_flag=3
2594 ioerror=status
2595 END IF
2596 ELSE
2597 IF (master) WRITE (stdout,20) trim(vname(1,idlatp)), &
2598 & trim(ncname)
2599 exit_flag=3
2600 ioerror=nf90_enotvar
2601 END IF
2602#ifdef GRID_EXTRACT
2603 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2604 scale=1.0_dp
2605 IF (find_string(var_name, n_var, trim(vname(1,idlatp)), &
2606 & varid)) THEN
2607 status=nf_fwrite2d(ng, model, ncid, idlatp, &
2608 & varid, 0, p2dvar, &
2609 & lbi, ubi, lbj, ubj, scale, &
2610# ifdef MASKING
2611 & extract(ng) % pmask, &
2612# endif
2613 & extract(ng) % latp, &
2614 & setfillval = .false., &
2615 & extractfield = -1)
2616 IF (founderror(status, nf90_noerr, &
2617 & __line__, myfile)) THEN
2618 IF (master) WRITE (stdout,10) trim(vname(1,idlatp)), &
2619 & trim(ncname)
2620 exit_flag=3
2621 ioerror=status
2622 END IF
2623 ELSE
2624 IF (master) WRITE (stdout,20) trim(vname(1,idlatp)), &
2625 & trim(ncname)
2626 exit_flag=3
2627 ioerror=nf90_enotvar
2628 END IF
2629#endif
2630 END IF
2631 END IF
2632 END IF
2633
2634 IF (.not.spherical) THEN
2635 IF (exit_flag.eq.noerror) THEN
2636 IF ((ncid.ne.sta(ng)%ncid).and. &
2637 & (ncid.ne.xtr(ng)%ncid)) THEN
2638 scale=1.0_dp
2639 IF (find_string(var_name, n_var, trim(vname(1,idxgrp)), &
2640 & varid)) THEN
2641 status=nf_fwrite2d(ng, model, ncid, idxgrp, &
2642 & varid, 0, p2dvar, &
2643 & lbi, ubi, lbj, ubj, scale, &
2644#ifdef MASKING
2645 & grid(ng) % pmask, &
2646#endif
2647 & grid(ng) % xp, &
2648 & setfillval = .false.)
2649 IF (founderror(status, nf90_noerr, &
2650 & __line__, myfile)) THEN
2651 IF (master) WRITE (stdout,10) trim(vname(1,idxgrp)), &
2652 & trim(ncname)
2653 exit_flag=3
2654 ioerror=status
2655 END IF
2656 ELSE
2657 IF (master) WRITE (stdout,20) trim(vname(1,idxgrp)), &
2658 & trim(ncname)
2659 exit_flag=3
2660 ioerror=nf90_enotvar
2661 END IF
2662#ifdef GRID_EXTRACT
2663 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2664 scale=1.0_dp
2665 IF (find_string(var_name, n_var, trim(vname(1,idxgrp)), &
2666 & varid)) THEN
2667 status=nf_fwrite2d(ng, model, ncid, idxgrp, &
2668 & varid, 0, p2dvar, &
2669 & lbi, ubi, lbj, ubj, scale, &
2670# ifdef MASKING
2671 & extract(ng) % pmask, &
2672# endif
2673 & extract(ng) % xp, &
2674 & setfillval = .false., &
2675 & extractfield = -1)
2676 IF (founderror(status, nf90_noerr, &
2677 & __line__, myfile)) THEN
2678 IF (master) WRITE (stdout,10) trim(vname(1,idxgrp)), &
2679 & trim(ncname)
2680 exit_flag=3
2681 ioerror=status
2682 END IF
2683 ELSE
2684 IF (master) WRITE (stdout,20) trim(vname(1,idxgrp)), &
2685 & trim(ncname)
2686 exit_flag=3
2687 ioerror=nf90_enotvar
2688 END IF
2689#endif
2690 END IF
2691 END IF
2692
2693 IF (exit_flag.eq.noerror) THEN
2694 IF ((ncid.ne.sta(ng)%ncid).and. &
2695 & (ncid.ne.xtr(ng)%ncid)) THEN
2696 scale=1.0_dp
2697 IF (find_string(var_name, n_var, trim(vname(1,idygrp)), &
2698 & varid)) THEN
2699 status=nf_fwrite2d(ng, model, ncid, idygrp, &
2700 & varid, 0, p2dvar, &
2701 & lbi, ubi, lbj, ubj, scale, &
2702#ifdef MASKING
2703 & grid(ng) % pmask, &
2704#endif
2705 & grid(ng) % yp, &
2706 & setfillval = .false.)
2707 IF (founderror(status, nf90_noerr, &
2708 & __line__, myfile)) THEN
2709 IF (master) WRITE (stdout,10) trim(vname(1,idygrp)), &
2710 & trim(ncname)
2711 exit_flag=3
2712 ioerror=status
2713 END IF
2714 ELSE
2715 IF (master) WRITE (stdout,20) trim(vname(1,idygrp)), &
2716 & trim(ncname)
2717 exit_flag=3
2718 ioerror=nf90_enotvar
2719 END IF
2720#ifdef GRID_EXTRACT
2721 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2722 scale=1.0_dp
2723 IF (find_string(var_name, n_var, trim(vname(1,idygrp)), &
2724 & varid)) THEN
2725 status=nf_fwrite2d(ng, model, ncid, idygrp, &
2726 & varid, 0, p2dvar, &
2727 & lbi, ubi, lbj, ubj, scale, &
2728# ifdef MASKING
2729 & extract(ng) % pmask, &
2730# endif
2731 & extract(ng) % yp, &
2732 & setfillval = .false., &
2733 & extractfield = -1)
2734 IF (founderror(status, nf90_noerr, &
2735 & __line__, myfile)) THEN
2736 IF (master) WRITE (stdout,10) trim(vname(1,idygrp)), &
2737 & trim(ncname)
2738 exit_flag=3
2739 ioerror=status
2740 END IF
2741 ELSE
2742 IF (master) WRITE (stdout,20) trim(vname(1,idygrp)), &
2743 & trim(ncname)
2744 exit_flag=3
2745 ioerror=nf90_enotvar
2746 END IF
2747#endif
2748 END IF
2749 END IF
2750 END IF
2751
2752#ifdef CURVGRID
2753
2754
2755
2756 IF (exit_flag.eq.noerror) THEN
2757 scale=1.0_dp
2758 IF ((ncid.ne.sta(ng)%ncid).and. &
2759 & (ncid.ne.xtr(ng)%ncid)) THEN
2760 IF (find_string(var_name, n_var, trim(vname(1,idangr)), &
2761 & varid)) THEN
2762 status=nf_fwrite2d(ng, model, ncid, idangr, &
2763 & varid, 0, r2dvar, &
2764 & lbi, ubi, lbj, ubj, scale, &
2765# ifdef MASKING
2766 & grid(ng) % rmask, &
2767# endif
2768 & grid(ng) % angler, &
2769 & setfillval = .false.)
2770 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2771 IF (master) WRITE (stdout,10) trim(vname(1,idangr)), &
2772 & trim(ncname)
2773 exit_flag=3
2774 ioerror=status
2775 END IF
2776 ELSE
2777 IF (master) WRITE (stdout,20) trim(vname(1,idangr)), &
2778 & trim(ncname)
2779 exit_flag=3
2780 ioerror=nf90_enotvar
2781 END IF
2782# ifdef GRID_EXTRACT
2783 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2784 IF (find_string(var_name, n_var, trim(vname(1,idangr)), &
2785 & varid)) THEN
2786 status=nf_fwrite2d(ng, model, ncid, idangr, &
2787 & varid, 0, r2dvar, &
2788 & lbi, ubi, lbj, ubj, scale, &
2789# ifdef MASKING
2790 & extract(ng) % rmask, &
2791# endif
2792 & extract(ng) % angler, &
2793 & setfillval = .false., &
2794 & extractfield = -1)
2795 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2796 IF (master) WRITE (stdout,10) trim(vname(1,idangr)), &
2797 & trim(ncname)
2798 exit_flag=3
2799 ioerror=status
2800 END IF
2801 ELSE
2802 IF (master) WRITE (stdout,20) trim(vname(1,idangr)), &
2803 & trim(ncname)
2804 exit_flag=3
2805 ioerror=nf90_enotvar
2806 END IF
2807# endif
2808# ifdef STATIONS
2809 ELSE IF (ncid.eq.sta(ng)%ncid) THEN
2810 CALL extract_sta2d (ng, model, cgrid, ifield, r2dvar, &
2811 & lbi, ubi, lbj, ubj, &
2812 & scale, grid(ng)%angler, &
2813 & nstation(ng), scalars(ng)%SposX, &
2814 & scalars(ng)%SposY, wrk)
2815 CALL netcdf_put_fvar (ng, model, ncname, vname(1,idangr), &
2816 & wrk, (/1/), (/nstation(ng)/), &
2817 & ncid = ncid)
2818 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2819# endif
2820 END IF
2821 END IF
2822#endif
2823
2824#ifdef MASKING
2825
2826
2827
2828 IF (exit_flag.eq.noerror) THEN
2829 IF ((ncid.ne.sta(ng)%ncid).and. &
2830 & (ncid.ne.xtr(ng)%ncid)) THEN
2831 scale=1.0_dp
2832 IF (find_string(var_name, n_var, trim(vname(1,idmskr)), &
2833 & varid)) THEN
2834 status=nf_fwrite2d(ng, model, ncid, idmskr, &
2835 & varid, 0, r2dvar, &
2836 & lbi, ubi, lbj, ubj, scale, &
2837 & grid(ng) % rmask, &
2838 & grid(ng) % rmask, &
2839 & setfillval = .false.)
2840 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2841 IF (master) WRITE (stdout,10) trim(vname(1,idmskr)), &
2842 & trim(ncname)
2843 exit_flag=3
2844 ioerror=status
2845 END IF
2846 ELSE
2847 IF (master) WRITE (stdout,20) trim(vname(1,idmskr)), &
2848 & trim(ncname)
2849 exit_flag=3
2850 ioerror=nf90_enotvar
2851 END IF
2852# ifdef GRID_EXTRACT
2853 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2854 scale=1.0_dp
2855 IF (find_string(var_name, n_var, trim(vname(1,idmskr)), &
2856 & varid)) THEN
2857 status=nf_fwrite2d(ng, model, ncid, idmskr, &
2858 & varid, 0, r2dvar, &
2859 & lbi, ubi, lbj, ubj, scale, &
2860 & extract(ng) % rmask, &
2861 & extract(ng) % rmask, &
2862 & setfillval = .false., &
2863 & extractfield = -1)
2864 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2865 IF (master) WRITE (stdout,10) trim(vname(1,idmskr)), &
2866 & trim(ncname)
2867 exit_flag=3
2868 ioerror=status
2869 END IF
2870 ELSE
2871 IF (master) WRITE (stdout,20) trim(vname(1,idmskr)), &
2872 & trim(ncname)
2873 exit_flag=3
2874 ioerror=nf90_enotvar
2875 END IF
2876# endif
2877 END IF
2878 END IF
2879
2880 IF (exit_flag.eq.noerror) THEN
2881 IF ((ncid.ne.sta(ng)%ncid).and. &
2882 & (ncid.ne.xtr(ng)%ncid)) THEN
2883 scale=1.0_dp
2884 IF (find_string(var_name, n_var, trim(vname(1,idmsku)), &
2885 & varid)) THEN
2886 status=nf_fwrite2d(ng, model, ncid, idmsku, &
2887 & varid, 0, u2dvar, &
2888 & lbi, ubi, lbj, ubj, scale, &
2889 & grid(ng) % umask, &
2890 & grid(ng) % umask, &
2891 & setfillval = .false.)
2892 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2893 IF (master) WRITE (stdout,10) trim(vname(1,idmsku)), &
2894 & trim(ncname)
2895 exit_flag=3
2896 ioerror=status
2897 END IF
2898 ELSE
2899 IF (master) WRITE (stdout,20) trim(vname(1,idmsku)), &
2900 & trim(ncname)
2901 exit_flag=3
2902 ioerror=nf90_enotvar
2903 END IF
2904# ifdef GRID_EXTRACT
2905 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2906 scale=1.0_dp
2907 IF (find_string(var_name, n_var, trim(vname(1,idmsku)), &
2908 & varid)) THEN
2909 status=nf_fwrite2d(ng, model, ncid, idmsku, &
2910 & varid, 0, u2dvar, &
2911 & lbi, ubi, lbj, ubj, scale, &
2912 & extract(ng) % umask, &
2913 & extract(ng) % umask, &
2914 & setfillval = .false., &
2915 & extractfield = -1)
2916 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2917 IF (master) WRITE (stdout,10) trim(vname(1,idmsku)), &
2918 & trim(ncname)
2919 exit_flag=3
2920 ioerror=status
2921 END IF
2922 ELSE
2923 IF (master) WRITE (stdout,20) trim(vname(1,idmsku)), &
2924 & trim(ncname)
2925 exit_flag=3
2926 ioerror=nf90_enotvar
2927 END IF
2928# endif
2929 END IF
2930 END IF
2931
2932 IF (exit_flag.eq.noerror) THEN
2933 IF ((ncid.ne.sta(ng)%ncid).and. &
2934 & (ncid.ne.xtr(ng)%ncid)) THEN
2935 scale=1.0_dp
2936 IF (find_string(var_name, n_var, trim(vname(1,idmskv)), &
2937 & varid)) THEN
2938 status=nf_fwrite2d(ng, model, ncid, idmskv, &
2939 & varid, 0, v2dvar, &
2940 & lbi, ubi, lbj, ubj, scale, &
2941 & grid(ng) % vmask, &
2942 & grid(ng) % vmask, &
2943 & setfillval = .false.)
2944 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2945 IF (master) WRITE (stdout,10) trim(vname(1,idmskv)), &
2946 & trim(ncname)
2947 exit_flag=3
2948 ioerror=status
2949 END IF
2950 ELSE
2951 IF (master) WRITE (stdout,20) trim(vname(1,idmskv)), &
2952 & trim(ncname)
2953 exit_flag=3
2954 ioerror=nf90_enotvar
2955 END IF
2956# ifdef GRID_EXTRACT
2957 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
2958 scale=1.0_dp
2959 IF (find_string(var_name, n_var, trim(vname(1,idmskv)), &
2960 & varid)) THEN
2961 status=nf_fwrite2d(ng, model, ncid, idmskv, &
2962 & varid, 0, v2dvar, &
2963 & lbi, ubi, lbj, ubj, scale, &
2964 & extract(ng) % vmask, &
2965 & extract(ng) % vmask, &
2966 & setfillval = .false., &
2967 & extractfield = -1)
2968 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2969 IF (master) WRITE (stdout,10) trim(vname(1,idmskv)), &
2970 & trim(ncname)
2971 exit_flag=3
2972 ioerror=status
2973 END IF
2974 ELSE
2975 IF (master) WRITE (stdout,20) trim(vname(1,idmskv)), &
2976 & trim(ncname)
2977 exit_flag=3
2978 ioerror=nf90_enotvar
2979 END IF
2980# endif
2981 END IF
2982 END IF
2983
2984 IF (exit_flag.eq.noerror) THEN
2985 IF ((ncid.ne.sta(ng)%ncid).and. &
2986 & (ncid.ne.xtr(ng)%ncid)) THEN
2987 scale=1.0_dp
2988 IF (find_string(var_name, n_var, trim(vname(1,idmskp)), &
2989 & varid)) THEN
2990 status=nf_fwrite2d(ng, model, ncid, idmskp, &
2991 & varid, 0, p2dvar, &
2992 & lbi, ubi, lbj, ubj, scale, &
2993 & grid(ng) % pmask, &
2994 & grid(ng) % pmask, &
2995 & setfillval = .false.)
2996 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2997 IF (master) WRITE (stdout,10) trim(vname(1,idmskp)), &
2998 & trim(ncname)
2999 exit_flag=3
3000 ioerror=status
3001 END IF
3002 ELSE
3003 IF (master) WRITE (stdout,20) trim(vname(1,idmskp)), &
3004 & trim(ncname)
3005 exit_flag=3
3006 ioerror=nf90_enotvar
3007 END IF
3008# ifdef GRID_EXTRACT
3009 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3010 scale=1.0_dp
3011 IF (find_string(var_name, n_var, trim(vname(1,idmskp)), &
3012 & varid)) THEN
3013 status=nf_fwrite2d(ng, model, ncid, idmskp, &
3014 & varid, 0, p2dvar, &
3015 & lbi, ubi, lbj, ubj, scale, &
3016 & extract(ng) % pmask, &
3017 & extract(ng) % pmask, &
3018 & setfillval = .false., &
3019 & extractfield = -1)
3020 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3021 IF (master) WRITE (stdout,10) trim(vname(1,idmskp)), &
3022 & trim(ncname)
3023 exit_flag=3
3024 ioerror=status
3025 END IF
3026 ELSE
3027 IF (master) WRITE (stdout,20) trim(vname(1,idmskp)), &
3028 & trim(ncname)
3029 exit_flag=3
3030 ioerror=nf90_enotvar
3031 END IF
3032# endif
3033 END IF
3034 END IF
3035#endif
3036
3037#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3038 defined opt_observations || defined sensitivity_4dvar || \
3039 defined so_semi
3040
3041
3042
3043 IF (exit_flag.eq.noerror) THEN
3044 IF ((ncid.ne.sta(ng)%ncid).and. &
3045 & (ncid.ne.xtr(ng)%ncid)) THEN
3046 scale=1.0_dp
3047 IF (find_string(var_name, n_var, trim(vname(1,idscor)), &
3048 & varid)) THEN
3049 status=nf_fwrite2d(ng, model, ncid, idscor, &
3050 & varid, 0, r2dvar, &
3051 & lbi, ubi, lbj, ubj, scale, &
3052# ifdef MASKING
3053 & grid(ng) % rmask, &
3054# endif
3055 & grid(ng) % Rscope, &
3056 & setfillval = .false.)
3057 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3058 IF (master) WRITE (stdout,10) trim(vname(1,idscor)), &
3059 & trim(ncname)
3060 exit_flag=3
3061 ioerror=status
3062 END IF
3063 ELSE
3064 IF (master) WRITE (stdout,20) trim(vname(1,idscor)), &
3065 & trim(ncname)
3066 exit_flag=3
3067 ioerror=nf90_enotvar
3068 END IF
3069 END IF
3070# ifdef GRID_EXTRACT
3071 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3072 scale=1.0_dp
3073 IF (find_string(var_name, n_var, trim(vname(1,idscor)), &
3074 & varid)) THEN
3075 status=nf_fwrite2d(ng, model, ncid, idscor, &
3076 & varid, 0, r2dvar, &
3077 & lbi, ubi, lbj, ubj, scale, &
3078# ifdef MASKING
3079 & extract(ng) % rmask, &
3080# endif
3081 & extract(ng) % Rscope, &
3082 & setfillval = .false., &
3083 & extractfield = -1)
3084 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3085 IF (master) WRITE (stdout,10) trim(vname(1,idscor)), &
3086 & trim(ncname)
3087 exit_flag=3
3088 ioerror=status
3089 END IF
3090 ELSE
3091 IF (master) WRITE (stdout,20) trim(vname(1,idscor)), &
3092 & trim(ncname)
3093 exit_flag=3
3094 ioerror=nf90_enotvar
3095 END IF
3096 END IF
3097# endif
3098 END IF
3099
3100 IF (exit_flag.eq.noerror) THEN
3101 IF ((ncid.ne.sta(ng)%ncid).and. &
3102 & (ncid.ne.xtr(ng)%ncid)) THEN
3103 scale=1.0_dp
3104 IF (find_string(var_name, n_var, trim(vname(1,idscou)), &
3105 & varid)) THEN
3106 status=nf_fwrite2d(ng, model, ncid, idscou, &
3107 & varid, 0, u2dvar, &
3108 & lbi, ubi, lbj, ubj, scale, &
3109# ifdef MASKING
3110 & grid(ng) % umask, &
3111# endif
3112 & grid(ng) % Uscope, &
3113 & setfillval = .false.)
3114 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3115 IF (master) WRITE (stdout,10) trim(vname(1,idscou)), &
3116 & trim(ncname)
3117 exit_flag=3
3118 ioerror=status
3119 END IF
3120 ELSE
3121 IF (master) WRITE (stdout,20) trim(vname(1,idscou)), &
3122 & trim(ncname)
3123 exit_flag=3
3124 ioerror=nf90_enotvar
3125 END IF
3126 END IF
3127# ifdef GRID_EXTRACT
3128 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3129 scale=1.0_dp
3130 IF (find_string(var_name, n_var, trim(vname(1,idscou)), &
3131 & varid)) THEN
3132 status=nf_fwrite2d(ng, model, ncid, idscou, &
3133 & varid, 0, u2dvar, &
3134 & lbi, ubi, lbj, ubj, scale, &
3135# ifdef MASKING
3136 & extract(ng) % umask, &
3137# endif
3138 & extract(ng) % Uscope, &
3139 & setfillval = .false., &
3140 & extractfield = -1)
3141 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3142 IF (master) WRITE (stdout,10) trim(vname(1,idscou)), &
3143 & trim(ncname)
3144 exit_flag=3
3145 ioerror=status
3146 END IF
3147 ELSE
3148 IF (master) WRITE (stdout,20) trim(vname(1,idscou)), &
3149 & trim(ncname)
3150 exit_flag=3
3151 ioerror=nf90_enotvar
3152 END IF
3153 END IF
3154# endif
3155 END IF
3156
3157 IF (exit_flag.eq.noerror) THEN
3158 IF ((ncid.ne.sta(ng)%ncid).and. &
3159 & (ncid.ne.xtr(ng)%ncid)) THEN
3160 scale=1.0_dp
3161 IF (find_string(var_name, n_var, trim(vname(1,idscov)), &
3162 & varid)) THEN
3163 status=nf_fwrite2d(ng, model, ncid, idscov, &
3164 & varid, 0, v2dvar, &
3165 & lbi, ubi, lbj, ubj, scale, &
3166# ifdef MASKING
3167 & grid(ng) % vmask, &
3168# endif
3169 & grid(ng) % Vscope, &
3170 & setfillval = .false.)
3171 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3172 IF (master) WRITE (stdout,10) trim(vname(1,idscov)), &
3173 & trim(ncname)
3174 exit_flag=3
3175 ioerror=status
3176 END IF
3177 ELSE
3178 IF (master) WRITE (stdout,20) trim(vname(1,idscov)), &
3179 & trim(ncname)
3180 exit_flag=3
3181 ioerror=nf90_enotvar
3182 END IF
3183 END IF
3184# ifdef GRID_EXTRACT
3185 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3186 scale=1.0_dp
3187 IF (find_string(var_name, n_var, trim(vname(1,idscov)), &
3188 & varid)) THEN
3189 status=nf_fwrite2d(ng, model, ncid, idscov, &
3190 & varid, 0, v2dvar, &
3191 & lbi, ubi, lbj, ubj, scale, &
3192# ifdef MASKING
3193 & extract(ng) % vmask, &
3194# endif
3195 & extract(ng) % Vscope, &
3196 & setfillval = .false., &
3197 & extractfield = -1)
3198 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3199 IF (master) WRITE (stdout,10) trim(vname(1,idscov)), &
3200 & trim(ncname)
3201 exit_flag=3
3202 ioerror=status
3203 END IF
3204 ELSE
3205 IF (master) WRITE (stdout,20) trim(vname(1,idscov)), &
3206 & trim(ncname)
3207 exit_flag=3
3208 ioerror=nf90_enotvar
3209 END IF
3210 END IF
3211# endif
3212 END IF
3213#endif
3214#ifdef UV_DRAG_GRID
3215
3216
3217
3218 IF (exit_flag.eq.noerror) THEN
3219 IF ((ncid.ne.sta(ng)%ncid).and. &
3220 & (ncid.ne.xtr(ng)%ncid)) THEN
3221 scale=1.0_dp
3222# if defined UV_LOGDRAG || defined BBL_MODEL
3223 IF (find_string(var_name, n_var, trim(vname(1,idzobl)), &
3224 & varid)) THEN
3225 status=nf_fwrite2d(ng, model, ncid, idzobl, &
3226 & varid, 0, r2dvar, &
3227 & lbi, ubi, lbj, ubj, scale, &
3228# ifdef MASKING
3229 & grid(ng) % rmask, &
3230# endif
3231 & grid(ng) % ZoBot, &
3232 & setfillval = .false.)
3233 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3234 IF (master) WRITE (stdout,10) trim(vname(1,idzobl)), &
3235 & trim(ncname)
3236 exit_flag=3
3237 ioerror=status
3238 END IF
3239 ELSE
3240 IF (master) WRITE (stdout,20) trim(vname(1,idzobl)), &
3241 & trim(ncname)
3242 exit_flag=3
3243 ioerror=nf90_enotvar
3244 END IF
3245# ifdef GRID_EXTRACT
3246 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3247 scale=1.0_dp
3248 IF (find_string(var_name, n_var, trim(vname(1,idzobl)), &
3249 & varid)) THEN
3250 status=nf_fwrite2d(ng, model, ncid, idzobl, &
3251 & varid, 0, r2dvar, &
3252 & lbi, ubi, lbj, ubj, scale, &
3253# ifdef MASKING
3254 & extract(ng) % rmask, &
3255# endif
3256 & extract(ng) % ZoBot, &
3257 & setfillval = .false., &
3258 & extractfield = -1)
3259 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3260 IF (master) WRITE (stdout,10) trim(vname(1,idzobl)), &
3261 & trim(ncname)
3262 exit_flag=3
3263 ioerror=status
3264 END IF
3265 ELSE
3266 IF (master) WRITE (stdout,20) trim(vname(1,idzobl)), &
3267 & trim(ncname)
3268 exit_flag=3
3269 ioerror=nf90_enotvar
3270 END IF
3271# endif
3272# endif
3273 END IF
3274# ifdef UV_LDRAG
3275 IF ((ncid.ne.sta(ng)%ncid).and. &
3276 & (ncid.ne.xtr(ng)%ncid)) THEN
3277 IF (find_string(var_name, n_var, trim(vname(1,idragl)), &
3278 & varid)) THEN
3279 status=nf_fwrite2d(ng, model, ncid, idragl, &
3280 & varid, 0, r2dvar, &
3281 & lbi, ubi, lbj, ubj, scale, &
3282# ifdef MASKING
3283 & grid(ng) % rmask, &
3284# endif
3285 & grid(ng) % rdrag, &
3286 & setfillval = .false.)
3287 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3288 IF (master) WRITE (stdout,10) trim(vname(1,idragl)), &
3289 & trim(ncname)
3290 exit_flag=3
3291 ioerror=status
3292 END IF
3293 ELSE
3294 IF (master) WRITE (stdout,20) trim(vname(1,idragl)), &
3295 & trim(ncname)
3296 exit_flag=3
3297 ioerror=nf90_enotvar
3298 END IF
3299# ifdef GRID_EXTRACT
3300 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3301 IF (find_string(var_name, n_var, trim(vname(1,idragl)), &
3302 & varid)) THEN
3303 status=nf_fwrite2d(ng, model, ncid, idragl, &
3304 & varid, 0, r2dvar, &
3305 & lbi, ubi, lbj, ubj, scale, &
3306# ifdef MASKING
3307 & extract(ng) % rmask, &
3308# endif
3309 & extract(ng) % rdrag, &
3310 & setfillval = .false., &
3311 & extractfield = -1)
3312 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3313 IF (master) WRITE (stdout,10) trim(vname(1,idragl)), &
3314 & trim(ncname)
3315 exit_flag=3
3316 ioerror=status
3317 END IF
3318 ELSE
3319 IF (master) WRITE (stdout,20) trim(vname(1,idragl)), &
3320 & trim(ncname)
3321 exit_flag=3
3322 ioerror=nf90_enotvar
3323 END IF
3324# endif
3325 END IF
3326# endif
3327# ifdef UV_QDRAG
3328 IF ((ncid.ne.sta(ng)%ncid).and. &
3329 & (ncid.ne.xtr(ng)%ncid)) THEN
3330 IF (find_string(var_name, n_var, trim(vname(1,idragq)), &
3331 & varid)) THEN
3332 status=nf_fwrite2d(ng, model, ncid, idragq, &
3333 & varid, 0, r2dvar, &
3334 & lbi, ubi, lbj, ubj, scale, &
3335# ifdef MASKING
3336 & grid(ng) % rmask, &
3337# endif
3338 & grid(ng) % rdrag2, &
3339 & setfillval = .false.)
3340 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3341 IF (master) WRITE (stdout,10) trim(vname(1,idragq)), &
3342 & trim(ncname)
3343 exit_flag=3
3344 ioerror=status
3345 END IF
3346 ELSE
3347 IF (master) WRITE (stdout,20) trim(vname(1,idragq)), &
3348 & trim(ncname)
3349 exit_flag=3
3350 ioerror=nf90_enotvar
3351 END IF
3352# ifdef GRID_EXTRACT
3353 ELSE IF (ncid.eq.xtr(ng)%ncid) THEN
3354 IF (find_string(var_name, n_var, trim(vname(1,idragq)), &
3355 & varid)) THEN
3356 status=nf_fwrite2d(ng, model, ncid, idragq, &
3357 & varid, 0, r2dvar, &
3358 & lbi, ubi, lbj, ubj, scale, &
3359# ifdef MASKING
3360 & extract(ng) % rmask, &
3361# endif
3362 & extract(ng) % rdrag2, &
3363 & setfillval = .false., &
3364 & extractfield = -1)
3365 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3366 IF (master) WRITE (stdout,10) trim(vname(1,idragq)), &
3367 & trim(ncname)
3368 exit_flag=3
3369 ioerror=status
3370 END IF
3371 ELSE
3372 IF (master) WRITE (stdout,20) trim(vname(1,idragq)), &
3373 & trim(ncname)
3374 exit_flag=3
3375 ioerror=nf90_enotvar
3376 END IF
3377# endif
3378 END IF
3379# endif
3380 END IF
3381#endif
3382 END IF grid_vars
3383
3384
3385
3386
3387
3388
3389 CALL netcdf_sync (ng, model, ncname, ncid)
3390 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3391
3392#if !defined PARALLEL_IO && defined DISTRIBUTE
3393
3394
3395
3396 ibuffer(1)=exit_flag
3397 ibuffer(2)=ioerror
3399 exit_flag=ibuffer(1)
3400 ioerror=ibuffer(2)
3401#endif
3402
3403 10 FORMAT (/,' WRT_INFO_NF90 - error while writing variable: ',a,/, &
3404 & 17x,'into file: ',a)
3405 20 FORMAT (/,' WRT_INFO_NF90 - error while inquiring ID for', &
3406 & ' variable: ',a,/,17x,'in file: ',a)
3407 30 FORMAT (/,' WRT_INFO_NF90 - unable to synchronize to disk file:', &
3408 & /,17x,a)
3409
3410 RETURN