Not a big issue, but it seems like a unit inconsistency to me here.
in Nonlinear/fasham.h DiaBio3d(i,j,k,iPPro) is given N_Flux_NewProd
which has unit [millimole-N/m3]
Code: Select all
#ifdef DIAGNOSTICS_BIO
DiaBio3d(i,j,k,iPPro)=DiaBio3d(i,j,k,iPPro)+ &
& N_Flux_NewProd+N_Flux_RegProd
and in Utility/wrt_diags.F, DiaBio3d is written out with scale=1.0:
Code: Select all
!
! Write out 3D biological diagnostic fields.
!
DO ivar=1,NDbio3d
ifield=iDbio3(ivar)
IF (Hout(ifield,ng)) THEN
scale=1.0_r8
gtype=gfactor*r3dvar
status=nf_fwrite3d(ng, iNLM, ncDIAid(ng), diaVid(ifield,ng), &
& tDIAindx(ng), gtype, &
& LBi, UBi, LBj, UBj, 1, N(ng), scale, &
# ifdef MASKING
& GRID(ng) % rmask(LBi,LBj), &
# endif
& DIAGS(ng) % DiaBio3d(LBi,LBj,1,ivar))
IF (status.ne.nf_noerr) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,ifield)), tDIAindx(ng)
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END IF
END DO
# endif
Code: Select all
'P_Production' ! Input/Output
'primary production'
'millimole_nitrogen meter-3 day-1' ! [millimole/m3/day]
'P_Production, scalar, series'
'ocean_time'
'iDbio3(iPPro)'
'r3dvar'
1.0d0
Code: Select all
DiaBio3d(i,j,k,iPPro)=DiaBio3d(i,j,k,iPPro)+ &
& (N_Flux_NewProd+N_Flux_RegProd)/dtdays
Same is true for NO3_uptake in varinfo.dat, i.e. DiaBio3d(i,j,k,NO3u) in fasham.h
Code: Select all
'NO3_uptake' ! Input/Output
'NO3 uptake'
'millimole_nitrogen meter-3 day-1' ! [millimole/m3/day]
'NO3_uptake, scalar, series'
'ocean_time'
'iDbio3(iNO3u)'
'r3dvar'
1.0d0
Thanks,
Wen