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 12150 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA – NEMO

Ignore:
Timestamp:
2019-12-10T15:16:33+01:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r11943_MERGE_2019: Merge in UKMO_MERGE_2019.

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA/eosbn2.F90

    r11960 r12150  
    2929   !!   eos_insitu_pot: Compute the insitu and surface referenced potential volumic mass 
    3030   !!   eos_insitu_2d : Compute the in situ density for 2d fields 
    31    !!   bn2           : Compute the Brunt-Vaisala frequency 
    3231   !!   bn2           : compute the Brunt-Vaisala frequency 
    3332   !!   eos_pt_from_ct: compute the potential temperature from the Conservative Temperature 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA/traatf.F90

    r11949 r12150  
    2929   USE sbc_oce         ! surface boundary condition: ocean 
    3030   USE sbcrnf          ! river runoffs 
    31    USE sbcisf          ! ice shelf melting 
     31   USE isf_oce         ! ice shelf melting 
    3232   USE zdf_oce         ! ocean vertical mixing 
    3333   USE domvvl          ! variable volume 
     
    302302                  ! 
    303303                  IF( jk == mikt(ji,jj) ) THEN           ! first level  
    304                      ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj)    - emp(ji,jj)   )  & 
    305                             &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj))  ) 
     304                     ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj)    - emp(ji,jj) ) 
    306305                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
    307306                  ENDIF 
    308307                  IF( ln_rnf_depth ) THEN 
    309308                     ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 
    310                      IF( mikt(ji,jj) <=jk .and. jk <= nk_rnf(ji,jj)  ) THEN 
     309                     IF( jk <= nk_rnf(ji,jj)  ) THEN 
    311310                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj)   )  ) & 
    312311                    &                            * ( e3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) )  
    313312                     ENDIF 
    314313                  ELSE 
    315                      IF( jk == mikt(ji,jj) ) THEN           ! first level  
     314                     IF( jk == 1 ) THEN           ! first level  
    316315                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj)    - rnf(ji,jj)   ) )  
    317316                     ENDIF 
    318317                  ENDIF 
     318                  ! 
     319                  IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )                                          & 
     320                     &     ztc_f  = ztc_f  - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) &  
     321                     &                              * e3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) 
    319322 
    320323                  ! 
     
    323326                     &     ztc_f  = ztc_f  - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )  
    324327                     ! 
    325                   ! river runoff 
    326                   IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )                                          & 
    327                      &     ztc_f  = ztc_f  - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) &  
    328                      &                              * e3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) 
    329                      ! 
     328                  ! 
    330329                  ! ice shelf 
    331330                  IF( ll_isf ) THEN 
    332                      ! level fully include in the Losch_2008 ice shelf boundary layer 
    333                      IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) )                          & 
    334                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    335                                &                 * e3t(ji,jj,jk,Kmm) * r1_hisf_tbl (ji,jj) 
    336                      ! level partially include in Losch_2008 ice shelf boundary layer  
    337                      IF ( jk == misfkb(ji,jj) )                                                   & 
    338                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    339                                &                 * e3t(ji,jj,jk,Kmm) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 
     331                     ! 
     332                     ! melt in the cavity 
     333                     IF ( ln_isfcav_mlt ) THEN 
     334                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     335                        IF ( jk >= misfkt_cav(ji,jj) .AND. jk < misfkb_cav(ji,jj) ) THEN 
     336                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 
     337                              &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) 
     338                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )           & 
     339                              &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) 
     340                        END IF 
     341                        ! level partially include in Losch_2008 ice shelf boundary layer  
     342                        IF ( jk == misfkb_cav(ji,jj) ) THEN 
     343                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) )  & 
     344                                  &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     345                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )            & 
     346                              &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     347                        END IF 
     348                     END IF 
     349                     ! 
     350                     ! parametrised melt (cavity closed) 
     351                     IF ( ln_isfpar_mlt ) THEN 
     352                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     353                        IF ( jk >= misfkt_par(ji,jj) .AND. jk < misfkb_par(ji,jj) ) THEN 
     354                           ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
     355                                  &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) 
     356                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     357                              &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) 
     358                        END IF 
     359                        ! level partially include in Losch_2008 ice shelf boundary layer  
     360                        IF ( jk == misfkb_par(ji,jj) ) THEN 
     361                           ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
     362                                  &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     363                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     364                              &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     365                        END IF 
     366                     END IF 
     367                     ! 
     368                     ! ice sheet coupling correction 
     369                     IF ( ln_isfcpl ) THEN 
     370                        ! 
     371                        ! at kt = nit000,  risfcpl_vol_n = 0 and risfcpl_vol_b = risfcpl_vol so contribution nul 
     372                        IF ( ln_rstart .AND. kt == nit000+1 ) THEN 
     373                           ztc_f  = ztc_f  + zfact1 * risfcpl_tsc(ji,jj,jk,jn) * r1_e1e2t(ji,jj) 
     374                           ze3t_f = ze3t_f - zfact1 * risfcpl_vol(ji,jj,jk   ) * r1_e1e2t(ji,jj) 
     375                        END IF 
     376                        ! 
     377                     END IF 
     378                     ! 
    340379                  END IF 
    341380                  ! 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA/trasbc.F90

    r11949 r12150  
    1010   !!             -   !  2010-09  (C. Ethe, G. Madec) Merge TRA-TRC 
    1111   !!            3.6  !  2014-11  (P. Mathiot) isf melting forcing  
     12   !!            4.1  !  2019-09  (P. Mathiot) isf moved in traisf 
    1213   !!---------------------------------------------------------------------- 
    1314 
     
    2223   USE sbcmod         ! ln_rnf   
    2324   USE sbcrnf         ! River runoff   
    24    USE sbcisf         ! Ice shelf    
    25    USE iscplini       ! Ice sheet coupling 
    2625   USE traqsr         ! solar radiation penetration 
    2726   USE trd_oce        ! trends: ocean variables 
     
    6261      !!      (1) Fext, external forcing (i.e. flux through the (air+ice)-sea interface);  
    6362      !!      (2) Fwe , tracer carried with the water that is exchanged with air+ice.  
    64       !!               The input forcing fields (emp, rnf, sfx, isf) contain Fext+Fwe, 
     63      !!               The input forcing fields (emp, rnf, sfx) contain Fext+Fwe, 
    6564      !!             they are simply added to the tracer trend (ts(Krhs)). 
    6665      !!               In linear free surface case (ln_linssh=T), the volume of the 
     
    155154         IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    156155      ENDIF 
    157       ! 
    158       !---------------------------------------- 
    159       !       Ice Shelf effects (ISF) 
    160       !     tbl treated as in Losh (2008) JGR 
    161       !---------------------------------------- 
    162       ! 
    163 !!gm BUG ?   Why no differences between non-linear and linear free surface ? 
    164 !!gm         probably taken into account in r1_hisf_tbl : to be verified 
    165       IF( ln_isf ) THEN 
    166          zfact = 0.5_wp 
    167          DO jj = 2, jpj 
    168             DO ji = fs_2, fs_jpim1 
    169                ! 
    170                ikt = misfkt(ji,jj) 
    171                ikb = misfkb(ji,jj) 
    172                ! 
    173                ! level fully include in the ice shelf boundary layer 
    174                ! sign - because fwf sign of evapo (rnf sign of precip) 
    175                DO jk = ikt, ikb - 1 
    176                ! compute trend 
    177                   pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs)                                      & 
    178                      &                      + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) )  & 
    179                      &                      * r1_hisf_tbl(ji,jj) 
    180                END DO 
    181     
    182                ! level partially include in ice shelf boundary layer  
    183                ! compute trend 
    184                pts(ji,jj,ikb,jp_tem,Krhs) = pts(ji,jj,ikb,jp_tem,Krhs)                                       & 
    185                   &                       + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) )    & 
    186                   &                       * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 
    187  
    188             END DO 
    189          END DO 
    190       END IF 
    191156      ! 
    192157      !---------------------------------------- 
     
    244209#endif 
    245210      ! 
    246       !---------------------------------------- 
    247       !        Ice Sheet coupling imbalance correction to have conservation 
    248       !---------------------------------------- 
    249       ! 
    250       IF( ln_iscpl .AND. ln_hsb) THEN         ! input of heat and salt due to river runoff  
    251          DO jk = 1,jpk 
    252             DO jj = 2, jpj  
    253                DO ji = fs_2, fs_jpim1 
    254                   zdep = 1._wp / e3t(ji,jj,jk,Kmm)  
    255                   pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep 
    256                   pts(ji,jj,jk,jp_sal,Krhs) = pts(ji,jj,jk,jp_sal,Krhs) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep   
    257                END DO   
    258             END DO   
    259          END DO 
    260       ENDIF 
    261  
    262211      IF( l_trdtra )   THEN                      ! save the horizontal diffusive trends for further diagnostics 
    263212         ztrdt(:,:,:) = pts(:,:,:,jp_tem,Krhs) - ztrdt(:,:,:) 
Note: See TracChangeset for help on using the changeset viewer.