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 15336 – NEMO

Changeset 15336


Ignore:
Timestamp:
2021-10-06T12:56:13+02:00 (3 years ago)
Author:
jmedwards01
Message:

First version of branch.

Location:
NEMO/branches/UKMO/NEMO_4.0.1_coast_wdcpl/src/OCE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_coast_wdcpl/src/OCE/SBC/sbccpl.F90

    r11715 r15336  
    88   !!            3.1  ! 2009_02  (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 
    99   !!            3.4  ! 2011_11  (C. Harris) more flexibility + multi-category fields 
     10   !!            x.y  ! 2021_10  (J. M. Edwards) Thermal coupling to sea bed 
    1011   !!---------------------------------------------------------------------- 
    1112 
     
    3233   USE cpl_oasis3     ! OASIS3 coupling 
    3334   USE geo2ocean      !  
    34    USE oce     , ONLY : tsn, un, vn, sshn, ub, vb, sshb, fraqsr_1lev 
     35   USE oce     , ONLY : tsn, un, vn, sshn, ub, vb, sshb, fraqsr_1lev, t_bed,   & 
     36                        gfx_bed 
    3537   USE ocealb         !  
    3638   USE eosbn2         !  
     
    116118   INTEGER, PARAMETER ::   jpr_tauwy  = 56   ! y component of the ocean stress from waves 
    117119   INTEGER, PARAMETER ::   jpr_ts_ice = 57   ! Sea ice surface temp 
    118  
    119    INTEGER, PARAMETER ::   jprcv      = 57   ! total number of fields received   
     120   INTEGER, PARAMETER ::   jpr_t_bed  = 58   ! Sea bed temperature 
     121 
     122   INTEGER, PARAMETER ::   jprcv      = 58   ! total number of fields received   
    120123 
    121124   INTEGER, PARAMETER ::   jps_fice   =  1   ! ice fraction sent to the atmosphere 
     
    157160   INTEGER, PARAMETER ::   jps_sstfrz = 37   ! sea surface freezing temperature 
    158161   INTEGER, PARAMETER ::   jps_ttilyr = 38   ! sea ice top layer temp 
    159  
    160    INTEGER, PARAMETER ::   jpsnd      = 38   ! total number of fields sent  
     162   INTEGER, PARAMETER ::   jps_gfx_bed = 39  ! sea ice top layer temp 
     163 
     164   INTEGER, PARAMETER ::   jpsnd      = 39   ! total number of fields sent  
    161165 
    162166   !                                  !!** namelist namsbc_cpl ** 
     
    170174   !                                   ! Send to the atmosphere   
    171175   TYPE(FLD_C) ::   sn_snd_temp  , sn_snd_alb , sn_snd_thick, sn_snd_crt   , sn_snd_co2,  & 
    172       &             sn_snd_thick1, sn_snd_cond, sn_snd_mpnd , sn_snd_sstfrz, sn_snd_ttilyr 
     176      &             sn_snd_thick1, sn_snd_cond, sn_snd_mpnd , sn_snd_sstfrz, sn_snd_ttilyr, & 
     177      &             sn_snd_gfx_bed 
    173178   !                                   ! Received from the atmosphere 
    174179   TYPE(FLD_C) ::   sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau, sn_rcv_tauw, sn_rcv_dqnsdt, sn_rcv_qsr,  & 
    175       &             sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf, sn_rcv_ts_ice 
     180      &             sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf, sn_rcv_ts_ice, sn_rcv_t_bed 
    176181   TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2, sn_rcv_mslp, sn_rcv_icb, sn_rcv_isf 
    177182   ! Send to waves  
     
    250255      NAMELIST/namsbc_cpl/  sn_snd_temp  , sn_snd_alb   , sn_snd_thick, sn_snd_crt   , sn_snd_co2  ,   &  
    251256         &                  sn_snd_ttilyr, sn_snd_cond  , sn_snd_mpnd , sn_snd_sstfrz, sn_snd_thick1,  &  
    252          &                  sn_snd_ifrac , sn_snd_crtw  , sn_snd_wlev , sn_rcv_hsig  , sn_rcv_phioc,   &  
     257         &                  sn_snd_ifrac , sn_snd_crtw  , sn_snd_wlev , sn_snd_gfx_bed,                & 
     258         &                  sn_rcv_t_bed, sn_rcv_hsig  , sn_rcv_phioc,                                 &  
    253259         &                  sn_rcv_w10m  , sn_rcv_taumod, sn_rcv_tau  , sn_rcv_dqnsdt, sn_rcv_qsr  ,   &  
    254260         &                  sn_rcv_sdrfx , sn_rcv_sdrfy , sn_rcv_wper , sn_rcv_wnum  , sn_rcv_tauwoc,  & 
     
    307313         WRITE(numout,*)'      Neutral surf drag coefficient   = ', TRIM(sn_rcv_wdrag%cldes ), ' (', TRIM(sn_rcv_wdrag%clcat ), ')'  
    308314         WRITE(numout,*)'      Sea ice surface skin temperature= ', TRIM(sn_rcv_ts_ice%cldes), ' (', TRIM(sn_rcv_ts_ice%clcat), ')'  
     315         WRITE(numout,*)'      Sea bed temperature             = ', TRIM(sn_rcv_t_bed%cldes   ), ' (', TRIM(sn_rcv_t_bed%clcat   ), ')' 
    309316         WRITE(numout,*)'  sent fields (multiple ice categories)' 
    310317         WRITE(numout,*)'      surface temperature             = ', TRIM(sn_snd_temp%cldes  ), ' (', TRIM(sn_snd_temp%clcat  ), ')' 
     
    322329         WRITE(numout,*)'      sea surface freezing temp       = ', TRIM(sn_snd_sstfrz%cldes), ' (', TRIM(sn_snd_sstfrz%clcat), ')' 
    323330         WRITE(numout,*)'      water level                     = ', TRIM(sn_snd_wlev%cldes  ), ' (', TRIM(sn_snd_wlev%clcat  ), ')'  
     331         WRITE(numout,*)'      Heat flux to sea bed            = ', TRIM(sn_snd_gfx_bed%cldes  ), ' (', TRIM(sn_snd_gfx_bed%clcat  ), ')'  
    324332         WRITE(numout,*)'      mean sea level pressure         = ', TRIM(sn_rcv_mslp%cldes  ), ' (', TRIM(sn_rcv_mslp%clcat  ), ')'  
    325333         WRITE(numout,*)'      surface current to waves        = ', TRIM(sn_snd_crtw%cldes  ), ' (', TRIM(sn_snd_crtw%clcat  ), ')'  
     
    574582 
    575583      !                                                      ! ------------------------- ! 
     584      !                                                      !    sea bed temperature    !    
     585      !                                                      ! ------------------------- ! 
     586      srcv(jpr_ts_ice)%clname = 'OT_bed'    ! needed by Met Office 
     587      IF ( TRIM( sn_rcv_t_bed%cldes ) == 'coupled' )   srcv(jpr_ts_ice)%laction = .TRUE. 
     588 
     589      !                                                      ! ------------------------- ! 
    576590      !                                                      !      Wave breaking        !     
    577591      !                                                      ! ------------------------- !  
     
    950964      !                                                      ! ------------------------- !  
    951965      ssnd(jps_wlev)%clname = 'O_Wlevel' ;  IF( TRIM(sn_snd_wlev%cldes) == 'coupled' )   ssnd(jps_wlev)%laction = .TRUE.  
     966 
     967      !  
     968      !                                                      ! ------------------------- !  
     969      !                                                      !     Sea bed heat flux     !      
     970      !                                                      ! ------------------------- !  
     971      ssnd(jps_gfx_bed)%clname = 'O_Gfx' ;  IF( TRIM(sn_snd_gfx_bed%cldes) == 'coupled' )   ssnd(jps_gfx_bed)%laction = .TRUE.  
    952972 
    953973      !                                                      ! ------------------------------- ! 
     
    10931113      !!                        qsr          solar ocean heat fluxes   (ocean only case) 
    10941114      !!                        emp          upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 
     1115      !!                        t_bed        temperature of sea bed 
    10951116      !!---------------------------------------------------------------------- 
    10961117      USE zdf_oce,  ONLY :   ln_zdfswm 
     
    11081129      REAL(wp) ::   zcdrag = 1.5e-3        ! drag coefficient 
    11091130      REAL(wp) ::   zzx, zzy               ! temporary variables 
    1110       REAL(wp), DIMENSION(jpi,jpj) ::   ztx, zty, zmsk, zemp, zqns, zqsr 
     1131      REAL(wp), DIMENSION(jpi,jpj) ::   ztx, zty, zmsk, zemp, zqns, zqsr, zt_bed 
    11111132      !!---------------------------------------------------------------------- 
    11121133      ! 
     
    12371258         !   
    12381259      ENDIF 
     1260 
     1261      !                                                      ! ================== ! 
     1262      !                                                      ! Sea bed temperature! 
     1263      !                                                      ! ================== ! 
     1264      IF( srcv(jpr_t_bed)%laction )   t_bed(:,:) = frcv(jpr_t_bed)%z3(:,:,1) 
    12391265 
    12401266      !                                                      ! ================== ! 
     
    24692495      END IF  
    24702496      !                                                      ! ------------------------- !  
     2497      !                                                      !   Sea bed heat flux       !  
     2498      !                                                      ! ------------------------- !  
     2499      IF( ssnd(jps_gfx_bed)%laction ) THEN  
     2500!@!         Modified from following block -- what do we need? 
     2501!@!         IF( ln_apr_dyn ) THEN   
     2502!@!            IF( kt /= nit000 ) THEN   
     2503!@!               ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )   
     2504!@!            ELSE   
     2505!@!               ztmp1(:,:) = sshb(:,:)   
     2506!@!            ENDIF   
     2507!@!         ELSE   
     2508            ztmp1(:,:) = gfx_bed(:,:)   
     2509!@!         ENDIF   
     2510         CALL cpl_snd( jps_gfx_bed  , isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info )  
     2511      END IF  
     2512      !                                                      ! ------------------------- !  
    24712513      !                                                      !   Water levels to waves   !  
    24722514      !                                                      ! ------------------------- !  
  • NEMO/branches/UKMO/NEMO_4.0.1_coast_wdcpl/src/OCE/TRA/trabbc.F90

    r11715 r15336  
    99   !!            3.3  ! 2010-10 (G. Madec)  dynamical allocation + suppression of key_trabbc 
    1010   !!             -   ! 2010-11 (G. Madec)  use mbkt array (deepest ocean t-level) 
     11   !!            x.y  ! 2021-10 (J. M. Edwards) Add bottom coupling 
    1112   !!---------------------------------------------------------------------- 
    1213 
     
    8990         DO ji = 2, jpim1 
    9091            tsa(ji,jj,mbkt(ji,jj),jp_tem) = tsa(ji,jj,mbkt(ji,jj),jp_tem) + qgh_trd0(ji,jj) / e3t_n(ji,jj,mbkt(ji,jj)) 
     92!@!         Provisional dummy calculation 
     93            gfx_bed(ji, jj) = 1.0e2 * ( tsa(ji,jj,mbkt(ji,jj),jp_tem) - t_bed(ji,jj)) 
    9194         END DO 
    9295      END DO 
  • NEMO/branches/UKMO/NEMO_4.0.1_coast_wdcpl/src/OCE/oce.F90

    r11715 r15336  
    6969   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   fraqsr_1lev        !: fraction of solar net radiation absorbed in the first ocean level [-] 
    7070 
     71   !! Thermal coupling to sea bed 
     72   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   :: t_bed 
     73 !: Temperature of soil level in land surface model 
     74   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   :: gfx_bed 
     75 !: Temperature of soil level in land surface model 
    7176   !!---------------------------------------------------------------------- 
    7277   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    102107         &      riceload(jpi,jpj)                                     , STAT=ierr(2) ) 
    103108         ! 
    104       ALLOCATE( fraqsr_1lev(jpi,jpj) , STAT=ierr(3) ) 
     109      ALLOCATE( fraqsr_1lev(jpi,jpj), t_bed(jpi,jpj), gfx_bed(jpi,jpj) , STAT=ierr(3) ) 
    105110         ! 
    106111      ALLOCATE( ssha_e(jpi,jpj),  sshn_e(jpi,jpj), sshb_e(jpi,jpj), sshbb_e(jpi,jpj), & 
Note: See TracChangeset for help on using the changeset viewer.