Closed HCJung-jbnu closed 1 year ago
CO2/O2 flux off
.......
!!hcjung 20230623, add turn off CO2 air-sea exchange
#ifdef CO2_FLUX_OFF
CO2_Flux=0.0
#endif
!!hcjung 20230623, add turn off CO2 air-sea exchange
Bio(i,k,iTIC_)=Bio(i,k,iTIC_)+ &
& CO2_Flux*Hz_inv(i,k)
........ !!hcjung 20230623, turn off O2 air-sea exchange
O2_Flux=0.0
!!hcjung 20230623, turn off O2 air-sea exchange
Bio(i,k,iOxyg)=Bio(i,k,iOxyg)+ &
& O2_Flux*Hz_inv(i,k)
- SRCSINK_OFF 시에도 CO2/O2 Flux on이 가능하도록 fennel.h 수정하였음.
#if defined CO2_FLUX_OFF && defined O2_FLUX_OFF
CALL generic_TOPAZ_column_physics(ng, tile, Istr, Iend, Jstr, Jend, isd, ied, jsd, jed, nstep_bio, dt(ng), .false., .false.)
#endif
#if defined CO2_FLUX_OFF && !defined O2_FLUX_OFF
CALL generic_TOPAZ_column_physics(ng, tile, Istr, Iend, Jstr, Jend, isd, ied, jsd, jed, nstep_bio, dt(ng), .false., .true.)
#endif
#if !defined CO2_FLUX_OFF && defined O2_FLUX_OFF
CALL generic_TOPAZ_column_physics(ng, tile, Istr, Iend, Jstr, Jend, isd, ied, jsd, jed, nstep_bio, dt(ng), .true., .false.)
#endif
#if !defined CO2_FLUX_OFF && !defined O2_FLUX_OFF
CALL generic_TOPAZ_column_physics(ng, tile, Istr, Iend, Jstr, Jend, isd, ied, jsd, jed, nstep_bio, dt(ng), .true., .true.)
#endif
~/Nonlinear/Biology/TOPAZ/generic_TOPAZ_model.F90
subroutine generic_TOPAZ_column_physics(ng, tile, is, ie, js, je, isdd, iedd, jsdd, jedd, itt, dt, co2flux, o2flux)
.....
logical, intent(in) :: co2flux, o2flux
.....
if ( o2flux ) then !!turn on O2 air-sea exchange
do j = jsc, jec
do i = isc, iec
pvel(i,j)=9.36e-007*(TP(ng)%wndm(i,j)**2)*(1.0-TP(ng)%fr_i(i,j))
!o2
cair(i,j)=TP(ng)%o2_flux_alpha(i,j)*0.21*TP(ng)%apr(i,j)*9.7561e-006
flux_o2(i,j)=(pvel(i,j)*sqrt(660/(TP(ng)%o2_flux_sc_no(i,j)+epsln))* &
(TP(ng)%o2_flux_csurf(i,j)-cair(i,j)))*INTP(ng)%grid_tmask(i,j,1)
end do
end do
flux_o2=-flux_o2
call g_tracer_set_values(tracer_list,'o2','stf',flux_o2,isd,jsd)
end if
if ( co2flux ) then !!turn on CO2 air-sea exchange
do j = jsc, jec
do i = isc, iec
!co2
cair(i,j)=TP(ng)%co2_flux_alpha(i,j)*286.0e-6*TP(ng)%apr(i,j)*9.7561e-006
flux_co2(i,j)=(pvel(i,j)*sqrt(660/(TP(ng)%co2_flux_sc_no(i,j)+epsln))* &
(TP(ng)%co2_flux_csurf(i,j)-cair(i,j)))*INTP(ng)%grid_tmask(i,j,1)
end do
end do
flux_co2=-flux_co2
call g_tracer_set_values(tracer_list,'dic','stf',flux_co2,isd,jsd)
end if
.....