Closed HyunChaeJung closed 1 year ago
......
!!add TOPAZ, hcjung 20230508
# elif defined TOPAZ
DO idiag=1,NDbio2d
! IF (idiag.ne.ipCO2) THEN
DO j=JstrR,JendR
DO i=IstrR,IendR
DIAGS(ng)%DiaBio2d(i,j,idiag)=rfac(i,j)* &
& DIAGS(ng)%DiaBio2d(i,j,idiag)
END DO
END DO
! END IF
END DO
DO idiag=1,NDbio3d
DO k=1,N(ng)
DO j=JstrR,JendR
DO i=IstrR,IendR
DIAGS(ng)%DiaBio3d(i,j,k,idiag)=rfac(i,j)* &
& DIAGS(ng)%DiaBio3d(i,j,k,idiag)
END DO
END DO
END DO
END DO
# endif
......
!!add TOPAZ, hcjung 20230508
# elif defined TOPAZ
!
! Biological terms 2D diagnostics.
!
DO idiag=1,NDbio2d
CALL bc_r2d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, &
& DIAGS(ng)%DiaBio2d(:,:,idiag))
END DO
# ifdef DISTRIBUTE
CALL mp_exchange3d (ng, tile, iNLM, 1, &
& LBi, UBi, LBj, UBj, 1, NDbio2d, &
& NghostPoints, &
& EWperiodic(ng), NSperiodic(ng), &
& DIAGS(ng)%DiaBio2d)
# endif
!
! Biological terms 3D diagnostics.
!
DO idiag=1,NDbio3d
CALL bc_r3d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, 1, N(ng), &
& DIAGS(ng)%DiaBio3d(:,:,:,idiag))
END DO
# ifdef DISTRIBUTE
CALL mp_exchange4d (ng, tile, iNLM, 1, &
& LBi, UBi, LBj, UBj, 1, N(ng), 1, NDbio3d, &
& NghostPoints, &
& EWperiodic(ng), NSperiodic(ng), &
& DIAGS(ng)%DiaBio3d)
# endif
.....
./Utility/wrt_diags.F
......
# elif defined TOPAZ
!
! Write out 2D biological diagnostic fields.
!
DO ivar=1,NDbio2d
ifield=iDbio2(ivar)
IF (Dout(ifield,ng)) THEN
scale=1.0_dp
gtype=gfactor*r2dvar
status=nf_fwrite2d(ng, iNLM, DIA(ng)%ncid, &
& DIA(ng)%Vid(ifield), &
& DIA(ng)%Rindex, gtype, &
& LBi, UBi, LBj, UBj, scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio2d(:,:,ivar), &
& SetFillVal = .FALSE.)
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,ifield)), DIA(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END IF
END DO
!
! Write out 3D biological diagnostic fields.
!
DO ivar=1,NDbio3d
ifield=iDbio3(ivar)
IF (Dout(ifield,ng)) THEN
scale=1.0_dp
gtype=gfactor*r3dvar
status=nf_fwrite3d(ng, iNLM, DIA(ng)%ncid, &
& DIA(ng)%Vid(ifield), &
& DIA(ng)%Rindex, gtype, &
& LBi, UBi, LBj, UBj, 1, N(ng), scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio3d(:,:,:,ivar), &
& SetFillVal = .FALSE.)
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,ifield)), DIA(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END IF
END DO
......
!!add TOPAZ, hcjung 20230508
# elif defined TOPAZ
!
! Write out 2D biological diagnostic fields.
!
DO ivar=1,NDbio2d
ifield=iDbio2(ivar)
IF (Dout(ifield,ng)) THEN
scale=1.0_dp
IF (DIA(ng)%pioVar(ifield)%dkind.eq.PIO_double) THEN
ioDesc => ioDesc_dp_r2dvar(ng)
ELSE
ioDesc => ioDesc_sp_r2dvar(ng)
END IF
status=nf_fwrite2d(ng, iNLM, DIA(ng)%pioFile, &
& DIA(ng)%pioVar(ifield), &
& DIA(ng)%Rindex, &
& ioDesc, &
& LBi, UBi, LBj, UBj, scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio2d(:,:,ivar), &
& SetFillVal = .FALSE.)
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,ifield)), DIA(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END IF
END DO
!
! Write out 3D biological diagnostic fields.
!
DO ivar=1,NDbio3d
ifield=iDbio3(ivar)
IF (Dout(ifield,ng)) THEN
scale=1.0_dp
IF (DIA(ng)%pioVar(ifield)%dkind.eq.PIO_double) THEN
ioDesc => ioDesc_dp_r3dvar(ng)
ELSE
ioDesc => ioDesc_sp_r3dvar(ng)
END IF
status=nf_fwrite3d(ng, iNLM, DIA(ng)%pioFile, &
& DIA(ng)%pioVar(ifield), &
& DIA(ng)%Rindex, &
& ioDesc, &
& LBi, UBi, LBj, UBj, 1, N(ng), scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio3d(:,:,:,ivar), &
& SetFillVal = .FALSE.)
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,ifield)), DIA(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END IF
END DO
.......
!
! Define 2D biological diagnostic fields.
!
DO ivar=1,NDbio2d
ifield=iDbio2(ivar)
IF (Dout(ifield,ng)) THEN
Vinfo( 1)=Vname(1,ifield)
WRITE (Vinfo( 2),'(a,1x,a)') Prefix, TRIM(Vname(2,ifield))
Vinfo( 3)=Vname(3,ifield)
Vinfo(14)=Vname(4,ifield)
Vinfo(16)=Vname(1,idtime)
# if defined WRITE_WATER && defined MASKING
Vinfo(20)='mask_rho'
# endif
Vinfo(21)=Vname(6,ifield)
Vinfo(22)='coordinates'
Aval(5)=REAL(r2dvar,r8)
status=def_var(ng, iNLM, DIA(ng)%ncid, DIA(ng)%Vid(ifield), &
& NF_FOUT, nvd3, t2dgrd, Aval, Vinfo, ncname)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
END IF
END DO
!
! Define 3D biological diagnostic fields.
!
DO ivar=1,NDbio3d
ifield=iDbio3(ivar)
IF (Dout(ifield,ng)) THEN
Vinfo( 1)=Vname(1,ifield)
WRITE (Vinfo( 2),'(a,1x,a)') Prefix, TRIM(Vname(2,ifield))
Vinfo( 3)=Vname(3,ifield)
Vinfo(14)=Vname(4,ifield)
Vinfo(16)=Vname(1,idtime)
# if defined WRITE_WATER && defined MASKING
Vinfo(20)='mask_rho'
# endif
Vinfo(21)=Vname(6,ifield)
Vinfo(22)='coordinates'
Aval(5)=REAL(r3dvar,r8)
status=def_var(ng, iNLM, DIA(ng)%ncid, DIA(ng)%Vid(ifield), &
& NF_FOUT, nvd4, t3dgrd, Aval, Vinfo, ncname)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
END IF
END DO
! Logical switches (TRUE/FALSE) to activate writing of time-averaged,
! biological processes diagnostics terms into DIAGNOSTIC output file [Ngrids].
Dout(iIRRM) == T !Irradiance Memory mol/kg Dout(iHTTL) == T !H+ ion Concentration mol/kg Dout(iSBTF) == T !SiO2 flux to Sediments mol/kg Dout(iPBTF) == T !P flux to Sediments mol/kg Dout(iNBTF) == T !N flux to Sediments mol/kg Dout(iLBTF) == T !Lith flux to Sediments mol/kg Dout(iCCBF) == T !Calcite flux to Sediments mol/kg Dout(iCABF) == T !Aragonite flux to Sediments mol/kg Dout(iCION) == T !Carbonate ion Concentration mol/kg Dout(iCHL_) == T !Chlorophyll Concentration mol/kg Dout(iCASD) == T !Sediment CaCO3 mol/kg
Dout(iCOAL) == T !Solubility of CO2 for air mol/kg/atm Dout(iCOSC) == T !Schmidt number for CO2 none Dout(iCOCS) == T !Ocean surface gas concentration of CO2 mol/kg Dout(iO2AL) == T !Solubility of O2 for air mol/kg/atm Dout(iO2SC) == T !Schmidt number for O2 none Dout(iO2CS) == T !Ocean surface gas concentration of O2 mol/kg
~/ROMS1158/ROMS/Modules/mod_diags.F