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 4616 for branches/2014/dev_CNRS0_NOC1_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90 – NEMO

Ignore:
Timestamp:
2014-04-06T17:28:25+02:00 (10 years ago)
Author:
gm
Message:

#1260 : see the associated wiki page for explanation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_CNRS0_NOC1_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r4366 r4616  
    1414   !!                            use of parameters in par_CONFIG-Rxx.h90, not in namelist 
    1515   !!             -   ! 2004-05  (A. Koch-Larrouy) Add Gyre configuration  
    16    !!            4.0  ! 2011-02  (G. Madec) add cell surface (e1e2t) 
     16   !!            3.7  ! 2014-032  (G. Madec) add cell surface and their inverse 
    1717   !!---------------------------------------------------------------------- 
    1818 
     
    3535 
    3636   !!---------------------------------------------------------------------- 
    37    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     37   !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
    3838   !! $Id$  
    3939   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    120120         WRITE(numout,*) '             meridional grid-spacing (meters)  ppe2_m   = ', ppe2_m   
    121121      ENDIF 
    122  
    123  
    124       SELECT CASE( jphgr_msh )   ! type of horizontal mesh 
    125  
    126       CASE ( 0 )                     !  curvilinear coordinate on the sphere read in coordinate.nc file 
    127  
     122      ! 
     123      SELECT CASE( jphgr_msh )   !  type of horizontal mesh   
     124      ! 
     125      CASE ( 0 )                     !==  read in coordinate.nc file  ==! 
     126         ! 
    128127         IF(lwp) WRITE(numout,*) 
    129128         IF(lwp) WRITE(numout,*) '          curvilinear coordinate on the sphere read in "coordinate" file' 
    130  
     129         ! 
    131130         CALL hgr_read           ! Defaultl option  :   NetCDF file 
    132  
     131         ! 
    133132         !                                                ! ===================== 
    134133         IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
     
    155154            ! 
    156155         ENDIF 
    157  
    158             !                                             ! ===================== 
     156         ! 
     157         !                                                ! ===================== 
    159158         IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN    ! ORCA R1 configuration 
    160159            !                                             ! ===================== 
    161  
     160            ! 
    162161            ii0 = 281   ;   ii1 = 282        ! Gibraltar Strait (e2u = 20 km) 
    163162            ij0 = 200   ;   ij1 = 200   ;   e2u( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  20.e3 
     
    199198            IF(lwp) WRITE(numout,*) 
    200199            IF(lwp) WRITE(numout,*) '             orca_r1: E Halmahera : e1v reduced to 50 km' 
    201  
    202             ! 
    203  
    204             ! 
    205             ! 
    206             ! 
    207             ! 
    208          ENDIF 
    209  
     200            ! 
     201         ENDIF 
     202         ! 
    210203         !                                                ! ====================== 
    211204         IF( cp_cfg == "orca" .AND. jp_cfg == 05 ) THEN   ! ORCA R05 configuration 
     
    248241            ! 
    249242         ENDIF 
    250  
    251  
     243         ! 
    252244         ! N.B. :  General case, lat and long function of both i and j indices: 
    253245         !     e1t(ji,jj) = ra * rad * SQRT(  ( cos( rad*gphit(ji,jj) ) * fsdila( zti, ztj ) )**2   & 
     
    268260         !     e2f(ji,jj) = ra * rad * SQRT(  ( cos( rad*gphif(ji,jj) ) * fsdjla( zfi, zfj ) )**2   & 
    269261         !                                  + (                           fsdjph( zfi, zfj ) )**2  ) 
    270  
    271  
    272       CASE ( 1 )                     ! geographical mesh on the sphere with regular grid-spacing 
    273  
     262         ! 
     263         ! 
     264      CASE ( 1 )                     !==  geographical mesh on the sphere with regular (in degree) grid-spacing  ==! 
     265         ! 
    274266         IF(lwp) WRITE(numout,*) 
    275267         IF(lwp) WRITE(numout,*) '          geographical mesh on the sphere with regular grid-spacing' 
    276268         IF(lwp) WRITE(numout,*) '          given by ppe1_deg and ppe2_deg'  
    277  
     269         ! 
    278270         DO jj = 1, jpj 
    279271            DO ji = 1, jpi 
    280                zti = FLOAT( ji - 1 + nimpp - 1 )         ;   ztj = FLOAT( jj - 1 + njmpp - 1 ) 
    281                zui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5   ;   zuj = FLOAT( jj - 1 + njmpp - 1 ) 
    282                zvi = FLOAT( ji - 1 + nimpp - 1 )         ;   zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5 
    283                zfi = FLOAT( ji - 1 + nimpp - 1 ) + 0.5   ;   zfj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5 
     272               zti = REAL( ji - 1 + nimpp - 1 )         ;   ztj = REAL( jj - 1 + njmpp - 1 ) 
     273               zui = REAL( ji - 1 + nimpp - 1 ) + 0.5   ;   zuj = REAL( jj - 1 + njmpp - 1 ) 
     274               zvi = REAL( ji - 1 + nimpp - 1 )         ;   zvj = REAL( jj - 1 + njmpp - 1 ) + 0.5 
     275               zfi = REAL( ji - 1 + nimpp - 1 ) + 0.5   ;   zfj = REAL( jj - 1 + njmpp - 1 ) + 0.5 
    284276         ! Longitude 
    285277               glamt(ji,jj) = ppglam0 + ppe1_deg * zti 
     
    304296            END DO 
    305297         END DO 
    306  
    307  
    308       CASE ( 2:3 )                   ! f- or beta-plane with regular grid-spacing 
    309  
     298         ! 
     299      CASE ( 2:3 )                   !==  f- or beta-plane with regular grid-spacing  ==! 
     300         ! 
    310301         IF(lwp) WRITE(numout,*) 
    311302         IF(lwp) WRITE(numout,*) '          f- or beta-plane with regular grid-spacing' 
    312303         IF(lwp) WRITE(numout,*) '          given by ppe1_m and ppe2_m'  
    313  
     304         ! 
    314305         ! Position coordinates (in kilometers) 
    315306         !                          ========== 
    316307         glam0 = 0.e0 
    317308         gphi0 = - ppe2_m * 1.e-3 
    318           
     309         ! 
    319310#if defined key_agrif  
    320311         IF ( cp_cfg == 'eel' .AND. jp_cfg == 6 ) THEN    ! for EEL6 configuration only 
     
    329320         DO jj = 1, jpj 
    330321            DO ji = 1, jpi 
    331                glamt(ji,jj) = glam0 + ppe1_m * 1.e-3 * ( FLOAT( ji - 1 + nimpp - 1 )       ) 
    332                glamu(ji,jj) = glam0 + ppe1_m * 1.e-3 * ( FLOAT( ji - 1 + nimpp - 1 ) + 0.5 ) 
     322               glamt(ji,jj) = glam0 + ppe1_m * 1.e-3 * ( REAL( ji - 1 + nimpp - 1 )       ) 
     323               glamu(ji,jj) = glam0 + ppe1_m * 1.e-3 * ( REAL( ji - 1 + nimpp - 1 ) + 0.5 ) 
    333324               glamv(ji,jj) = glamt(ji,jj) 
    334325               glamf(ji,jj) = glamu(ji,jj) 
    335     
    336                gphit(ji,jj) = gphi0 + ppe2_m * 1.e-3 * ( FLOAT( jj - 1 + njmpp - 1 )       ) 
     326               ! 
     327               gphit(ji,jj) = gphi0 + ppe2_m * 1.e-3 * ( REAL( jj - 1 + njmpp - 1 )       ) 
    337328               gphiu(ji,jj) = gphit(ji,jj) 
    338                gphiv(ji,jj) = gphi0 + ppe2_m * 1.e-3 * ( FLOAT( jj - 1 + njmpp - 1 ) + 0.5 ) 
     329               gphiv(ji,jj) = gphi0 + ppe2_m * 1.e-3 * ( REAL( jj - 1 + njmpp - 1 ) + 0.5 ) 
    339330               gphif(ji,jj) = gphiv(ji,jj) 
    340331            END DO 
    341332         END DO 
    342  
     333         ! 
    343334         ! Horizontal scale factors (in meters) 
    344335         !                              ====== 
     
    347338         e1v(:,:) = ppe1_m      ;      e2v(:,:) = ppe2_m 
    348339         e1f(:,:) = ppe1_m      ;      e2f(:,:) = ppe2_m 
    349  
    350       CASE ( 4 )                     ! geographical mesh on the sphere, isotropic MERCATOR type 
    351  
     340         ! 
     341      CASE ( 4 )                     !==  geographical mesh on the sphere, isotropic MERCATOR type  ==! 
     342         ! 
    352343         IF(lwp) WRITE(numout,*) 
    353344         IF(lwp) WRITE(numout,*) '          geographical mesh on the sphere, MERCATOR type' 
    354345         IF(lwp) WRITE(numout,*) '          longitudinal/latitudinal spacing given by ppe1_deg' 
    355346         IF ( ppgphi0 == -90 ) CALL ctl_stop( ' Mercator grid cannot start at south pole !!!! ' ) 
    356  
     347         ! 
    357348         !  Find index corresponding to the equator, given the grid spacing e1_deg 
    358349         !  and the (approximate) southern latitude ppgphi0. 
     
    362353         ijeq = ABS( 180./rpi * LOG( COS( zarg ) / SIN( zarg ) ) / ppe1_deg ) 
    363354         IF(  ppgphi0 > 0 )  ijeq = -ijeq 
    364  
     355         ! 
    365356         IF(lwp) WRITE(numout,*) '          Index of the equator on the MERCATOR grid:', ijeq 
    366  
     357         ! 
    367358         DO jj = 1, jpj 
    368359            DO ji = 1, jpi 
    369                zti = FLOAT( ji - 1 + nimpp - 1 )         ;   ztj = FLOAT( jj - ijeq + njmpp - 1 ) 
    370                zui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5   ;   zuj = FLOAT( jj - ijeq + njmpp - 1 ) 
    371                zvi = FLOAT( ji - 1 + nimpp - 1 )         ;   zvj = FLOAT( jj - ijeq + njmpp - 1 ) + 0.5 
    372                zfi = FLOAT( ji - 1 + nimpp - 1 ) + 0.5   ;   zfj = FLOAT( jj - ijeq + njmpp - 1 ) + 0.5 
     360               zti = REAL( ji - 1 + nimpp - 1 )         ;   ztj = REAL( jj - ijeq + njmpp - 1 ) 
     361               zui = REAL( ji - 1 + nimpp - 1 ) + 0.5   ;   zuj = REAL( jj - ijeq + njmpp - 1 ) 
     362               zvi = REAL( ji - 1 + nimpp - 1 )         ;   zvj = REAL( jj - ijeq + njmpp - 1 ) + 0.5 
     363               zfi = REAL( ji - 1 + nimpp - 1 ) + 0.5   ;   zfj = REAL( jj - ijeq + njmpp - 1 ) + 0.5 
    373364         ! Longitude 
    374365               glamt(ji,jj) = ppglam0 + ppe1_deg * zti 
     
    393384            END DO 
    394385         END DO 
    395  
    396       CASE ( 5 )                   ! beta-plane with regular grid-spacing and rotated domain (GYRE configuration) 
    397  
     386         ! 
     387      CASE ( 5 )                   !==  beta-plane with regular grid-spacing and rotated domain ==! (GYRE configuration) 
     388         ! 
    398389         IF(lwp) WRITE(numout,*) 
    399390         IF(lwp) WRITE(numout,*) '          beta-plane with regular grid-spacing and rotated domain (GYRE configuration)' 
    400391         IF(lwp) WRITE(numout,*) '          given by ppe1_m and ppe2_m' 
    401  
     392         ! 
    402393         ! Position coordinates (in kilometers) 
    403394         !                          ========== 
    404  
     395         ! 
    405396         ! angle 45deg and ze1=106.e+3 / jp_cfg forced -> zlam1 = -85deg, zphi1 = 29degN 
    406          zlam1 = -85 
    407          zphi1 = 29 
     397         zlam1 = -85._wp 
     398         zphi1 =  29._wp 
    408399         ! resolution in meters 
    409          ze1 = 106000. / FLOAT(jp_cfg)             
     400         ze1 = 106000. / REAL( jp_cfg , wp )             
    410401         ! benchmark: forced the resolution to be about 100 km 
    411402         IF( nbench /= 0 )   ze1 = 106000.e0      
    412          zsin_alpha = - SQRT( 2. ) / 2. 
    413          zcos_alpha =   SQRT( 2. ) / 2. 
     403         zsin_alpha = - SQRT( 2._wp ) * 0.5_wp 
     404         zcos_alpha =   SQRT( 2._wp ) * 0.5_wp 
    414405         ze1deg = ze1 / (ra * rad) 
    415          IF( nbench /= 0 )   ze1deg = ze1deg / FLOAT(jp_cfg)        ! benchmark: keep the lat/+lon 
    416          !                                                          ! at the right jp_cfg resolution 
    417          glam0 = zlam1 + zcos_alpha * ze1deg * FLOAT( jpjglo-2 ) 
    418          gphi0 = zphi1 + zsin_alpha * ze1deg * FLOAT( jpjglo-2 ) 
    419  
     406         IF( nbench /= 0 )   ze1deg = ze1deg / REAL( jp_cfg , wp )   ! benchmark: keep the lat/+lon 
     407         !                                                           ! at the right jp_cfg resolution 
     408         glam0 = zlam1 + zcos_alpha * ze1deg * REAL( jpjglo-2 , wp ) 
     409         gphi0 = zphi1 + zsin_alpha * ze1deg * REAL( jpjglo-2 , wp ) 
     410         ! 
    420411         IF( nprint==1 .AND. lwp )   THEN 
    421412            WRITE(numout,*) '          ze1', ze1, 'cosalpha', zcos_alpha, 'sinalpha', zsin_alpha 
    422413            WRITE(numout,*) '          ze1deg', ze1deg, 'glam0', glam0, 'gphi0', gphi0 
    423414         ENDIF 
    424  
     415         ! 
    425416         DO jj = 1, jpj 
    426            DO ji = 1, jpi 
    427              zim1 = FLOAT( ji + nimpp - 1 ) - 1.   ;   zim05 = FLOAT( ji + nimpp - 1 ) - 1.5 
    428              zjm1 = FLOAT( jj + njmpp - 1 ) - 1.   ;   zjm05 = FLOAT( jj + njmpp - 1 ) - 1.5 
    429  
    430              glamf(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
    431              gphif(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
    432  
    433              glamt(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
    434              gphit(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
    435  
    436              glamu(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
    437              gphiu(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
    438  
    439              glamv(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
    440              gphiv(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
    441            END DO 
    442           END DO 
    443  
     417            DO ji = 1, jpi 
     418               zim1 = REAL( ji + nimpp - 1 ) - 1.   ;   zim05 = REAL( ji + nimpp - 1 ) - 1.5 
     419               zjm1 = REAL( jj + njmpp - 1 ) - 1.   ;   zjm05 = REAL( jj + njmpp - 1 ) - 1.5 
     420               ! 
     421               glamf(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
     422               gphif(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
     423               ! 
     424               glamt(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
     425               gphit(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
     426               ! 
     427               glamu(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
     428               gphiu(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
     429               ! 
     430               glamv(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
     431               gphiv(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
     432            END DO 
     433         END DO 
     434         ! 
    444435         ! Horizontal scale factors (in meters) 
    445436         !                              ====== 
     
    448439         e1v(:,:) =  ze1     ;      e2v(:,:) = ze1 
    449440         e1f(:,:) =  ze1     ;      e2f(:,:) = ze1 
    450  
     441         ! 
    451442      CASE DEFAULT 
    452443         WRITE(ctmp1,*) '          bad flag value for jphgr_msh = ', jphgr_msh 
    453444         CALL ctl_stop( ctmp1 ) 
    454  
     445         ! 
    455446      END SELECT 
    456447       
    457       ! T-cell surface 
    458       ! -------------- 
     448      ! associated horizontal metrics 
     449      ! ----------------------------- 
     450      ! 
     451      r1_e1t (:,:) = 1._wp / e1t(:,:)   ;   r1_e2t (:,:) = 1._wp / e2t(:,:) 
     452      r1_e1u (:,:) = 1._wp / e1u(:,:)   ;   r1_e2u (:,:) = 1._wp / e2u(:,:) 
     453      r1_e1v (:,:) = 1._wp / e1v(:,:)   ;   r1_e2v (:,:) = 1._wp / e2v(:,:) 
     454      r1_e1f (:,:) = 1._wp / e1f(:,:)   ;   r1_e2f (:,:) = 1._wp / e2f(:,:) 
     455      ! 
    459456      e1e2t(:,:) = e1t(:,:) * e2t(:,:) 
    460      
    461       ! Useful shortcuts (JC: note the duplicated e2e2t array ! Need some cleaning) 
    462       ! --------------------------------------------------------------------------- 
    463       e12t    (:,:) = e1t(:,:) * e2t(:,:) 
    464       e12u    (:,:) = e1u(:,:) * e2u(:,:) 
    465       e12v    (:,:) = e1v(:,:) * e2v(:,:) 
    466       e12f    (:,:) = e1f(:,:) * e2f(:,:) 
    467       r1_e12t (:,:) = 1._wp    / e12t(:,:) 
    468       r1_e12u (:,:) = 1._wp    / e12u(:,:) 
    469       r1_e12v (:,:) = 1._wp    / e12v(:,:) 
    470       r1_e12f (:,:) = 1._wp    / e12f(:,:) 
    471       re2u_e1u(:,:) = e2u(:,:) / e1u(:,:) 
    472       re1v_e2v(:,:) = e1v(:,:) / e2v(:,:) 
    473  
    474       ! Control printing : Grid informations (if not restart) 
    475       ! ---------------- 
    476  
    477       IF( lwp .AND. .NOT.ln_rstart ) THEN 
     457      e1e2u(:,:) = e1u(:,:) * e2u(:,:) 
     458      e1e2v(:,:) = e1v(:,:) * e2v(:,:) 
     459      e1e2f(:,:) = e1f(:,:) * e2f(:,:) 
     460      !    
     461      r1_e1e2t (:,:) = 1._wp / e1e2t(:,:) 
     462      r1_e1e2u (:,:) = 1._wp / e1e2u(:,:) 
     463      r1_e1e2v (:,:) = 1._wp / e1e2v(:,:) 
     464      r1_e1e2f (:,:) = 1._wp / e1e2f(:,:) 
     465      ! 
     466      e2_e1u(:,:) = e2u(:,:) / e1u(:,:) 
     467      e1_e2v(:,:) = e1v(:,:) / e2v(:,:) 
     468 
     469 
     470      IF( lwp .AND. .NOT.ln_rstart ) THEN      ! Control print : Grid informations (if not restart) 
    478471         WRITE(numout,*) 
    479472         WRITE(numout,*) '          longitude and e1 scale factors' 
     
    4854789300     FORMAT( 1x, i4, f8.2,1x, f8.2,1x, f8.2,1x, f8.2, 1x,    & 
    486479            f19.10, 1x, f19.10, 1x, f19.10, 1x, f19.10 ) 
    487           
     480            ! 
    488481         WRITE(numout,*) 
    489482         WRITE(numout,*) '          latitude and e2 scale factors' 
     
    495488      ENDIF 
    496489 
    497        
    498       IF( nprint == 1 .AND. lwp ) THEN 
    499          WRITE(numout,*) '          e1u e2u ' 
    500          CALL prihre( e1u,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    501          CALL prihre( e2u,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    502          WRITE(numout,*) '          e1v e2v  ' 
    503          CALL prihre( e1v,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    504          CALL prihre( e2v,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    505          WRITE(numout,*) '          e1f e2f  ' 
    506          CALL prihre( e1f,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    507          CALL prihre( e2f,jpi,jpj,jpi-5,jpi,1,jpj-5,jpj,1,0.,numout ) 
    508       ENDIF 
    509  
    510490 
    511491      ! ================= ! 
     
    528508 
    529509         zbeta   = 2. * omega * COS( rad * ppgphi0 ) / ra                       ! beta at latitude ppgphi0 
    530          zphi0   = ppgphi0 - FLOAT( jpjglo/2) * ppe2_m / ( ra * rad )           ! latitude of the first row F-points 
     510         zphi0   = ppgphi0 - REAL( jpjglo/2) * ppe2_m / ( ra * rad )           ! latitude of the first row F-points 
    531511          
    532512#if defined key_agrif 
    533513         IF ( cp_cfg == 'eel' .AND. jp_cfg == 6 ) THEN    ! for EEL6 configuration only 
    534514            IF( .NOT. Agrif_Root() ) THEN 
    535               zphi0 = ppgphi0 - FLOAT( Agrif_Parent(jpjglo)/2)*Agrif_Parent(ppe2_m) / (ra * rad) 
     515              zphi0 = ppgphi0 - REAL( Agrif_Parent(jpjglo)/2)*Agrif_Parent(ppe2_m) / (ra * rad) 
    536516            ENDIF 
    537517         ENDIF 
     
    584564 
    585565      IF( nperio == 2 ) THEN 
    586          znorme = SQRT( SUM( gphiu(:,2) * gphiu(:,2) ) ) / FLOAT( jpi ) 
     566         znorme = SQRT( SUM( gphiu(:,2) * gphiu(:,2) ) ) / REAL( jpi ) 
    587567         IF( znorme > 1.e-13 ) CALL ctl_stop( ' ===>>>> : symmetrical condition: rerun with good equator line' ) 
    588568      ENDIF 
     
    597577      !!              ***  ROUTINE hgr_read  *** 
    598578      !! 
    599       !! ** Purpose :   Read a coordinate file in NetCDF format  
    600       !! 
    601       !! ** Method  :   The mesh file has been defined trough a analytical  
    602       !!      or semi-analytical method. It is read in a NetCDF file.  
    603       !!      
     579      !! ** Purpose :   Read a coordinate file in NetCDF format using IOM 
     580      !! 
    604581      !!---------------------------------------------------------------------- 
    605582      USE iom 
    606  
     583      ! 
    607584      INTEGER ::   inum   ! temporary logical unit 
    608585      !!---------------------------------------------------------------------- 
    609  
     586      ! 
    610587      IF(lwp) THEN 
    611588         WRITE(numout,*) 
     
    613590         WRITE(numout,*) '~~~~~~~~      jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpk = ', jpk 
    614591      ENDIF 
    615        
     592      ! 
    616593      CALL iom_open( 'coordinates', inum ) 
    617        
     594      ! 
    618595      CALL iom_get( inum, jpdom_data, 'glamt', glamt ) 
    619596      CALL iom_get( inum, jpdom_data, 'glamu', glamu ) 
    620597      CALL iom_get( inum, jpdom_data, 'glamv', glamv ) 
    621598      CALL iom_get( inum, jpdom_data, 'glamf', glamf ) 
    622        
     599      ! 
    623600      CALL iom_get( inum, jpdom_data, 'gphit', gphit ) 
    624601      CALL iom_get( inum, jpdom_data, 'gphiu', gphiu ) 
    625602      CALL iom_get( inum, jpdom_data, 'gphiv', gphiv ) 
    626603      CALL iom_get( inum, jpdom_data, 'gphif', gphif ) 
    627        
     604      ! 
    628605      CALL iom_get( inum, jpdom_data, 'e1t', e1t ) 
    629606      CALL iom_get( inum, jpdom_data, 'e1u', e1u ) 
    630607      CALL iom_get( inum, jpdom_data, 'e1v', e1v ) 
    631608      CALL iom_get( inum, jpdom_data, 'e1f', e1f ) 
    632        
     609      ! 
    633610      CALL iom_get( inum, jpdom_data, 'e2t', e2t ) 
    634611      CALL iom_get( inum, jpdom_data, 'e2u', e2u ) 
    635612      CALL iom_get( inum, jpdom_data, 'e2v', e2v ) 
    636613      CALL iom_get( inum, jpdom_data, 'e2f', e2f ) 
    637        
     614      ! 
    638615      CALL iom_close( inum ) 
    639        
    640     END SUBROUTINE hgr_read 
     616      ! 
     617   END SUBROUTINE hgr_read 
    641618     
    642619   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.