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 15458 for NEMO – NEMO

Changeset 15458 for NEMO


Ignore:
Timestamp:
2021-10-28T17:12:05+02:00 (3 years ago)
Author:
clem
Message:

4.0-HEAD: recalculate vertical scale factors in istate.F90 for wetting and drying and user defined configurations (related to change of ssh). Should solve ticket #2736 for 4.0. Not sure we also need to change the trunk?

Location:
NEMO/releases/r4.0/r4.0-HEAD/src/OCE/DOM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/DOM/domvvl.F90

    r15451 r15458  
    131131      e3t_a(:,:,jpk) = e3t_0(:,:,jpk)  ! last level always inside the sea floor set one for all 
    132132      ! 
     133      !                    !== Set of all other vertical scale factors  ==!  (now and before) 
    133134      CALL dom_vvl_zgr 
    134135      ! 
     
    960961!               DO jk=1,jpk 
    961962!                  e3t_b(:,:,jk) =  e3t_0(:,:,jk) * ( ht_0(:,:) + sshb(:,:) ) & 
    962 !                     &            / ( ht_0(:,:) + 1._wp -ssmask(:,:) ) * tmask(:,:,jk) 
     963!                     &                           / ( ht_0(:,:) + 1._wp -ssmask(:,:) ) * tmask(:,:,jk) 
     964!                    &            + e3t_0(:,:,jk) * ( 1._wp - tmask(:,:,jk) )   ! make sure e3t_b != 0 on land points 
    963965!               END DO 
    964966!               e3t_n(:,:,:) = e3t_b(:,:,:) 
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/DOM/istate.F90

    r13101 r15458  
    6060      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace 
    6161!!gm end 
     62      REAL(wp), DIMENSION(jpi,jpj) ::   z2d    ! temporary array 
    6263      !!---------------------------------------------------------------------- 
    6364      ! 
     
    110111                     ENDIF 
    111112                  END DO 
    112                END DO  
     113               END DO 
     114               ! 
     115               IF( .NOT.ln_linssh ) THEN      ! adjust initial vertical scale factors 
     116                  sshn(:,:) = sshb(:,:) 
     117                  z2d (:,:) = 1._wp + sshn(:,:) * ssmask(:,:) / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) 
     118                  DO jk = 1, jpkm1                 
     119                     DO jj = 1, jpj 
     120                        DO ji = 1, jpi 
     121                           IF( ht_0(ji,jj) + sshb(ji,jj)  < rn_wdmin1 ) THEN 
     122                              e3t_n(ji,jj,jk) = e3t_0(ji,jj,jk) * ( z2d(ji,jj) * tmask(ji,jj,jk) - ( tmask(ji,jj,jk) - 1._wp ) ) 
     123                              e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) 
     124                              e3t_a(ji,jj,jk) = e3t_n(ji,jj,jk) 
     125                           ENDIF 
     126                        END DO 
     127                     END DO 
     128                  END DO 
     129                  CALL dom_vvl_zgr 
     130               ENDIF 
     131               ! 
    113132            ENDIF  
    114133            ub  (:,:,:) = 0._wp 
    115             vb  (:,:,:) = 0._wp   
     134            vb  (:,:,:) = 0._wp 
    116135            ! 
    117136         ELSE                                 ! user defined initial T and S 
    118137            CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, sshb  )          
     138            ! 
     139            IF( .NOT.ln_linssh ) THEN         ! adjust initial vertical scale factors 
     140               sshn(:,:) = sshb(:,:) 
     141               z2d (:,:) = 1._wp + sshn(:,:) * ssmask(:,:) / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) 
     142               DO jk = 1, jpkm1                 
     143                  DO jj = 1, jpj 
     144                     DO ji = 1, jpi 
     145                        e3t_n(ji,jj,jk) = e3t_0(ji,jj,jk) * ( z2d(ji,jj) * tmask(ji,jj,jk) - ( tmask(ji,jj,jk) - 1._wp ) ) 
     146                        e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) 
     147                        e3t_a(ji,jj,jk) = e3t_n(ji,jj,jk) 
     148                     END DO 
     149                  END DO 
     150               END DO 
     151               CALL dom_vvl_zgr 
     152            ENDIF 
     153            ! 
    119154         ENDIF 
    120155         tsn  (:,:,:,:) = tsb (:,:,:,:)       ! set now values from to before ones 
Note: See TracChangeset for help on using the changeset viewer.