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 5862 for branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2015-11-05T15:03:28+01:00 (8 years ago)
Author:
gm
Message:

#1613: vvl by default: non-vvl: initialize _b,n,a scale factors with _0 arrays

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5845 r5862  
    875875      !!                  ***  ROUTINE zgr_zco  *** 
    876876      !! 
    877       !! ** Purpose :   define the z-coordinate system 
     877      !! ** Purpose :   define the reference z-coordinate system 
    878878      !! 
    879879      !! ** Method  :   set 3D coord. arrays to reference 1D array  
     
    907907      !!                      
    908908      !! ** Purpose :   the depth and vertical scale factor in partial step 
    909       !!      z-coordinate case 
     909      !!      reference z-coordinate case 
    910910      !! 
    911911      !! ** Method  :   Partial steps : computes the 3D vertical scale factors 
     
    959959      IF( nn_timing == 1 )  CALL timing_start('zgr_zps') 
    960960      ! 
    961       CALL wrk_alloc( jpi, jpj, jpk, zprt ) 
     961      CALL wrk_alloc( jpi,jpj,jpk,  zprt ) 
    962962      ! 
    963963      IF(lwp) WRITE(numout,*) 
     
    11971197      END IF 
    11981198      ! 
    1199       CALL wrk_dealloc( jpi, jpj, jpk, zprt ) 
     1199      CALL wrk_dealloc( jpi,jpj,jpk,  zprt ) 
    12001200      ! 
    12011201      IF( nn_timing == 1 )  CALL timing_stop('zgr_zps') 
     
    12341234      IF( nn_timing == 1 )  CALL timing_start('zgr_isf') 
    12351235      ! 
    1236       CALL wrk_alloc( jpi, jpj, zbathy, zmask, zrisfdep) 
    1237       CALL wrk_alloc( jpi, jpj, zmisfdep, zmbathy ) 
     1236      CALL wrk_alloc( jpi,jpj,  zbathy, zmask, zrisfdep) 
     1237      CALL wrk_alloc( jpi,jpj,  zmisfdep, zmbathy ) 
    12381238 
    12391239 
     
    12511251         WHERE( 0._wp < risfdep(:,:) .AND. risfdep(:,:) >= zdepth )   misfdep(:,:) = jk+1  
    12521252      END DO  
    1253       WHERE (risfdep(:,:) <= e3t_1d(1) .AND. risfdep(:,:) .GT. 0._wp) 
    1254          risfdep(:,:) = 0. ; misfdep(:,:) = 1 
     1253      WHERE (risfdep(:,:) <= e3t_1d(1) .AND. risfdep(:,:) > 0._wp) 
     1254         risfdep(:,:) = 0.   ;  misfdep(:,:) = 1 
    12551255      END WHERE 
    12561256  
     
    12591259! run the bathy check 10 times to be sure all the modif in the bathy or iceshelf draft are compatible together 
    12601260      DO jl = 1, 10      
    1261          WHERE (bathy(:,:) .EQ. risfdep(:,:) ) 
     1261         WHERE (bathy(:,:) == risfdep(:,:) ) 
    12621262            misfdep(:,:) = 0 ; risfdep(:,:) = 0._wp 
    12631263            mbathy (:,:) = 0 ; bathy  (:,:) = 0._wp 
     
    12661266            misfdep(:,:) = 0; risfdep(:,:) = 0._wp  
    12671267            mbathy (:,:) = 0; bathy  (:,:) = 0._wp 
    1268          ENDWHERE 
     1268         END WHERE 
    12691269         IF( lk_mpp ) THEN 
    12701270            zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     
    13111311               ! find the minimum change option: 
    13121312               ! test bathy 
    1313                IF (risfdep(ji,jj) .GT. 1) THEN 
     1313               IF (risfdep(ji,jj) > 1) THEN 
    13141314               zbathydiff =ABS(bathy(ji,jj)   - (gdepw_1d(mbathy (ji,jj)+1) & 
    13151315                 &   + MIN( e3zps_min, e3t_1d(mbathy (ji,jj)+1)*e3zps_rat ))) 
     
    13171317                 &   - MIN( e3zps_min, e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ))) 
    13181318  
    1319                   IF (bathy(ji,jj) .GT. risfdep(ji,jj) .AND. mbathy(ji,jj) .LT. misfdep(ji,jj)) THEN 
     1319                  IF (bathy(ji,jj) > risfdep(ji,jj) .AND. mbathy(ji,jj) < misfdep(ji,jj)) THEN 
    13201320                     IF (zbathydiff .LE. zrisfdepdiff) THEN 
    13211321                        bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj)+1)*e3zps_rat ) 
     
    17681768      IF( nn_timing == 1 )  CALL timing_start('zgr_sco') 
    17691769      ! 
    1770       CALL wrk_alloc( jpi, jpj, zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
     1770      CALL wrk_alloc( jpi,jpj,  zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    17711771      ! 
    17721772      REWIND( numnam_ref )              ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters 
     
    20462046#endif 
    20472047 
     2048!!gm   I don't like that HERE we are supposed to set the reference coordinate (i.e. _0 arrays) 
     2049!!gm   and only that !!!!! 
     2050!!gm   THIS should be removed from here ! 
    20482051      gdept_n(:,:,:) = gdept_0(:,:,:) 
    20492052      gdepw_n(:,:,:) = gdepw_0(:,:,:) 
     
    20562059      e3uw_n (:,:,:) = e3uw_0 (:,:,:) 
    20572060      e3vw_n (:,:,:) = e3vw_0 (:,:,:) 
     2061!! gm end 
    20582062!! 
    20592063      ! HYBRID :  
     
    20632067               IF( scobot(ji,jj) >= gdept_n(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    20642068            END DO 
    2065             IF( scobot(ji,jj) == 0._wp               )   mbathy(ji,jj) = 0 
     2069            IF( scobot(ji,jj) == 0._wp                )   mbathy(ji,jj) = 0 
    20662070         END DO 
    20672071      END DO 
     
    21142118         END DO 
    21152119      ENDIF 
    2116  
    2117 !================================================================================ 
    2118 ! check the coordinate makes sense 
    2119 !================================================================================ 
     2120      ! 
     2121      !================================================================================ 
     2122      ! check the coordinate makes sense 
     2123      !================================================================================ 
    21202124      DO ji = 1, jpi 
    21212125         DO jj = 1, jpj 
    2122  
     2126            ! 
    21232127            IF( hbatt(ji,jj) > 0._wp) THEN 
    21242128               DO jk = 1, mbathy(ji,jj) 
     
    21472151                 ENDIF 
    21482152               END DO 
    2149  
     2153               ! 
    21502154               DO jk = 1, mbathy(ji,jj)-1 
    21512155                 ! and check it never exceeds the total depth 
     
    21572161                 ENDIF 
    21582162               END DO 
    2159  
    21602163            ENDIF 
    2161  
    21622164         END DO 
    21632165      END DO 
     
    21692171   END SUBROUTINE zgr_sco 
    21702172 
    2171 !!====================================================================== 
     2173 
    21722174   SUBROUTINE s_sh94() 
    2173  
    21742175      !!---------------------------------------------------------------------- 
    21752176      !!                  ***  ROUTINE s_sh94  *** 
     
    21822183      !! Reference : Song and Haidvogel 1994.  
    21832184      !!---------------------------------------------------------------------- 
    2184       ! 
    21852185      INTEGER  ::   ji, jj, jk           ! dummy loop argument 
    21862186      REAL(wp) ::   zcoeft, zcoefw   ! temporary scalars 
     
    21882188      REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    21892189      REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2190  
    2191       CALL wrk_alloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2192       CALL wrk_alloc( jpi, jpj, jpk, z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2190      !!---------------------------------------------------------------------- 
     2191 
     2192      CALL wrk_alloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2193      CALL wrk_alloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    21932194 
    21942195      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
     
    21962197      z_esigtu3 = 0._wp   ;   z_esigtv3 = 0._wp   ;   z_esigtf3 = 0._wp 
    21972198      z_esigwu3 = 0._wp   ;   z_esigwv3 = 0._wp 
    2198  
     2199      ! 
    21992200      DO ji = 1, jpi 
    22002201         DO jj = 1, jpj 
    2201  
     2202            ! 
    22022203            IF( hbatt(ji,jj) > rn_hc ) THEN    !deep water, stretched sigma 
    22032204               DO jk = 1, jpk 
     
    22622263        END DO 
    22632264      END DO 
    2264  
    2265       CALL wrk_dealloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2266       CALL wrk_dealloc( jpi, jpj, jpk, z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    2267  
     2265      ! 
     2266      CALL wrk_dealloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2267      CALL wrk_dealloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2268      ! 
    22682269   END SUBROUTINE s_sh94 
    22692270 
     2271 
    22702272   SUBROUTINE s_sf12 
    2271  
    22722273      !!---------------------------------------------------------------------- 
    22732274      !!                  ***  ROUTINE s_sf12 ***  
     
    22852286      !! Reference : Siddorn and Furner 2012 (submitted Ocean modelling). 
    22862287      !!---------------------------------------------------------------------- 
    2287       ! 
    22882288      INTEGER  ::   ji, jj, jk           ! dummy loop argument 
    22892289      REAL(wp) ::   zsmth               ! smoothing around critical depth 
     
    22922292      REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    22932293      REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2294  
     2294      !!---------------------------------------------------------------------- 
    22952295      ! 
    22962296      CALL wrk_alloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     
    23852385             e3f_0(ji,jj,jk)=(scosrf(ji,jj)+hbatf(ji,jj))*z_esigtf3(ji,jj,jk) 
    23862386             ! 
    2387              e3w_0(ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk) 
     2387             e3w_0 (ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk) 
    23882388             e3uw_0(ji,jj,jk)=hbatu(ji,jj)*z_esigwu3(ji,jj,jk) 
    23892389             e3vw_0(ji,jj,jk)=hbatv(ji,jj)*z_esigwv3(ji,jj,jk) 
     
    23982398      CALL lbc_lnk(e3uw_0,'T',1.) ; CALL lbc_lnk(e3vw_0,'T',1.) 
    23992399      ! 
    2400       !                                               ! ============= 
    2401  
    2402       CALL wrk_dealloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2403       CALL wrk_dealloc( jpi, jpj, jpk, z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    2404  
     2400      CALL wrk_dealloc( jpi,jpj,jpk,   z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2401      CALL wrk_dealloc( jpi,jpj,jpk,   z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2402      ! 
    24052403   END SUBROUTINE s_sf12 
    24062404 
     2405 
    24072406   SUBROUTINE s_tanh() 
    2408  
    24092407      !!---------------------------------------------------------------------- 
    24102408      !!                  ***  ROUTINE s_tanh***  
Note: See TracChangeset for help on using the changeset viewer.