ROMS
Loading...
Searching...
No Matches
def_station_mod Module Reference

Functions/Subroutines

subroutine, public def_station (ng, ldef)
 
subroutine, private def_station_nf90 (ng, model, ldef)
 
subroutine, private def_station_pio (ng, model, ldef)
 

Function/Subroutine Documentation

◆ def_station()

subroutine, public def_station_mod::def_station ( integer, intent(in) ng,
logical, intent(in) ldef )

Definition at line 74 of file def_station.F.

75!***********************************************************************
76!
77! Imported variable declarations.
78!
79 logical, intent(in) :: ldef
80!
81 integer, intent(in) :: ng
82!
83! Local variable declarations.
84!
85 character (len=*), parameter :: MyFile = &
86 & __FILE__
87!
88!-----------------------------------------------------------------------
89! Create a new history file according to IO type.
90!-----------------------------------------------------------------------
91!
92 SELECT CASE (sta(ng)%IOtype)
93 CASE (io_nf90)
94 CALL def_station_nf90 (ng, inlm, ldef)
95
96# if defined PIO_LIB && defined DISTRIBUTE
97 CASE (io_pio)
98 CALL def_station_pio (ng, inlm, ldef)
99# endif
100 CASE DEFAULT
101 IF (master) WRITE (stdout,10) sta(ng)%IOtype
102 exit_flag=3
103 END SELECT
104 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
105!
106 10 FORMAT (' DEF_STATION - Illegal output file type, io_type = ',i0, &
107 & /,15x,'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
108!
109 RETURN

References def_station_nf90(), def_station_pio(), mod_scalars::exit_flag, strings_mod::founderror(), mod_param::inlm, mod_ncparam::io_nf90, mod_ncparam::io_pio, mod_parallel::master, mod_scalars::noerror, mod_iounits::sta, and mod_iounits::stdout.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ def_station_nf90()

subroutine, private def_station_mod::def_station_nf90 ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 113 of file def_station.F.

114!***********************************************************************
115!
116 USE mod_netcdf
117!
118! Imported variable declarations.
119!
120 integer, intent(in) :: ng, model
121
122 logical, intent(in) :: ldef
123!
124! Local variable declarations.
125!
126 integer, parameter :: Natt = 25
127!
128 logical :: got_var(NV)
129!
130 integer :: i, j, recdim, stadim
131 integer :: status
132
133 integer :: DimIDs(nDimID), pgrd(2)
134
135# ifdef SOLVE3D
136 integer :: itrc
137
138 integer :: bgrd(3), rgrd(3), wgrd(3)
139# endif
140!
141 real(r8) :: Aval(6)
142!
143 character (len=256) :: ncname
144 character (len=MaxLen) :: Vinfo(Natt)
145!
146 character (len=*), parameter :: MyFile = &
147 & __FILE__//", def_station_nf90"
148!
149 sourcefile=myfile
150!
151!-----------------------------------------------------------------------
152! Set and report file name.
153!-----------------------------------------------------------------------
154!
155 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
156 ncname=sta(ng)%name
157!
158 IF (master) THEN
159 IF (ldef) THEN
160 WRITE (stdout,10) ng, trim(ncname)
161 ELSE
162 WRITE (stdout,20) ng, trim(ncname)
163 END IF
164 END IF
165!
166!=======================================================================
167! Create a new station data file.
168!=======================================================================
169!
170 define : IF (ldef) THEN
171 CALL netcdf_create (ng, model, trim(ncname), sta(ng)%ncid)
172 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
173 IF (master) WRITE (stdout,30) trim(ncname)
174 RETURN
175 END IF
176!
177!-----------------------------------------------------------------------
178! Define file dimensions.
179!-----------------------------------------------------------------------
180!
181 dimids=0
182!
183# ifdef SOLVE3D
184 status=def_dim(ng, model, sta(ng)%ncid, ncname, 's_rho', &
185 & n(ng), dimids( 9))
186 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
187
188 status=def_dim(ng, model, sta(ng)%ncid, ncname, 's_w', &
189 & n(ng)+1, dimids(10))
190 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
191
192 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'tracer', &
193 & nt(ng), dimids(11))
194 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
195
196# ifdef SEDIMENT
197 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'NST', &
198 & nst, dimids(32))
199 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
200
201 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nbed', &
202 & nbed, dimids(16))
203 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
204# endif
205
206# ifdef ECOSIM
207 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nbands', &
208 & nbands, dimids(33))
209 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
210
211 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nphy', &
212 & nphy, dimids(25))
213 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
214
215 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nbac', &
216 & nbac, dimids(26))
217 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
218
219 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Ndom', &
220 & ndom, dimids(27))
221 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
222
223 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nfec', &
224 & nfec, dimids(28))
225 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
226# endif
227# endif
228
229 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'station' , &
230 & nstation(ng), dimids(13))
231 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
232
233 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'boundary', &
234 & 4, dimids(14))
235 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
236
237# ifdef FOUR_DVAR
238 status=def_dim(ng, model, sta(ng)%ncid, ncname, 'Nstate', &
239 & nstatevar(ng), dimids(29))
240 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
241# endif
242
243 status=def_dim(ng, model, sta(ng)%ncid, ncname, &
244 & trim(adjustl(vname(5,idtime))), &
245 & nf90_unlimited, dimids(12))
246 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
247
248 recdim=dimids(12)
249 stadim=dimids(13)
250!
251! Define dimension vector for point variables.
252!
253 pgrd(1)=dimids(13)
254 pgrd(2)=dimids(12)
255# ifdef SOLVE3D
256!
257! Define dimension vector for cast variables at vertical RHO-points.
258!
259 rgrd(1)=dimids( 9)
260 rgrd(2)=dimids(13)
261 rgrd(3)=dimids(12)
262!
263! Define dimension vector for cast variables at vertical W-points.
264!
265 wgrd(1)=dimids(10)
266 wgrd(2)=dimids(13)
267 wgrd(3)=dimids(12)
268!
269! Define dimension vector for sediment bed layer type variables.
270!
271 bgrd(1)=dimids(16)
272 bgrd(2)=dimids(13)
273 bgrd(3)=dimids(12)
274# endif
275!
276! Initialize unlimited time record dimension.
277!
278 sta(ng)%Rindex=0
279!
280! Initialize local information variable arrays.
281!
282 DO i=1,natt
283 DO j=1,len(vinfo(1))
284 vinfo(i)(j:j)=' '
285 END DO
286 END DO
287 DO i=1,6
288 aval(i)=0.0_r8
289 END DO
290!
291!-----------------------------------------------------------------------
292! Define time-recordless information variables.
293!-----------------------------------------------------------------------
294!
295 CALL def_info (ng, model, sta(ng)%ncid, ncname, dimids)
296 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
297!
298!-----------------------------------------------------------------------
299! Define variables and their attributes.
300!-----------------------------------------------------------------------
301!
302! Define model time.
303!
304 vinfo( 1)=vname(1,idtime)
305 vinfo( 2)=vname(2,idtime)
306 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
307 vinfo( 4)=trim(rclock%calendar)
308 vinfo(14)=vname(4,idtime)
309 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idtime), &
310 & nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
311 & setparaccess = .true.)
312 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
313!
314! Define free-surface.
315!
316 IF (sout(idfsur,ng)) THEN
317 vinfo( 1)=vname(1,idfsur)
318 vinfo( 2)=vname(2,idfsur)
319 vinfo( 3)=vname(3,idfsur)
320 vinfo(14)=vname(4,idfsur)
321 vinfo(16)=vname(1,idtime)
322 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idfsur), &
323 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
324# ifdef WET_DRY
325 & setfillval = .false., &
326# else
327 & setfillval = .true., &
328# endif
329 & setparaccess = .true.)
330 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
331 END IF
332!
333! Define 2D momentum in the XI-direction.
334!
335 IF (sout(idubar,ng)) THEN
336 vinfo( 1)=vname(1,idubar)
337 vinfo( 2)=vname(2,idubar)
338 vinfo( 3)=vname(3,idubar)
339 vinfo(14)=vname(4,idubar)
340 vinfo(16)=vname(1,idtime)
341 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idubar), &
342 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
343 & setfillval = .true., &
344 & setparaccess = .true.)
345 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
346 END IF
347!
348! Define 2D momentum in the ETA-direction.
349!
350 IF (sout(idvbar,ng)) THEN
351 vinfo( 1)=vname(1,idvbar)
352 vinfo( 2)=vname(2,idvbar)
353 vinfo( 3)=vname(3,idvbar)
354 vinfo(14)=vname(4,idvbar)
355 vinfo(16)=vname(1,idtime)
356 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvbar), &
357 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
358 & setfillval = .true., &
359 & setparaccess = .true.)
360 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
361 END IF
362!
363! Define 2D Eastward/Northward momentum component at RHO-points.
364!
365 IF (sout(idu2de,ng)) THEN
366 vinfo( 1)=vname(1,idu2de)
367 vinfo( 2)=vname(2,idu2de)
368 vinfo( 3)=vname(3,idu2de)
369 vinfo(14)=vname(4,idu2de)
370 vinfo(16)=vname(1,idtime)
371 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idu2de), &
372 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
373 & setfillval = .true., &
374 & setparaccess = .true.)
375 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
376 END IF
377!
378 IF (sout(idv2dn,ng)) THEN
379 vinfo( 1)=vname(1,idv2dn)
380 vinfo( 2)=vname(2,idv2dn)
381 vinfo( 3)=vname(3,idv2dn)
382 vinfo(14)=vname(4,idv2dn)
383 vinfo(16)=vname(1,idtime)
384 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idv2dn), &
385 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
386 & setfillval = .true., &
387 & setparaccess = .true.)
388 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
389 END IF
390
391# ifdef SOLVE3D
392!
393! Define 3D momentum component in the XI-direction.
394!
395 IF (sout(iduvel,ng)) THEN
396 vinfo( 1)=vname(1,iduvel)
397 vinfo( 2)=vname(2,iduvel)
398 vinfo( 3)=vname(3,iduvel)
399 vinfo(14)=vname(4,iduvel)
400 vinfo(16)=vname(1,idtime)
401 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(iduvel), &
402 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
403 & setfillval = .true., &
404 & setparaccess = .true.)
405 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
406 END IF
407!
408! Define 3D momentum component in the ETA-direction.
409!
410 IF (sout(idvvel,ng)) THEN
411 vinfo( 1)=vname(1,idvvel)
412 vinfo( 2)=vname(2,idvvel)
413 vinfo( 3)=vname(3,idvvel)
414 vinfo(14)=vname(4,idvvel)
415 vinfo(16)=vname(1,idtime)
416 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvvel), &
417 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
418 & setfillval = .true., &
419 & setparaccess = .true.)
420 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
421 END IF
422!
423! Define 3D Eastward/Northward momentum component at RHO-points.
424!
425 IF (sout(idu3de,ng)) THEN
426 vinfo( 1)=vname(1,idu3de)
427 vinfo( 2)=vname(2,idu3de)
428 vinfo( 3)=vname(3,idu3de)
429 vinfo(14)=vname(4,idu3de)
430 vinfo(16)=vname(1,idtime)
431 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idu3de), &
432 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
433 & setfillval = .true., &
434 & setparaccess = .true.)
435 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
436 END IF
437!
438 IF (sout(idv3dn,ng)) THEN
439 vinfo( 1)=vname(1,idv3dn)
440 vinfo( 2)=vname(2,idv3dn)
441 vinfo( 3)=vname(3,idv3dn)
442 vinfo(14)=vname(4,idv3dn)
443 vinfo(16)=vname(1,idtime)
444 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idv3dn), &
445 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
446 & setfillval = .true., &
447 & setparaccess = .true.)
448 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
449 END IF
450!
451! Define "true" vertical velocity.
452!
453 IF (sout(idwvel,ng)) THEN
454 vinfo( 1)=vname(1,idwvel)
455 vinfo( 2)=vname(2,idwvel)
456 vinfo( 3)=vname(3,idwvel)
457 vinfo(14)=vname(4,idwvel)
458 vinfo(16)=vname(1,idtime)
459 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idwvel), &
460 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
461 & setfillval = .true., &
462 & setparaccess = .true.)
463 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
464 END IF
465!
466! Define S-coordinate vertical "omega" velocity (m3/s).
467!
468 IF (sout(idovel,ng)) THEN
469 vinfo( 1)=vname(1,idovel)
470 vinfo( 2)=vname(2,idovel)
471 vinfo( 3)='meter3 second-1'
472 vinfo(14)=vname(4,idovel)
473 vinfo(16)=vname(1,idtime)
474 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idovel), &
475 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
476 & setfillval = .true., &
477 & setparaccess = .true.)
478 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
479 END IF
480!
481! Define tracer type variables.
482!
483 DO itrc=1,nt(ng)
484 IF (sout(idtvar(itrc),ng)) THEN
485 vinfo( 1)=vname(1,idtvar(itrc))
486 vinfo( 2)=vname(2,idtvar(itrc))
487 vinfo( 3)=vname(3,idtvar(itrc))
488 vinfo(14)=vname(4,idtvar(itrc))
489 vinfo(16)=vname(1,idtime)
490# ifdef SEDIMENT
491 DO i=1,nst
492 IF (itrc.eq.idsed(i)) THEN
493 WRITE (vinfo(19),40) 1000.0_r8*sd50(i,ng)
494 END IF
495 END DO
496# endif
497 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Tid(itrc), &
498 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
499 & setfillval = .true., &
500 & setparaccess = .true.)
501 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
502 END IF
503 END DO
504!
505! Define density anomaly.
506!
507 IF (sout(iddano,ng)) THEN
508 vinfo( 1)=vname(1,iddano)
509 vinfo( 2)=vname(2,iddano)
510 vinfo( 3)=vname(3,iddano)
511 vinfo(14)=vname(4,iddano)
512 vinfo(16)=vname(1,idtime)
513 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(iddano), &
514 & nf_fout, 3, rgrd, aval, vinfo, ncname, &
515 & setfillval = .true., &
516 & setparaccess = .true.)
517 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
518 END IF
519
520# ifdef LMD_SKPP
521!
522! Define depth of surface boundary layer.
523!
524 IF (sout(idhsbl,ng)) THEN
525 vinfo( 1)=vname(1,idhsbl)
526 vinfo( 2)=vname(2,idhsbl)
527 vinfo( 3)=vname(3,idhsbl)
528 vinfo(14)=vname(4,idhsbl)
529 vinfo(16)=vname(1,idtime)
530 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idhsbl), &
531 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
532 & setfillval = .true., &
533 & setparaccess = .true.)
534 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
535 END IF
536# endif
537# ifdef LMD_BKPP
538!
539! Define depth of bottom boundary layer.
540!
541 IF (sout(idhbbl,ng)) THEN
542 vinfo( 1)=vname(1,idhbbl)
543 vinfo( 2)=vname(2,idhbbl)
544 vinfo( 3)=vname(3,idhbbl)
545 vinfo(14)=vname(4,idhbbl)
546 vinfo(16)=vname(1,idtime)
547 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idhbbl), &
548 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
549 & setfillval = .true., &
550 & setparaccess = .true.)
551 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
552 END IF
553# endif
554!
555! Define vertical viscosity coefficient.
556!
557 IF (sout(idvvis,ng)) THEN
558 vinfo( 1)=vname(1,idvvis)
559 vinfo( 2)=vname(2,idvvis)
560 vinfo( 3)=vname(3,idvvis)
561 vinfo(14)=vname(4,idvvis)
562 vinfo(16)=vname(1,idtime)
563 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvvis), &
564 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
565 & setfillval = .true., &
566 & setparaccess = .true.)
567 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
568 END IF
569!
570! Define vertical diffusion coefficient for potential temperature.
571!
572 IF (sout(idtdif,ng)) THEN
573 vinfo( 1)=vname(1,idtdif)
574 vinfo( 2)=vname(2,idtdif)
575 vinfo( 3)=vname(3,idtdif)
576 vinfo(14)=vname(4,idtdif)
577 vinfo(16)=vname(1,idtime)
578 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idtdif), &
579 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
580 & setfillval = .true., &
581 & setparaccess = .true.)
582 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
583 END IF
584
585# ifdef SALINITY
586!
587! Define vertical diffusion coefficient for salinity.
588!
589 IF (sout(idsdif,ng)) THEN
590 vinfo( 1)=vname(1,idsdif)
591 vinfo( 2)=vname(2,idsdif)
592 vinfo( 3)=vname(3,idsdif)
593 vinfo(14)=vname(4,idsdif)
594 vinfo(16)=vname(1,idtime)
595 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idsdif), &
596 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
597 & setfillval = .true., &
598 & setparaccess = .true.)
599 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
600 END IF
601# endif
602# if defined GLS_MIXING || defined MY25_MIXING
603!
604! Define turbulent kinetic energy.
605!
606 IF (sout(idmtke,ng)) THEN
607 vinfo( 1)=vname(1,idmtke)
608 vinfo( 2)=vname(2,idmtke)
609 vinfo( 3)=vname(3,idmtke)
610 vinfo(14)=vname(4,idmtke)
611 vinfo(16)=vname(1,idtime)
612 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idmtke), &
613 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
614 & setfillval = .true., &
615 & setparaccess = .true.)
616 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
617 END IF
618!
619! Define turbulent kinetic energy time length scale.
620!
621 IF (sout(idmtls,ng)) THEN
622 vinfo( 1)=vname(1,idmtls)
623 vinfo( 2)=vname(2,idmtls)
624 vinfo( 3)=vname(3,idmtls)
625 vinfo(14)=vname(4,idmtls)
626 vinfo(16)=vname(1,idtime)
627 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idmtls), &
628 & nf_fout, 3, wgrd, aval, vinfo, ncname, &
629 & setfillval = .true., &
630 & setparaccess = .true.)
631 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
632 END IF
633# endif
634# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
635!
636! Define surface air pressure.
637!
638 IF (sout(idpair,ng)) THEN
639 vinfo( 1)=vname(1,idpair)
640 vinfo( 2)=vname(2,idpair)
641 vinfo( 3)=vname(3,idpair)
642 vinfo(14)=vname(4,idpair)
643 vinfo(16)=vname(1,idtime)
644 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idpair), &
645 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
646 & setfillval = .true., &
647 & setparaccess = .true.)
648 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
649 END IF
650# endif
651# if defined BULK_FLUXES || defined ECOSIM
652!
653! Define surface winds.
654!
655 IF (sout(iduair,ng)) THEN
656 vinfo( 1)=vname(1,iduair)
657 vinfo( 2)=vname(2,iduair)
658 vinfo( 3)=vname(3,iduair)
659 vinfo(14)=vname(4,iduair)
660 vinfo(16)=vname(1,idtime)
661 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(iduair), &
662 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
663 & setfillval = .true., &
664 & setparaccess = .true.)
665 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
666 END IF
667!
668 IF (sout(idvair,ng)) THEN
669 vinfo( 1)=vname(1,idvair)
670 vinfo( 2)=vname(2,idvair)
671 vinfo( 3)=vname(3,idvair)
672 vinfo(14)=vname(4,idvair)
673 vinfo(16)=vname(1,idtime)
674 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvair), &
675 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
676 & setfillval = .true., &
677 & setparaccess = .true.)
678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
679 END IF
680!
681! Define surface Eastward/Nortward winds.
682!
683 IF (sout(iduaie,ng)) THEN
684 vinfo( 1)=vname(1,iduaie)
685 vinfo( 2)=vname(2,iduaie)
686 vinfo( 3)=vname(3,iduaie)
687 vinfo(14)=vname(4,iduaie)
688 vinfo(16)=vname(1,idtime)
689 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(iduaie), &
690 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
691 & setfillval = .true., &
692 & setparaccess = .true.)
693 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
694 END IF
695!
696 IF (sout(idvain,ng)) THEN
697 vinfo( 1)=vname(1,idvain)
698 vinfo( 2)=vname(2,idvain)
699 vinfo( 3)=vname(3,idvain)
700 vinfo(14)=vname(4,idvain)
701 vinfo(16)=vname(1,idtime)
702 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvain), &
703 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
704 & setfillval = .true., &
705 & setparaccess = .true.)
706 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
707 END IF
708# endif
709!
710! Define surface net heat flux.
711!
712 IF (sout(idtsur(itemp),ng)) THEN
713 vinfo( 1)=vname(1,idtsur(itemp))
714 vinfo( 2)=vname(2,idtsur(itemp))
715 vinfo( 3)=vname(3,idtsur(itemp))
716 vinfo(11)='upward flux, cooling'
717 vinfo(12)='downward flux, heating'
718 vinfo(14)=vname(4,idtsur(itemp))
719 vinfo(16)=vname(1,idtime)
720 status=def_var(ng, model, sta(ng)%ncid, &
721 & sta(ng)%Vid(idtsur(itemp)), nf_fout, &
722 & 2, pgrd, aval, vinfo, ncname, &
723 & setfillval = .true., &
724 & setparaccess = .true.)
725 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
726 END IF
727
728# ifdef SALINITY
729!
730! Define surface net salt flux.
731!
732 IF (sout(idtsur(isalt),ng)) THEN
733 vinfo( 1)=vname(1,idtsur(isalt))
734 vinfo( 2)=vname(2,idtsur(isalt))
735 vinfo( 3)=vname(3,idtsur(isalt))
736 vinfo(11)='upward flux, freshening (net precipitation)'
737 vinfo(12)='downward flux, salting (net evaporation)'
738 vinfo(14)=vname(4,idtsur(isalt))
739 vinfo(16)=vname(1,idtime)
740 status=def_var(ng, model, sta(ng)%ncid, &
741 & sta(ng)%Vid(idtsur(isalt)), nf_fout, &
742 & 2, pgrd, aval, vinfo, ncname, &
743 & setfillval = .true., &
744 & setparaccess = .true.)
745 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
746 END IF
747# endif
748
749# ifdef BULK_FLUXES
750!
751! Define latent heat flux.
752!
753 IF (sout(idlhea,ng)) THEN
754 vinfo( 1)=vname(1,idlhea)
755 vinfo( 2)=vname(2,idlhea)
756 vinfo( 3)=vname(3,idlhea)
757 vinfo(11)='upward flux, cooling'
758 vinfo(12)='downward flux, heating'
759 vinfo(14)=vname(4,idlhea)
760 vinfo(16)=vname(1,idtime)
761 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idlhea), &
762 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
763 & setfillval = .true., &
764 & setparaccess = .true.)
765 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
766 END IF
767!
768! Define sensible heat flux.
769!
770 IF (sout(idshea,ng)) THEN
771 vinfo( 1)=vname(1,idshea)
772 vinfo( 2)=vname(2,idshea)
773 vinfo( 3)=vname(3,idshea)
774 vinfo(11)='upward flux, cooling'
775 vinfo(12)='downward flux, heating'
776 vinfo(14)=vname(4,idshea)
777 vinfo(16)=vname(1,idtime)
778 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idshea), &
779 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
780 & setfillval = .true., &
781 & setparaccess = .true.)
782 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
783 END IF
784!
785! Define longwave radiation flux.
786!
787 IF (sout(idlrad,ng)) THEN
788 vinfo( 1)=vname(1,idlrad)
789 vinfo( 2)=vname(2,idlrad)
790 vinfo( 3)=vname(3,idlrad)
791 vinfo(11)='upward flux, cooling'
792 vinfo(12)='downward flux, heating'
793 vinfo(14)=vname(4,idlrad)
794 vinfo(16)=vname(1,idtime)
795 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idlrad), &
796 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
797 & setfillval = .true., &
798 & setparaccess = .true.)
799 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
800 END IF
801# endif
802# ifdef SHORTWAVE
803!
804! Define shortwave radiation flux.
805!
806 IF (sout(idsrad,ng)) THEN
807 vinfo( 1)=vname(1,idsrad)
808 vinfo( 2)=vname(2,idsrad)
809 vinfo( 3)=vname(3,idsrad)
810 vinfo(11)='upward flux, cooling'
811 vinfo(12)='downward flux, heating'
812 vinfo(14)=vname(4,idsrad)
813 vinfo(16)=vname(1,idtime)
814 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idsrad), &
815 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
816 & setfillval = .true., &
817 & setparaccess = .true.)
818 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
819 END IF
820# endif
821# if defined EMINUSP && defined BULK_FLUXES
822!
823! Define E-P flux (as computed by bulk_flux.F).
824!
825 IF (sout(idempf,ng)) THEN
826 vinfo( 1)=vname(1,idempf)
827 vinfo( 2)=vname(2,idempf)
828 vinfo( 3)=vname(3,idempf)
829 vinfo(11)='upward flux, freshening (net precipitation)'
830 vinfo(12)='downward flux, salting (net evaporation)'
831 vinfo(14)=vname(4,idempf)
832 vinfo(16)=vname(1,idtime)
833 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idempf), &
834 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
835 & setfillval = .true., &
836 & setparaccess = .true.)
837 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
838 END IF
839!
840! Define evaporation rate.
841!
842 IF (sout(idevap,ng)) THEN
843 vinfo( 1)=vname(1,idevap)
844 vinfo( 2)=vname(2,idevap)
845 vinfo( 3)=vname(3,idevap)
846 vinfo(11)='downward flux, freshening (condensation)'
847 vinfo(12)='upward flux, salting (evaporation)'
848 vinfo(14)=vname(4,idevap)
849 vinfo(16)=vname(1,idtime)
850 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idevap), &
851 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
852 & setfillval = .true., &
853 & setparaccess = .true.)
854 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
855 END IF
856!
857! Define precipitation rate.
858!
859 IF (sout(idrain,ng)) THEN
860 vinfo( 1)=vname(1,idrain)
861 vinfo( 2)=vname(2,idrain)
862 vinfo( 3)=vname(3,idrain)
863 vinfo(11)='upward flux, salting (NOT POSSIBLE)'
864 vinfo(12)='downward flux, freshening (precipitation)'
865 vinfo(14)=vname(4,idrain)
866 vinfo(16)=vname(1,idtime)
867 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idrain), &
868 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
869 & setfillval = .true., &
870 & setparaccess = .true.)
871 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
872 END IF
873# endif
874# endif
875!
876! Define surface U-momentum stress.
877!
878 IF (sout(idusms,ng)) THEN
879 vinfo( 1)=vname(1,idusms)
880 vinfo( 2)=vname(2,idusms)
881 vinfo( 3)=vname(3,idusms)
882 vinfo(14)=vname(4,idusms)
883 vinfo(16)=vname(1,idtime)
884 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idusms), &
885 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
886 & setfillval = .true., &
887 & setparaccess = .true.)
888 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
889 END IF
890!
891! Define surface V-momentum stress.
892!
893 IF (sout(idvsms,ng)) THEN
894 vinfo( 1)=vname(1,idvsms)
895 vinfo( 2)=vname(2,idvsms)
896 vinfo( 3)=vname(3,idvsms)
897 vinfo(14)=vname(4,idvsms)
898 vinfo(16)=vname(1,idtime)
899 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvsms), &
900 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
901 & setfillval = .true., &
902 & setparaccess = .true.)
903 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
904 END IF
905!
906! Define bottom U-momentum stress.
907!
908 IF (sout(idubms,ng)) THEN
909 vinfo( 1)=vname(1,idubms)
910 vinfo( 2)=vname(2,idubms)
911 vinfo( 3)=vname(3,idubms)
912 vinfo(14)=vname(4,idubms)
913 vinfo(16)=vname(1,idtime)
914 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idubms), &
915 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
916 & setfillval = .true., &
917 & setparaccess = .true.)
918 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
919 END IF
920!
921! Define bottom V-momentum stress.
922!
923 IF (sout(idvbms,ng)) THEN
924 vinfo( 1)=vname(1,idvbms)
925 vinfo( 2)=vname(2,idvbms)
926 vinfo( 3)=vname(3,idvbms)
927 vinfo(14)=vname(4,idvbms)
928 vinfo(16)=vname(1,idtime)
929 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvbms), &
930 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
931 & setfillval = .true., &
932 & setparaccess = .true.)
933 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
934 END IF
935
936# ifdef WET_DRY
937!
938! Write out wet/dry mask at RHO-points.
939!
940 IF (sout(idrwet,ng)) THEN
941 vinfo( 1)=vname(1,idrwet)
942 vinfo( 2)=vname(2,idrwet)
943 vinfo( 3)=vname(3,idrwet)
944 vinfo(14)=vname(4,idrwet)
945 vinfo(16)=vname(1,idtime)
946 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idrwet), &
947 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
948 & setfillval = .true., &
949 & setparaccess = .true.)
950 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
951 END IF
952!
953! Write out wet/dry mask at U-points.
954!
955 IF (sout(iduwet,ng)) THEN
956 vinfo( 1)=vname(1,iduwet)
957 vinfo( 2)=vname(2,iduwet)
958 vinfo( 3)=vname(3,iduwet)
959 vinfo(14)=vname(4,iduwet)
960 vinfo(16)=vname(1,idtime)
961 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(iduwet), &
962 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
963 & setfillval = .true., &
964 & setparaccess = .true.)
965 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
966 END IF
967!
968! Write out wet/dry mask at V-points.
969!
970 IF (sout(iduwet,ng)) THEN
971 vinfo( 1)=vname(1,idvwet)
972 vinfo( 2)=vname(2,idvwet)
973 vinfo( 3)=vname(3,idvwet)
974 vinfo(14)=vname(4,idvwet)
975 vinfo(16)=vname(1,idtime)
976 status=def_var(ng, model, sta(ng)%ncid, sta(ng)%Vid(idvwet), &
977 & nf_fout, 2, pgrd, aval, vinfo, ncname, &
978 & setfillval = .true., &
979 & setparaccess = .true.)
980 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
981 END IF
982# endif
983
984# if defined BBL_MODEL || defined WAVES_OUTPUT
985!
986!-----------------------------------------------------------------------
987! Define the bottom boundary layer model or waves variables.
988!-----------------------------------------------------------------------
989!
990 CALL bbl_def_station_nf90 (ng, model, ldef, sout, sta, &
991 & pgrd, rgrd)
992 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
993# endif
994
995# ifdef ICE_MODEL
996!
997!-----------------------------------------------------------------------
998! Define the ice model variables.
999!-----------------------------------------------------------------------
1000!
1001 CALL ice_def_station_nf90 (ng, model, ldef, sout, sta, &
1002 & pgrd)
1003 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1004# endif
1005
1006# ifdef SEDIMENT
1007!
1008!-----------------------------------------------------------------------
1009! Define the sediment model variables.
1010!-----------------------------------------------------------------------
1011!
1012 CALL sediment_def_station_nf90 (ng, model, ldef, sout, sta, &
1013 & bgrd, pgrd, rgrd)
1014 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1015# endif
1016
1017# if defined WEC || defined WEC_VF
1018!
1019!-----------------------------------------------------------------------
1020! Define the Waves Effect on Currents variables.
1021!-----------------------------------------------------------------------
1022!
1023 CALL wec_def_station_nf90 (ng, model, ldef, sout, sta, &
1024 & pgrd, rgrd)
1025 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1026# endif
1027!
1028!-----------------------------------------------------------------------
1029! Leave definition mode.
1030!-----------------------------------------------------------------------
1031!
1032 CALL netcdf_enddef (ng, model, ncname, sta(ng)%ncid)
1033 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1034!
1035!-----------------------------------------------------------------------
1036! Write out time-recordless, information variables.
1037!-----------------------------------------------------------------------
1038!
1039 CALL wrt_info (ng, model, sta(ng)%ncid, ncname)
1040 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1041
1042 END IF define
1043!
1044!=======================================================================
1045! Open an existing stations file, check its contents, and prepare for
1046! appending data.
1047!=======================================================================
1048!
1049 query : IF (.not.ldef) THEN
1050 ncname=sta(ng)%name
1051!
1052! Open stations file for read/write.
1053!
1054 CALL netcdf_open (ng, model, ncname, 1, sta(ng)%ncid)
1055 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1056 WRITE (stdout,50) trim(ncname)
1057 RETURN
1058 END IF
1059!
1060! Inquire about the dimensions and check for consistency.
1061!
1062 CALL netcdf_check_dim (ng, model, ncname, &
1063 & ncid = sta(ng)%ncid)
1064 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1065!
1066! Inquire about the variables.
1067!
1068 CALL netcdf_inq_var (ng, model, ncname, &
1069 & ncid = sta(ng)%ncid)
1070 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1071!
1072! Initialize logical switches.
1073!
1074 DO i=1,nv
1075 got_var(i)=.false.
1076 END DO
1077!
1078! Scan variable list from input NetCDF and activate switches for
1079! stations variables. Get variable IDs.
1080!
1081 DO i=1,n_var
1082 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1083 got_var(idtime)=.true.
1084 sta(ng)%Vid(idtime)=var_id(i)
1085 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
1086 got_var(idfsur)=.true.
1087 sta(ng)%Vid(idfsur)=var_id(i)
1088 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
1089 got_var(idubar)=.true.
1090 sta(ng)%Vid(idubar)=var_id(i)
1091 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
1092 got_var(idvbar)=.true.
1093 sta(ng)%Vid(idvbar)=var_id(i)
1094 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
1095 got_var(idu2de)=.true.
1096 sta(ng)%Vid(idu2de)=var_id(i)
1097 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
1098 got_var(idv2dn)=.true.
1099 sta(ng)%Vid(idv2dn)=var_id(i)
1100# ifdef SOLVE3D
1101 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
1102 got_var(iduvel)=.true.
1103 sta(ng)%Vid(iduvel)=var_id(i)
1104 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
1105 got_var(idvvel)=.true.
1106 sta(ng)%Vid(idvvel)=var_id(i)
1107 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
1108 got_var(idu3de)=.true.
1109 sta(ng)%Vid(idu3de)=var_id(i)
1110 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
1111 got_var(idv3dn)=.true.
1112 sta(ng)%Vid(idv3dn)=var_id(i)
1113 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
1114 got_var(idwvel)=.true.
1115 sta(ng)%Vid(idwvel)=var_id(i)
1116 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
1117 got_var(idovel)=.true.
1118 sta(ng)%Vid(idovel)=var_id(i)
1119 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
1120 got_var(iddano)=.true.
1121 sta(ng)%Vid(iddano)=var_id(i)
1122# ifdef LMD_SKPP
1123 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
1124 got_var(idhsbl)=.true.
1125 sta(ng)%Vid(idhsbl)=var_id(i)
1126# endif
1127# ifdef LMD_BKPP
1128 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
1129 got_var(idhbbl)=.true.
1130 sta(ng)%Vid(idhbbl)=var_id(i)
1131# endif
1132 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
1133 got_var(idvvis)=.true.
1134 sta(ng)%Vid(idvvis)=var_id(i)
1135 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
1136 got_var(idtdif)=.true.
1137 sta(ng)%Vid(idtdif)=var_id(i)
1138 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
1139 got_var(idsdif)=.true.
1140 sta(ng)%Vid(idsdif)=var_id(i)
1141# if defined GLS_MIXING || defined MY25_MIXING
1142 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
1143 got_var(idmtke)=.true.
1144 sta(ng)%Vid(idmtke)=var_id(i)
1145 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
1146 got_var(idmtls)=.true.
1147 sta(ng)%Vid(idmtls)=var_id(i)
1148# endif
1149# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1150 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
1151 got_var(idpair)=.true.
1152 sta(ng)%Vid(idpair)=var_id(i)
1153# endif
1154# if defined BULK_FLUXES || defined ECOSIM
1155 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
1156 got_var(iduair)=.true.
1157 sta(ng)%Vid(iduair)=var_id(i)
1158 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
1159 got_var(idvair)=.true.
1160 sta(ng)%Vid(idvair)=var_id(i)
1161 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
1162 got_var(iduaie)=.true.
1163 sta(ng)%Vid(iduaie)=var_id(i)
1164 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
1165 got_var(idvain)=.true.
1166 sta(ng)%Vid(idvain)=var_id(i)
1167# endif
1168 ELSE IF (trim(var_name(i)).eq. &
1169 & trim(vname(1,idtsur(itemp)))) THEN
1170 got_var(idtsur(itemp))=.true.
1171 sta(ng)%Vid(idtsur(itemp))=var_id(i)
1172 ELSE IF (trim(var_name(i)).eq. &
1173 & trim(vname(1,idtsur(isalt)))) THEN
1174 got_var(idtsur(isalt))=.true.
1175 sta(ng)%Vid(idtsur(isalt))=var_id(i)
1176# ifdef BULK_FLUXES
1177 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
1178 got_var(idlhea)=.true.
1179 sta(ng)%Vid(idlhea)=var_id(i)
1180 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
1181 got_var(idshea)=.true.
1182 sta(ng)%Vid(idshea)=var_id(i)
1183 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
1184 got_var(idlrad)=.true.
1185 sta(ng)%Vid(idlrad)=var_id(i)
1186# endif
1187# ifdef SHORTWAVE
1188 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
1189 got_var(idsrad)=.true.
1190 sta(ng)%Vid(idsrad)=var_id(i)
1191# endif
1192 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idempf))) THEN
1193 got_var(idempf)=.true.
1194 sta(ng)%Vid(idempf)=var_id(i)
1195# if defined EMINUSP && defined BULK_FLUXES
1196 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
1197 got_var(idevap)=.true.
1198 sta(ng)%Vid(idevap)=var_id(i)
1199 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
1200 got_var(idrain)=.true.
1201 sta(ng)%Vid(idrain)=var_id(i)
1202# endif
1203# endif
1204 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
1205 got_var(idusms)=.true.
1206 sta(ng)%Vid(idusms)=var_id(i)
1207 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
1208 got_var(idvsms)=.true.
1209 sta(ng)%Vid(idvsms)=var_id(i)
1210 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
1211 got_var(idubms)=.true.
1212 sta(ng)%Vid(idubms)=var_id(i)
1213 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
1214 got_var(idvbms)=.true.
1215 sta(ng)%Vid(idvbms)=var_id(i)
1216# ifdef WET_DRY
1217 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
1218 got_var(idrwet)=.true.
1219 sta(ng)%Vid(idrwet)=var_id(i)
1220 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduwet))) THEN
1221 got_var(iduwet)=.true.
1222 sta(ng)%Vid(iduwet)=var_id(i)
1223 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvwet))) THEN
1224 got_var(idvwet)=.true.
1225 sta(ng)%Vid(idvwet)=var_id(i)
1226# endif
1227 END IF
1228# ifdef SOLVE3D
1229 DO itrc=1,nt(ng)
1230 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
1231 got_var(idtvar(itrc))=.true.
1232 sta(ng)%Tid(itrc)=var_id(i)
1233 END IF
1234 END DO
1235# endif
1236 END DO
1237!
1238! Check if station variables are available in input NetCDF file.
1239!
1240 IF (.not.got_var(idtime)) THEN
1241 IF (master) WRITE (stdout,60) trim(vname(1,idtime)), &
1242 & trim(ncname)
1243 exit_flag=3
1244 RETURN
1245 END IF
1246 IF (.not.got_var(idfsur).and.sout(idfsur,ng)) THEN
1247 IF (master) WRITE (stdout,60) trim(vname(1,idfsur)), &
1248 & trim(ncname)
1249 exit_flag=3
1250 RETURN
1251 END IF
1252 IF (.not.got_var(idubar).and.sout(idubar,ng)) THEN
1253 IF (master) WRITE (stdout,60) trim(vname(1,idubar)), &
1254 & trim(ncname)
1255 exit_flag=3
1256 RETURN
1257 END IF
1258 IF (.not.got_var(idvbar).and.sout(idvbar,ng)) THEN
1259 IF (master) WRITE (stdout,60) trim(vname(1,idvbar)), &
1260 & trim(ncname)
1261 exit_flag=3
1262 RETURN
1263 END IF
1264 IF (.not.got_var(idu2de).and.sout(idu2de,ng)) THEN
1265 IF (master) WRITE (stdout,60) trim(vname(1,idu2de)), &
1266 & trim(ncname)
1267 exit_flag=3
1268 RETURN
1269 END IF
1270 IF (.not.got_var(idv2dn).and.sout(idv2dn,ng)) THEN
1271 IF (master) WRITE (stdout,60) trim(vname(1,idv2dn)), &
1272 & trim(ncname)
1273 exit_flag=3
1274 RETURN
1275 END IF
1276# ifdef SOLVE3D
1277 IF (.not.got_var(iduvel).and.sout(iduvel,ng)) THEN
1278 IF (master) WRITE (stdout,60) trim(vname(1,iduvel)), &
1279 & trim(ncname)
1280 exit_flag=3
1281 RETURN
1282 END IF
1283 IF (.not.got_var(idvvel).and.sout(idvvel,ng)) THEN
1284 IF (master) WRITE (stdout,60) trim(vname(1,idvvel)), &
1285 & trim(ncname)
1286 exit_flag=3
1287 RETURN
1288 END IF
1289 IF (.not.got_var(idu3de).and.sout(idu3de,ng)) THEN
1290 IF (master) WRITE (stdout,60) trim(vname(1,idu3de)), &
1291 & trim(ncname)
1292 exit_flag=3
1293 RETURN
1294 END IF
1295 IF (.not.got_var(idv3dn).and.sout(idv3dn,ng)) THEN
1296 IF (master) WRITE (stdout,60) trim(vname(1,idv3dn)), &
1297 & trim(ncname)
1298 exit_flag=3
1299 RETURN
1300 END IF
1301 IF (.not.got_var(idwvel).and.sout(idwvel,ng)) THEN
1302 IF (master) WRITE (stdout,60) trim(vname(1,idwvel)), &
1303 & trim(ncname)
1304 exit_flag=3
1305 RETURN
1306 END IF
1307 IF (.not.got_var(idovel).and.sout(idovel,ng)) THEN
1308 IF (master) WRITE(stdout,60) trim(vname(1,idovel)), &
1309 & trim(ncname)
1310 exit_flag=3
1311 RETURN
1312 END IF
1313 IF (.not.got_var(iddano).and.sout(iddano,ng)) THEN
1314 IF (master) WRITE (stdout,60) trim(vname(1,iddano)), &
1315 & trim(ncname)
1316 exit_flag=3
1317 RETURN
1318 END IF
1319# ifdef LMD_SKPP
1320 IF (.not.got_var(idhsbl).and.sout(idhsbl,ng)) THEN
1321 IF (master) WRITE (stdout,60) trim(vname(1,idhsbl)), &
1322 & trim(ncname)
1323 exit_flag=3
1324 RETURN
1325 END IF
1326# endif
1327# ifdef LMD_BKPP
1328 IF (.not.got_var(idhbbl).and.sout(idhbbl,ng)) THEN
1329 IF (master) WRITE (stdout,60) trim(vname(1,idhbbl)), &
1330 & trim(ncname)
1331 exit_flag=3
1332 RETURN
1333 END IF
1334# endif
1335 IF (.not.got_var(idvvis).and.sout(idvvis,ng)) THEN
1336 IF (master) WRITE (stdout,60) trim(vname(1,idvvis)), &
1337 & trim(ncname)
1338 exit_flag=3
1339 RETURN
1340 END IF
1341 IF (.not.got_var(idtdif).and.sout(idtdif,ng)) THEN
1342 IF (master) WRITE (stdout,60) trim(vname(1,idtdif)), &
1343 & trim(ncname)
1344 exit_flag=3
1345 RETURN
1346 END IF
1347# ifdef SALINITY
1348 IF (.not.got_var(idsdif).and.sout(idsdif,ng)) THEN
1349 IF (master) WRITE (stdout,60) trim(vname(1,idsdif)), &
1350 & trim(ncname)
1351 exit_flag=3
1352 RETURN
1353 END IF
1354# endif
1355# if defined GLS_MIXING || defined MY25_MIXING
1356 IF (.not.got_var(idmtke).and.sout(idmtke,ng)) THEN
1357 IF (master) WRITE (stdout,60) trim(vname(1,idmtke)), &
1358 & trim(ncname)
1359 exit_flag=3
1360 RETURN
1361 END IF
1362 IF (.not.got_var(idmtls).and.sout(idmtls,ng)) THEN
1363 IF (master) WRITE (stdout,60) trim(vname(1,idmtls)), &
1364 & trim(ncname)
1365 exit_flag=3
1366 RETURN
1367 END IF
1368# endif
1369# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1370 IF (.not.got_var(idpair).and.sout(idpair,ng)) THEN
1371 IF (master) WRITE (stdout,60) trim(vname(1,idpair)), &
1372 & trim(ncname)
1373 exit_flag=3
1374 RETURN
1375 END IF
1376# endif
1377# if defined BULK_FLUXES || defined ECOSIM
1378 IF (.not.got_var(iduair).and.sout(iduair,ng)) THEN
1379 IF (master) WRITE (stdout,60) trim(vname(1,iduair)), &
1380 & trim(ncname)
1381 exit_flag=3
1382 RETURN
1383 END IF
1384 IF (.not.got_var(idvair).and.sout(idvair,ng)) THEN
1385 IF (master) WRITE (stdout,60) trim(vname(1,idvair)), &
1386 & trim(ncname)
1387 exit_flag=3
1388 RETURN
1389 END IF
1390 IF (.not.got_var(iduaie).and.sout(iduaie,ng)) THEN
1391 IF (master) WRITE (stdout,60) trim(vname(1,iduaie)) , &
1392 & trim(ncname)
1393 exit_flag=3
1394 RETURN
1395 END IF
1396 IF (.not.got_var(idvain).and.sout(idvain,ng)) THEN
1397 IF (master) WRITE (stdout,60) trim(vname(1,idvain)), &
1398 & trim(ncname)
1399 exit_flag=3
1400 RETURN
1401 END IF
1402# endif
1403 IF (.not.got_var(idtsur(itemp)).and.sout(idtsur(itemp),ng)) THEN
1404 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(itemp))), &
1405 & trim(ncname)
1406 exit_flag=3
1407 RETURN
1408 END IF
1409 IF (.not.got_var(idtsur(isalt)).and.sout(idtsur(isalt),ng)) THEN
1410 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(isalt))), &
1411 & trim(ncname)
1412 exit_flag=3
1413 RETURN
1414 END IF
1415# ifdef BULK_FLUXES
1416 IF (.not.got_var(idlhea).and.sout(idlhea,ng)) THEN
1417 IF (master) WRITE (stdout,60) trim(vname(1,idlhea)), &
1418 & trim(ncname)
1419 exit_flag=3
1420 RETURN
1421 END IF
1422 IF (.not.got_var(idshea).and.sout(idshea,ng)) THEN
1423 IF (master) WRITE (stdout,60) trim(vname(1,idshea)), &
1424 & trim(ncname)
1425 exit_flag=3
1426 RETURN
1427 END IF
1428 IF (.not.got_var(idlrad).and.sout(idlrad,ng)) THEN
1429 IF (master) WRITE (stdout,60) trim(vname(1,idlrad)), &
1430 & trim(ncname)
1431 exit_flag=3
1432 RETURN
1433 END IF
1434# endif
1435# ifdef SHORTWAVE
1436 IF (.not.got_var(idsrad).and.sout(idsrad,ng)) THEN
1437 IF (master) WRITE (stdout,60) trim(vname(1,idsrad)), &
1438 & trim(ncname)
1439 exit_flag=3
1440 RETURN
1441 END IF
1442# endif
1443 IF (.not.got_var(idempf).and.sout(idempf,ng)) THEN
1444 IF (master) WRITE (stdout,60) trim(vname(1,idempf)), &
1445 & trim(ncname)
1446 exit_flag=3
1447 RETURN
1448 END IF
1449# if defined EMINUSP && defined BULK_FLUXES
1450 IF (.not.got_var(idevap).and.sout(idevap,ng)) THEN
1451 IF (master) WRITE (stdout,60) trim(vname(1,idevap)), &
1452 & trim(ncname)
1453 exit_flag=3
1454 RETURN
1455 END IF
1456 IF (.not.got_var(idrain).and.sout(idrain,ng)) THEN
1457 IF (master) WRITE (stdout,60) trim(vname(1,idrain)), &
1458 & trim(ncname)
1459 exit_flag=3
1460 RETURN
1461 END IF
1462# endif
1463# endif
1464 IF (.not.got_var(idusms).and.sout(idusms,ng)) THEN
1465 IF (master) WRITE (stdout,60) trim(vname(1,idusms)), &
1466 & trim(ncname)
1467 exit_flag=3
1468 RETURN
1469 END IF
1470 IF (.not.got_var(idvsms).and.sout(idvsms,ng)) THEN
1471 IF (master) WRITE (stdout,60) trim(vname(1,idvsms)), &
1472 & trim(ncname)
1473 exit_flag=3
1474 RETURN
1475 END IF
1476 IF (.not.got_var(idubms).and.sout(idubms,ng)) THEN
1477 IF (master) WRITE (stdout,60) trim(vname(1,idubms)), &
1478 & trim(ncname)
1479 exit_flag=3
1480 RETURN
1481 END IF
1482 IF (.not.got_var(idvbms).and.sout(idvbms,ng)) THEN
1483 IF (master) WRITE (stdout,60) trim(vname(1,idvbms)), &
1484 & trim(ncname)
1485 exit_flag=3
1486 RETURN
1487 END IF
1488# ifdef WET_DRY
1489 IF (.not.got_var(idrwet).and.sout(idrwet,ng)) THEN
1490 IF (master) WRITE (stdout,60) trim(vname(1,idrwet)), &
1491 & trim(ncname)
1492 exit_flag=3
1493 RETURN
1494 END IF
1495 IF (.not.got_var(iduwet).and.sout(iduwet,ng)) THEN
1496 IF (master) WRITE (stdout,60) trim(vname(1,iduwet)), &
1497 & trim(ncname)
1498 exit_flag=3
1499 RETURN
1500 END IF
1501 IF (.not.got_var(idvwet).and.sout(idvwet,ng)) THEN
1502 IF (master) WRITE (stdout,60) trim(vname(1,idvwet)), &
1503 & trim(ncname)
1504 exit_flag=3
1505 RETURN
1506 END IF
1507# endif
1508# ifdef SOLVE3D
1509 DO itrc=1,nt(ng)
1510 IF (.not.got_var(idtvar(itrc)).and.sout(idtvar(itrc),ng)) THEN
1511 IF (master) WRITE (stdout,60) trim(vname(1,idtvar(itrc))), &
1512 & trim(ncname)
1513 exit_flag=3
1514 RETURN
1515 END IF
1516 END DO
1517# endif
1518
1519# if defined BBL_MODEL || defined WAVES_OUTPUT
1520!
1521! Scan bottom boundary layer model and waves variables from input
1522! NetCDF and activate switches for station variables. Get variable IDs.
1523!
1524 CALL bbl_def_station_nf90 (ng, model, ldef, sout, sta)
1525 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1526
1527# endif
1528
1529# ifdef ICE_MODEL
1530!
1531! Scan ice model variables from input NetCDF and activate switches for
1532! station variables. Get variable IDs.
1533!
1534 CALL ice_def_station_nf90 (ng, model, ldef, sout, sta)
1535 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1536# endif
1537
1538# ifdef SEDIMENT
1539!
1540! Scan sediment model variables from input NetCDF and activate
1541! switches for station variables. Get variable IDs.
1542!
1543 CALL sediment_def_station_nf90 (ng, model, ldef, sout, sta)
1544 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1545# endif
1546
1547# if defined WEC || defined WEC_VF
1548!
1549! Scan Waves Effect on Currents variables from input NetCDF and
1550! activate switches for station variables. Get variable IDs.
1551!
1552 CALL wec_def_station_nf90 (ng, model, ldef, sout, sta)
1553 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1554# endif
1555!
1556! Set unlimited time record dimension to the appropriate value.
1557!
1558!! STA(ng)%Rindex=rec_size
1559 sta(ng)%Rindex=(ntstart(ng)-1)/nsta(ng)
1560 END IF query
1561!
1562 10 FORMAT (2x,'DEF_STATION_NF90 - creating stations file,',t56, &
1563 & 'Grid ',i2.2,': ',a)
1564 20 FORMAT (2x,'DEF_STATION_NF90 - inquiring stations file,',t56, &
1565 & 'Grid ',i2.2,': ',a)
1566 30 FORMAT (/,' DEF_STATION_NF90 - unable to create stations NetCDF', &
1567 & ' file: ',a)
1568 40 FORMAT (1pe11.4,1x,'millimeter')
1569 50 FORMAT (/,' DEF_STATION_NF90 - unable to open stations NetCDF', &
1570 & ' file: ',a)
1571 60 FORMAT (/,' DEF_STATION_NF90 - unable to find variable: ',a,2x, &
1572 & ' in stations NetCDF file: ',a)
1573!
1574 RETURN
integer, parameter nf_tout
Definition mod_netcdf.F:207
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
Definition mod_netcdf.F:538
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
Definition mod_netcdf.F:188
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
Definition mod_netcdf.F:169
integer, dimension(mvars) var_id
Definition mod_netcdf.F:160
integer n_var
Definition mod_netcdf.F:152
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)

References bbl_output_mod::bbl_def_station_nf90(), mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::iddano, mod_ncparam::idempf, mod_ncparam::idevap, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idmtke, mod_ncparam::idmtls, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtsur, mod_ncparam::idtvar, mod_ncparam::idu2de, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idusms, mod_ncparam::iduvel, mod_ncparam::iduwet, mod_ncparam::idv2dn, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvsms, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwet, mod_ncparam::idwvel, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_netcdf::n_var, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_biology::ndom, mod_netcdf::netcdf_check_dim(), mod_netcdf::netcdf_create(), mod_netcdf::netcdf_enddef(), mod_netcdf::netcdf_inq_var(), mod_netcdf::netcdf_open(), mod_netcdf::nf_fout, mod_netcdf::nf_tout, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_param::nst, mod_scalars::nsta, mod_fourdvar::nstatevar, mod_param::nstation, mod_param::nt, mod_scalars::ntstart, mod_ncparam::nv, mod_scalars::rclock, mod_sediment::sd50, sediment_output_mod::sediment_def_station_nf90(), mod_iounits::sourcefile, mod_ncparam::sout, mod_iounits::sta, mod_iounits::stdout, mod_netcdf::var_id, mod_netcdf::var_name, and mod_ncparam::vname.

Referenced by def_station().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ def_station_pio()

subroutine, private def_station_mod::def_station_pio ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 1580 of file def_station.F.

1581!***********************************************************************
1582!
1583 USE mod_pio_netcdf
1584!
1585! Imported variable declarations.
1586!
1587 integer, intent(in) :: ng, model
1588
1589 logical, intent(in) :: ldef
1590!
1591! Local variable declarations.
1592!
1593 integer, parameter :: Natt = 25
1594!
1595 logical :: got_var(NV)
1596!
1597 integer :: i, j, recdim, stadim
1598 integer :: status
1599
1600 integer :: DimIDs(nDimID), pgrd(2)
1601
1602# ifdef SOLVE3D
1603 integer :: itrc
1604
1605 integer :: bgrd(3), rgrd(3), wgrd(3)
1606# endif
1607!
1608 real(r8) :: Aval(6)
1609!
1610 character (len=256) :: ncname
1611 character (len=MaxLen) :: Vinfo(Natt)
1612!
1613 character (len=*), parameter :: MyFile = &
1614 & __FILE__//", def_station_pio"
1615!
1616 sourcefile=myfile
1617!
1618!-----------------------------------------------------------------------
1619! Set and report file name.
1620!-----------------------------------------------------------------------
1621!
1622 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1623 ncname=sta(ng)%name
1624!
1625 IF (master) THEN
1626 IF (ldef) THEN
1627 WRITE (stdout,10) ng, trim(ncname)
1628 ELSE
1629 WRITE (stdout,20) ng, trim(ncname)
1630 END IF
1631 END IF
1632!
1633!=======================================================================
1634! Create a new station data file.
1635!=======================================================================
1636!
1637 define : IF (ldef) THEN
1638 CALL pio_netcdf_create (ng, model, trim(ncname), sta(ng)%pioFile)
1639 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1640 IF (master) WRITE (stdout,30) trim(ncname)
1641 RETURN
1642 END IF
1643!
1644!-----------------------------------------------------------------------
1645! Define file dimensions.
1646!-----------------------------------------------------------------------
1647!
1648 dimids=0
1649!
1650# ifdef SOLVE3D
1651 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 's_rho', &
1652 & n(ng), dimids( 9))
1653 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1654
1655 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 's_w', &
1656 & n(ng)+1, dimids(10))
1657 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1658
1659 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'tracer', &
1660 & nt(ng), dimids(11))
1661 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1662
1663# ifdef SEDIMENT
1664 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'NST', &
1665 & nst, dimids(32))
1666 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1667
1668 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nbed', &
1669 & nbed, dimids(16))
1670 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1671# endif
1672
1673# ifdef ECOSIM
1674 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nbands', &
1675 & nbands, dimids(33))
1676 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1677
1678 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nphy', &
1679 & nphy, dimids(25))
1680 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1681
1682 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nbac', &
1683 & nbac, dimids(26))
1684 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1685
1686 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Ndom', &
1687 & ndom, dimids(27))
1688 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1689
1690 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nfec', &
1691 & nfec, dimids(28))
1692 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1693# endif
1694# endif
1695
1696 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'station' , &
1697 & nstation(ng), dimids(13))
1698 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1699
1700 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'boundary', &
1701 & 4, dimids(14))
1702 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1703
1704# ifdef FOUR_DVAR
1705 status=def_dim(ng, model, sta(ng)%pioFile, ncname, 'Nstate', &
1706 & nstatevar(ng), dimids(29))
1707 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1708# endif
1709
1710 status=def_dim(ng, model, sta(ng)%pioFile, ncname, &
1711 & trim(adjustl(vname(5,idtime))), &
1712 & pio_unlimited, dimids(12))
1713 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1714
1715 recdim=dimids(12)
1716 stadim=dimids(13)
1717!
1718! Define dimension vector for point variables.
1719!
1720 pgrd(1)=dimids(13)
1721 pgrd(2)=dimids(12)
1722# ifdef SOLVE3D
1723!
1724! Define dimension vector for cast variables at vertical RHO-points.
1725!
1726 rgrd(1)=dimids( 9)
1727 rgrd(2)=dimids(13)
1728 rgrd(3)=dimids(12)
1729!
1730! Define dimension vector for cast variables at vertical W-points.
1731!
1732 wgrd(1)=dimids(10)
1733 wgrd(2)=dimids(13)
1734 wgrd(3)=dimids(12)
1735!
1736! Define dimension vector for sediment bed layer type variables.
1737!
1738 bgrd(1)=dimids(16)
1739 bgrd(2)=dimids(13)
1740 bgrd(3)=dimids(12)
1741# endif
1742!
1743! Initialize unlimited time record dimension.
1744!
1745 sta(ng)%Rindex=0
1746!
1747! Initialize local information variable arrays.
1748!
1749 DO i=1,natt
1750 DO j=1,len(vinfo(1))
1751 vinfo(i)(j:j)=' '
1752 END DO
1753 END DO
1754 DO i=1,6
1755 aval(i)=0.0_r8
1756 END DO
1757!
1758!-----------------------------------------------------------------------
1759! Define time-recordless information variables.
1760!-----------------------------------------------------------------------
1761!
1762 CALL def_info (ng, model, sta(ng)%pioFile, ncname, dimids)
1763 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1764!
1765!-----------------------------------------------------------------------
1766! Define variables and their attributes.
1767!-----------------------------------------------------------------------
1768!
1769! Define model time.
1770!
1771 vinfo( 1)=vname(1,idtime)
1772 vinfo( 2)=vname(2,idtime)
1773 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
1774 vinfo( 4)=trim(rclock%calendar)
1775 vinfo(14)=vname(4,idtime)
1776 sta(ng)%pioVar(idtime)%dkind=pio_tout
1777 sta(ng)%pioVar(idtime)%gtype=0
1778!
1779 status=def_var(ng, model, sta(ng)%pioFile, &
1780 & sta(ng)%pioVar(idtime)%vd, &
1781 & pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1782 & setparaccess = .true.)
1783 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1784!
1785! Define free-surface.
1786!
1787 IF (sout(idfsur,ng)) THEN
1788 vinfo( 1)=vname(1,idfsur)
1789 vinfo( 2)=vname(2,idfsur)
1790 vinfo( 3)=vname(3,idfsur)
1791 vinfo(14)=vname(4,idfsur)
1792 vinfo(16)=vname(1,idtime)
1793 sta(ng)%pioVar(idfsur)%dkind=pio_fout
1794 sta(ng)%pioVar(idfsur)%gtype=0
1795!
1796 status=def_var(ng, model, sta(ng)%pioFile, &
1797 & sta(ng)%pioVar(idfsur)%vd, &
1798 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
1799# ifdef WET_DRY
1800 & setfillval = .false., &
1801# else
1802 & setfillval = .true., &
1803# endif
1804 & setparaccess = .true.)
1805 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1806 END IF
1807!
1808! Define 2D momentum in the XI-direction.
1809!
1810 IF (sout(idubar,ng)) THEN
1811 vinfo( 1)=vname(1,idubar)
1812 vinfo( 2)=vname(2,idubar)
1813 vinfo( 3)=vname(3,idubar)
1814 vinfo(14)=vname(4,idubar)
1815 vinfo(16)=vname(1,idtime)
1816 sta(ng)%pioVar(idubar)%dkind=pio_fout
1817 sta(ng)%pioVar(idubar)%gtype=0
1818!
1819 status=def_var(ng, model, sta(ng)%pioFile, &
1820 & sta(ng)%pioVar(idubar)%vd, &
1821 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
1822 & setfillval = .true., &
1823 & setparaccess = .true.)
1824 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1825 END IF
1826!
1827! Define 2D momentum in the ETA-direction.
1828!
1829 IF (sout(idvbar,ng)) THEN
1830 vinfo( 1)=vname(1,idvbar)
1831 vinfo( 2)=vname(2,idvbar)
1832 vinfo( 3)=vname(3,idvbar)
1833 vinfo(14)=vname(4,idvbar)
1834 vinfo(16)=vname(1,idtime)
1835 sta(ng)%pioVar(idvbar)%dkind=pio_fout
1836 sta(ng)%pioVar(idvbar)%gtype=0
1837!
1838 status=def_var(ng, model, sta(ng)%pioFile, &
1839 & sta(ng)%pioVar(idvbar)%vd, &
1840 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
1841 & setfillval = .true., &
1842 & setparaccess = .true.)
1843 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1844 END IF
1845!
1846! Define 2D Eastward momentum component at RHO-points.
1847!
1848 IF (sout(idu2de,ng)) THEN
1849 vinfo( 1)=vname(1,idu2de)
1850 vinfo( 2)=vname(2,idu2de)
1851 vinfo( 3)=vname(3,idu2de)
1852 vinfo(14)=vname(4,idu2de)
1853 vinfo(16)=vname(1,idtime)
1854 sta(ng)%pioVar(idu2de)%dkind=pio_fout
1855 sta(ng)%pioVar(idu2de)%gtype=0
1856!
1857 status=def_var(ng, model, sta(ng)%pioFile, &
1858 & sta(ng)%pioVar(idu2de)%vd, &
1859 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
1860 & setfillval = .true., &
1861 & setparaccess = .true.)
1862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1863 END IF
1864!
1865! Define 2D Northward momentum component at RHO-points.
1866!
1867 IF (sout(idv2dn,ng)) THEN
1868 vinfo( 1)=vname(1,idv2dn)
1869 vinfo( 2)=vname(2,idv2dn)
1870 vinfo( 3)=vname(3,idv2dn)
1871 vinfo(14)=vname(4,idv2dn)
1872 vinfo(16)=vname(1,idtime)
1873 sta(ng)%pioVar(idv2dn)%dkind=pio_fout
1874 sta(ng)%pioVar(idv2dn)%gtype=0
1875!
1876 status=def_var(ng, model, sta(ng)%pioFile, &
1877 & sta(ng)%pioVar(idv2dn)%vd, &
1878 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
1879 & setfillval = .true., &
1880 & setparaccess = .true.)
1881 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1882 END IF
1883
1884# ifdef SOLVE3D
1885!
1886! Define 3D momentum component in the XI-direction.
1887!
1888 IF (sout(iduvel,ng)) THEN
1889 vinfo( 1)=vname(1,iduvel)
1890 vinfo( 2)=vname(2,iduvel)
1891 vinfo( 3)=vname(3,iduvel)
1892 vinfo(14)=vname(4,iduvel)
1893 vinfo(16)=vname(1,idtime)
1894 sta(ng)%pioVar(iduvel)%dkind=pio_fout
1895 sta(ng)%pioVar(iduvel)%gtype=0
1896!
1897 status=def_var(ng, model, sta(ng)%pioFile, &
1898 & sta(ng)%pioVar(iduvel)%vd, &
1899 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
1900 & setfillval = .true., &
1901 & setparaccess = .true.)
1902 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1903 END IF
1904!
1905! Define 3D momentum component in the ETA-direction.
1906!
1907 IF (sout(idvvel,ng)) THEN
1908 vinfo( 1)=vname(1,idvvel)
1909 vinfo( 2)=vname(2,idvvel)
1910 vinfo( 3)=vname(3,idvvel)
1911 vinfo(14)=vname(4,idvvel)
1912 vinfo(16)=vname(1,idtime)
1913 sta(ng)%pioVar(idvvel)%dkind=pio_fout
1914 sta(ng)%pioVar(idvvel)%gtype=0
1915!
1916 status=def_var(ng, model, sta(ng)%pioFile, &
1917 & sta(ng)%pioVar(idvvel)%vd, &
1918 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
1919 & setfillval = .true., &
1920 & setparaccess = .true.)
1921 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1922 END IF
1923!
1924! Define 3D Eastward momentum component at RHO-points.
1925!
1926 IF (sout(idu3de,ng)) THEN
1927 vinfo( 1)=vname(1,idu3de)
1928 vinfo( 2)=vname(2,idu3de)
1929 vinfo( 3)=vname(3,idu3de)
1930 vinfo(14)=vname(4,idu3de)
1931 vinfo(16)=vname(1,idtime)
1932 sta(ng)%pioVar(idu3de)%dkind=pio_fout
1933 sta(ng)%pioVar(idu3de)%gtype=0
1934!
1935 status=def_var(ng, model, sta(ng)%pioFile, &
1936 & sta(ng)%pioVar(idu3de)%vd, &
1937 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
1938 & setfillval = .true., &
1939 & setparaccess = .true.)
1940 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1941 END IF
1942!
1943! Define 3D Northward momentum component at RHO-points.
1944!
1945 IF (sout(idv3dn,ng)) THEN
1946 vinfo( 1)=vname(1,idv3dn)
1947 vinfo( 2)=vname(2,idv3dn)
1948 vinfo( 3)=vname(3,idv3dn)
1949 vinfo(14)=vname(4,idv3dn)
1950 vinfo(16)=vname(1,idtime)
1951 sta(ng)%pioVar(idv3dn)%dkind=pio_fout
1952 sta(ng)%pioVar(idv3dn)%gtype=0
1953!
1954 status=def_var(ng, model, sta(ng)%pioFile, &
1955 & sta(ng)%pioVar(idv3dn)%vd, &
1956 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
1957 & setfillval = .true., &
1958 & setparaccess = .true.)
1959 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1960 END IF
1961!
1962! Define 3D momentum component in the S-direction.
1963!
1964 IF (sout(idwvel,ng)) THEN
1965 vinfo( 1)=vname(1,idwvel)
1966 vinfo( 2)=vname(2,idwvel)
1967 vinfo( 3)=vname(3,idwvel)
1968 vinfo(14)=vname(4,idwvel)
1969 vinfo(16)=vname(1,idtime)
1970 sta(ng)%pioVar(idwvel)%dkind=pio_fout
1971 sta(ng)%pioVar(idwvel)%gtype=0
1972!
1973 status=def_var(ng, model, sta(ng)%pioFile, &
1974 & sta(ng)%pioVar(idwvel)%vd, &
1975 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
1976 & setfillval = .true., &
1977 & setparaccess = .true.)
1978 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1979 END IF
1980!
1981! Define S-coordinate vertical "omega" momentum component (m3/s).
1982!
1983 IF (sout(idovel,ng)) THEN
1984 vinfo( 1)=vname(1,idovel)
1985 vinfo( 2)=vname(2,idovel)
1986 vinfo( 3)='meter3 second-1'
1987 vinfo(14)=vname(4,idovel)
1988 vinfo(16)=vname(1,idtime)
1989 sta(ng)%pioVar(idovel)%dkind=pio_fout
1990 sta(ng)%pioVar(idovel)%gtype=0
1991!
1992 status=def_var(ng, model, sta(ng)%pioFile, &
1993 & sta(ng)%pioVar(idovel)%vd, &
1994 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
1995 & setfillval = .true., &
1996 & setparaccess = .true.)
1997 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1998 END IF
1999!
2000! Define tracer type variables.
2001!
2002 DO itrc=1,nt(ng)
2003 IF (sout(idtvar(itrc),ng)) THEN
2004 vinfo( 1)=vname(1,idtvar(itrc))
2005 vinfo( 2)=vname(2,idtvar(itrc))
2006 vinfo( 3)=vname(3,idtvar(itrc))
2007 vinfo(14)=vname(4,idtvar(itrc))
2008 vinfo(16)=vname(1,idtime)
2009 sta(ng)%pioTrc(itrc)%dkind=pio_fout
2010 sta(ng)%pioTrc(itrc)%gtype=0
2011
2012# ifdef SEDIMENT
2013 DO i=1,nst
2014 IF (itrc.eq.idsed(i)) THEN
2015 WRITE (vinfo(19),40) 1000.0_r8*sd50(i,ng)
2016 END IF
2017 END DO
2018# endif
2019!
2020 status=def_var(ng, model, sta(ng)%pioFile, &
2021 & sta(ng)%pioTrc(itrc)%vd, &
2022 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
2023 & setfillval = .true., &
2024 & setparaccess = .true.)
2025 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2026 END IF
2027 END DO
2028!
2029! Define density anomaly.
2030!
2031 IF (sout(iddano,ng)) THEN
2032 vinfo( 1)=vname(1,iddano)
2033 vinfo( 2)=vname(2,iddano)
2034 vinfo( 3)=vname(3,iddano)
2035 vinfo(14)=vname(4,iddano)
2036 vinfo(16)=vname(1,idtime)
2037 sta(ng)%pioVar(iddano)%dkind=pio_fout
2038 sta(ng)%pioVar(iddano)%gtype=0
2039!
2040 status=def_var(ng, model, sta(ng)%pioFile, &
2041 & sta(ng)%pioVar(iddano)%vd, &
2042 & pio_fout, 3, rgrd, aval, vinfo, ncname, &
2043 & setfillval = .true., &
2044 & setparaccess = .true.)
2045 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2046 END IF
2047
2048# ifdef LMD_SKPP
2049!
2050! Define depth of surface boundary layer.
2051!
2052 IF (sout(idhsbl,ng)) THEN
2053 vinfo( 1)=vname(1,idhsbl)
2054 vinfo( 2)=vname(2,idhsbl)
2055 vinfo( 3)=vname(3,idhsbl)
2056 vinfo(14)=vname(4,idhsbl)
2057 vinfo(16)=vname(1,idtime)
2058 sta(ng)%pioVar(idhsbl)%dkind=pio_fout
2059 sta(ng)%pioVar(idhsbl)%gtype=0
2060!
2061 status=def_var(ng, model, sta(ng)%pioFile, &
2062 & sta(ng)%pioVar(idhsbl)%vd, &
2063 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2064 & setfillval = .true., &
2065 & setparaccess = .true.)
2066 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2067 END IF
2068# endif
2069# ifdef LMD_BKPP
2070!
2071! Define depth of bottom boundary layer.
2072!
2073 IF (sout(idhbbl,ng)) THEN
2074 vinfo( 1)=vname(1,idhbbl)
2075 vinfo( 2)=vname(2,idhbbl)
2076 vinfo( 3)=vname(3,idhbbl)
2077 vinfo(14)=vname(4,idhbbl)
2078 vinfo(16)=vname(1,idtime)
2079 sta(ng)%pioVar(idhbbl)%dkind=pio_fout
2080 sta(ng)%pioVar(idhbbl)%gtype=0
2081!
2082 status=def_var(ng, model, sta(ng)%pioFile, &
2083 & sta(ng)%pioVar(idhbbl)%vd, &
2084 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2085 & setfillval = .true., &
2086 & setparaccess = .true.)
2087 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2088 END IF
2089# endif
2090!
2091! Define vertical viscosity coefficient.
2092!
2093 IF (sout(idvvis,ng)) THEN
2094 vinfo( 1)=vname(1,idvvis)
2095 vinfo( 2)=vname(2,idvvis)
2096 vinfo( 3)=vname(3,idvvis)
2097 vinfo(14)=vname(4,idvvis)
2098 vinfo(16)=vname(1,idtime)
2099 sta(ng)%pioVar(idvvis)%dkind=pio_fout
2100 sta(ng)%pioVar(idvvis)%gtype=0
2101!
2102 status=def_var(ng, model, sta(ng)%pioFile, &
2103 & sta(ng)%pioVar(idvvis)%vd, &
2104 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
2105 & setfillval = .true., &
2106 & setparaccess = .true.)
2107 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2108 END IF
2109!
2110! Define vertical diffusion coefficient for potential temperature.
2111!
2112 IF (sout(idtdif,ng)) THEN
2113 vinfo( 1)=vname(1,idtdif)
2114 vinfo( 2)=vname(2,idtdif)
2115 vinfo( 3)=vname(3,idtdif)
2116 vinfo(14)=vname(4,idtdif)
2117 vinfo(16)=vname(1,idtime)
2118 sta(ng)%pioVar(idtdif)%dkind=pio_fout
2119 sta(ng)%pioVar(idtdif)%gtype=0
2120!
2121 status=def_var(ng, model, sta(ng)%pioFile, &
2122 & sta(ng)%pioVar(idtdif)%vd, &
2123 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
2124 & setfillval = .true., &
2125 & setparaccess = .true.)
2126 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2127 END IF
2128
2129# ifdef SALINITY
2130!
2131! Define vertical diffusion coefficient for salinity.
2132!
2133 IF (sout(idsdif,ng)) THEN
2134 vinfo( 1)=vname(1,idsdif)
2135 vinfo( 2)=vname(2,idsdif)
2136 vinfo( 3)=vname(3,idsdif)
2137 vinfo(14)=vname(4,idsdif)
2138 vinfo(16)=vname(1,idtime)
2139 sta(ng)%pioVar(idsdif)%dkind=pio_fout
2140 sta(ng)%pioVar(idsdif)%gtype=0
2141!
2142 status=def_var(ng, model, sta(ng)%pioFile, &
2143 & sta(ng)%pioVar(idsdif)%vd, &
2144 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
2145 & setfillval = .true., &
2146 & setparaccess = .true.)
2147 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2148 END IF
2149# endif
2150# if defined GLS_MIXING || defined MY25_MIXING
2151!
2152! Define turbulent kinetic energy.
2153!
2154 IF (sout(idmtke,ng)) THEN
2155 vinfo( 1)=vname(1,idmtke)
2156 vinfo( 2)=vname(2,idmtke)
2157 vinfo( 3)=vname(3,idmtke)
2158 vinfo(14)=vname(4,idmtke)
2159 vinfo(16)=vname(1,idtime)
2160 sta(ng)%pioVar(idmtke)%dkind=pio_fout
2161 sta(ng)%pioVar(idmtke)%gtype=0
2162!
2163 status=def_var(ng, model, sta(ng)%pioFile, &
2164 & sta(ng)%pioVar(idmtke)%vd, &
2165 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
2166 & setfillval = .true., &
2167 & setparaccess = .true.)
2168 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2169 END IF
2170!
2171! Define turbulent kinetic energy time length scale.
2172!
2173 IF (sout(idmtls,ng)) THEN
2174 vinfo( 1)=vname(1,idmtls)
2175 vinfo( 2)=vname(2,idmtls)
2176 vinfo( 3)=vname(3,idmtls)
2177 vinfo(14)=vname(4,idmtls)
2178 vinfo(16)=vname(1,idtime)
2179 sta(ng)%pioVar(idmtls)%dkind=pio_fout
2180 sta(ng)%pioVar(idmtls)%gtype=0
2181!
2182 status=def_var(ng, model, sta(ng)%pioFile, &
2183 & sta(ng)%pioVar(idmtls)%vd, &
2184 & pio_fout, 3, wgrd, aval, vinfo, ncname, &
2185 & setfillval = .true., &
2186 & setparaccess = .true.)
2187 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2188 END IF
2189# endif
2190# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2191!
2192! Define surface air pressure.
2193!
2194 IF (sout(idpair,ng)) THEN
2195 vinfo( 1)=vname(1,idpair)
2196 vinfo( 2)=vname(2,idpair)
2197 vinfo( 3)=vname(3,idpair)
2198 vinfo(14)=vname(4,idpair)
2199 vinfo(16)=vname(1,idtime)
2200 sta(ng)%pioVar(idpair)%dkind=pio_fout
2201 sta(ng)%pioVar(idpair)%gtype=0
2202!
2203 status=def_var(ng, model, sta(ng)%pioFile, &
2204 & sta(ng)%pioVar(idpair)%vd, &
2205 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2206 & setfillval = .true., &
2207 & setparaccess = .true.)
2208 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2209 END IF
2210# endif
2211# if defined BULK_FLUXES || defined ECOSIM
2212!
2213! Define surface winds.
2214!
2215 IF (sout(iduair,ng)) THEN
2216 vinfo( 1)=vname(1,iduair)
2217 vinfo( 2)=vname(2,iduair)
2218 vinfo( 3)=vname(3,iduair)
2219 vinfo(14)=vname(4,iduair)
2220 vinfo(16)=vname(1,idtime)
2221 sta(ng)%pioVar(iduair)%dkind=pio_fout
2222 sta(ng)%pioVar(iduair)%gtype=0
2223!
2224 status=def_var(ng, model, sta(ng)%pioFile, &
2225 & sta(ng)%pioVar(iduair)%vd, &
2226 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2227 & setfillval = .true., &
2228 & setparaccess = .true.)
2229 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2230 END IF
2231!
2232 IF (sout(idvair,ng)) THEN
2233 vinfo( 1)=vname(1,idvair)
2234 vinfo( 2)=vname(2,idvair)
2235 vinfo( 3)=vname(3,idvair)
2236 vinfo(14)=vname(4,idvair)
2237 vinfo(16)=vname(1,idtime)
2238 sta(ng)%pioVar(idvair)%dkind=pio_fout
2239 sta(ng)%pioVar(idvair)%gtype=0
2240!
2241 status=def_var(ng, model, sta(ng)%pioFile, &
2242 & sta(ng)%pioVar(idvair)%vd, &
2243 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2244 & setfillval = .true., &
2245 & setparaccess = .true.)
2246 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2247 END IF
2248# endif
2249!
2250! Define surface net heat flux.
2251!
2252 IF (sout(idtsur(itemp),ng)) THEN
2253 vinfo( 1)=vname(1,idtsur(itemp))
2254 vinfo( 2)=vname(2,idtsur(itemp))
2255 vinfo( 3)=vname(3,idtsur(itemp))
2256 vinfo(11)='upward flux, cooling'
2257 vinfo(12)='downward flux, heating'
2258 vinfo(14)=vname(4,idtsur(itemp))
2259 vinfo(16)=vname(1,idtime)
2260 sta(ng)%pioVar(idtsur(itemp))%dkind=pio_fout
2261 sta(ng)%pioVar(idtsur(itemp))%gtype=0
2262!
2263 status=def_var(ng, model, sta(ng)%pioFile, &
2264 & sta(ng)%pioVar(idtsur(itemp))%vd, &
2265 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2266 & setfillval = .true., &
2267 & setparaccess = .true.)
2268 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2269 END IF
2270
2271# ifdef SALINITY
2272!
2273! Define surface net salt flux.
2274!
2275 IF (sout(idtsur(isalt),ng)) THEN
2276 vinfo( 1)=vname(1,idtsur(isalt))
2277 vinfo( 2)=vname(2,idtsur(isalt))
2278 vinfo( 3)=vname(3,idtsur(isalt))
2279 vinfo(11)='upward flux, freshening (net precipitation)'
2280 vinfo(12)='downward flux, salting (net evaporation)'
2281 vinfo(14)=vname(4,idtsur(isalt))
2282 vinfo(16)=vname(1,idtime)
2283 sta(ng)%pioVar(idtsur(isalt))%dkind=pio_fout
2284 sta(ng)%pioVar(idtsur(isalt))%gtype=0
2285!
2286 status=def_var(ng, model, sta(ng)%pioFile, &
2287 & sta(ng)%pioVar(idtsur(isalt))%vd, &
2288 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2289 & setfillval = .true., &
2290 & setparaccess = .true.)
2291 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2292 END IF
2293# endif
2294
2295# ifdef BULK_FLUXES
2296!
2297! Define latent heat flux.
2298!
2299 IF (sout(idlhea,ng)) THEN
2300 vinfo( 1)=vname(1,idlhea)
2301 vinfo( 2)=vname(2,idlhea)
2302 vinfo( 3)=vname(3,idlhea)
2303 vinfo(11)='upward flux, cooling'
2304 vinfo(12)='downward flux, heating'
2305 vinfo(14)=vname(4,idlhea)
2306 vinfo(16)=vname(1,idtime)
2307 sta(ng)%pioVar(idlhea)%dkind=pio_fout
2308 sta(ng)%pioVar(idlhea)%gtype=0
2309!
2310 status=def_var(ng, model, sta(ng)%pioFile, &
2311 & sta(ng)%pioVar(idlhea)%vd, &
2312 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2313 & setfillval = .true., &
2314 & setparaccess = .true.)
2315 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2316 END IF
2317!
2318! Define sensible heat flux.
2319!
2320 IF (sout(idshea,ng)) THEN
2321 vinfo( 1)=vname(1,idshea)
2322 vinfo( 2)=vname(2,idshea)
2323 vinfo( 3)=vname(3,idshea)
2324 vinfo(11)='upward flux, cooling'
2325 vinfo(12)='downward flux, heating'
2326 vinfo(14)=vname(4,idshea)
2327 vinfo(16)=vname(1,idtime)
2328 sta(ng)%pioVar(idshea)%dkind=pio_fout
2329 sta(ng)%pioVar(idshea)%gtype=0
2330!
2331 status=def_var(ng, model, sta(ng)%pioFile, &
2332 & sta(ng)%pioVar(idshea)%vd, &
2333 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2334 & setfillval = .true., &
2335 & setparaccess = .true.)
2336 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2337 END IF
2338!
2339! Define longwave radiation flux.
2340!
2341 IF (sout(idlrad,ng)) THEN
2342 vinfo( 1)=vname(1,idlrad)
2343 vinfo( 2)=vname(2,idlrad)
2344 vinfo( 3)=vname(3,idlrad)
2345 vinfo(11)='upward flux, cooling'
2346 vinfo(12)='downward flux, heating'
2347 vinfo(14)=vname(4,idlrad)
2348 vinfo(16)=vname(1,idtime)
2349 sta(ng)%pioVar(idlrad)%dkind=pio_fout
2350 sta(ng)%pioVar(idlrad)%gtype=0
2351!
2352 status=def_var(ng, model, sta(ng)%pioFile, &
2353 & sta(ng)%pioVar(idlrad)%vd, &
2354 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2355 & setfillval = .true., &
2356 & setparaccess = .true.)
2357 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2358 END IF
2359# endif
2360# ifdef SHORTWAVE
2361!
2362! Define shortwave radiation flux.
2363!
2364 IF (sout(idsrad,ng)) THEN
2365 vinfo( 1)=vname(1,idsrad)
2366 vinfo( 2)=vname(2,idsrad)
2367 vinfo( 3)=vname(3,idsrad)
2368 vinfo(11)='upward flux, cooling'
2369 vinfo(12)='downward flux, heating'
2370 vinfo(14)=vname(4,idsrad)
2371 vinfo(16)=vname(1,idtime)
2372 sta(ng)%pioVar(idsrad)%dkind=pio_fout
2373 sta(ng)%pioVar(idsrad)%gtype=0
2374!
2375 status=def_var(ng, model, sta(ng)%pioFile, &
2376 & sta(ng)%pioVar(idsrad)%vd, &
2377 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2378 & setfillval = .true., &
2379 & setparaccess = .true.)
2380 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2381 END IF
2382# endif
2383!
2384! Define E-P flux (as computed by bulk_flux.F).
2385!
2386 IF (sout(idempf,ng)) THEN
2387 vinfo( 1)=vname(1,idempf)
2388 vinfo( 2)=vname(2,idempf)
2389 vinfo( 3)=vname(3,idempf)
2390 vinfo(11)='upward flux, freshening (net precipitation)'
2391 vinfo(12)='downward flux, salting (net evaporation)'
2392 vinfo(14)=vname(4,idempf)
2393 vinfo(16)=vname(1,idtime)
2394 sta(ng)%pioVar(idempf)%dkind=pio_fout
2395 sta(ng)%pioVar(idempf)%gtype=0
2396!
2397 status=def_var(ng, model, sta(ng)%pioFile, &
2398 & sta(ng)%pioVar(idempf)%vd, &
2399 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2400 & setfillval = .true., &
2401 & setparaccess = .true.)
2402 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2403 END IF
2404# if defined EMINUSP && defined BULK_FLUXES
2405!
2406! Define evaporation rate.
2407!
2408 IF (sout(idevap,ng)) THEN
2409 vinfo( 1)=vname(1,idevap)
2410 vinfo( 2)=vname(2,idevap)
2411 vinfo( 3)=vname(3,idevap)
2412 vinfo(11)='downward flux, freshening (condensation)'
2413 vinfo(12)='upward flux, salting (evaporation)'
2414 vinfo(14)=vname(4,idevap)
2415 vinfo(16)=vname(1,idtime)
2416 sta(ng)%pioVar(idevap)%dkind=pio_fout
2417 sta(ng)%pioVar(idevap)%gtype=0
2418!
2419 status=def_var(ng, model, sta(ng)%pioFile, &
2420 & sta(ng)%pioVar(idevap)%vd, &
2421 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2422 & setfillval = .true., &
2423 & setparaccess = .true.)
2424 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2425 END IF
2426!
2427! Define precipitation rate.
2428!
2429 IF (sout(idrain,ng)) THEN
2430 vinfo( 1)=vname(1,idrain)
2431 vinfo( 2)=vname(2,idrain)
2432 vinfo( 3)=vname(3,idrain)
2433 vinfo(11)='upward flux, salting (NOT POSSIBLE)'
2434 vinfo(12)='downward flux, freshening (precipitation)'
2435 vinfo(14)=vname(4,idrain)
2436 vinfo(16)=vname(1,idtime)
2437 sta(ng)%pioVar(idrain)%dkind=pio_fout
2438 sta(ng)%pioVar(idrain)%gtype=0
2439!
2440 status=def_var(ng, model, sta(ng)%pioFile, &
2441 & sta(ng)%pioVar(idrain)%vd, &
2442 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2443 & setfillval = .true., &
2444 & setparaccess = .true.)
2445 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2446 END IF
2447# endif
2448# endif
2449!
2450! Define surface U-momentum stress.
2451!
2452 IF (sout(idusms,ng)) THEN
2453 vinfo( 1)=vname(1,idusms)
2454 vinfo( 2)=vname(2,idusms)
2455 vinfo( 3)=vname(3,idusms)
2456 vinfo(14)=vname(4,idusms)
2457 vinfo(16)=vname(1,idtime)
2458 sta(ng)%pioVar(idusms)%dkind=pio_fout
2459 sta(ng)%pioVar(idusms)%gtype=0
2460!
2461 status=def_var(ng, model, sta(ng)%pioFile, &
2462 & sta(ng)%pioVar(idusms)%vd, &
2463 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2464 & setfillval = .true., &
2465 & setparaccess = .true.)
2466 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2467 END IF
2468!
2469! Define surface V-momentum stress.
2470!
2471 IF (sout(idvsms,ng)) THEN
2472 vinfo( 1)=vname(1,idvsms)
2473 vinfo( 2)=vname(2,idvsms)
2474 vinfo( 3)=vname(3,idvsms)
2475 vinfo(14)=vname(4,idvsms)
2476 vinfo(16)=vname(1,idtime)
2477 sta(ng)%pioVar(idvsms)%dkind=pio_fout
2478 sta(ng)%pioVar(idvsms)%gtype=0
2479!
2480 status=def_var(ng, model, sta(ng)%pioFile, &
2481 & sta(ng)%pioVar(idvsms)%vd, &
2482 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2483 & setfillval = .true., &
2484 & setparaccess = .true.)
2485 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2486 END IF
2487!
2488! Define bottom U-momentum stress.
2489!
2490 IF (sout(idubms,ng)) THEN
2491 vinfo( 1)=vname(1,idubms)
2492 vinfo( 2)=vname(2,idubms)
2493 vinfo( 3)=vname(3,idubms)
2494 vinfo(14)=vname(4,idubms)
2495 vinfo(16)=vname(1,idtime)
2496 sta(ng)%pioVar(idubms)%dkind=pio_fout
2497 sta(ng)%pioVar(idubms)%gtype=0
2498!
2499 status=def_var(ng, model, sta(ng)%pioFile, &
2500 & sta(ng)%pioVar(idubms)%vd, &
2501 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2502 & setfillval = .true., &
2503 & setparaccess = .true.)
2504 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2505 END IF
2506!
2507! Define bottom V-momentum stress.
2508!
2509 IF (sout(idvbms,ng)) THEN
2510 vinfo( 1)=vname(1,idvbms)
2511 vinfo( 2)=vname(2,idvbms)
2512 vinfo( 3)=vname(3,idvbms)
2513 vinfo(14)=vname(4,idvbms)
2514 vinfo(16)=vname(1,idtime)
2515 sta(ng)%pioVar(idvbms)%dkind=pio_fout
2516 sta(ng)%pioVar(idvbms)%gtype=0
2517!
2518 status=def_var(ng, model, sta(ng)%pioFile, &
2519 & sta(ng)%pioVar(idvbms)%vd, &
2520 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2521 & setfillval = .true., &
2522 & setparaccess = .true.)
2523 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2524 END IF
2525
2526# ifdef WET_DRY
2527!
2528! Write out wet/dry mask at RHO-points.
2529!
2530 IF (sout(idrwet,ng)) THEN
2531 vinfo( 1)=vname(1,idrwet)
2532 vinfo( 2)=vname(2,idrwet)
2533 vinfo( 3)=vname(3,idrwet)
2534 vinfo(14)=vname(4,idrwet)
2535 vinfo(16)=vname(1,idtime)
2536 sta(ng)%pioVar(idrwet)%dkind=pio_fout
2537 sta(ng)%pioVar(idrwet)%gtype=0
2538!
2539 status=def_var(ng, model, sta(ng)%pioFile, &
2540 & sta(ng)%pioVar(idrwet)%vd, &
2541 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2542 & setfillval = .true., &
2543 & setparaccess = .true.)
2544 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2545 END IF
2546!
2547! Write out wet/dry mask at U-points.
2548!
2549 IF (sout(iduwet,ng)) THEN
2550 vinfo( 1)=vname(1,iduwet)
2551 vinfo( 2)=vname(2,iduwet)
2552 vinfo( 3)=vname(3,iduwet)
2553 vinfo(14)=vname(4,iduwet)
2554 vinfo(16)=vname(1,idtime)
2555 sta(ng)%pioVar(iduwet)%dkind=pio_fout
2556 sta(ng)%pioVar(iduwet)%gtype=0
2557!
2558 status=def_var(ng, model, sta(ng)%pioFile, &
2559 & sta(ng)%pioVar(iduwet)%vd, &
2560 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2561 & setfillval = .true., &
2562 & setparaccess = .true.)
2563 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2564 END IF
2565!
2566! Write out wet/dry mask at V-points.
2567!
2568 IF (sout(iduwet,ng)) THEN
2569 vinfo( 1)=vname(1,idvwet)
2570 vinfo( 2)=vname(2,idvwet)
2571 vinfo( 3)=vname(3,idvwet)
2572 vinfo(14)=vname(4,idvwet)
2573 vinfo(16)=vname(1,idtime)
2574 sta(ng)%pioVar(idvwet)%dkind=pio_fout
2575 sta(ng)%pioVar(idvwet)%gtype=0
2576!
2577 status=def_var(ng, model, sta(ng)%pioFile, &
2578 & sta(ng)%pioVar(idvwet)%vd, &
2579 & pio_fout, 2, pgrd, aval, vinfo, ncname, &
2580 & setfillval = .true., &
2581 & setparaccess = .true.)
2582 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2583 END IF
2584# endif
2585
2586# if defined BBL_MODEL || defined WAVES_OUTPUT
2587!
2588!-----------------------------------------------------------------------
2589! Define the bottom boundary layer model or waves variables.
2590!-----------------------------------------------------------------------
2591!
2592 CALL bbl_def_station_pio (ng, model, ldef, sout, sta, &
2593 & pgrd, rgrd)
2594 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2595# endif
2596
2597# ifdef ICE_MODEL
2598!
2599!-----------------------------------------------------------------------
2600! Define the ice model variables.
2601!-----------------------------------------------------------------------
2602!
2603 CALL ice_def_station_pio (ng, model, ldef, sout, sta, &
2604 & pgrd)
2605 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2606# endif
2607
2608# ifdef SEDIMENT
2609!
2610!-----------------------------------------------------------------------
2611! Define the sediment model variables.
2612!-----------------------------------------------------------------------
2613!
2614 CALL sediment_def_station_pio (ng, model, ldef, sout, sta, &
2615 & bgrd, pgrd, rgrd)
2616 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2617# endif
2618
2619# if defined WEC || defined WEC_VF
2620!
2621!-----------------------------------------------------------------------
2622! Define the Waves Effect on Currents variables.
2623!-----------------------------------------------------------------------
2624!
2625 CALL wec_def_station_pio (ng, model, ldef, sout, sta, &
2626 & pgrd, rgrd)
2627 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2628# endif
2629!
2630!-----------------------------------------------------------------------
2631! Leave definition mode.
2632!-----------------------------------------------------------------------
2633!
2634 CALL pio_netcdf_enddef (ng, model, ncname, sta(ng)%pioFile)
2635 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2636!
2637!-----------------------------------------------------------------------
2638! Write out time-recordless, information variables.
2639!-----------------------------------------------------------------------
2640!
2641 CALL wrt_info (ng, model, sta(ng)%pioFile, ncname)
2642 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2643
2644 END IF define
2645!
2646!=======================================================================
2647! Open an existing stations file, check its contents, and prepare for
2648! appending data.
2649!=======================================================================
2650!
2651 query : IF (.not.ldef) THEN
2652 ncname=sta(ng)%name
2653!
2654! Open stations file for read/write.
2655!
2656 CALL pio_netcdf_open (ng, model, ncname, 1, sta(ng)%pioFile)
2657 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
2658 WRITE (stdout,50) trim(ncname)
2659 RETURN
2660 END IF
2661!
2662! Inquire about the dimensions and check for consistency.
2663!
2664 CALL pio_netcdf_check_dim (ng, model, ncname, &
2665 & piofile = sta(ng)%pioFile)
2666 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2667!
2668! Inquire about the variables.
2669!
2670 CALL pio_netcdf_inq_var (ng, model, ncname, &
2671 & piofile = sta(ng)%pioFile)
2672 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2673!
2674! Initialize logical switches.
2675!
2676 DO i=1,nv
2677 got_var(i)=.false.
2678 END DO
2679!
2680! Scan variable list from input NetCDF and activate switches for
2681! stations variables. Get variable IDs.
2682!
2683 DO i=1,n_var
2684 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
2685 got_var(idtime)=.true.
2686 sta(ng)%pioVar(idtime)%vd=var_desc(i)
2687 sta(ng)%pioVar(idtime)%dkind=pio_tout
2688 sta(ng)%pioVar(idtime)%gtype=0
2689 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
2690 got_var(idfsur)=.true.
2691 sta(ng)%pioVar(idfsur)%vd=var_desc(i)
2692 sta(ng)%pioVar(idfsur)%dkind=pio_fout
2693 sta(ng)%pioVar(idfsur)%gtype=0
2694 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
2695 got_var(idubar)=.true.
2696 sta(ng)%pioVar(idubar)%vd=var_desc(i)
2697 sta(ng)%pioVar(idubar)%dkind=pio_fout
2698 sta(ng)%pioVar(idubar)%gtype=0
2699 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
2700 got_var(idvbar)=.true.
2701 sta(ng)%pioVar(idvbar)%vd=var_desc(i)
2702 sta(ng)%pioVar(idvbar)%dkind=pio_fout
2703 sta(ng)%pioVar(idvbar)%gtype=0
2704 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
2705 got_var(idu2de)=.true.
2706 sta(ng)%pioVar(idu2de)%vd=var_desc(i)
2707 sta(ng)%pioVar(idu2de)%dkind=pio_fout
2708 sta(ng)%pioVar(idu2de)%gtype=0
2709 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
2710 got_var(idv2dn)=.true.
2711 sta(ng)%pioVar(idv2dn)%vd=var_desc(i)
2712 sta(ng)%pioVar(idv2dn)%dkind=pio_fout
2713 sta(ng)%pioVar(idv2dn)%gtype=0
2714# ifdef SOLVE3D
2715 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
2716 got_var(iduvel)=.true.
2717 sta(ng)%pioVar(iduvel)%vd=var_desc(i)
2718 sta(ng)%pioVar(iduvel)%dkind=pio_fout
2719 sta(ng)%pioVar(iduvel)%gtype=0
2720 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
2721 got_var(idvvel)=.true.
2722 sta(ng)%pioVar(idvvel)%vd=var_desc(i)
2723 sta(ng)%pioVar(idvvel)%dkind=pio_fout
2724 sta(ng)%pioVar(idvvel)%gtype=0
2725 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
2726 got_var(idu3de)=.true.
2727 sta(ng)%pioVar(idu3de)%vd=var_desc(i)
2728 sta(ng)%pioVar(idu3de)%dkind=pio_fout
2729 sta(ng)%pioVar(idu3de)%gtype=0
2730 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
2731 got_var(idv3dn)=.true.
2732 sta(ng)%pioVar(idv3dn)%vd=var_desc(i)
2733 sta(ng)%pioVar(idv3dn)%dkind=pio_fout
2734 sta(ng)%pioVar(idv3dn)%gtype=0
2735 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
2736 got_var(idwvel)=.true.
2737 sta(ng)%pioVar(idwvel)%vd=var_desc(i)
2738 sta(ng)%pioVar(idwvel)%dkind=pio_fout
2739 sta(ng)%pioVar(idwvel)%gtype=0
2740 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
2741 got_var(idovel)=.true.
2742 sta(ng)%pioVar(idovel)%vd=var_desc(i)
2743 sta(ng)%pioVar(idovel)%dkind=pio_fout
2744 sta(ng)%pioVar(idovel)%gtype=0
2745 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
2746 got_var(iddano)=.true.
2747 sta(ng)%pioVar(iddano)%vd=var_desc(i)
2748 sta(ng)%pioVar(iddano)%dkind=pio_fout
2749 sta(ng)%pioVar(iddano)%gtype=0
2750# ifdef LMD_SKPP
2751 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
2752 got_var(idhsbl)=.true.
2753 sta(ng)%pioVar(idhsbl)%vd=var_desc(i)
2754 sta(ng)%pioVar(idhsbl)%dkind=pio_fout
2755 sta(ng)%pioVar(idhsbl)%gtype=0
2756# endif
2757# ifdef LMD_BKPP
2758 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
2759 got_var(idhbbl)=.true.
2760 sta(ng)%pioVar(idhbbl)%vd=var_desc(i)
2761 sta(ng)%pioVar(idhbbl)%dkind=pio_fout
2762 sta(ng)%pioVar(idhbbl)%gtype=0
2763# endif
2764 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
2765 got_var(idvvis)=.true.
2766 sta(ng)%pioVar(idvvis)%vd=var_desc(i)
2767 sta(ng)%pioVar(idvvis)%dkind=pio_fout
2768 sta(ng)%pioVar(idvvis)%gtype=0
2769 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
2770 got_var(idtdif)=.true.
2771 sta(ng)%pioVar(idtdif)%vd=var_desc(i)
2772 sta(ng)%pioVar(idtdif)%dkind=pio_fout
2773 sta(ng)%pioVar(idtdif)%gtype=0
2774 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
2775 got_var(idsdif)=.true.
2776 sta(ng)%pioVar(idsdif)%vd=var_desc(i)
2777 sta(ng)%pioVar(idsdif)%dkind=pio_fout
2778 sta(ng)%pioVar(idsdif)%gtype=0
2779# if defined GLS_MIXING || defined MY25_MIXING
2780 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
2781 got_var(idmtke)=.true.
2782 sta(ng)%pioVar(idmtke)%vd=var_desc(i)
2783 sta(ng)%pioVar(idmtke)%dkind=pio_fout
2784 sta(ng)%pioVar(idmtke)%gtype=0
2785 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
2786 got_var(idmtls)=.true.
2787 sta(ng)%pioVar(idmtls)%vd=var_desc(i)
2788 sta(ng)%pioVar(idmtls)%dkind=pio_fout
2789 sta(ng)%pioVar(idmtls)%gtype=0
2790# endif
2791# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2792 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
2793 got_var(idpair)=.true.
2794 sta(ng)%pioVar(idpair)%vd=var_desc(i)
2795 sta(ng)%pioVar(idpair)%dkind=pio_fout
2796 sta(ng)%pioVar(idpair)%gtype=0
2797# endif
2798# if defined BULK_FLUXES || defined ECOSIM
2799 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
2800 got_var(iduair)=.true.
2801 sta(ng)%pioVar(iduair)%vd=var_desc(i)
2802 sta(ng)%pioVar(iduair)%dkind=pio_fout
2803 sta(ng)%pioVar(iduair)%gtype=0
2804 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
2805 got_var(idvair)=.true.
2806 sta(ng)%pioVar(idvair)%vd=var_desc(i)
2807 sta(ng)%pioVar(idvair)%dkind=pio_fout
2808 sta(ng)%pioVar(idvair)%gtype=0
2809# endif
2810 ELSE IF (trim(var_name(i)).eq. &
2811 & trim(vname(1,idtsur(itemp)))) THEN
2812 got_var(idtsur(itemp))=.true.
2813 sta(ng)%pioVar(idtsur(itemp))%vd=var_desc(i)
2814 sta(ng)%pioVar(idtsur(itemp))%dkind=pio_fout
2815 sta(ng)%pioVar(idtsur(itemp))%gtype=0
2816 ELSE IF (trim(var_name(i)).eq. &
2817 & trim(vname(1,idtsur(isalt)))) THEN
2818 got_var(idtsur(isalt))=.true.
2819 sta(ng)%pioVar(idtsur(isalt))%vd=var_desc(i)
2820 sta(ng)%pioVar(idtsur(isalt))%dkind=pio_fout
2821 sta(ng)%pioVar(idtsur(isalt))%gtype=0
2822# ifdef BULK_FLUXES
2823 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
2824 got_var(idlhea)=.true.
2825 sta(ng)%pioVar(idlhea)%vd=var_desc(i)
2826 sta(ng)%pioVar(idlhea)%dkind=pio_fout
2827 sta(ng)%pioVar(idlhea)%gtype=0
2828 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
2829 got_var(idshea)=.true.
2830 sta(ng)%pioVar(idshea)%vd=var_desc(i)
2831 sta(ng)%pioVar(idshea)%dkind=pio_fout
2832 sta(ng)%pioVar(idshea)%gtype=0
2833 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
2834 got_var(idlrad)=.true.
2835 sta(ng)%pioVar(idlrad)%vd=var_desc(i)
2836 sta(ng)%pioVar(idlrad)%dkind=pio_fout
2837 sta(ng)%pioVar(idlrad)%gtype=0
2838# endif
2839# ifdef SHORTWAVE
2840 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
2841 got_var(idsrad)=.true.
2842 sta(ng)%pioVar(idsrad)%vd=var_desc(i)
2843 sta(ng)%pioVar(idsrad)%dkind=pio_fout
2844 sta(ng)%pioVar(idsrad)%gtype=0
2845# endif
2846 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idempf))) THEN
2847 got_var(idempf)=.true.
2848 sta(ng)%pioVar(idempf)%vd=var_desc(i)
2849 sta(ng)%pioVar(idempf)%dkind=pio_fout
2850 sta(ng)%pioVar(idempf)%gtype=0
2851# if defined EMINUSP && defined BULK_FLUXES
2852 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
2853 got_var(idevap)=.true.
2854 sta(ng)%pioVar(idevap)%vd=var_desc(i)
2855 sta(ng)%pioVar(idevap)%dkind=pio_fout
2856 sta(ng)%pioVar(idevap)%gtype=0
2857 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
2858 got_var(idrain)=.true.
2859 sta(ng)%pioVar(idrain)%vd=var_desc(i)
2860 sta(ng)%pioVar(idrain)%dkind=pio_fout
2861 sta(ng)%pioVar(idrain)%gtype=0
2862# endif
2863# endif
2864 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
2865 got_var(idusms)=.true.
2866 sta(ng)%pioVar(idusms)%vd=var_desc(i)
2867 sta(ng)%pioVar(idusms)%dkind=pio_fout
2868 sta(ng)%pioVar(idusms)%gtype=0
2869 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
2870 got_var(idvsms)=.true.
2871 sta(ng)%pioVar(idvsms)%vd=var_desc(i)
2872 sta(ng)%pioVar(idvsms)%dkind=pio_fout
2873 sta(ng)%pioVar(idvsms)%gtype=0
2874 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
2875 got_var(idubms)=.true.
2876 sta(ng)%pioVar(idubms)%vd=var_desc(i)
2877 sta(ng)%pioVar(idubms)%dkind=pio_fout
2878 sta(ng)%pioVar(idubms)%gtype=0
2879 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
2880 got_var(idvbms)=.true.
2881 sta(ng)%pioVar(idvbms)%vd=var_desc(i)
2882 sta(ng)%pioVar(idvbms)%dkind=pio_fout
2883 sta(ng)%pioVar(idvbms)%gtype=0
2884# ifdef WET_DRY
2885 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
2886 got_var(idrwet)=.true.
2887 sta(ng)%pioVar(idrwet)%vd=var_desc(i)
2888 sta(ng)%pioVar(idrwet)%dkind=pio_fout
2889 sta(ng)%pioVar(idrwet)%gtype=0
2890 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduwet))) THEN
2891 got_var(iduwet)=.true.
2892 sta(ng)%pioVar(iduwet)%vd=var_desc(i)
2893 sta(ng)%pioVar(iduwet)%dkind=pio_fout
2894 sta(ng)%pioVar(iduwet)%gtype=0
2895 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvwet))) THEN
2896 got_var(idvwet)=.true.
2897 sta(ng)%pioVar(idvwet)%vd=var_desc(i)
2898 sta(ng)%pioVar(idvwet)%dkind=pio_fout
2899 sta(ng)%pioVar(idvwet)%gtype=0
2900# endif
2901 END IF
2902# ifdef SOLVE3D
2903 DO itrc=1,nt(ng)
2904 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
2905 got_var(idtvar(itrc))=.true.
2906 sta(ng)%pioTrc(itrc)%vd=var_desc(i)
2907 sta(ng)%pioTrc(itrc)%dkind=pio_fout
2908 sta(ng)%pioTrc(itrc)%gtype=0
2909 END IF
2910 END DO
2911# endif
2912 END DO
2913!
2914! Check if station variables are available in input NetCDF file.
2915!
2916 IF (.not.got_var(idtime)) THEN
2917 IF (master) WRITE (stdout,60) trim(vname(1,idtime)), &
2918 & trim(ncname)
2919 exit_flag=3
2920 RETURN
2921 END IF
2922 IF (.not.got_var(idfsur).and.sout(idfsur,ng)) THEN
2923 IF (master) WRITE (stdout,60) trim(vname(1,idfsur)), &
2924 & trim(ncname)
2925 exit_flag=3
2926 RETURN
2927 END IF
2928
2929 IF (.not.got_var(idubar).and.sout(idubar,ng)) THEN
2930 IF (master) WRITE (stdout,60) trim(vname(1,idubar)), &
2931 & trim(ncname)
2932 exit_flag=3
2933 RETURN
2934 END IF
2935 IF (.not.got_var(idvbar).and.sout(idvbar,ng)) THEN
2936 IF (master) WRITE (stdout,60) trim(vname(1,idvbar)), &
2937 & trim(ncname)
2938 exit_flag=3
2939 RETURN
2940 END IF
2941 IF (.not.got_var(idu2de).and.sout(idu2de,ng)) THEN
2942 IF (master) WRITE (stdout,60) trim(vname(1,idu2de)), &
2943 & trim(ncname)
2944 exit_flag=3
2945 RETURN
2946 END IF
2947 IF (.not.got_var(idv2dn).and.sout(idv2dn,ng)) THEN
2948 IF (master) WRITE (stdout,60) trim(vname(1,idv2dn)), &
2949 & trim(ncname)
2950 exit_flag=3
2951 RETURN
2952 END IF
2953# ifdef SOLVE3D
2954 IF (.not.got_var(iduvel).and.sout(iduvel,ng)) THEN
2955 IF (master) WRITE (stdout,60) trim(vname(1,iduvel)), &
2956 & trim(ncname)
2957 exit_flag=3
2958 RETURN
2959 END IF
2960 IF (.not.got_var(idvvel).and.sout(idvvel,ng)) THEN
2961 IF (master) WRITE (stdout,60) trim(vname(1,idvvel)), &
2962 & trim(ncname)
2963 exit_flag=3
2964 RETURN
2965 END IF
2966 IF (.not.got_var(idu3de).and.sout(idu3de,ng)) THEN
2967 IF (master) WRITE (stdout,60) trim(vname(1,idu3de)), &
2968 & trim(ncname)
2969 exit_flag=3
2970 RETURN
2971 END IF
2972 IF (.not.got_var(idv3dn).and.sout(idv3dn,ng)) THEN
2973 IF (master) WRITE (stdout,60) trim(vname(1,idv3dn)), &
2974 & trim(ncname)
2975 exit_flag=3
2976 RETURN
2977 END IF
2978 IF (.not.got_var(idwvel).and.sout(idwvel,ng)) THEN
2979 IF (master) WRITE (stdout,60) trim(vname(1,idwvel)), &
2980 & trim(ncname)
2981 exit_flag=3
2982 RETURN
2983 END IF
2984 IF (.not.got_var(idovel).and.sout(idovel,ng)) THEN
2985 IF (master) WRITE(stdout,60) trim(vname(1,idovel)), &
2986 & trim(ncname)
2987 exit_flag=3
2988 RETURN
2989 END IF
2990 IF (.not.got_var(iddano).and.sout(iddano,ng)) THEN
2991 IF (master) WRITE (stdout,60) trim(vname(1,iddano)), &
2992 & trim(ncname)
2993 exit_flag=3
2994 RETURN
2995 END IF
2996# ifdef LMD_SKPP
2997 IF (.not.got_var(idhsbl).and.sout(idhsbl,ng)) THEN
2998 IF (master) WRITE (stdout,60) trim(vname(1,idhsbl)), &
2999 & trim(ncname)
3000 exit_flag=3
3001 RETURN
3002 END IF
3003# endif
3004# ifdef LMD_BKPP
3005 IF (.not.got_var(idhbbl).and.sout(idhbbl,ng)) THEN
3006 IF (master) WRITE (stdout,60) trim(vname(1,idhbbl)), &
3007 & trim(ncname)
3008 exit_flag=3
3009 RETURN
3010 END IF
3011# endif
3012 IF (.not.got_var(idvvis).and.sout(idvvis,ng)) THEN
3013 IF (master) WRITE (stdout,60) trim(vname(1,idvvis)), &
3014 & trim(ncname)
3015 exit_flag=3
3016 RETURN
3017 END IF
3018 IF (.not.got_var(idtdif).and.sout(idtdif,ng)) THEN
3019 IF (master) WRITE (stdout,60) trim(vname(1,idtdif)), &
3020 & trim(ncname)
3021 exit_flag=3
3022 RETURN
3023 END IF
3024# ifdef SALINITY
3025 IF (.not.got_var(idsdif).and.sout(idsdif,ng)) THEN
3026 IF (master) WRITE (stdout,60) trim(vname(1,idsdif)), &
3027 & trim(ncname)
3028 exit_flag=3
3029 RETURN
3030 END IF
3031# endif
3032# if defined GLS_MIXING || defined MY25_MIXING
3033 IF (.not.got_var(idmtke).and.sout(idmtke,ng)) THEN
3034 IF (master) WRITE (stdout,60) trim(vname(1,idmtke)), &
3035 & trim(ncname)
3036 exit_flag=3
3037 RETURN
3038 END IF
3039 IF (.not.got_var(idmtls).and.sout(idmtls,ng)) THEN
3040 IF (master) WRITE (stdout,60) trim(vname(1,idmtls)), &
3041 & trim(ncname)
3042 exit_flag=3
3043 RETURN
3044 END IF
3045# endif
3046# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
3047 IF (.not.got_var(idpair).and.sout(idpair,ng)) THEN
3048 IF (master) WRITE (stdout,60) trim(vname(1,idpair)), &
3049 & trim(ncname)
3050 exit_flag=3
3051 RETURN
3052 END IF
3053# endif
3054# if defined BULK_FLUXES || defined ECOSIM
3055 IF (.not.got_var(iduair).and.sout(iduair,ng)) THEN
3056 IF (master) WRITE (stdout,60) trim(vname(1,iduair)), &
3057 & trim(ncname)
3058 exit_flag=3
3059 RETURN
3060 END IF
3061 IF (.not.got_var(idvair).and.sout(idvair,ng)) THEN
3062 IF (master) WRITE (stdout,60) trim(vname(1,idvair)), &
3063 & trim(ncname)
3064 exit_flag=3
3065 RETURN
3066 END IF
3067# endif
3068 IF (.not.got_var(idtsur(itemp)).and.sout(idtsur(itemp),ng)) THEN
3069 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(itemp))), &
3070 & trim(ncname)
3071 exit_flag=3
3072 RETURN
3073 END IF
3074 IF (.not.got_var(idtsur(isalt)).and.sout(idtsur(isalt),ng)) THEN
3075 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(isalt))), &
3076 & trim(ncname)
3077 exit_flag=3
3078 RETURN
3079 END IF
3080# ifdef BULK_FLUXES
3081 IF (.not.got_var(idlhea).and.sout(idlhea,ng)) THEN
3082 IF (master) WRITE (stdout,60) trim(vname(1,idlhea)), &
3083 & trim(ncname)
3084 exit_flag=3
3085 RETURN
3086 END IF
3087 IF (.not.got_var(idshea).and.sout(idshea,ng)) THEN
3088 IF (master) WRITE (stdout,60) trim(vname(1,idshea)), &
3089 & trim(ncname)
3090 exit_flag=3
3091 RETURN
3092 END IF
3093 IF (.not.got_var(idlrad).and.sout(idlrad,ng)) THEN
3094 IF (master) WRITE (stdout,60) trim(vname(1,idlrad)), &
3095 & trim(ncname)
3096 exit_flag=3
3097 RETURN
3098 END IF
3099# endif
3100# ifdef SHORTWAVE
3101 IF (.not.got_var(idsrad).and.sout(idsrad,ng)) THEN
3102 IF (master) WRITE (stdout,60) trim(vname(1,idsrad)), &
3103 & trim(ncname)
3104 exit_flag=3
3105 RETURN
3106 END IF
3107# endif
3108 IF (.not.got_var(idempf).and.sout(idempf,ng)) THEN
3109 IF (master) WRITE (stdout,60) trim(vname(1,idempf)), &
3110 & trim(ncname)
3111 exit_flag=3
3112 RETURN
3113 END IF
3114# if defined EMINUSP && defined BULK_FLUXES
3115 IF (.not.got_var(idevap).and.sout(idevap,ng)) THEN
3116 IF (master) WRITE (stdout,60) trim(vname(1,idevap)), &
3117 & trim(ncname)
3118 exit_flag=3
3119 RETURN
3120 END IF
3121 IF (.not.got_var(idrain).and.sout(idrain,ng)) THEN
3122 IF (master) WRITE (stdout,60) trim(vname(1,idrain)), &
3123 & trim(ncname)
3124 exit_flag=3
3125 RETURN
3126 END IF
3127# endif
3128# endif
3129 IF (.not.got_var(idusms).and.sout(idusms,ng)) THEN
3130 IF (master) WRITE (stdout,60) trim(vname(1,idusms)), &
3131 & trim(ncname)
3132 exit_flag=3
3133 RETURN
3134 END IF
3135 IF (.not.got_var(idvsms).and.sout(idvsms,ng)) THEN
3136 IF (master) WRITE (stdout,60) trim(vname(1,idvsms)), &
3137 & trim(ncname)
3138 exit_flag=3
3139 RETURN
3140 END IF
3141 IF (.not.got_var(idubms).and.sout(idubms,ng)) THEN
3142 IF (master) WRITE (stdout,60) trim(vname(1,idubms)), &
3143 & trim(ncname)
3144 exit_flag=3
3145 RETURN
3146 END IF
3147 IF (.not.got_var(idvbms).and.sout(idvbms,ng)) THEN
3148 IF (master) WRITE (stdout,60) trim(vname(1,idvbms)), &
3149 & trim(ncname)
3150 exit_flag=3
3151 RETURN
3152 END IF
3153# ifdef WET_DRY
3154 IF (.not.got_var(idrwet).and.sout(idrwet,ng)) THEN
3155 IF (master) WRITE (stdout,60) trim(vname(1,idrwet)), &
3156 & trim(ncname)
3157 exit_flag=3
3158 RETURN
3159 END IF
3160 IF (.not.got_var(iduwet).and.sout(iduwet,ng)) THEN
3161 IF (master) WRITE (stdout,60) trim(vname(1,iduwet)), &
3162 & trim(ncname)
3163 exit_flag=3
3164 RETURN
3165 END IF
3166 IF (.not.got_var(idvwet).and.sout(idvwet,ng)) THEN
3167 IF (master) WRITE (stdout,60) trim(vname(1,idvwet)), &
3168 & trim(ncname)
3169 exit_flag=3
3170 RETURN
3171 END IF
3172# endif
3173# ifdef SOLVE3D
3174 DO itrc=1,nt(ng)
3175 IF (.not.got_var(idtvar(itrc)).and.sout(idtvar(itrc),ng)) THEN
3176 IF (master) WRITE (stdout,60) trim(vname(1,idtvar(itrc))), &
3177 & trim(ncname)
3178 exit_flag=3
3179 RETURN
3180 END IF
3181 END DO
3182# endif
3183
3184# if defined BBL_MODEL || defined WAVES_OUTPUT
3185!
3186! Scan bottom boundary layer model and waves variables from input
3187! NetCDF and activate switches for station variables. Get variable IDs.
3188!
3189 CALL bbl_def_station_pio (ng, model, ldef, sout, sta)
3190 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3191# endif
3192
3193# ifdef ICE_MODEL
3194!
3195! Scan ice model variables from input NetCDF and activate switches for
3196! station variables. Get variable IDs.
3197!
3198 CALL ice_def_station_pio (ng, model, ldef, sout, sta)
3199 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3200# endif
3201
3202# ifdef SEDIMENT
3203!
3204! Scan sediment model variables from input NetCDF and activate
3205! switches for station variables. Get variable IDs.
3206!
3207 CALL sediment_def_pio (ng, model, ldef, sout, sta)
3208 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3209# endif
3210
3211# if defined WEC || defined WEC_VF
3212!
3213! Scan Waves Effect on Currents variables from input NetCDF and
3214! activate switches for stations variables. Get variable IDs.
3215!
3216 CALL wec_def_station_pio (ng, model, ldef, sout, sta)
3217 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3218# endif
3219!
3220! Set unlimited time record dimension to the appropriate value.
3221!
3222!! STA(ng)%Rindex=rec_size
3223 sta(ng)%Rindex=(ntstart(ng)-1)/nsta(ng)
3224 END IF query
3225!
3226 10 FORMAT (2x,'DEF_STATION_PIO - creating stations file,',t56, &
3227 & 'Grid ',i2.2,': ',a)
3228 20 FORMAT (2x,'DEF_STATION_PIO - inquiring stations file',t56, &
3229 & 'Grid ',i2.2,': ',a)
3230 30 FORMAT (/,' DEF_STATION_PIO - unable to create stations NetCDF', &
3231 & ' file: ',a)
3232 40 FORMAT (1pe11.4,1x,'millimeter')
3233 50 FORMAT (/,' DEF_STATION_PIO - unable to open stations NetCDF', &
3234 & ' file: ',a)
3235 60 FORMAT (/,' DEF_STATION_PIO - unable to find variable: ',a,2x, &
3236 & ' in stations NetCDF file: ',a)
3237!
3238 RETURN
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)

References bbl_output_mod::bbl_def_station_pio(), mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::iddano, mod_ncparam::idempf, mod_ncparam::idevap, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idmtke, mod_ncparam::idmtls, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtsur, mod_ncparam::idtvar, mod_ncparam::idu2de, mod_ncparam::idu3de, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idusms, mod_ncparam::iduvel, mod_ncparam::iduwet, mod_ncparam::idv2dn, mod_ncparam::idv3dn, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvsms, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwet, mod_ncparam::idwvel, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_biology::ndom, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_param::nst, mod_scalars::nsta, mod_fourdvar::nstatevar, mod_param::nstation, mod_param::nt, mod_scalars::ntstart, mod_ncparam::nv, mod_pio_netcdf::pio_fout, mod_pio_netcdf::pio_netcdf_check_dim(), mod_pio_netcdf::pio_netcdf_create(), mod_pio_netcdf::pio_netcdf_enddef(), mod_pio_netcdf::pio_netcdf_inq_var(), mod_pio_netcdf::pio_netcdf_open(), mod_pio_netcdf::pio_tout, mod_scalars::rclock, mod_sediment::sd50, sediment_output_mod::sediment_def_pio(), sediment_output_mod::sediment_def_station_pio(), mod_iounits::sourcefile, mod_ncparam::sout, mod_iounits::sta, mod_iounits::stdout, mod_pio_netcdf::var_desc, and mod_ncparam::vname.

Referenced by def_station().

Here is the call graph for this function:
Here is the caller graph for this function: