New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 15463 – NEMO

Changeset 15463


Ignore:
Timestamp:
2021-10-29T16:39:40+02:00 (7 months ago)
Author:
dford
Message:

CO2 flux based on input significant wave height.

Location:
branches/UKMO/dev_r5518_GO6_package_FOAMv14_Hs_CO2/NEMOGCM/NEMO/TOP_SRC/MEDUSA
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14_Hs_CO2/NEMOGCM/NEMO/TOP_SRC/MEDUSA/air_sea.F90

    r12102 r15463  
    6969      USE in_out_manager,    ONLY: lwp, numout 
    7070      USE par_kind,          ONLY: wp 
    71       USE par_oce,           ONLY: jpi, jpim1, jpj, jpjm1 
    72       USE sbc_oce,           ONLY: fr_i, qsr, wndm 
     71      USE par_oce,           ONLY: jpi, jpim1, jpj, jpjm1, jp_tem, jp_sal 
     72      USE sbc_oce,           ONLY: fr_i, qsr, wndm, taum 
    7373      USE sms_medusa,        ONLY: jdms, jdms_input, jdms_model,          & 
    7474                                   jriver_alk, jriver_c,                  & 
     
    7979                                   zn_dms_mld, zn_dms_qsr,                & 
    8080                                   f2_pco2w, f2_fco2w,                    & 
    81                                    xnln, xnld  
     81                                   xnln, xnld, input_swh 
    8282      USE trc,               ONLY: med_diag 
    8383      USE zdfmxl,            ONLY: hmld 
     84      USE oce,               ONLY: tsn 
    8485 
    8586# if defined key_roam 
     
    169170               !! 
    170171               CALL gas_transfer( wndm(ji,jj), 1, 7,         &  ! inputs 
     172                                  input_swh(ji,jj), taum(ji,jj), & 
     173                                  tsn(ji,jj,1,jp_tem) + 273.15, tsn(ji,jj,1,jp_sal), & 
    171174                                  f_kw660(ji,jj) )              ! outputs 
    172175            ENDIF 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14_Hs_CO2/NEMOGCM/NEMO/TOP_SRC/MEDUSA/gas_transfer.F90

    r6715 r15463  
    1414      USE prtctl_trc      ! Print control for debugging 
    1515      USE in_out_manager  ! I/O manager 
     16      USE phycst, ONLY: grav 
    1617 
    1718      IMPLICIT NONE 
     
    3031CONTAINS 
    3132 
    32       subroutine gas_transfer(wind, N, eqn, kw660) 
     33      subroutine gas_transfer(wind, N, eqn, swh, tau, sst, sss, kw660) 
    3334! -------------------------------------------------------------------- 
    3435!  Gas transfer velocity 
     
    8384! Input variables 
    8485!     real(kind=wp), INTENT(in),  DIMENSION(N) :: wind 
    85       real(wp), INTENT(in)  :: wind 
     86      real(wp), INTENT(in)  :: wind, swh, tau, sst, sss 
    8687! 
    8788! Output variables 
     
    9798!     real(wp), DIMENSION(N) :: tmp_k 
    9899      real(wp) :: tmp_k 
     100      real(wp) :: ln_k_0, k_0, a_b, a_nb, r, u_star 
    99101! 
    100102! Values of coefficients 
     
    119121! 
    120122! Calculate gas transfer velocity (cm/h) 
    121       tmp_k = (a(eqn) * wind**2) + (b(eqn) * wind) 
     123 
     124      if ( (swh < 0.0) .OR. (swh > 100.0) ) then 
     125         ! Wanninkhof (2014) 
     126         tmp_k = (a(eqn) * wind**2) + (b(eqn) * wind) 
     127         !write(numout,*) 'swh, wind, tmp_k = ', swh, wind, tmp_k 
    122128! 
    123129! Convert tmp_k from cm/h to m/s 
    124       kw660 = tmp_k / (100. * 3600.) 
     130         kw660 = tmp_k / (100. * 3600.) 
     131      else 
     132         ! Deike and Melville (2018) 
     133         ln_k_0 = -60.2409 + & 
     134            &     93.4517 * (100.0 / sst) + & 
     135            &     23.3585 * LOG(sst/100.0) + & 
     136            &     sss * & 
     137            &     (0.023517 - & 
     138            &      0.023656 * (sst/100.0) + & 
     139            &      0.0047036 * (sst/100.0) * (sst/100.0)) 
     140         k_0 = EXP(ln_k_0)        ! solubility 
     141!tmp = 9345.17d0/tk0 - 60.2409d0 + 23.3585d0 * LOG(tk0/100.0d0) 
     142!nK0we74 = tmp + s*(0.023517d0 - 0.00023656d0*tk0 + 0.0047036e-4_wp*tk0*tk0) 
     143!K0(i) = EXP(nK0we74) 
     144         a_b = 0.00001             ! bubble coefficient 
     145         a_nb = 0.000155           ! non-bubble coefficient 
     146         r = 83.14472             ! gas constant 
     147         u_star = SQRT(tau/1.22)  ! friction velocity = wind shear / air density 
     148          
     149         tmp_k = (a_b / (k_0 * r * sst)) * u_star**(5.0/3.0) * (grav * swh)**(2.0/3.0) + & 
     150            &    a_nb * u_star 
     151         !write(numout,*) 'swh, wind, tau, sst, sss, ln_k_0, k_0, u_star, tmp_k = ', swh, wind, tau, sst, sss, ln_k_0, k_0, u_star, tmp_k 
     152         kw660 = tmp_k 
     153      endif 
     154 
     155! 
     156! Convert tmp_k from cm/h to m/s 
     157!      kw660 = tmp_k / (100. * 3600.) 
    125158! 
    126159      return 
     
    139172CONTAINS 
    140173 
    141    SUBROUTINE gas_transfer(wind, N, eqn, kw660) 
     174   SUBROUTINE gas_transfer(wind, N, eqn, swh, tau, sst, sss, kw660) 
    142175      USE par_kind 
    143176 
    144       REAL(wp), INTENT( in )    :: wind 
     177      REAL(wp), INTENT( in )    :: wind, swh, tau, sst, sss 
    145178      REAL(wp), INTENT( in )    :: kw660 
    146179      INTEGER, INTENT(in) :: N, eqn 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14_Hs_CO2/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r13725 r15463  
    266266!! 
    267267   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ocal_ccd  !: CCD depth 
     268 
     269!!---------------------------------------------------------------------- 
     270!! SWH 
     271!!---------------------------------------------------------------------- 
     272!! 
     273   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   input_swh  !: SWH 
    268274 
    269275!!---------------------------------------------------------------------- 
     
    426432      !* 2D fields of miscellaneous parameters 
    427433      ALLOCATE( ocal_ccd(jpi,jpj)    , dust(jpi,jpj)        ,       & 
    428          &      zirondep(jpi,jpj)                           ,       & 
     434         &      zirondep(jpi,jpj)    , input_swh(jpi,jpj)   ,       & 
    429435         &      riv_n(jpi,jpj)                              ,       & 
    430436         &      riv_si(jpi,jpj)      , riv_c(jpi,jpj)       ,       & 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14_Hs_CO2/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90

    r10302 r15463  
    4444 
    4545   INTEGER ::                          & 
    46       numccd 
     46      numccd, numswh 
    4747 
    4848   !! AXY (25/02/10) 
     
    295295         & 'CCD: min ', fq0, ' max ', fq1 
    296296      !! 
     297      IF(lwp) WRITE(numout,*) ' trc_ini_medusa: initialising input_swh array' 
     298      CALL trc_ini_medusa_swh( nit000 ) 
     299      !! 
    297300      IF(lwp) WRITE(numout,*) ' trc_ini_medusa: initialising riverine nutrient arrays' 
    298301      riv_n(:,:)   = 0.0 
     
    391394  
    392395   END SUBROUTINE trc_ini_medusa_ccd 
     396 
     397   !! ====================================================================== 
     398   !! ====================================================================== 
     399   !! ====================================================================== 
     400 
     401   !! AXY (25/02/10) 
     402   SUBROUTINE trc_ini_medusa_swh(kt) 
     403 
     404      !!---------------------------------------------------------------------- 
     405      !!                  ***  ROUTINE trc_ini_medusa_swh  *** 
     406      !! 
     407      !! ** Purpose :   Read Hs field 
     408      !! 
     409      !! ** Method  :   Read the file 
     410      !! 
     411      !! ** input   :   external netcdf files 
     412      !! 
     413      !!---------------------------------------------------------------------- 
     414      !! * arguments 
     415      INTEGER, INTENT( in  ) ::   kt   ! ocean time step 
     416 
     417      !!--------------------------------------------------------------------- 
     418 
     419      !! Open the file 
     420      !! ------------- 
     421      IF(lwp) WRITE(numout,*) ' ' 
     422      IF(lwp) WRITE(numout,*) ' **** Routine trc_ini_medusa_swh' 
     423      CALL iom_open ( 'gridded_swh.nc', numswh ) 
     424      IF(lwp) WRITE(numout,*) ' **** trc_ini_medusa_swh: gridded_swh.nc opened' 
     425 
     426      !! Read the data 
     427      !! ------------- 
     428      !! 
     429      CALL iom_get ( numswh, jpdom_data, 'swh', input_swh ) 
     430      IF(lwp) WRITE(numout,*) ' **** trc_ini_medusa_swh: data read' 
     431 
     432      !! Close the file 
     433      !! -------------- 
     434      !! 
     435      CALL iom_close ( numswh ) 
     436      IF(lwp) WRITE(numout,*) ' **** trc_ini_medusa_swh: gridded_swh.nc closed' 
     437      IF(lwp) CALL flush(numout) 
     438  
     439   END SUBROUTINE trc_ini_medusa_swh 
    393440 
    394441   !! ====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.