ROMS
Loading...
Searching...
No Matches
ecosim_var.h
Go to the documentation of this file.
1/*
2** git $id$
3*************************************************** hernan g. arango ***
4** copyright(c) 2002-2025 the roms group **
5** licensed under a mit/x style license **
6** see license_roms.md **
7************************************************************************
8** **
9** assigns metadata indices for the ecosim bio-optical model **
10** variables that are used in input and output netcdf files. **
11** the metadata information is read from "varinfo.yaml". **
12** **
13** this file is included in file "mod_ncparam.F", routine **
14** "initialize_ncparm". **
15** **
16************************************************************************
17*/
18
19/*
20** model state biological tracers.
21*/
22
23 CASE ('idTvar(iNO3_)')
24 idtvar(ino3_)=varid
25 CASE ('idTvar(iNH4_)')
26 idtvar(inh4_)=varid
27 CASE ('idTvar(iPO4_)')
28 idtvar(ipo4_)=varid
29 CASE ('idTvar(iFeO_)')
30 idtvar(ifeo_)=varid
31 CASE ('idTvar(iSiO_)')
32 idtvar(isio_)=varid
33 CASE ('idTvar(iDIC_)')
34 idtvar(idic_)=varid
35 CASE ('idTvar(iBacC)')
36 load=.false.
37 varid=varid-1
38 DO i=1,nbac
39 varid=varid+1
40 idtvar(ibacc(i))=varid
41 DO ng=1,ngrids
42 fscale(varid,ng)=scale
43 iinfo(1,varid,ng)=gtype
44 END DO
45 WRITE (vname(1,varid),'(a,i1)') &
46 & trim(adjustl(vinfo(1))), i
47 WRITE (vname(2,varid),'(a,1x,i1)') &
48 & trim(adjustl(vinfo(2))), i
49 WRITE (vname(3,varid),'(a)') &
50 & trim(adjustl(vinfo(3)))
51 WRITE (vname(4,varid),'(a,1x,i1)') &
52 & trim(adjustl(vinfo(4))), i
53 WRITE (vname(5,varid),'(a)') &
54 & trim(adjustl(vinfo(5)))
55 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
56 CALL standardname (vname(6,varid), string, &
57 & suffix='_in_sea_water')
58 END DO
59 varid=varid+1
60 CASE ('idTvar(iBacF)')
61 load=.false.
62 varid=varid-1
63 DO i=1,nbac
64 varid=varid+1
65 idtvar(ibacf(i))=varid
66 DO ng=1,ngrids
67 fscale(varid,ng)=scale
68 iinfo(1,varid,ng)=gtype
69 END DO
70 WRITE (vname(1,varid),'(a,i1)') &
71 & trim(adjustl(vinfo(1))), i
72 WRITE (vname(2,varid),'(a,1x,i1)') &
73 & trim(adjustl(vinfo(2))), i
74 WRITE (vname(3,varid),'(a)') &
75 & trim(adjustl(vinfo(3)))
76 WRITE (vname(4,varid),'(a,1x,i1)') &
77 & trim(adjustl(vinfo(4))), i
78 WRITE (vname(5,varid),'(a)') &
79 & trim(adjustl(vinfo(5)))
80 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
81 CALL standardname (vname(6,varid), string, &
82 & suffix='_in_sea_water')
83 END DO
84 varid=varid+1
85 CASE ('idTvar(iBacN)')
86 load=.false.
87 varid=varid-1
88 DO i=1,nbac
89 varid=varid+1
90 idtvar(ibacn(i))=varid
91 DO ng=1,ngrids
92 fscale(varid,ng)=scale
93 iinfo(1,varid,ng)=gtype
94 END DO
95 WRITE (vname(1,varid),'(a,i1)') &
96 & trim(adjustl(vinfo(1))), i
97 WRITE (vname(2,varid),'(a,1x,i1)') &
98 & trim(adjustl(vinfo(2))), i
99 WRITE (vname(3,varid),'(a)') &
100 & trim(adjustl(vinfo(3)))
101 WRITE (vname(4,varid),'(a,1x,i1)') &
102 & trim(adjustl(vinfo(4))), i
103 WRITE (vname(5,varid),'(a)') &
104 & trim(adjustl(vinfo(5)))
105 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
106 CALL standardname (vname(6,varid), string, &
107 & suffix='_in_sea_water')
108 END DO
109 varid=varid+1
110 CASE ('idTvar(iBacP)')
111 load=.false.
112 varid=varid-1
113 DO i=1,nbac
114 varid=varid+1
115 idtvar(ibacp(i))=varid
116 DO ng=1,ngrids
117 fscale(varid,ng)=scale
118 iinfo(1,varid,ng)=gtype
119 END DO
120 WRITE (vname(1,varid),'(a,i1)') &
121 & trim(adjustl(vinfo(1))), i
122 WRITE (vname(2,varid),'(a,1x,i1)') &
123 & trim(adjustl(vinfo(2))), i
124 WRITE (vname(3,varid),'(a)') &
125 & trim(adjustl(vinfo(3)))
126 WRITE (vname(4,varid),'(a,1x,i1)') &
127 & trim(adjustl(vinfo(4))), i
128 WRITE (vname(5,varid),'(a)') &
129 & trim(adjustl(vinfo(5)))
130 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
131 CALL standardname (vname(6,varid), string, &
132 & suffix='_in_sea_water')
133 END DO
134 varid=varid+1
135 CASE ('idTvar(iCDMC)')
136 load=.false.
137 varid=varid-1
138 DO i=1,ndom
139 varid=varid+1
140 idtvar(icdmc(i))=varid
141 DO ng=1,ngrids
142 fscale(varid,ng)=scale
143 iinfo(1,varid,ng)=gtype
144 END DO
145 WRITE (vname(1,varid),'(a,i1)') &
146 & trim(adjustl(vinfo(1))), i
147 WRITE (vname(2,varid),'(a,1x,i1)') &
148 & trim(adjustl(vinfo(2))), i
149 WRITE (vname(3,varid),'(a)') &
150 & trim(adjustl(vinfo(3)))
151 WRITE (vname(4,varid),'(a,1x,i1)') &
152 & trim(adjustl(vinfo(4))), i
153 WRITE (vname(5,varid),'(a)') &
154 & trim(adjustl(vinfo(5)))
155 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
156 CALL standardname (vname(6,varid), string, &
157 & suffix='_in_sea_water')
158 END DO
159 varid=varid+1
160 CASE ('idTvar(iDOMC)')
161 load=.false.
162 varid=varid-1
163 DO i=1,ndom
164 varid=varid+1
165 idtvar(idomc(i))=varid
166 DO ng=1,ngrids
167 fscale(varid,ng)=scale
168 iinfo(1,varid,ng)=gtype
169 END DO
170 WRITE (vname(1,varid),'(a,i1)') &
171 & trim(adjustl(vinfo(1))), i
172 WRITE (vname(2,varid),'(a,1x,i1)') &
173 & trim(adjustl(vinfo(2))), i
174 WRITE (vname(3,varid),'(a)') &
175 & trim(adjustl(vinfo(3)))
176 WRITE (vname(4,varid),'(a,1x,i1)') &
177 & trim(adjustl(vinfo(4))), i
178 WRITE (vname(5,varid),'(a)') &
179 & trim(adjustl(vinfo(5)))
180 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
181 CALL standardname (vname(6,varid), string, &
182 & suffix='_in_sea_water')
183 END DO
184 varid=varid+1
185 CASE ('idTvar(iDOMN)')
186 load=.false.
187 varid=varid-1
188 DO i=1,ndom
189 varid=varid+1
190 idtvar(idomn(i))=varid
191 DO ng=1,ngrids
192 fscale(varid,ng)=scale
193 iinfo(1,varid,ng)=gtype
194 END DO
195 WRITE (vname(1,varid),'(a,i1)') &
196 & trim(adjustl(vinfo(1))), i
197 WRITE (vname(2,varid),'(a,1x,i1)') &
198 & trim(adjustl(vinfo(2))), i
199 WRITE (vname(3,varid),'(a)') &
200 & trim(adjustl(vinfo(3)))
201 WRITE (vname(4,varid),'(a,1x,i1)') &
202 & trim(adjustl(vinfo(4))), i
203 WRITE (vname(5,varid),'(a)') &
204 & trim(adjustl(vinfo(5)))
205 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
206 CALL standardname (vname(6,varid), string, &
207 & suffix='_in_sea_water')
208 END DO
209 varid=varid+1
210 CASE ('idTvar(iDOMP)')
211 load=.false.
212 varid=varid-1
213 DO i=1,ndom
214 varid=varid+1
215 idtvar(idomp(i))=varid
216 DO ng=1,ngrids
217 fscale(varid,ng)=scale
218 iinfo(1,varid,ng)=gtype
219 END DO
220 WRITE (vname(1,varid),'(a,i1)') &
221 & trim(adjustl(vinfo(1))), i
222 WRITE (vname(2,varid),'(a,1x,i1)') &
223 & trim(adjustl(vinfo(2))), i
224 WRITE (vname(3,varid),'(a)') &
225 & trim(adjustl(vinfo(3)))
226 WRITE (vname(4,varid),'(a,1x,i1)') &
227 & trim(adjustl(vinfo(4))), i
228 WRITE (vname(5,varid),'(a)') &
229 & trim(adjustl(vinfo(5)))
230 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
231 CALL standardname (vname(6,varid), string, &
232 & suffix='_in_sea_water')
233 END DO
234 varid=varid+1
235 CASE ('idTvar(iFecC)')
236 load=.false.
237 varid=varid-1
238 DO i=1,nfec
239 varid=varid+1
240 idtvar(ifecc(i))=varid
241 DO ng=1,ngrids
242 fscale(varid,ng)=scale
243 iinfo(1,varid,ng)=gtype
244 END DO
245 WRITE (vname(1,varid),'(a,i1)') &
246 & trim(adjustl(vinfo(1))), i
247 WRITE (vname(2,varid),'(a,1x,i1)') &
248 & trim(adjustl(vinfo(2))), i
249 WRITE (vname(3,varid),'(a)') &
250 & trim(adjustl(vinfo(3)))
251 WRITE (vname(4,varid),'(a,1x,i1)') &
252 & trim(adjustl(vinfo(4))), i
253 WRITE (vname(5,varid),'(a)') &
254 & trim(adjustl(vinfo(5)))
255 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
256 CALL standardname (vname(6,varid), string, &
257 & suffix='_in_sea_water')
258 END DO
259 varid=varid+1
260 CASE ('idTvar(iFecF)')
261 load=.false.
262 varid=varid-1
263 DO i=1,nfec
264 varid=varid+1
265 idtvar(ifecf(i))=varid
266 DO ng=1,ngrids
267 fscale(varid,ng)=scale
268 iinfo(1,varid,ng)=gtype
269 END DO
270 WRITE (vname(1,varid),'(a,i1)') &
271 & trim(adjustl(vinfo(1))), i
272 WRITE (vname(2,varid),'(a,1x,i1)') &
273 & trim(adjustl(vinfo(2))), i
274 WRITE (vname(3,varid),'(a)') &
275 & trim(adjustl(vinfo(3)))
276 WRITE (vname(4,varid),'(a,1x,i1)') &
277 & trim(adjustl(vinfo(4))), i
278 WRITE (vname(5,varid),'(a)') &
279 & trim(adjustl(vinfo(5)))
280 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
281 CALL standardname (vname(6,varid), string, &
282 & suffix='_in_sea_water')
283 END DO
284 varid=varid+1
285 CASE ('idTvar(iFecN)')
286 load=.false.
287 varid=varid-1
288 DO i=1,nfec
289 varid=varid+1
290 idtvar(ifecn(i))=varid
291 DO ng=1,ngrids
292 fscale(varid,ng)=scale
293 iinfo(1,varid,ng)=gtype
294 END DO
295 WRITE (vname(1,varid),'(a,i1)') &
296 & trim(adjustl(vinfo(1))), i
297 WRITE (vname(2,varid),'(a,1x,i1)') &
298 & trim(adjustl(vinfo(2))), i
299 WRITE (vname(3,varid),'(a)') &
300 & trim(adjustl(vinfo(3)))
301 WRITE (vname(4,varid),'(a,1x,i1)') &
302 & trim(adjustl(vinfo(4))), i
303 WRITE (vname(5,varid),'(a)') &
304 & trim(adjustl(vinfo(5)))
305 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
306 CALL standardname (vname(6,varid), string, &
307 & suffix='_in_sea_water')
308 END DO
309 varid=varid+1
310 CASE ('idTvar(iFecP)')
311 load=.false.
312 varid=varid-1
313 DO i=1,nfec
314 varid=varid+1
315 idtvar(ifecp(i))=varid
316 DO ng=1,ngrids
317 fscale(varid,ng)=scale
318 iinfo(1,varid,ng)=gtype
319 END DO
320 WRITE (vname(1,varid),'(a,i1)') &
321 & trim(adjustl(vinfo(1))), i
322 WRITE (vname(2,varid),'(a,1x,i1)') &
323 & trim(adjustl(vinfo(2))), i
324 WRITE (vname(3,varid),'(a)') &
325 & trim(adjustl(vinfo(3)))
326 WRITE (vname(4,varid),'(a,1x,i1)') &
327 & trim(adjustl(vinfo(4))), i
328 WRITE (vname(5,varid),'(a)') &
329 & trim(adjustl(vinfo(5)))
330 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
331 CALL standardname (vname(6,varid), string, &
332 & suffix='_in_sea_water')
333 END DO
334 varid=varid+1
335 CASE ('idTvar(iFecS)')
336 load=.false.
337 varid=varid-1
338 DO i=1,nfec
339 varid=varid+1
340 idtvar(ifecs(i))=varid
341 DO ng=1,ngrids
342 fscale(varid,ng)=scale
343 iinfo(1,varid,ng)=gtype
344 END DO
345 WRITE (vname(1,varid),'(a,i1)') &
346 & trim(adjustl(vinfo(1))), i
347 WRITE (vname(2,varid),'(a,1x,i1)') &
348 & trim(adjustl(vinfo(2))), i
349 WRITE (vname(3,varid),'(a)') &
350 & trim(adjustl(vinfo(3)))
351 WRITE (vname(4,varid),'(a,1x,i1)') &
352 & trim(adjustl(vinfo(4))), i
353 WRITE (vname(5,varid),'(a)') &
354 & trim(adjustl(vinfo(5)))
355 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
356 CALL standardname (vname(6,varid), string, &
357 & suffix='_in_sea_water')
358 END DO
359 varid=varid+1
360 CASE ('idTvar(iPhyC)')
361 load=.false.
362 varid=varid-1
363 DO i=1,nphy
364 varid=varid+1
365 idtvar(iphyc(i))=varid
366 DO ng=1,ngrids
367 fscale(varid,ng)=scale
368 iinfo(1,varid,ng)=gtype
369 END DO
370 WRITE (vname(1,varid),'(a,i1)') &
371 & trim(adjustl(vinfo(1))), i
372 WRITE (vname(2,varid),'(a,1x,i1)') &
373 & trim(adjustl(vinfo(2))), i
374 WRITE (vname(3,varid),'(a)') &
375 & trim(adjustl(vinfo(3)))
376 WRITE (vname(4,varid),'(a,1x,i1)') &
377 & trim(adjustl(vinfo(4))), i
378 WRITE (vname(5,varid),'(a)') &
379 & trim(adjustl(vinfo(5)))
380 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
381 CALL standardname (vname(6,varid), string, &
382 & suffix='_in_sea_water')
383 END DO
384 varid=varid+1
385 CASE ('idTvar(iPhyF)')
386 load=.false.
387 varid=varid-1
388 DO i=1,nphy
389 varid=varid+1
390 idtvar(iphyf(i))=varid
391 DO ng=1,ngrids
392 fscale(varid,ng)=scale
393 iinfo(1,varid,ng)=gtype
394 END DO
395 WRITE (vname(1,varid),'(a,i1)') &
396 & trim(adjustl(vinfo(1))), i
397 WRITE (vname(2,varid),'(a,1x,i1)') &
398 & trim(adjustl(vinfo(2))), i
399 WRITE (vname(3,varid),'(a)') &
400 & trim(adjustl(vinfo(3)))
401 WRITE (vname(4,varid),'(a,1x,i1)') &
402 & trim(adjustl(vinfo(4))), i
403 WRITE (vname(5,varid),'(a)') &
404 & trim(adjustl(vinfo(5)))
405 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
406 CALL standardname (vname(6,varid), string, &
407 & suffix='_in_sea_water')
408 END DO
409 varid=varid+1
410 CASE ('idTvar(iPhyN)')
411 load=.false.
412 varid=varid-1
413 DO i=1,nphy
414 varid=varid+1
415 idtvar(iphyn(i))=varid
416 DO ng=1,ngrids
417 fscale(varid,ng)=scale
418 iinfo(1,varid,ng)=gtype
419 END DO
420 WRITE (vname(1,varid),'(a,i1)') &
421 & trim(adjustl(vinfo(1))), i
422 WRITE (vname(2,varid),'(a,1x,i1)') &
423 & trim(adjustl(vinfo(2))), i
424 WRITE (vname(3,varid),'(a)') &
425 & trim(adjustl(vinfo(3)))
426 WRITE (vname(4,varid),'(a,1x,i1)') &
427 & trim(adjustl(vinfo(4))), i
428 WRITE (vname(5,varid),'(a)') &
429 & trim(adjustl(vinfo(5)))
430 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
431 CALL standardname (vname(6,varid), string, &
432 & suffix='_in_sea_water')
433 END DO
434 varid=varid+1
435 CASE ('idTvar(iPhyP)')
436 load=.false.
437 varid=varid-1
438 DO i=1,nphy
439 varid=varid+1
440 idtvar(iphyp(i))=varid
441 DO ng=1,ngrids
442 fscale(varid,ng)=scale
443 iinfo(1,varid,ng)=gtype
444 END DO
445 WRITE (vname(1,varid),'(a,i1)') &
446 & trim(adjustl(vinfo(1))), i
447 WRITE (vname(2,varid),'(a,1x,i1)') &
448 & trim(adjustl(vinfo(2))), i
449 WRITE (vname(3,varid),'(a)') &
450 & trim(adjustl(vinfo(3)))
451 WRITE (vname(4,varid),'(a,1x,i1)') &
452 & trim(adjustl(vinfo(4))), i
453 WRITE (vname(5,varid),'(a)') &
454 & trim(adjustl(vinfo(5)))
455 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
456 CALL standardname (vname(6,varid), string, &
457 & suffix='_in_sea_water')
458 END DO
459 varid=varid+1
460 CASE ('idTvar(iPhyS)')
461 load=.false.
462 j=0
463 DO i=1,nphy
464 IF (phy(i).le.2) j=j+1
465 END DO
466 IF (j.gt.0) varid=varid-1
467 DO i=1,nphy
468 IF (phy(i).le.2) THEN
469 varid=varid+1
470 idtvar(iphys(i))=varid
471 DO ng=1,ngrids
472 fscale(varid,ng)=scale
473 iinfo(1,varid,ng)=gtype
474 END DO
475 WRITE (vname(1,varid),'(a,i1)') &
476 & trim(adjustl(vinfo(1))), i
477 WRITE (vname(2,varid),'(a,1x,i1)') &
478 & trim(adjustl(vinfo(2))), i
479 WRITE (vname(3,varid),'(a)') &
480 & trim(adjustl(vinfo(3)))
481 WRITE (vname(4,varid),'(a,1x,i1)') &
482 & trim(adjustl(vinfo(4))), i
483 WRITE (vname(5,varid),'(a)') &
484 & trim(adjustl(vinfo(5)))
485 WRITE (string,'(a,i1)') trim(adjustl(vinfo(6))), i
486 CALL standardname (vname(6,varid), string, &
487 & suffix='_in_sea_water')
488 END IF
489 END DO
490 varid=varid+1
491 CASE ('idTvar(iPigs)')
492 load=.false.
493 varid=varid-1
494 DO j=1,npig
495 DO i=1,nphy
496 IF (pig(phy(i),j).gt.0) THEN
497 varid=varid+1
498 idtvar(ipigs(i,j))=varid
499 DO ng=1,ngrids
500 fscale(varid,ng)=scale
501 iinfo(1,varid,ng)=gtype
502 END DO
503 WRITE (vname(1,varid),'(a,i1,i1)') &
504 & trim(adjustl(vinfo(1))), i, j
505 WRITE (vname(2,varid),'(3a)') &
506 & trim(phyname(i)), ', ', trim(pigname(j))
507 WRITE (vname(3,varid),'(a)') &
508 & trim(adjustl(vinfo(3)))
509 WRITE (vname(4,varid),'(3a)') &
510 & trim(phyname(i)), ', ', trim(pigname(j))
511 WRITE (vname(5,varid),'(a)') &
512 & trim(adjustl(vinfo(5)))
513 WRITE (string,'(4a)') trim(adjustl(vinfo(6))), &
514 & trim(pigname(j)), '_pigment_by_', &
515 & trim(phyname(i))
516 CALL standardname (vname(6,varid), string, &
517 & suffix='_in_sea_water')
518 END IF
519 END DO
520 END DO
521 varid=varid+1
522
523#ifdef DIAGNOSTICS_BIO
524
525/*
526** biological tracers term diagnostics.
527*/
528 CASE ('iDbio3(idSpIr)')
529 idbio3(idspir)=varid
530 CASE ('iDbio4(iddIrr)')
531 idbio4(iddirr)=varid
532 CASE ('iDbio4(idsIrr)')
533 idbio4(idsirr)=varid
534 CASE ('iDbio4(idLatt)')
535 idbio4(idlatt)=varid
536 CASE ('iDbio4(idaPHY)')
537 idbio4(idaphy)=varid
538 CASE ('iDbio4(idaDET)')
539 idbio4(idadet)=varid
540 CASE ('iDbio4(idaCDC)')
541 idbio4(idacdc)=varid
542 CASE ('iDbio4(idAcos)')
543 idbio4(idacos)=varid
544 CASE ('iDbio4(idbPHY)')
545 idbio4(idbphy)=varid
546 CASE ('iDbio4(idsPHY)')
547 idbio4(idsphy)=varid
548 CASE ('iDbio4(idbTOT)')
549 idbio4(idbtot)=varid
550 CASE ('iDbio4(idsTOT)')
551 idbio4(idstot)=varid
552#endif
553
subroutine output(ng)
Definition output.F:4