Changeset 12377 for NEMO/trunk/src/TOP/C14/trcsms_c14.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/C14/trcsms_c14.F90
r10069 r12377 26 26 PUBLIC trc_sms_c14 ! called in trcsms.F90 27 27 28 !! * Substitutions 29 # include "do_loop_substitute.h90" 28 30 !!---------------------------------------------------------------------- 29 31 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 33 35 CONTAINS 34 36 35 SUBROUTINE trc_sms_c14( kt )37 SUBROUTINE trc_sms_c14( kt, Kbb, Kmm, Krhs ) 36 38 !!---------------------------------------------------------------------- 37 39 !! *** ROUTINE trc_sms_c14 *** … … 46 48 ! freshwater fluxes which should not impact the C14/C ratio 47 49 ! 48 ! => Delta-C14= ( tr n(...jp_c14) -1)*1000.50 ! => Delta-C14= ( tr(...jp_c14,Kmm) -1)*1000. 49 51 !! 50 52 !!---------------------------------------------------------------------- 51 53 ! 52 INTEGER, INTENT(in) :: kt ! ocean time-step index 54 INTEGER, INTENT(in) :: kt ! ocean time-step index 55 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! ocean time level 53 56 ! 54 INTEGER :: ji, jj, jk 57 INTEGER :: ji, jj, jk ! dummy loop indices 55 58 REAL(wp) :: zt, ztp, zsk ! dummy variables 56 59 REAL(wp) :: zsol ! solubility … … 77 80 ! ------------------------------------------------------------------- 78 81 79 DO jj = 1, jpj 80 DO ji = 1, jpi 81 IF( tmask(ji,jj,1) > 0. ) THEN 82 ! 83 zt = MIN( 40. , tsn(ji,jj,1,jp_tem) ) 84 ! 85 ! Computation of solubility zsol in [mol/(L * atm)] 86 ! after Wanninkhof (2014) referencing Weiss (1974) 87 ztp = ( zt + 273.16 ) * 0.01 88 zsk = 0.027766 + ztp * ( -0.025888 + 0.0050578 * ztp ) ! [mol/(L * atm)] 89 zsol = EXP( -58.0931 + 90.5069 / ztp + 22.2940 * LOG( ztp ) + zsk * tsn(ji,jj,1,jp_sal) ) 90 ! convert solubilities [mol/(L * atm)] -> [mol/(m^3 * ppm)] 91 zsol = zsol * 1.e-03 82 DO_2D_11_11 83 IF( tmask(ji,jj,1) > 0. ) THEN 84 ! 85 zt = MIN( 40. , ts(ji,jj,1,jp_tem,Kmm) ) 86 ! 87 ! Computation of solubility zsol in [mol/(L * atm)] 88 ! after Wanninkhof (2014) referencing Weiss (1974) 89 ztp = ( zt + 273.16 ) * 0.01 90 zsk = 0.027766 + ztp * ( -0.025888 + 0.0050578 * ztp ) ! [mol/(L * atm)] 91 zsol = EXP( -58.0931 + 90.5069 / ztp + 22.2940 * LOG( ztp ) + zsk * ts(ji,jj,1,jp_sal,Kmm) ) 92 ! convert solubilities [mol/(L * atm)] -> [mol/(m^3 * ppm)] 93 zsol = zsol * 1.e-03 92 94 93 94 95 95 ! Computes the Schmidt number of CO2 in seawater 96 ! Wanninkhof-2014 97 zsch = 2116.8 + zt * ( -136.25 + zt * (4.7353 + zt * (-0.092307 + 0.0007555 * zt ) ) ) 96 98 97 98 99 100 101 102 103 99 ! Wanninkhof Piston velocity: zpv in units [m/s] 100 zv2 = xkwind * (wndm(ji,jj) * wndm(ji,jj)) ! wind speed module at T points 101 ! chemical enhancement (Wanninkhof & Knox, 1996) 102 IF( ln_chemh ) zv2 = zv2 + 2.5 * ( 0.5246 + zt * (0.016256 + 0.00049946 * zt ) ) 103 zv2 = zv2/360000._wp ! conversion cm/h -> m/s 104 ! 105 zpv = ( zv2 * SQRT( 660./ zsch ) ) * ( 1. - fr_i(ji,jj) ) * tmask(ji,jj,1) 104 106 105 ! CO2 piston velocity (m/s) 106 exch_co2(ji,jj)= zpv 107 ! CO2 invasion rate (mol/ppm/m2/s) = 1st part of 14C/C exchange velocity 108 exch_c14(ji,jj)= zpv * zsol 109 ELSE 110 exch_co2(ji,jj) = 0._wp 111 exch_c14(ji,jj) = 0._wp 112 ENDIF 113 END DO 114 END DO 107 ! CO2 piston velocity (m/s) 108 exch_co2(ji,jj)= zpv 109 ! CO2 invasion rate (mol/ppm/m2/s) = 1st part of 14C/C exchange velocity 110 exch_c14(ji,jj)= zpv * zsol 111 ELSE 112 exch_co2(ji,jj) = 0._wp 113 exch_c14(ji,jj) = 0._wp 114 ENDIF 115 END_2D 115 116 116 117 ! Exchange velocity for 14C/C ratio (m/s) … … 120 121 ! Flux of C-14 from air-to-sea; units: (C14/C ratio) x m/s 121 122 ! already masked 122 qtr_c14(:,:) = exch_c14(:,:) * ( c14sbc(:,:) - tr b(:,:,1,jp_c14) )123 qtr_c14(:,:) = exch_c14(:,:) * ( c14sbc(:,:) - tr(:,:,1,jp_c14,Kbb) ) 123 124 124 125 ! cumulation of air-to-sea flux at each time step … … 126 127 ! 127 128 ! Add the surface flux to the trend of jp_c14 128 DO jj = 1, jpj 129 DO ji = 1, jpi 130 tra(ji,jj,1,jp_c14) = tra(ji,jj,1,jp_c14) + qtr_c14(ji,jj) / e3t_n(ji,jj,1) 131 END DO 132 END DO 129 DO_2D_11_11 130 tr(ji,jj,1,jp_c14,Krhs) = tr(ji,jj,1,jp_c14,Krhs) + qtr_c14(ji,jj) / e3t(ji,jj,1,Kmm) 131 END_2D 133 132 ! 134 133 ! Computation of decay effects on jp_c14 135 DO jk = 1, jpk 136 DO jj = 1, jpj 137 DO ji = 1, jpi 138 ! 139 tra(ji,jj,jk,jp_c14) = tra(ji,jj,jk,jp_c14) - rlam14 * trb(ji,jj,jk,jp_c14) * tmask(ji,jj,jk) 140 ! 141 END DO 142 END DO 143 END DO 134 DO_3D_11_11( 1, jpk ) 135 ! 136 tr(ji,jj,jk,jp_c14,Krhs) = tr(ji,jj,jk,jp_c14,Krhs) - rlam14 * tr(ji,jj,jk,jp_c14,Kbb) * tmask(ji,jj,jk) 137 ! 138 END_3D 144 139 ! 145 140 IF( lrst_trc ) THEN … … 157 152 ENDIF 158 153 159 IF( l_trdtrc ) CALL trd_trc( tr a(:,:,:,jp_c14), 1, jptra_sms, kt) ! save trends154 IF( l_trdtrc ) CALL trd_trc( tr(:,:,:,jp_c14,Krhs), 1, jptra_sms, kt, Kmm ) ! save trends 160 155 ! 161 156 IF( ln_timing ) CALL timing_stop('trc_sms_c14')
Note: See TracChangeset
for help on using the changeset viewer.