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 12166 for NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC – NEMO

Ignore:
Timestamp:
2019-12-11T09:53:24+01:00 (4 years ago)
Author:
cetlod
Message:

dev_merge_option2 : merge in ENHANCE-02_ISF_nemo branch

Location:
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbc_oce.F90

    r12154 r12166  
    4545   LOGICAL , PUBLIC ::   ln_dm2dc       !: Daily mean to Diurnal Cycle short wave (qsr) 
    4646   LOGICAL , PUBLIC ::   ln_rnf         !: runoffs / runoff mouths 
    47    LOGICAL , PUBLIC ::   ln_isf         !: ice shelf melting 
    4847   LOGICAL , PUBLIC ::   ln_ssr         !: Sea Surface restoring on SST and/or SSS       
    4948   LOGICAL , PUBLIC ::   ln_apr_dyn     !: Atmospheric pressure forcing used on dynamics (ocean & ice) 
     
    125124   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   emp_tot           !: total E-P over ocean and ice                 [Kg/m2/s] 
    126125   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmflx            !: freshwater budget: freezing/melting          [Kg/m2/s] 
    127    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rnf    , rnf_b    !: river runoff        [Kg/m2/s]   
    128    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fwfisf , fwfisf_b !: ice shelf melting   [Kg/m2/s]   
    129    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fwficb , fwficb_b !: iceberg melting [Kg/m2/s]   
    130  
     126   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rnf    , rnf_b    !: river runoff                                 [Kg/m2/s]   
     127   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fwficb , fwficb_b !: iceberg melting                              [Kg/m2/s]   
    131128   !! 
    132129   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  sbc_tsc, sbc_tsc_b  !: sbc content trend                      [K.m/s] jpi,jpj,jpts 
     
    185182         &      sfx    (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj), fmmflx(jpi,jpj), STAT=ierr(2) ) 
    186183         ! 
    187       ALLOCATE( fwfisf  (jpi,jpj), rnf  (jpi,jpj) , sbc_tsc  (jpi,jpj,jpts) , qsr_hc  (jpi,jpj,jpk) ,  & 
    188          &      fwfisf_b(jpi,jpj), rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) ,  & 
     184      ALLOCATE( rnf  (jpi,jpj) , sbc_tsc  (jpi,jpj,jpts) , qsr_hc  (jpi,jpj,jpk) ,  & 
     185         &      rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) ,  & 
    189186         &      fwficb  (jpi,jpj), fwficb_b(jpi,jpj), STAT=ierr(3) ) 
    190187         ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbccpl.F90

    r12154 r12166  
    2727   USE sbcwave         ! surface boundary condition: waves 
    2828   USE phycst          ! physical constants 
     29   USE isf_oce , ONLY : l_isfoasis, fwfisf_oasis ! ice shelf boundary condition 
    2930#if defined key_si3 
    3031   USE ice            ! ice variables 
     
    3637   USE eosbn2         !  
    3738   USE sbcrnf  , ONLY : l_rnfcpl 
    38    USE sbcisf  , ONLY : l_isfcpl 
    3939#if defined key_cice 
    4040   USE ice_domain_size, only: ncat 
     
    474474      srcv(jpr_icb)%clname = 'OIceberg'   ;  IF( TRIM( sn_rcv_icb%cldes) == 'coupled' )   srcv(jpr_icb)%laction = .TRUE. 
    475475 
    476       IF( srcv(jpr_isf)%laction .AND. ln_isf ) THEN 
    477          l_isfcpl             = .TRUE.                      ! -> no need to read isf in sbcisf 
     476      IF( srcv(jpr_isf)%laction ) THEN 
     477         l_isfoasis = .TRUE.  ! -> isf fwf comes from oasis 
    478478         IF(lwp) WRITE(numout,*) 
    479479         IF(lwp) WRITE(numout,*) '   iceshelf received from oasis ' 
     480         CALL ctl_stop('STOP','not coded') 
    480481      ENDIF 
    481482      ! 
     
    14041405             rnf(:,:)    = rnf(:,:) + fwficb(:,:)   ! iceberg added to runfofs 
    14051406         ENDIF 
    1406          IF( srcv(jpr_isf)%laction )  fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1)  ! fresh water flux from the isf (fwfisf <0 mean melting)   
     1407         ! 
     1408         ! ice shelf fwf 
     1409         IF( srcv(jpr_isf)%laction )  THEN 
     1410            fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1)  ! fresh water flux from the isf (fwfisf <0 mean melting)   
     1411         END IF 
    14071412         
    14081413         IF( ln_mixcpl ) THEN   ;   emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:) 
     
    17071712      ENDIF 
    17081713      IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf <0 mean melting) 
    1709         fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1)   
     1714        fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1)   
    17101715      ENDIF 
    17111716 
     
    17461751      ENDIF 
    17471752      IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf <0 mean melting) 
    1748         fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1) 
     1753        fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 
    17491754      ENDIF 
    17501755      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcfwb.F90

    r10570 r12166  
    1717   USE dom_oce        ! ocean space and time domain 
    1818   USE sbc_oce        ! surface ocean boundary condition 
     19   USE isf_oce , ONLY : fwfisf_cav, fwfisf_par                    ! ice shelf melting contribution 
    1920   USE sbc_ice , ONLY : snwice_mass, snwice_mass_b, snwice_fmass 
    2021   USE phycst         ! physical constants 
    2122   USE sbcrnf         ! ocean runoffs 
    22    USE sbcisf         ! ice shelf melting contribution 
    2323   USE sbcssr         ! Sea-Surface damping terms 
    2424   ! 
     
    104104         ! 
    105105         IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 
    106             y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) - snwice_fmass(:,:) ) ) 
     106            y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
    107107            CALL mpp_delay_sum( 'sbcfwb', 'fwb', y_fwfnow(:), z_fwfprv(:), kt == nitend - nn_fsbc + 1 ) 
    108108            z_fwfprv(1) = z_fwfprv(1) / area 
     
    159159            ztmsk_neg(:,:) = tmask_i(:,:) - ztmsk_pos(:,:) 
    160160            !                                                  ! fwf global mean (excluding ocean to ice/snow exchanges)  
    161             z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) - snwice_fmass(:,:) ) ) / area 
     161            z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 
    162162            !             
    163163            IF( z_fwf < 0._wp ) THEN         ! spread out over >0 erp area to increase evaporation 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcmod.F90

    r12154 r12166  
    3939#endif 
    4040   USE sbcice_cice    ! surface boundary condition: CICE sea-ice model 
    41    USE sbcisf         ! surface boundary condition: ice-shelf 
    4241   USE sbccpl         ! surface boundary condition: coupled formulation 
    4342   USE cpl_oasis3     ! OASIS routines for coupling 
     
    4544   USE sbcrnf         ! surface boundary condition: runoffs 
    4645   USE sbcapr         ! surface boundary condition: atmo pressure  
    47    USE sbcisf         ! surface boundary condition: ice shelf 
    4846   USE sbcfwb         ! surface boundary condition: freshwater budget 
    4947   USE icbstp         ! Icebergs 
     
    157155         WRITE(numout,*) '         Patm gradient added in ocean & ice Eqs.    ln_apr_dyn    = ', ln_apr_dyn 
    158156         WRITE(numout,*) '         runoff / runoff mouths                     ln_rnf        = ', ln_rnf 
    159          WRITE(numout,*) '         iceshelf formulation                       ln_isf        = ', ln_isf 
    160157         WRITE(numout,*) '         nb of iterations if land-sea-mask applied  nn_lsm        = ', nn_lsm 
    161158         WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave 
     
    259256      ENDIF 
    260257      ! 
    261  
    262258      IF( nn_ice == 0 ) THEN        !* No sea-ice in the domain : ice fraction is always zero 
    263259         IF( nn_components /= jp_iam_opa )   fr_i(:,:) = 0._wp    ! except for OPA in SAS-OPA coupled case 
     
    354350      IF( ln_ssr      )   CALL sbc_ssr_init            ! Sea-Surface Restoring initialization 
    355351      ! 
    356       IF( ln_isf      )   CALL sbc_isf_init            ! Compute iceshelves 
    357       ! 
    358352                          CALL sbc_rnf_init            ! Runof initialization 
    359353      ! 
     
    422416            rnf_b    (:,:  ) = rnf    (:,:  ) 
    423417            rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 
    424          ENDIF 
    425          IF( ln_isf )  THEN 
    426             fwfisf_b  (:,:  ) = fwfisf  (:,:  )                
    427             risf_tsc_b(:,:,:) = risf_tsc(:,:,:)               
    428418         ENDIF 
    429419        ! 
     
    479469         IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1. ) ! ensure restartability with icebergs 
    480470      ENDIF 
    481  
    482       IF( ln_isf         )   CALL sbc_isf( kt )                   ! compute iceshelves 
    483471 
    484472      IF( ln_rnf         )   CALL sbc_rnf( kt )                   ! add runoffs to fresh water fluxes 
     
    585573      ! 
    586574      IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
    587          CALL prt_ctl(tab2d_1=fr_i              , clinfo1=' fr_i    - : ', mask1=tmask ) 
    588          CALL prt_ctl(tab2d_1=(emp-rnf + fwfisf), clinfo1=' emp-rnf - : ', mask1=tmask ) 
    589          CALL prt_ctl(tab2d_1=(sfx-rnf + fwfisf), clinfo1=' sfx-rnf - : ', mask1=tmask ) 
     575         CALL prt_ctl(tab2d_1=fr_i             , clinfo1=' fr_i     - : ', mask1=tmask ) 
     576         CALL prt_ctl(tab2d_1=(emp-rnf)        , clinfo1=' emp-rnf - : ', mask1=tmask ) 
     577         CALL prt_ctl(tab2d_1=(sfx-rnf)        , clinfo1=' sfx-rnf - : ', mask1=tmask ) 
    590578         CALL prt_ctl(tab2d_1=qns              , clinfo1=' qns      - : ', mask1=tmask ) 
    591579         CALL prt_ctl(tab2d_1=qsr              , clinfo1=' qsr      - : ', mask1=tmask ) 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcrnf.F90

    r12154 r12166  
    1919   USE phycst         ! physical constants 
    2020   USE sbc_oce        ! surface boundary condition variables 
    21    USE sbcisf         ! PM we could remove it I think 
    2221   USE eosbn2         ! Equation Of State 
    2322   USE closea         ! closed seas 
     
    141140               rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rau0 
    142141            END WHERE 
    143             WHERE( sf_t_rnf(1)%fnow(:,:,1) == -222._wp )             ! where fwf comes from melting of ice shelves or iceberg 
    144                rnf_tsc(:,:,jp_tem) = ztfrz(:,:) * rnf(:,:) * r1_rau0 - rnf(:,:) * rLfusisf * r1_rau0_rcp 
    145             END WHERE 
    146142         ELSE                                                        ! use SST as runoffs temperature 
    147143            !CEOD River is fresh water so must at least be 0 unless we consider ice 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcssm.F90

    r10425 r12166  
    6060      ! 
    6161      !                                        !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) 
    62       DO jj = 1, jpj 
    63          DO ji = 1, jpi 
    64             zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) 
    65             zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) 
    66          END DO 
    67       END DO 
     62      zts(:,:,jp_tem) = tsn(:,:,1,jp_tem) 
     63      zts(:,:,jp_sal) = tsn(:,:,1,jp_sal) 
    6864      ! 
    6965      IF( nn_fsbc == 1 ) THEN                             !   Instantaneous surface fields        ! 
Note: See TracChangeset for help on using the changeset viewer.