HCJung-jbnu / ROMS-TOPAZ

ROMS + TOPAZ coupling
0 stars 0 forks source link

ROMS-TOPAZ manizza optic 접합 #14

Closed HCJung-jbnu closed 1 year ago

HCJung-jbnu commented 1 year ago

ROMS shortwave radiation?

HCJung-jbnu commented 1 year ago

TOPAZ manizza optic VS. ROMS manizza optic

HCJung-jbnu commented 1 year ago

shortwave radiation 단위 이슈

!-----------------------------------------------------------------------
!  Set incoming solar shortwave radiation (degC m/s).  Usually, the
!  shortwave radiation from input files is Watts/m2 and then converted
!  to degC m/s by multiplying by conversion factor 1/(rho0*Cp) during
!  reading (Fscale). However, we are already inside ROMS kernel here
!  and all the fluxes are kinematic so shortwave radiation units need
!  to be degC m/s.
#ifdef ISOMIP
        real(dp) :: Cp = 3974.0_r8              ! mod (4/24/06) for ICETEST
#else
        real(dp) :: Cp = 3985.0_r8              ! Joules/kg/degC
#endif
!
!  Mean density (Kg/m3) used when the Boussinesq approximation is
!  inferred.
!
        real(dp) :: rho0 = 1025.0_dp

SUBROUTINE inp_par
cff=1.0_r8/(rho0*Cp)
        Fscale(idSrad,ng)=cff*Fscale(idSrad,ng) = 2.448205159592374E-007
HCJung-jbnu commented 1 year ago

Photosynthetically active radiation (PAR) (0.4–0.7 μm) and shortwave radiation (SI) (0.285–2.8 μm)

! ! Calculate surface Photosynthetically Available Radiation (PAR). The ! net shortwave radiation is scaled back to Watts/m2 and multiplied by ! the fraction that is photosynthetically available, PARfrac. ! DO i=Istr,Iend PARsur(i)=PARfrac(ng)srflx(i,j)rho0*Cp END DO !

HCJung-jbnu commented 1 year ago

image

HCJung-jbnu commented 1 year ago

generic_TOPAZ_mode.F90 : SUB. topaz_optic


      do i = isc, iec; do j = jsc, jec
            f_vis(i,j)=TP(ng)%visfrac(i,j)
            f_ir(i,j)=1.0-TP(ng)%visfrac(i,j)
      end do; end do

      do n= 1, num_diag_tracers
        if ( T_diag(n)%name .eq. 'chl' ) then
          do i = isc, iec; do j = jsc, jec; do k = 1, Grids%nk
            chl(i,j,k)=TP(ng)%diag_trc(i,j,k,n-1)*rho0/1000.0 !!ug/kg -> mg/m3
          end do; end do; end do
        endif
      end do

      do i = isc, iec
      do j = jsc, jec

        TP(ng)%decayW(i,j,0)=1.0 !! k=1=TOP=surface W, k=Grids%nk=BOTTOM W

        k=1
        vis_irr(i,j)=TP(ng)%qsr(i,j)*f_vis(i,j)
        red(i,j,k)=0.5*exp(-TP(ng)%dzt(i,j,k)*(0.225+(0.037*chl(i,j,k)**0.629)))
        blue(i,j,k)=0.5*exp(-TP(ng)%dzt(i,j,k)*(0.0232+(0.074*chl(i,j,k)**0.674)))

        sw_frac_zw(i,j,k)=f_vis(i,j)*(red(i,j,k)+blue(i,j,k))
        sw_frac_zt(i,j,k)=0.5*(f_vis(i,j)+sw_frac_zw(i,j,k))
        INTP(ng)%opacity(i,j,k)=-log(sw_frac_zw(i,j,k)/f_vis(i,j))/TP(ng)%dzt(i,j,k)

        INTP(ng)%par(i,j,k)=vis_irr(i,j)*exp(-INTP(ng)%opacity(i,j,k)*TP(ng)%dzt(i,j,k)*0.5)
        vis_irr(i,j)=vis_irr(i,j)*exp(-INTP(ng)%opacity(i,j,k)*TP(ng)%dzt(i,j,k))

        TP(ng)%decayW(i,j,k)=(f_ir(i,j)*exp(-TP(ng)%k_ir(i,j)*ABS(TP(ng)%depth_w(i,j,k))))+red(i,j,k)+blue(i,j,k)

        do k = 2, Grids%nk
          red(i,j,k)=red(i,j,k-1)*exp(-TP(ng)%dzt(i,j,k)*(0.2250+(0.037*chl(i,j,k)**0.629)))
          blue(i,j,k)=blue(i,j,k-1)*exp(-TP(ng)%dzt(i,j,k)*(0.0232+(0.074*chl(i,j,k)**0.674)))

          sw_frac_zw(i,j,k)=f_vis(i,j)*(red(i,j,k)+blue(i,j,k))  !!<---- ROMS-optic TOTAL decayW(i,j,k,1)
          sw_frac_zt(i,j,k)=0.5*(sw_frac_zw(i,j,k-1)+sw_frac_zw(i,j,k))
          INTP(ng)%opacity(i,j,k)=-log(sw_frac_zw(i,j,k)/sw_frac_zw(i,j,k-1))/TP(ng)%dzt(i,j,k)

          if ( ABS(TP(ng)%depth_w(i,j,k-1)) <= 200.0 ) then !!mom:200m, nemo:400m, aphotic zone depth
            INTP(ng)%par(i,j,k)=vis_irr(i,j)*exp(-INTP(ng)%opacity(i,j,k)*TP(ng)%dzt(i,j,k)*0.5)
            vis_irr(i,j)=vis_irr(i,j)*exp(-INTP(ng)%opacity(i,j,k)*TP(ng)%dzt(i,j,k))
            TP(ng)%decayW(i,j,k)=(f_ir(i,j)*exp(-TP(ng)%k_ir(i,j)*ABS(TP(ng)%depth_w(i,j,k))))+red(i,j,k)+blue(i,j,k)
          else
            INTP(ng)%par(i,j,k)=0.0
            vis_irr(i,j)=0.0
            TP(ng)%decayW(i,j,k)=0.0
          end if

      end do
      end do
      end do

      deallocate(chl, sw_frac_zt, sw_frac_zw, red, blue, f_vis, f_ir, vis_irr)
HCJung-jbnu commented 1 year ago

pre_step3d.F : SUB. pre_step3d_tile

.......
#  ifdef SOLAR_SOURCE
#   if defined TOPAZ && defined OPTIC2TEMP_MANIZZA
!!hcjung 20230530, add TOPAZ optic
! Use the fraction of solar shortwave radiation, as computed by optic_manizza from TOPAZ,
! (at vertical W-points) penetrating water column.

      DO k=0,N(ng)
        DO j=Jstr,Jend
          DO i=Istr,Iend
             swdk(i,j,k) = TP(ng)%decayW(i,j,N(ng)-k)
          END DO
        END DO
      ENDDO

      if (tile .eq. 300) print*,'hcjung swdk',swdk(Istr+3,Jstr+3,:)

#   else
.......
HCJung-jbnu commented 1 year ago
HCJung-jbnu commented 1 year ago
HCJung-jbnu commented 1 year ago

define TOPAZ

define DIAGNOSTICS

define DIAGNOSTICS_BIO

define PCO2AIR_DATA

define OPTIC2TEMP_MANIZZA