Closed HCJung-jbnu closed 1 year ago
DO itrc=1,NBT
ibio=idbio(itrc)
DO k=1,N(ng)
DO i=Istr,Iend
Bio_old(i,k,ibio)=MAX(0.0_r8,t(i,j,k,nstp,ibio))
Bio(i,k,ibio)=Bio_old(i,k,ibio)
END DO
END DO
END DO
.....
!-----------------------------------------------------------------------
! Update global tracer variables: Add increment due to BGC processes
! to tracer array in time index "nnew". Index "nnew" is solution after
! advection and mixing and has transport units (m Tunits) hence the
! increment is multiplied by Hz. Notice that we need to subtract
! original values "Bio_old" at the top of the routine to just account
! for the concentractions affected by BGC processes. This also takes
! into account any constraints (non-negative concentrations, carbon
! concentration range) specified before entering BGC kernel. If "Bio"
! were unchanged by BGC processes, the increment would be exactly
! zero. Notice that final tracer values, t(:,:,:,nnew,:) are not
! bounded >=0 so that we can preserve total inventory of N and
! C even when advection causes tracer concentration to go negative.
! (J. Wilkin and H. Arango, Apr 27, 2012) :: nnew 는 tendency*dt
!-----------------------------------------------------------------------
DO itrc=1,NBT
ibio=idbio(itrc)
DO k=1,N(ng)
DO i=Istr,Iend
cff=Bio(i,k,ibio)-Bio_old(i,k,ibio)
#ifdef MASKING
cff=cff*rmask(i,j)
# ifdef WET_DRY
cff=cff*rmask_wet(i,j)
# endif
#endif
t(i,j,k,nnew,ibio)=t(i,j,k,nnew,ibio)+cff*Hz(i,j,k) <-----TOPAZ에 적용
END DO
END DO
END DO
END DO J_LOOP
! Set value for boundaries <-- what's this?
DO it=1,NOBGC
CALL bc_r3d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, 1, UBk, &
& obgc(:,:,:,nnew,it))
END DO
!-----------------------------------------------------------------------
! 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
wrk(i)=Ascl(2.448205159592374E-007)*(Afactor(1.0)*wrk(i)+Aoffset(0.0))
ROMS info
ROMS grid 정보 변수
mod_scalars.F dt
get_state.F diag. init -> topaz
tile = myrank
ROMS vertical nk 1=bottom, N(ng)=top
dzt = Hz ! Ocean layer thickness (meters)
hblt_depth = mxl_depth(i,j) rho_ref(i,j) = rho(i,j,UBk) z_r(i,j,k) = rho point depth z_w(i,j,UBk) = w point depth mxl_blev : mixed layer bottom level ! find the real mxl with linear interpolation DO j=Jstr,Jend DO i=Istr,Iend
! IF ( mxl_blev(i,j) > 1) THEN ! this would be the depth if we consider all the level mxl_depth(i,j) = FM(i,j,mxl_blev(i,j))
! mxl_subgrid(i,j) = drho_crit * & ! & ( ( z_w(i,j,mxl_blev(i,j)+1) - z_w(i,j,mxl_blev(i,j)) ) / & ! & max( rho(i,j,mxl_blev(i,j)) - rho(i,j,mxl_blev(i,j)+1), 1.0e-9 ) )
! mxl_depth(i,j) = FM(i,j,mxl_blev(i,j)) - mxl_subgrid(i,j) ! ! ELSE ! mxl_depth(i,j) = h(i,j) ! ENDIF
ENDDO
rho_ref(i,j) = rho(i,j,UBk) z_r(i,j,k) = rho point depth z_w(i,j,UBk) = w point depth mxl_blev : mixed layer bottom level
Hz Thicknesses (m) of vertical RHO-points. h Bottom depth (m) at RHO-points. omn RHO-grid area (meters2). ! z_r Actual depths (m) at horizontal RHO-points and ! ! vertical RHO-points. ! ! z_w Actual depths (m) at horizontal RHO-points and ! ! vertical W-points.
decayW u10_neutral Pair Surface air pressure (mb).
! Uwind Surface wind in the XI-direction (m/s) at ! ! horizontal RHO-points. ! ! Vwind Surface wind in the ETA-direction (m/s) at ! ! horizontal RHO-points.