2 SUBROUTINE ana_biology (ng, tile, model)
22 integer,
intent(in) :: ng, tile, model
26 character (len=*),
parameter :: MyFile = &
31 CALL ana_biology_tile (ng, tile, model, &
32 & lbi, ubi, lbj, ubj, &
33 & imins, imaxs, jmins, jmaxs, &
47 END SUBROUTINE ana_biology
50 SUBROUTINE ana_biology_tile (ng, tile, model, &
51 & LBi, UBi, LBj, UBj, &
52 & IminS, ImaxS, JminS, JmaxS, &
67 integer,
intent(in) :: ng, tile, model
68 integer,
intent(in) :: LBi, UBi, LBj, UBj
69 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
72 real(r8),
intent(inout) :: t(LBi:,LBj:,:,:,:)
74 real(r8),
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
79 logical,
save :: first = .true.
81 integer :: i, is, itrc, j, k
83#if defined BIO_FENNEL || defined NEMURO
84 real(r8) :: SiO4, cff1, cff2, temp
86 real(r8) :: cff1, cff2, cff3, cff4, cff5, cff6, cff7, cff8, cff9
87 real(r8) :: cff10, cff11, cff12, cff13, cff14, cff15
88 real(r8) :: salt, sftm, temp
93 TYPE (T_STATS),
save :: Stats(80)
95#include "set_bounds.h"
104 stats(i) % checksum=0_i8b
105 stats(i) % count=0.0_r8
107 stats(i) % max=-
large
108 stats(i) % avg=0.0_r8
109 stats(i) % rms=0.0_r8
113#if defined BIO_FENNEL
124 temp=t(i,j,k,1,
itemp)
125 IF (temp.lt.8.0_r8)
THEN
127 ELSE IF ((temp.ge.8.0_r8).and.(temp.le.11.0_r8))
THEN
128 sio4=30.0_r8-((temp-8.0_r8)*cff1)
129 ELSE IF ((temp.gt.11.0_r8).and.(temp.le.13.0_r8))
THEN
130 sio4=10.0_r8-((temp-11.0_r8)*4.0_r8)
131 ELSE IF ((temp.gt.13.0_r8).and.(temp.le.16.0_r8))
THEN
132 sio4=2.0_r8-((temp-13.0_r8)*cff2)
133 ELSE IF (temp.gt.16.0_r8)
THEN
136 t(i,j,k,1,
ino3_)=1.67_r8+0.5873_r8*sio4+ &
137 & 0.0144_r8*sio4**2+ &
138 & 0.0003099_r8*sio4**3
139 t(i,j,k,1,
iphyt)=0.08_r8
140 t(i,j,k,1,
izoop)=0.06_r8
141 t(i,j,k,1,
inh4_)=0.1_r8
142 t(i,j,k,1,
ilden)=0.02_r8
143 t(i,j,k,1,
isden)=0.04_r8
144 t(i,j,k,1,
ichlo)=0.02_r8
146 t(i,j,k,1,
itic_)=2100.0_r8
147 t(i,j,k,1,
italk)=2350.0_r8
148 t(i,j,k,1,
ildec)=0.002_r8
149 t(i,j,k,1,
isdec)=0.06_r8
152 t(i,j,k,1,
ioxyg)=10.0_r8/0.02241_r8
169 temp=t(i,j,k,1,
itemp)
170 IF (temp.lt.8.0_r8)
THEN
172 ELSE IF ((temp.ge.8.0_r8).and.(temp.le.11.0_r8))
THEN
173 sio4=30.0_r8-((temp-8.0_r8)*cff1)
174 ELSE IF ((temp.gt.11.0_r8).and.(temp.le.13.0_r8))
THEN
175 sio4=10.0_r8-((temp-11.0_r8)*4.0_r8)
176 ELSE IF ((temp.gt.13.0_r8).and.(temp.le.16.0_r8))
THEN
177 sio4=2.0_r8-((temp-13.0_r8)*cff2)
178 ELSE IF (temp.gt.16.0_r8)
THEN
181 t(i,j,k,1,
ino3_)=1.67_r8+0.5873_r8*sio4+ &
182 & 0.0144_r8*sio4**2+ &
183 & 0.0003099_r8*sio4**3
184 t(i,j,k,1,
isphy)=0.06_r8
185 t(i,j,k,1,
ilphy)=0.06_r8
186 t(i,j,k,1,
iszoo)=0.05_r8
187 t(i,j,k,1,
ilzoo)=0.05_r8
188 t(i,j,k,1,
ipzoo)=0.05_r8
189 t(i,j,k,1,
inh4_)=0.1_r8
190 t(i,j,k,1,
ipon_)=0.001_r8
191 t(i,j,k,1,
idon_)=0.001_r8
192 t(i,j,k,1,
isioh)=sio4
193 t(i,j,k,1,
iopal)=0.001_r8
198#elif defined NPZD_FRANKS || defined NPZD_POWELL
215#elif defined NPZD_IRON
248 cff7=1.0_r8/0.0157_r8
253 cff12=1.0_r8/128.0_r8
254 cff13=1.0_r8/1000.0_r8
256 cff15=cff5*cff8*cff14
264 sftm=t(i,j,n(ng),1,
itemp)
265 temp=t(i,j,k,1,
itemp)
267 salt=t(i,j,k,1,
isalt)
269 cff1=-0.0827_r8*sftm+2.6386_r8
270 cff2=max(0.00001_r8,cff1*(1.0_r8-(sftm-temp)*cff3))
274 t(i,j,k,1,
inh4_)=0.053_r8*temp+0.7990_r8
275 t(i,j,k,1,
ino3_)=8.5_r8-cff2*cff15-t(i,j,k,1,
inh4_)
276 t(i,j,k,1,
ipo4_)=(t(i,j,k,1,
inh4_)+t(i,j,k,1,
ino3_))*cff4
277 t(i,j,k,1,
ifeo_)=1.0_r8
281 t(i,j,k,1,
isio_)=5.5_r8-(cff2*0.75_r8)*cff15*1.20_r8
282 t(i,j,k,1,
idic_)=2000.0_r8
287 t(i,j,k,1,
ibacc(is))=0.85_r8
295 t(i,j,k,1,
iphyc(1))=max(0.02_r8, &
296 & 0.75_r8*0.75_r8*cff5*cff2*cff14)
297 t(i,j,k,1,
iphyc(2))=max(0.02_r8, &
298 & 0.75_r8*0.25_r8*cff5*cff2*cff14)
299 t(i,j,k,1,
iphyc(3))=max(0.02_r8, &
300 & 0.125_r8*cff5*cff2*cff14)
303 t(i,j,k,1,
iphyn(is))=t(i,j,k,1,
iphyc(is))*cff8
304 t(i,j,k,1,
iphyp(is))=t(i,j,k,1,
iphyn(is))*cff4
305 t(i,j,k,1,
iphyf(is))=t(i,j,k,1,
iphyc(is))*cff13
306 IF (
iphys(is).gt.0)
THEN
307 t(i,j,k,1,
iphys(is))=t(i,j,k,1,
iphyn(is))*1.20_r8
314 t(i,j,k,1,
ipigs(is,1))=cff6*t(i,j,k,1,
iphyc(is))
319 IF (
ipigs(is,2).gt.0)
THEN
320 t(i,j,k,1,
ipigs(is,2))=t(i,j,k,1,
ipigs(is,1))* &
327 IF (
ipigs(is,3).gt.0)
THEN
328 t(i,j,k,1,
ipigs(is,3))=t(i,j,k,1,
ipigs(is,1))* &
335 IF (
ipigs(is,4).gt.0)
THEN
336 t(i,j,k,1,
ipigs(is,4))=t(i,j,k,1,
ipigs(is,1))* &
343 IF (
ipigs(is,5).gt.0)
THEN
344 t(i,j,k,1,
ipigs(is,5))=t(i,j,k,1,
ipigs(is,1))* &
351 IF (
ipigs(is,6).gt.0)
THEN
352 t(i,j,k,1,
ipigs(is,6))=t(i,j,k,1,
ipigs(is,1))* &
359 IF (
ipigs(is,7).gt.0)
THEN
360 t(i,j,k,1,
ipigs(is,7))=t(i,j,k,1,
ipigs(is,1))* &
369 cff6=max(0.001_r8,-0.9833_r8*salt+33.411_r8)
373 t(i,j,k,1,
idomc(1))=0.1_r8
377 t(i,j,k,1,
idomc(2))=15.254_r8*cff6+70.0_r8
379 t(i,j,k,1,
idomp(2))=0.0_r8
380 t(i,j,k,1,
icdmc(2))=(0.243_r8*cff6+0.055_r8)*cff7
385 t(i,j,k,1,
ifecc(is))=0.002_r8
386 t(i,j,k,1,
ifecn(is))=t(i,j,k,1,
ifecc(is))*cff11
387 t(i,j,k,1,
ifecp(is))=t(i,j,k,1,
ifecc(is))*cff12
388 t(i,j,k,1,
ifecf(is))=t(i,j,k,1,
ifecc(is))*cff13
389 t(i,j,k,1,
ifecs(is))=t(i,j,k,1,
ifecc(is))*cff11
401 & lbi, ubi, lbj, ubj, 1, n(ng), t(:,:,:,1,i))
402 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
405 & ng, stats(itrc)%min, stats(itrc)%max
409 10
FORMAT (3x,
' ANA_BIOLOGY - ',a,/,19x, &
410 &
'(Grid = ',i2.2,
', Min = ',1p,e15.8,0p, &
411 &
' Max = ',1p,e15.8,0p,
')')
414 END SUBROUTINE ana_biology_tile
subroutine ana_biology_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, t)
subroutine ana_biology(ng, tile, model)
integer, dimension(nphy) iphyn
real(r8), dimension(:,:), allocatable b_c2cl
real(r8), dimension(:,:), allocatable mxppc
real(r8), dimension(:,:), allocatable mxchlc
real(r8), dimension(:,:), allocatable mxpsc
real(r8), dimension(:,:), allocatable b_chlc
integer, dimension(nbac) ibacc
real(r8), dimension(:,:), allocatable mxchlb
real(r8), dimension(:,:), allocatable b_psc
integer, dimension(nfec) ifecf
integer, dimension(ndom) idomn
integer, dimension(nbac) ibacp
integer, dimension(nfec) ifecp
integer, dimension(nfec) ifecc
real(r8), dimension(:,:), allocatable bioini
integer, dimension(nphy) iphyp
real(r8), dimension(:), allocatable p2cbac
integer, dimension(nfec) ifecs
integer, dimension(ndom) icdmc
real(r8), dimension(:,:), allocatable b_hpub
real(r8), dimension(:), allocatable n2cbac
real(r8), dimension(:,:), allocatable mxlpub
real(r8), dimension(:,:), allocatable b_chlb
integer, dimension(nphy) iphyc
real(r8), dimension(:,:), allocatable mxhpub
integer, dimension(nbac) ibacf
real(r8), dimension(:,:), allocatable b_ppc
integer, dimension(nphy, npig) ipigs
integer, dimension(:), allocatable idbio
integer, dimension(ndom) idomp
real(r8), dimension(:,:), allocatable cdocfrac_c
integer, dimension(nbac) ibacn
integer, dimension(ndom) idomc
real(r8), dimension(:,:), allocatable b_lpub
integer, dimension(nphy) iphyf
integer, dimension(nphy) iphys
integer, dimension(nfec) ifecn
real(r8), dimension(:), allocatable fe2cbac
integer, dimension(:), allocatable idtvar
character(len=maxlen), dimension(6, 0:nv) vname
character(len=256), dimension(39) ananame
type(t_ocean), dimension(:), allocatable ocean
integer, parameter r3dvar
type(t_domain), dimension(:), allocatable domain
real(dp), parameter large
subroutine, public stats_3dfld(ng, tile, model, gtype, s, extract_flag, lbi, ubi, lbj, ubj, lbk, ubk, f, fmask, debug)