Changeset 5841 for branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcco2_medusa.F90
- Timestamp:
- 2015-10-30T12:48:06+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcco2_medusa.F90
r5726 r5841 47 47 !======================================================================= 48 48 ! 49 SUBROUTINE trc_co2_medusa( Temp, Sal, DIC, ALK, Depth, Wnd, pCO2a, &49 SUBROUTINE trc_co2_medusa( Temp, Sal, DIC, ALK, Depth, xkw, pCO2a, & 50 50 pH, pCO2w, h2co3, hco3, co3, om_cal, om_arg, co2flux, TDIC, TALK, & 51 51 dcf, henry, iters ) … … 72 72 ! 17/02/2010. Update calculation of K1, K2, Kb to make consistant with the OCMIP protocols. 73 73 ! 29/07/2011. Merged into MEDUSA with a raft of changes to this subroutine; less elsewhere 74 ! 23/06/2015. Modified to take gas transfer velocity as an input (rather than wind speed); 75 ! alter CO2 flux to /s rather than /d for consistency with other schemes 74 76 ! 75 77 ! Changes for MEDUSA include: … … 85 87 REAL(wp), INTENT( in ) :: ALK ! meq / m3 86 88 REAL(wp), INTENT( in ) :: Depth ! m 87 REAL(wp), INTENT( in ) :: Wnd ! m / s 89 ! REAL(wp), INTENT( in ) :: Wnd ! m / s 90 REAL(wp), INTENT( in ) :: xkw ! m / s 88 91 REAL(wp), INTENT( in ) :: pCO2a ! uatm 89 92 !---------------------------------------------------------------------- … … 95 98 REAL(wp), INTENT( inout ) :: om_cal ! normalised 96 99 REAL(wp), INTENT( inout ) :: om_arg ! normalised 97 REAL(wp), INTENT( inout ) :: co2flux ! mmol / m2 / d100 REAL(wp), INTENT( inout ) :: co2flux ! mmol / m2 / s 98 101 REAL(wp), INTENT( inout ) :: TDIC ! umol / kg 99 102 REAL(wp), INTENT( inout ) :: TALK ! ueq / kg … … 129 132 ! (i.e. surface calculations being performed) 130 133 if (Depth .eq. 0.0) then 131 call Air_sea_exchange( Temp, Wnd, pCO2w, pCO2a, henry, dcf, & ! inputs134 call Air_sea_exchange( Temp, xkw, pCO2w, pCO2a, henry, dcf, & ! inputs 132 135 co2flux ) ! output 133 136 else … … 145 148 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: zdic =', DIC 146 149 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: zalk =', ALK 147 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: f_ wind =', Wnd150 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: f_kw660 =', xkw 148 151 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: f_ph =', ph 149 152 IF(lwp) WRITE(numout,*) ' trc_co2_medusa: f_pco2w =', pCO2w … … 162 165 & ' DIC', DIC, ' ALK', ALK 163 166 if (lwp) write (numout,'(a,a,f10.3,a,f10.3)') 'CO2FLUX-NAN', & 164 & ' WND', Wnd, ' PH ', ph167 & ' XKW', xkw, ' PH ', ph 165 168 if (lwp) write (numout,'(a,a,i6)') 'CO2FLUX-NAN', & 166 169 & ' ITERS', iters … … 196 199 ! WRITE(*,'(A27,F10.3)') " Omega calcite (~) = ", om_cal 197 200 ! WRITE(*,'(A27,F10.3)') " Omega aragonite (~) = ", om_arg 198 ! WRITE(*,'(A27,F10.3)') " air sea flux(mmol/m2/ d) = ", flux201 ! WRITE(*,'(A27,F10.3)') " air sea flux(mmol/m2/s) = ", flux 199 202 ! WRITE(*,*) " " 200 203 … … 287 290 !======================================================================= 288 291 ! 289 SUBROUTINE Air_sea_exchange( T, Wnd, pco2w, pco2a, henry, dcf, &292 SUBROUTINE Air_sea_exchange( T, xkw, pco2w, pco2a, henry, dcf, & 290 293 flux ) 291 294 ! … … 302 305 ! pCO2a partial pressure of CO2 in the atmosphere (usually external forcing). 303 306 ! T temperature (C) 304 ! Wnd wind speed, metres 307 ! Wnd wind speed, metres (DELETED) 308 ! xkw gas transfer velocity 305 309 ! Henry henry's constant 306 310 ! density the density of water for conversion between mmol/m3 and umol/kg … … 312 316 IMPLICIT NONE 313 317 314 REAL(wp), INTENT( in ) :: T, wnd, pco2w, pco2a, henry, dcf ! INPUT PARAMETERS:318 REAL(wp), INTENT( in ) :: T, xkw, pco2w, pco2a, henry, dcf ! INPUT PARAMETERS: 315 319 !----------------------------------------------------------------------- 316 320 REAL(wp), INTENT( inout ) :: flux ! OUTPUT Variables … … 320 324 ! calculate the Schmidt number and unit conversions 321 325 sc = 2073.1-125.62*T+3.6276*T**2.0-0.0432190*T**3.0 322 fwind = (0.222d0 * wnd**2d0 + 0.333d0 * wnd)*(sc/660.d0)**(-0.5) 326 ! fwind = (0.222d0 * wnd**2d0 + 0.333d0 * wnd)*(sc/660.d0)**(-0.5) 327 fwind = xkw * (sc/660.d0)**(-0.5) 323 328 fwind = fwind*24.d0/100.d0 ! convert to m/day 324 329 … … 326 331 ! here it is rescaled to mmol/m2/d 327 332 flux = fwind * henry * ( pco2a - pco2w ) * dcf 333 334 ! AXY (23/06/15): let's get it from /d to /s 335 flux = flux / ( 86400. ) 328 336 329 337 RETURN
Note: See TracChangeset
for help on using the changeset viewer.