Closed HCJung-jbnu closed 1 year ago
....
#ifdef TOPAZ
!!add TOPAZ, hcjung 20230810
integer :: t2dgrd_tp(3), t3dgrd_tp(4)
#endif
....
# ifdef TOPAZ
!!add TOPAZ, hcjung 20230814
t2dgrd_tp(1)=DimIDs( 1)
t2dgrd_tp(2)=DimIDs( 5)
t2dgrd_tp(3)=DimIDs(12)
t3dgrd_tp(1)=DimIDs( 1)
t3dgrd_tp(2)=DimIDs( 5)
t3dgrd_tp(3)=DimIDs( 9)
t3dgrd_tp(4)=DimIDs(12)
# endif
.....
# ifdef TOPAZ
!!add TOPAZ, hcjung 20230814
t2dgrd_tp(1)=DimIDs( 1)
t2dgrd_tp(2)=DimIDs( 5)
t2dgrd_tp(3)=DimIDs(12)
t3dgrd_tp(1)=DimIDs( 1)
t3dgrd_tp(2)=DimIDs( 5)
t3dgrd_tp(3)=DimIDs( 9)
t3dgrd_tp(4)=DimIDs(12)
# endif
......
# ifdef TOPAZ
!!add TOPAZ, hcjung 20230810
!
! Define 3D diagnostic variables
!
DO itrc=1,NDbio3d
Vinfo( 1)=Vname(1,iDbio3(itrc))
Vinfo( 2)=Vname(2,iDbio3(itrc))
Vinfo( 3)=Vname(3,iDbio3(itrc))
Vinfo(14)=Vname(4,iDbio3(itrc))
Vinfo(16)=Vname(1,idtime)
# if defined WRITE_WATER && defined MASKING
# if defined PERFECT_RESTART
Vinfo(24)='_FillValue'
Aval(6)=spval
# else
Vinfo(20)='mask_rho'
# endif
# endif
Vinfo(21)=Vname(6,iDbio3(itrc))
Vinfo(22)='coordinates'
Aval(5)=REAL(r3dvar,r8)
status=def_var(ng, iNLM, RST(ng)%ncid, RST(ng)%Tid(NT(ng)+itrc), &
& NF_FRST, nvd4, t3dgrd_tp, Aval, Vinfo, ncname)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
END DO
! ! Define CO2/O2 FLUX COEF. ! DO itrc=1,6 Vinfo( 1)=Vname(1,iDbio2(itrc)) Vinfo( 2)=Vname(2,iDbio2(itrc)) Vinfo( 3)=Vname(3,iDbio2(itrc)) Vinfo(14)=Vname(4,iDbio2(itrc)) Vinfo(16)=Vname(1,idtime)
Vinfo(24)='_FillValue'
Aval(6)=spval
Vinfo(20)='mask_rho'
Vinfo(21)=Vname(6,iDbio2(itrc))
Vinfo(22)='coordinates'
Aval(5)=REAL(r2dvar,r8)
status=def_var(ng, iNLM, RST(ng)%ncid, &
& RST(ng)%Tid(NT(ng)+NDbio3d+itrc), &
& NF_FRST, nvd3, t2dgrd_tp, Aval, Vinfo, ncname)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
END DO
......
!! add TOPAZ, hcjung 20230810 DO itrc=1,NDbio3d IF (TRIM(var_name(i)).eq.TRIM(Vname(1,iDbio3(itrc)))) THEN got_var(iDbio2(itrc))=.TRUE. RST(ng)%Tid(NT(ng)+itrc)=var_id(i) END IF END DO
DO itrc=1,6
IF (TRIM(var_name(i)).eq.TRIM(Vname(1,iDbio2(itrc)))) THEN
got_var(iDbio2(itrc))=.TRUE.
RST(ng)%Tid(NT(ng)+NDbio3d+itrc)=var_id(i)
END IF
END DO
.....
!!add TOPAZ, hcjung DO itrc=1,NDbio3d IF (.not.got_var(iDbio3(itrc))) THEN IF (Master) WRITE (stdout,60) TRIM(Vname(1,iDbio3(itrc))), & & TRIM(ncname) exit_flag=3 RETURN END IF END DO
DO itrc=1,6
IF (.not.got_var(iDbio2(itrc))) THEN
IF (Master) WRITE (stdout,60) TRIM(Vname(1,iDbio2(itrc))), &
& TRIM(ncname)
exit_flag=3
RETURN
END IF
END DO
....
.....
!!add TOPAZ, hcjung 20230810 integer :: t2dgrd_tp(3), t3dgrd_tp(4)
.....
!!add TOPAZ, hcjung 20230814 t2dgrd_tp(1)=DimIDs( 1) t2dgrd_tp(2)=DimIDs( 5) t2dgrd_tp(3)=DimIDs(12) t3dgrd_tp(1)=DimIDs( 1) t3dgrd_tp(2)=DimIDs( 5) t3dgrd_tp(3)=DimIDs( 9) t3dgrd_tp(4)=DimIDs(12)
......
!!add TOPAZ, hcjung 20230814 t2dgrd_tp(1)=DimIDs( 1) t2dgrd_tp(2)=DimIDs( 5) t2dgrd_tp(3)=DimIDs(12) t3dgrd_tp(1)=DimIDs( 1) t3dgrd_tp(2)=DimIDs( 5) t3dgrd_tp(3)=DimIDs( 9) t3dgrd_tp(4)=DimIDs(12)
......
!!add TOPAZ, hcjung 20230810 ! ! Define 3D diagnostic variables ! DO itrc=1, NDbio3d Vinfo( 1)=Vname(1,iDbio3(itrc)) Vinfo( 2)=Vname(2,iDbio3(itrc)) Vinfo( 3)=Vname(3,iDbio3(itrc)) Vinfo(14)=Vname(4,iDbio3(itrc)) Vinfo(16)=Vname(1,idtime)
Vinfo(24)='_FillValue'
Aval(6)=spval
Vinfo(20)='mask_rho'
Vinfo(21)=Vname(6,iDbio3(itrc))
Vinfo(22)='coordinates'
Aval(5)=REAL(r3dvar,r8)
RST(ng)%pioTrc(NT(ng)+itrc)%dkind=PIO_FRST
RST(ng)%pioTrc(NT(ng)+itrc)%gtype=r3dvar
! status=def_var(ng, iNLM, RST(ng)%pioFile, & & RST(ng)%pioTrc(NT(ng)+itrc)%vd, & & PIO_FRST, nvd4, t3dgrd_tp, Aval, Vinfo, ncname) IF (FoundError(exit_flag, NoError, LINE, MyFile)) RETURN END DO
! ! Define CO2/O2 FLUX COEF. ! DO itrc=1,6 Vinfo( 1)=Vname(1,iDbio2(itrc)) Vinfo( 2)=Vname(2,iDbio2(itrc)) Vinfo( 3)=Vname(3,iDbio2(itrc)) Vinfo(14)=Vname(4,iDbio2(itrc)) Vinfo(16)=Vname(1,idtime)
Vinfo(24)='_FillValue'
Aval(6)=spval
Vinfo(20)='mask_rho'
Vinfo(21)=Vname(6,iDbio2(itrc))
Vinfo(22)='coordinates'
Aval(5)=REAL(r2dvar,r8)
RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%dkind=PIO_FRST
RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%gtype=r2dvar
! status=def_var(ng, iNLM, RST(ng)%pioFile, & & RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%vd, & & PIO_FRST, nvd3, t2dgrd_tp, Aval, Vinfo, ncname) IF (FoundError(exit_flag, NoError, LINE, MyFile)) RETURN END DO
.......
!!add TOPAZ, hcjung 20230810 DO itrc=1,NDbio3d IF (TRIM(var_name(i)).eq.TRIM(Vname(1,iDbio3(itrc)))) THEN got_var(iDbio3(itrc))=.TRUE. RST(ng)%pioTrc(NT(ng)+itrc)%vd=var_desc(i) RST(ng)%pioTrc(NT(ng)+itrc)%dkind=PIO_FRST RST(ng)%pioTrc(NT(ng)+itrc)%gtype=r3dvar END IF END DO
DO itrc=1,6
IF (TRIM(var_name(i)).eq.TRIM(Vname(1,iDbio2(itrc)))) THEN
got_var(iDbio2(itrc))=.TRUE.
RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%vd=var_desc(i)
RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%dkind=PIO_FRST
RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc)%gtype=r2dvar
END IF
END DO
.......
!!add TOPAZ, hcjung 20230810 DO itrc=1,NDbio3d IF (.not.got_var(iDbio3(itrc))) THEN IF (Master) WRITE (stdout,60) TRIM(Vname(1,iDbio3(itrc))), & & TRIM(ncname) exit_flag=3 RETURN END IF END DO
DO itrc=1,6
IF (.not.got_var(iDbio2(itrc))) THEN
IF (Master) WRITE (stdout,60) TRIM(Vname(1,iDbio2(itrc))), &
& TRIM(ncname)
exit_flag=3
RETURN
END IF
END DO
......
~/Utility/wrt_rst.F
.....
#if defined TOPAZ
!!add TOPAZ, hcjung 20230810
USE mod_diags
USE mod_biology
#endif
.....
# ifdef TOPAZ
!!ADD topaz hcjung 20230810
DO itrc=1,NDbio3d
scale=1.0_dp
gtype=gfactor*r3dvar
status=nf_fwrite3d(ng, iNLM, RST(ng)%ncid, &
& RST(ng)%Tid(NT(ng)+itrc), &
& RST(ng)%Rindex, gtype, &
& LBi, UBi, LBj, UBj, 1, N(ng), scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio3d(:,:,:,itrc))
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,iDbio3(itrc))), RST(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END DO
DO itrc=1,6
scale=1.0_dp
gtype=gfactor*r2dvar
status=nf_fwrite2d(ng, iNLM, RST(ng)%ncid, &
& RST(ng)%Tid(NT(ng)+NDbio3d+itrc), &
& RST(ng)%Rindex, gtype, &
& LBi, UBi, LBj, UBj, scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio2d(:,:,itrc))
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,iDbio2(itrc))), RST(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END DO
# endif
......
# ifdef TOPAZ
!!ADD topaz hcjung 20230810
DO itrc=1,NDbio3d
scale=1.0_dp
IF (RST(ng)%pioTRC(NT(ng)+itrc)%dkind.eq.PIO_double) THEN
ioDesc => ioDesc_dp_r3dvar(ng)
ELSE
ioDesc => ioDesc_sp_r3dvar(ng)
END IF
status=nf_fwrite3d(ng, iNLM, RST(ng)%pioFile, &
& RST(ng)%pioTrc(NT(ng)+itrc), &
& RST(ng)%Rindex, &
& ioDesc, &
& LBi, UBi, LBj, UBj, 1, N(ng), scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio3d(:,:,:,itrc))
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,iDbio3(itrc))), RST(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END DO
DO itrc=1,6
scale=1.0_dp
IF (RST(ng)%pioTRC(NT(ng)+NDbio3d+itrc)%dkind.eq.PIO_double) THEN
ioDesc => ioDesc_dp_r2dvar(ng)
ELSE
ioDesc => ioDesc_sp_r2dvar(ng)
END IF
status=nf_fwrite2d(ng, iNLM, RST(ng)%pioFile, &
& RST(ng)%pioTrc(NT(ng)+NDbio3d+itrc), &
& RST(ng)%Rindex, &
& ioDesc, &
& LBi, UBi, LBj, UBj, scale, &
# ifdef MASKING
& GRID(ng) % rmask, &
# endif
& DIAGS(ng) % DiaBio2d(:,:,itrc))
IF (FoundError(status, nf90_noerr, __LINE__, MyFile)) THEN
IF (Master) THEN
WRITE (stdout,10) TRIM(Vname(1,iDbio2(itrc))), RST(ng)%Rindex
END IF
exit_flag=3
ioerror=status
RETURN
END IF
END DO
# endif
.....
if defined PIO_LIB && defined DISTRIBUTE
if defined TOPAZ
!!add TOPAZ, hcjung 20230810 allocate ( S(i,ng)%pioTrc(MT+6+11) ) !!+ co2/o2 flux coef. var & 3d diags var
else
endif
endif
.....