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 93 for trunk/NEMO/OPA_SRC/DOM – NEMO

Changeset 93 for trunk/NEMO/OPA_SRC/DOM


Ignore:
Timestamp:
2004-06-25T08:33:00+02:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE060 : A new configuration, named GYRE, has been added.

Location:
trunk/NEMO/OPA_SRC/DOM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DOM/domain.F90

    r72 r93  
    143143      NAMELIST/namrun/ no    , cexper   , ln_rstart , nrstdt , nit000,   & 
    144144         &             nitend, ndate0   , nleapy   , ninist , nstock,   & 
    145          &             nprint, nwrite   , nrunoff  , ln_ctl 
     145         &             nprint, nwrite   , nrunoff  , ln_ctl , nbench 
    146146      NAMELIST/namdom/ ntopo , e3zps_min, e3zps_rat, ngrid  , nmsh  ,   & 
    147147         &             nacc  , atfp     , rdt      , rdtmin , rdtmax,   & 
     
    176176         WRITE(numout,*) '           runoff option                   nrunoff   = ', nrunoff 
    177177         WRITE(numout,*) '           run control (for debugging)     ln_ctl    = ', ln_ctl 
     178         WRITE(numout,*) '           benchmark parameter (0/1)       nbench    = ', nbench 
    178179      ENDIF 
    179180 
     
    324325 
    325326      IF( lk_mpp ) THEN 
    326          CALL mpp_isl( iimi1 ) 
    327          CALL mpp_isl( ijmi1 ) 
    328          CALL mpp_isl( iimi2 ) 
    329          CALL mpp_isl( ijmi2 ) 
    330          CALL mpp_isl( iima1 ) 
    331          CALL mpp_isl( ijma1 ) 
    332          CALL mpp_isl( iima2 ) 
    333          CALL mpp_isl( ijma2 ) 
    334       ENDIF 
    335  
    336       IF(lwp) THEN 
     327!CT bug         CALL mpp_isl( iimi1 ) 
     328!CT bug         CALL mpp_isl( ijmi1 ) 
     329!CT bug         CALL mpp_isl( iimi2 ) 
     330!CT bug         CALL mpp_isl( ijmi2 ) 
     331!CT bug         CALL mpp_isl( iima1 ) 
     332!CT bug         CALL mpp_isl( ijma1 ) 
     333!CT bug         CALL mpp_isl( iima2 ) 
     334!CT bug         CALL mpp_isl( ijma2 ) 
     335      ENDIF 
     336 
     337      IF(lwp) THEN 
     338         IF(lk_mpp) THEN 
     339            WRITE(numout,cform_war) 
     340            WRITE(numout,*)'      Min(Max) of e1t, e2t are those of the first proc only' 
     341            WRITE(numout,*) 
     342         END IF 
    337343         WRITE(numout,"(14x,'e1t maxi: ',1f10.2,' at i = ',i3,' j= ',i3)") ze1max, iima1, ijma1 
    338344         WRITE(numout,"(14x,'e1t mini: ',1f10.2,' at i = ',i3,' j= ',i3)") ze1min, iimi1, ijmi1 
  • trunk/NEMO/OPA_SRC/DOM/domhgr.F90

    r81 r93  
    11MODULE domhgr 
    22   !!============================================================================== 
    3    !!                       ***  MODULE domain   *** 
     3   !!                       ***  MODULE domhgr   *** 
    44   !! Ocean initialization : domain initialization 
    55   !!============================================================================== 
     
    1919 
    2020   !! * Module variables 
    21    REAL (wp)  :: glam0, gphi0        ! variables corresponding to parameters 
    22       !                              ! ppglam0 ppgphi0 set in par_oce 
     21   REAL(wp) ::   glam0, gphi0           ! variables corresponding to parameters 
     22      !                                 ! ppglam0 ppgphi0 set in par_oce 
    2323 
    2424   !! * Routine accessibility 
     
    9595      !!   9.0  !  04-01  (A.M. Treguier, J.M. Molines) Case 4 (Mercator mesh) 
    9696      !!                  use of parameters in par_CONFIG-Rxx.h90, not in namelist 
     97      !!        !  04-05  (A. Koch-Larrouy) Add Gyre configuration  
    9798      !!---------------------------------------------------------------------- 
    9899      !! * local declarations 
     
    105106         zphi0, zbeta, znorme,       &  ! 
    106107         zarg, zf0 
     108      REAL(wp) ::   & 
     109         zlam1, zcos_alpha, zim1 , zjm1 , ze1, ze1deg,   & 
     110         zphi1, zsin_alpha, zim05, zjm05 
    107111      !!---------------------------------------------------------------------- 
    108112 
     
    280284         ! Latitude 
    281285               gphit(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* ztj ) ) 
    282                gphiu(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* ztj ) ) 
    283                gphiv(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* ztj ) ) 
    284                gphif(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* ztj ) ) 
     286               gphiu(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* zuj ) ) 
     287               gphiv(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* zvj ) ) 
     288               gphif(ji,jj) = 1./rad * ASIN ( TANH( ppe1_deg *rad* zfj ) ) 
    285289         ! e1 
    286290               e1t(ji,jj) = ra * rad * COS( rad * gphit(ji,jj) ) * ppe1_deg 
     
    295299            END DO 
    296300         END DO 
     301 
     302      CASE ( 5 )                   ! beta-plane with regular grid-spacing and rotated domain (GYRE configuration) 
     303 
     304         IF(lwp) WRITE(numout,*) 
     305         IF(lwp) WRITE(numout,*) '          beta-plane with regular grid-spacing and rotated domain (GYRE configuration)' 
     306         IF(lwp) WRITE(numout,*) '          given by ppe1_m and ppe2_m' 
     307 
     308         ! Position coordinates (in kilometers) 
     309         !                          ========== 
     310 
     311         ! angle 45° and ze1=106.e+3 / jp_cfg forced -> zlam1 = -85°, zphi1 = 29°N 
     312         zlam1 = -85 
     313         zphi1 = 29 
     314         ze1 = 106000. / FLOAT(jp_cfg)            ! resolution in meters 
     315         IF( nbench /= 0 )   ze1 = 106000.e0     ! benchmark: forced the resolution to be about 100 km 
     316         zsin_alpha = - SQRT( 2. ) / 2. 
     317         zcos_alpha =   SQRT( 2. ) / 2. 
     318         ze1deg = ze1 / (ra * rad) 
     319         IF( nbench /= 0 )   ze1deg = ze1deg / FLOAT(jp_cfg)        ! benchmark: keep the lat/+lon 
     320         !                                                           ! at the right jp_cfg resolution 
     321         glam0 = zlam1 + zcos_alpha * ze1deg * FLOAT( jpjglo-2 ) 
     322         gphi0 = zphi1 + zsin_alpha * ze1deg * FLOAT( jpjglo-2 ) 
     323 
     324         IF(lwp) WRITE(numout,*) 'ze1', ze1, 'cosalpha', zcos_alpha, 'sinalpha', zsin_alpha 
     325         IF(lwp) WRITE(numout,*) 'ze1deg', ze1deg, 'glam0', glam0, 'gphi0', gphi0 
     326 
     327         DO jj = 1, jpj 
     328           DO ji = 1, jpi 
     329             zim1 = FLOAT( ji + nimpp - 1 ) - 1.   ;   zim05 = FLOAT( ji + nimpp - 1 ) - 1.5 
     330             zjm1 = FLOAT( jj + njmpp - 1 ) - 1.   ;   zjm05 = FLOAT( jj + njmpp - 1 ) - 1.5 
     331 
     332             glamf(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
     333             gphif(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
     334 
     335             glamt(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
     336             gphit(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
     337 
     338             glamu(ji,jj) = glam0 + zim1  * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 
     339             gphiu(ji,jj) = gphi0 - zim1  * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 
     340 
     341             glamv(ji,jj) = glam0 + zim05 * ze1deg * zcos_alpha + zjm1  * ze1deg * zsin_alpha 
     342             gphiv(ji,jj) = gphi0 - zim05 * ze1deg * zsin_alpha + zjm1  * ze1deg * zcos_alpha 
     343           END DO 
     344          END DO 
     345 
     346         ! Horizontal scale factors (in meters) 
     347         !                              ====== 
     348         e1t(:,:) =  ze1     ;      e2t(:,:) = ze1 
     349         e1u(:,:) =  ze1     ;      e2u(:,:) = ze1 
     350         e1v(:,:) =  ze1     ;      e2v(:,:) = ze1 
     351         e1f(:,:) =  ze1     ;      e2f(:,:) = ze1 
    297352 
    298353      CASE DEFAULT 
     
    368423         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
    369424 
     425      CASE ( 5 )                     ! beta-plane and rotated domain 
     426 
     427         zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra                     ! beta at latitude ppgphi0 
     428         zphi0 = 15.e0                                                      ! latitude of the first row F-points 
     429         zf0   = 2. * omega * SIN( rad * zphi0 )                            ! compute f0 1st point south 
     430 
     431         ff(:,:) = ( zf0 + zbeta * ABS( gphif(:,:) - zphi0 ) * rad * ra )   ! f = f0 +beta* y ( y=0 at south) 
     432 
     433         IF(lwp) WRITE(numout,*) '          Beta-plane: Beta parameter = constant = ', ff(1,1) 
     434         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
     435 
    370436      END SELECT 
    371437 
Note: See TracChangeset for help on using the changeset viewer.