Changeset 12377 for NEMO/trunk/src/TOP/CFC/trcsms_cfc.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/TOP/CFC/trcsms_cfc.F90
r12300 r12377 47 47 REAL(wp) :: xconv4 = 1.0e-12 ! conversion from mol/m3/atm to mol/m3/pptv 48 48 49 !! * Substitutions 50 # include "do_loop_substitute.h90" 49 51 !!---------------------------------------------------------------------- 50 52 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 54 56 CONTAINS 55 57 56 SUBROUTINE trc_sms_cfc( kt )58 SUBROUTINE trc_sms_cfc( kt, Kbb, Kmm, Krhs ) 57 59 !!---------------------------------------------------------------------- 58 60 !! *** ROUTINE trc_sms_cfc *** … … 70 72 !! CFC concentration in pico-mol/m3 71 73 !!---------------------------------------------------------------------- 72 INTEGER, INTENT(in) :: kt ! ocean time-step index 74 INTEGER, INTENT(in) :: kt ! ocean time-step index 75 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! ocean time level 73 76 ! 74 77 INTEGER :: ji, jj, jn, jl, jm … … 122 125 123 126 ! !------------! 124 DO jj = 1, jpj ! i-j loop ! 125 DO ji = 1, jpi !------------! 127 DO_2D_11_11 126 128 127 ! space interpolation 128 zpp_cfc = xphem(ji,jj) * zpatm(1,jl) & 129 & + ( 1.- xphem(ji,jj) ) * zpatm(2,jl) 130 131 ! Computation of concentration at equilibrium : in picomol/l 132 ! coefficient for solubility for CFC-11/12 in mol/l/atm 133 IF( tmask(ji,jj,1) .GE. 0.5 ) THEN 134 ztap = ( tsn(ji,jj,1,jp_tem) + 273.16 ) * 0.01 135 zdtap = sob(1,jl) + ztap * ( sob(2,jl) + ztap * sob(3,jl) ) 136 zsol = EXP( soa(1,jl) + soa(2,jl) / ztap + soa(3,jl) * LOG( ztap ) & 137 & + soa(4,jl) * ztap * ztap + tsn(ji,jj,1,jp_sal) * zdtap ) 138 ELSE 139 zsol = 0.e0 140 ENDIF 141 ! conversion from mol/l/atm to mol/m3/atm and from mol/m3/atm to mol/m3/pptv 142 zsol = xconv4 * xconv3 * zsol * tmask(ji,jj,1) 143 ! concentration at equilibrium 144 zca_cfc = xconv1 * zpp_cfc * zsol * tmask(ji,jj,1) 145 146 ! Computation of speed transfert 147 ! Schmidt number revised in Wanninkhof (2014) 148 zt1 = tsn(ji,jj,1,jp_tem) 149 zt2 = zt1 * zt1 150 zt3 = zt1 * zt2 151 zt4 = zt2 * zt2 152 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 153 154 ! speed transfert : formulae revised in Wanninkhof (2014) 155 zv2 = wndm(ji,jj) * wndm(ji,jj) 156 zsch = zsch / 660. 157 zak_cfc = ( 0.251 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 158 159 ! Input function : speed *( conc. at equil - concen at surface ) 160 ! trn in pico-mol/l idem qtr; ak in en m/a 161 qtr_cfc(ji,jj,jl) = -zak_cfc * ( trb(ji,jj,1,jn) - zca_cfc ) & 162 & * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 163 ! Add the surface flux to the trend 164 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + qtr_cfc(ji,jj,jl) / e3t_n(ji,jj,1) 165 166 ! cumulation of surface flux at each time step 167 qint_cfc(ji,jj,jl) = qint_cfc(ji,jj,jl) + qtr_cfc(ji,jj,jl) * rdt 168 ! !----------------! 169 END DO ! end i-j loop ! 170 END DO !----------------! 129 ! space interpolation 130 zpp_cfc = xphem(ji,jj) * zpatm(1,jl) & 131 & + ( 1.- xphem(ji,jj) ) * zpatm(2,jl) 132 133 ! Computation of concentration at equilibrium : in picomol/l 134 ! coefficient for solubility for CFC-11/12 in mol/l/atm 135 IF( tmask(ji,jj,1) .GE. 0.5 ) THEN 136 ztap = ( ts(ji,jj,1,jp_tem,Kmm) + 273.16 ) * 0.01 137 zdtap = sob(1,jl) + ztap * ( sob(2,jl) + ztap * sob(3,jl) ) 138 zsol = EXP( soa(1,jl) + soa(2,jl) / ztap + soa(3,jl) * LOG( ztap ) & 139 & + soa(4,jl) * ztap * ztap + ts(ji,jj,1,jp_sal,Kmm) * zdtap ) 140 ELSE 141 zsol = 0.e0 142 ENDIF 143 ! conversion from mol/l/atm to mol/m3/atm and from mol/m3/atm to mol/m3/pptv 144 zsol = xconv4 * xconv3 * zsol * tmask(ji,jj,1) 145 ! concentration at equilibrium 146 zca_cfc = xconv1 * zpp_cfc * zsol * tmask(ji,jj,1) 147 ! Computation of speed transfert 148 ! Schmidt number revised in Wanninkhof (2014) 149 zt1 = ts(ji,jj,1,jp_tem,Kmm) 150 zt2 = zt1 * zt1 151 zt3 = zt1 * zt2 152 zt4 = zt2 * zt2 153 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 154 155 ! speed transfert : formulae revised in Wanninkhof (2014) 156 zv2 = wndm(ji,jj) * wndm(ji,jj) 157 zsch = zsch / 660. 158 zak_cfc = ( 0.251 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 159 160 ! Input function : speed *( conc. at equil - concen at surface ) 161 ! tr(:,:,:,:,Kmm) in pico-mol/l idem qtr; ak in en m/a 162 qtr_cfc(ji,jj,jl) = -zak_cfc * ( tr(ji,jj,1,jn,Kbb) - zca_cfc ) & 163 & * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 164 ! Add the surface flux to the trend 165 tr(ji,jj,1,jn,Krhs) = tr(ji,jj,1,jn,Krhs) + qtr_cfc(ji,jj,jl) / e3t(ji,jj,1,Kmm) 166 167 ! cumulation of surface flux at each time step 168 qint_cfc(ji,jj,jl) = qint_cfc(ji,jj,jl) + qtr_cfc(ji,jj,jl) * rdt 169 ! !----------------! 170 END_2D 171 171 ! !----------------! 172 172 END DO ! end CFC loop ! … … 195 195 IF( l_trdtrc ) THEN 196 196 DO jn = jp_cfc0, jp_cfc1 197 CALL trd_trc( tr a(:,:,:,jn), jn, jptra_sms, kt) ! save trends197 CALL trd_trc( tr(:,:,:,jn,Krhs), jn, jptra_sms, kt, Kmm ) ! save trends 198 198 END DO 199 199 END IF
Note: See TracChangeset
for help on using the changeset viewer.