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 11395 for NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA – NEMO

Ignore:
Timestamp:
2019-08-02T16:19:00+02:00 (5 years ago)
Author:
mathiot
Message:

ENHANCE-02_ISF_nemo : Initial commit isf simplification (add ISF directory, moved isf routine in and split isf cavity and isf parametrisation, ...) (ticket #2142)

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo
Files:
1 added
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/tranxt.F90

    r10425 r11395  
    2828   USE sbc_oce         ! surface boundary condition: ocean 
    2929   USE sbcrnf          ! river runoffs 
    30    USE sbcisf          ! ice shelf melting 
     30   USE isf             ! ice shelf melting 
    3131   USE zdf_oce         ! ocean vertical mixing 
    3232   USE domvvl          ! variable volume 
     
    312312                  ztc_f  = ztc_n  + atfp * ztc_d 
    313313                  ! 
    314                   IF( jk == mikt(ji,jj) ) THEN           ! first level  
    315                      ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj)    - emp(ji,jj)   )  & 
    316                             &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj))  ) 
     314                  IF( jk == 1 ) THEN           ! first level  
     315                     ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj)   ) 
    317316                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
    318317                  ENDIF 
    319318                  IF( ln_rnf_depth ) THEN 
    320319                     ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 
    321                      IF( mikt(ji,jj) <=jk .and. jk <= nk_rnf(ji,jj)  ) THEN 
     320                     IF( jk <= nk_rnf(ji,jj)  ) THEN 
    322321                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj)   )  ) & 
    323322                    &                            * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) )  
    324323                     ENDIF 
    325324                  ELSE 
    326                      IF( jk == mikt(ji,jj) ) THEN           ! first level  
     325                     IF( jk == 1 ) THEN           ! first level  
    327326                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj)    - rnf(ji,jj)   ) )  
    328327                     ENDIF 
     
    341340                  ! ice shelf 
    342341                  IF( ll_isf ) THEN 
    343                      ! level fully include in the Losch_2008 ice shelf boundary layer 
    344                      IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) )                          & 
    345                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    346                                &                 * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 
    347                      ! level partially include in Losch_2008 ice shelf boundary layer  
    348                      IF ( jk == misfkb(ji,jj) )                                                   & 
    349                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    350                                &                 * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 
     342                     IF ( ln_isfcav_mlt ) THEN 
     343                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     344                        IF ( jk >= misfkt_cav(ji,jj) .AND. jk < misfkb_cav(ji,jj) ) THEN 
     345                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 
     346                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 
     347                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )           & 
     348                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 
     349                        END IF 
     350                        ! level partially include in Losch_2008 ice shelf boundary layer  
     351                        IF ( jk == misfkb_cav(ji,jj) ) THEN 
     352                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) )  & 
     353                                  &                 * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     354                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )            & 
     355                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     356                        END IF 
     357                     END IF 
     358                     IF ( ln_isfpar_mlt ) THEN 
     359                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     360                        IF ( jk >= misfkt_par(ji,jj) .AND. 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_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 
     363                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     364                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 
     365                        END IF 
     366                        ! level partially include in Losch_2008 ice shelf boundary layer  
     367                        IF ( jk == misfkb_par(ji,jj) ) THEN 
     368                           ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
     369                                  &                 * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     370                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     371                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     372                        END IF 
     373                     END IF 
    351374                  END IF 
    352375                  ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/trasbc.F90

    r10499 r11395  
    2222   USE sbcmod         ! ln_rnf   
    2323   USE sbcrnf         ! River runoff   
    24    USE sbcisf         ! Ice shelf    
    25    USE iscplini       ! Ice sheet coupling 
    2624   USE traqsr         ! solar radiation penetration 
    2725   USE trd_oce        ! trends: ocean variables 
     
    155153      ! 
    156154      !---------------------------------------- 
    157       !       Ice Shelf effects (ISF) 
    158       !     tbl treated as in Losh (2008) JGR 
    159       !---------------------------------------- 
    160       ! 
    161 !!gm BUG ?   Why no differences between non-linear and linear free surface ? 
    162 !!gm         probably taken into account in r1_hisf_tbl : to be verified 
    163       IF( ln_isf ) THEN 
    164          zfact = 0.5_wp 
    165          DO jj = 2, jpj 
    166             DO ji = fs_2, fs_jpim1 
    167                ! 
    168                ikt = misfkt(ji,jj) 
    169                ikb = misfkb(ji,jj) 
    170                ! 
    171                ! level fully include in the ice shelf boundary layer 
    172                ! sign - because fwf sign of evapo (rnf sign of precip) 
    173                DO jk = ikt, ikb - 1 
    174                ! compute trend 
    175                   tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem)                                                & 
    176                      &           + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) )             & 
    177                      &           * r1_hisf_tbl(ji,jj) 
    178                END DO 
    179     
    180                ! level partially include in ice shelf boundary layer  
    181                ! compute trend 
    182                tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem)                                                 & 
    183                   &              + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) )             & 
    184                   &              * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 
    185  
    186             END DO 
    187          END DO 
    188       END IF 
    189       ! 
    190       !---------------------------------------- 
    191155      !        River Runoff effects 
    192156      !---------------------------------------- 
     
    242206#endif 
    243207      ! 
    244       !---------------------------------------- 
    245       !        Ice Sheet coupling imbalance correction to have conservation 
    246       !---------------------------------------- 
    247       ! 
    248       IF( ln_iscpl .AND. ln_hsb) THEN         ! input of heat and salt due to river runoff  
    249          DO jk = 1,jpk 
    250             DO jj = 2, jpj  
    251                DO ji = fs_2, fs_jpim1 
    252                   zdep = 1._wp / e3t_n(ji,jj,jk)  
    253                   tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep 
    254                   tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep   
    255                END DO   
    256             END DO   
    257          END DO 
    258       ENDIF 
    259  
    260208      IF( l_trdtra )   THEN                      ! save the horizontal diffusive trends for further diagnostics 
    261209         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
Note: See TracChangeset for help on using the changeset viewer.