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 4292 for branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OFF_SRC – NEMO

Ignore:
Timestamp:
2013-11-20T17:28:04+01:00 (10 years ago)
Author:
cetlod
Message:

dev_MERGE_2013 : 1st step of the merge, see ticket #1185

Location:
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OFF_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OFF_SRC/domain.F90

    r4248 r4292  
    295295      !!      vertical scale factors. 
    296296      !! 
    297       !! ** Method  : - reference 1D vertical coordinate (gdep._0, e3._0) 
     297      !! ** Method  : - reference 1D vertical coordinate (gdep._1d, e3._1d) 
    298298      !!              - read/set ocean depth and ocean levels (bathy, mbathy) 
    299299      !!              - vertical coordinate (gdep., e3.) depending on the  
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OFF_SRC/domrea.F90

    r3680 r4292  
    2525 
    2626   PUBLIC   dom_rea    ! routine called by inidom.F90 
     27  !! * Substitutions 
     28#  include "domzgr_substitute.h90" 
    2729   !!---------------------------------------------------------------------- 
    2830   !! NEMO/OFF 3.3 , NEMO Consortium (2010) 
     
    173175            CALL iom_get( inum4, jpdom_unknown, 'esigw', esigw ) 
    174176 
    175             CALL iom_get( inum4, jpdom_data, 'e3t', e3t ) ! scale factors 
    176             CALL iom_get( inum4, jpdom_data, 'e3u', e3u ) 
    177             CALL iom_get( inum4, jpdom_data, 'e3v', e3v ) 
    178             CALL iom_get( inum4, jpdom_data, 'e3w', e3w ) 
    179  
    180             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 ) ! depth 
    181             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
     177            CALL iom_get( inum4, jpdom_data, 'e3t', fse3t_n(:,:,:) ) ! scale factors 
     178            CALL iom_get( inum4, jpdom_data, 'e3u', fse3u_n(:,:,:) ) 
     179            CALL iom_get( inum4, jpdom_data, 'e3v', fse3v_n(:,:,:) ) 
     180            CALL iom_get( inum4, jpdom_data, 'e3w', fse3w_n(:,:,:) ) 
     181 
     182            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 
     183            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
    182184         ENDIF 
    183185 
    184186  
    185187         IF( ln_zps ) THEN                                           ! z-coordinate - partial steps 
    186             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 )    ! reference depth 
    187             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
    188             CALL iom_get( inum4, jpdom_unknown, 'e3t_0'  , e3t_0   )    ! reference scale factors 
    189             CALL iom_get( inum4, jpdom_unknown, 'e3w_0'  , e3w_0   ) 
     188            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d )  ! reference depth 
     189            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
     190            CALL iom_get( inum4, jpdom_unknown, 'e3t_1d'  , e3t_1d   )    ! reference scale factors 
     191            CALL iom_get( inum4, jpdom_unknown, 'e3w_1d'  , e3w_1d   ) 
    190192            ! 
    191193            IF( nmsh <= 6 ) THEN                                        ! 3D vertical scale factors 
    192                CALL iom_get( inum4, jpdom_data, 'e3t', e3t ) 
    193                CALL iom_get( inum4, jpdom_data, 'e3u', e3u ) 
    194                CALL iom_get( inum4, jpdom_data, 'e3v', e3v ) 
    195                CALL iom_get( inum4, jpdom_data, 'e3w', e3w ) 
     194               CALL iom_get( inum4, jpdom_data, 'e3t', fse3t_n(:,:,:) ) 
     195               CALL iom_get( inum4, jpdom_data, 'e3u', fse3u_n(:,:,:) ) 
     196               CALL iom_get( inum4, jpdom_data, 'e3v', fse3v_n(:,:,:) ) 
     197               CALL iom_get( inum4, jpdom_data, 'e3w', fse3w_n(:,:,:) ) 
    196198            ELSE                                                        ! 2D bottom scale factors 
    197199               CALL iom_get( inum4, jpdom_data, 'e3t_ps', e3tp ) 
     
    199201               !                                                        ! deduces the 3D scale factors 
    200202               DO jk = 1, jpk 
    201                   e3t(:,:,jk) = e3t_0(jk)                                     ! set to the ref. factors 
    202                   e3u(:,:,jk) = e3t_0(jk) 
    203                   e3v(:,:,jk) = e3t_0(jk) 
    204                   e3w(:,:,jk) = e3w_0(jk) 
     203                  fse3t_n(:,:,jk) = e3t_1d(jk)                                    ! set to the ref. factors 
     204                  fse3u_n(:,:,jk) = e3t_1d(jk) 
     205                  fse3v_n(:,:,jk) = e3t_1d(jk) 
     206                  fse3w_n(:,:,jk) = e3w_1d(jk) 
    205207               END DO 
    206208               DO jj = 1,jpj                                                  ! adjust the deepest values 
    207209                  DO ji = 1,jpi 
    208210                     ik = mbkt(ji,jj) 
    209                      e3t(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_0(1) * ( 1._wp - tmask(ji,jj,1) ) 
    210                      e3w(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_0(1) * ( 1._wp - tmask(ji,jj,1) ) 
     211                     fse3t_n(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
     212                     fse3w_n(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
    211213                  END DO 
    212214               END DO 
     
    214216                  DO jj = 1, jpjm1 
    215217                     DO ji = 1, jpim1 
    216                         e3u(ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) ) 
    217                         e3v(ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) ) 
     218                        fse3u_n(ji,jj,jk) = MIN( fse3t_n(ji,jj,jk), fse3t_n(ji+1,jj,jk) ) 
     219                        fse3v_n(ji,jj,jk) = MIN( fse3t_n(ji,jj,jk), fse3t_n(ji,jj+1,jk) ) 
    218220                     END DO 
    219221                  END DO 
    220222               END DO 
    221                CALL lbc_lnk( e3u , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw, 'U', 1._wp )   ! lateral boundary conditions 
    222                CALL lbc_lnk( e3v , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     223               CALL lbc_lnk( fse3u_n(:,:,:) , 'U', 1._wp )   ;   CALL lbc_lnk( fse3uw_n(:,:,:), 'U', 1._wp )   ! lateral boundary conditions 
     224               CALL lbc_lnk( fse3v_n(:,:,:) , 'V', 1._wp )   ;   CALL lbc_lnk( fse3vw_n(:,:,:), 'V', 1._wp ) 
    223225               ! 
    224226               DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    225                   WHERE( e3u(:,:,jk) == 0._wp )   e3u(:,:,jk) = e3t_0(jk) 
    226                   WHERE( e3v(:,:,jk) == 0._wp )   e3v(:,:,jk) = e3t_0(jk) 
     227                  WHERE( fse3u_n(:,:,jk) == 0._wp )   fse3u_n(:,:,jk) = e3t_1d(jk) 
     228                  WHERE( fse3v_n(:,:,jk) == 0._wp )   fse3v_n(:,:,jk) = e3t_1d(jk) 
    227229               END DO 
    228230            END IF 
    229231 
    230232            IF( iom_varid( inum4, 'gdept', ldstop = .FALSE. ) > 0 ) THEN   ! 3D depth of t- and w-level 
    231                CALL iom_get( inum4, jpdom_data, 'gdept', gdept ) 
    232                CALL iom_get( inum4, jpdom_data, 'gdepw', gdepw ) 
     233               CALL iom_get( inum4, jpdom_data, 'gdept', fsdept_n(:,:,:) ) 
     234               CALL iom_get( inum4, jpdom_data, 'gdepw', fsdepw_n(:,:,:) ) 
    233235            ELSE                                                           ! 2D bottom depth 
    234236               CALL iom_get( inum4, jpdom_data, 'hdept', zprt ) 
     
    236238               ! 
    237239               DO jk = 1, jpk                                              ! deduces the 3D depth 
    238                   gdept(:,:,jk) = gdept_0(jk) 
    239                   gdepw(:,:,jk) = gdepw_0(jk) 
     240                  fsdept_n(:,:,jk) = gdept_1d(jk) 
     241                  fsdepw_n(:,:,jk) = gdepw_1d(jk) 
    240242               END DO 
    241243               DO jj = 1, jpj 
     
    243245                     ik = mbkt(ji,jj) 
    244246                     IF( ik > 0 ) THEN 
    245                         gdepw(ji,jj,ik+1) = zprw(ji,jj) 
    246                         gdept(ji,jj,ik  ) = zprt(ji,jj) 
    247                         gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik) 
     247                        fsdepw_n(ji,jj,ik+1) = zprw(ji,jj) 
     248                        fsdept_n(ji,jj,ik  ) = zprt(ji,jj) 
     249                        fsdept_n(ji,jj,ik+1) = fsdept_n(ji,jj,ik) + fse3t_n(ji,jj,ik) 
    248250                     ENDIF 
    249251                  END DO 
     
    254256 
    255257         IF( ln_zco ) THEN           ! Vertical coordinates and scales factors 
    256             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 ) ! depth 
    257             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
    258             CALL iom_get( inum4, jpdom_unknown, 'e3t_0'  , e3t_0   ) 
    259             CALL iom_get( inum4, jpdom_unknown, 'e3w_0'  , e3w_0   ) 
     258            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 
     259            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
     260            CALL iom_get( inum4, jpdom_unknown, 'e3t_1d'  , e3t_1d   ) 
     261            CALL iom_get( inum4, jpdom_unknown, 'e3w_1d'  , e3w_1d   ) 
    260262            DO jk = 1, jpk 
    261                e3t  (:,:,jk) = e3t_0(jk)                                     ! set to the ref. factors 
    262                e3u  (:,:,jk) = e3t_0(jk) 
    263                e3v  (:,:,jk) = e3t_0(jk) 
    264                e3w  (:,:,jk) = e3w_0(jk) 
    265                gdept(:,:,jk) = gdept_0(jk) 
    266                gdepw(:,:,jk) = gdepw_0(jk) 
     263               fse3t_n(:,:,jk) = e3t_1d(jk)                              ! set to the ref. factors 
     264               fse3u_n(:,:,jk) = e3t_1d(jk) 
     265               fse3v_n(:,:,jk) = e3t_1d(jk) 
     266               fse3w_n(:,:,jk) = e3w_1d(jk) 
     267               fsdept_n(:,:,jk) = gdept_1d(jk) 
     268               fsdepw_n(:,:,jk) = gdepw_1d(jk) 
    267269            END DO 
    268270         ENDIF 
     
    270272!!gm BUG in s-coordinate this does not work! 
    271273      ! deepest/shallowest W level Above/Below ~10m 
    272       zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_0) )                  ! ref. depth with tolerance (10% of minimum layer thickness) 
    273       nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 )  ! shallowest W level Below ~10m 
     274      zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_1d) )                 ! ref. depth with tolerance (10% of minimum layer thickness) 
     275      nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 
    274276      nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m 
    275277!!gm end bug 
     
    312314         WRITE(numout,*) '              Reference z-coordinate depth and scale factors:' 
    313315         WRITE(numout, "(9x,' level   gdept    gdepw     e3t      e3w  ')" ) 
    314          WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk ) 
     316         WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 
    315317      ENDIF 
    316318 
    317319      DO jk = 1, jpk 
    318          IF( e3w_0  (jk) <= 0._wp .OR. e3t_0  (jk) <= 0._wp )   CALL ctl_stop( ' e3w_0 or e3t_0 =< 0 ' ) 
    319          IF( gdepw_0(jk) <  0._wp .OR. gdept_0(jk) <  0._wp )   CALL ctl_stop( ' gdepw_0 or gdept_0 < 0 ' ) 
     320         IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( ' e3w_1d or e3t_1d =< 0 ' ) 
     321         IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( ' gdepw_1d or gdept_1d < 0 ' ) 
    320322      END DO 
    321323      !                                     ! ============================ 
Note: See TracChangeset for help on using the changeset viewer.