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 2380 for branches/nemo_v3_3_beta/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2010-11-12T20:31:16+01:00 (13 years ago)
Author:
acc
Message:

nemo_v3_3beta. ORCA_R1 settings (step 2, see ticket #758). Introduces key_orca_r1 (46 level default, 75 level if key_orca_r1=75)

Location:
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90

    r2287 r2380  
    88   !!            9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
    99   !!---------------------------------------------------------------------- 
    10 #if ( defined key_orca_r2 || defined  key_orca_r4 ) && ! defined key_coupled 
    11    !!---------------------------------------------------------------------- 
    12    !!   "key_orca_r2 or 4" 
     10#if (  defined key_orca_r1 || defined key_orca_r2 || defined  key_orca_r4 ) && ! defined key_coupled 
     11   !!---------------------------------------------------------------------- 
     12   !!   "key_orca_r1 or 2 or 4" 
    1313   !!---------------------------------------------------------------------- 
    1414   !!---------------------------------------------------------------------- 
     
    163163            ij0 = 102   ;   ij1 = 102 
    164164            !                                        ! ======================= 
     165         CASE ( 1 )                                  !  ORCA_R1 configurations 
     166            !                                        ! ======================= 
     167            ii0 = 283   ;   ii1 = 283 
     168            ij0 = 200   ;   ij1 = 200 
     169            !                                        ! ======================= 
    165170         CASE DEFAULT                                !    ORCA R05 or R025 
    166171            !                                        ! ======================= 
     
    204209            ii0 = 137   ;   ii1 = 137 
    205210            ij0 = 101   ;   ij1 = 102 
     211            !                                        ! ======================= 
     212         CASE ( 1 )                                  !  ORCA_R1 configurations 
     213            !                                        ! ======================= 
     214            ii0 = 282   ;   ii1 = 282 
     215            ij0 = 200   ;   ij1 = 200 
    206216            !                                        ! ======================= 
    207217         CASE DEFAULT                                !    ORCA R05 or R025 
     
    247257            ij0 = 88    ;   ij1 = 88  
    248258            !                                        ! ======================= 
     259         CASE ( 1 )                                  !  ORCA_R1 configurations 
     260            !                                        ! ======================= 
     261            ii0 = 331   ;   ii1 = 331 
     262            ij0 = 176   ;   ij1 = 176 
     263            !                                        ! ======================= 
    249264         CASE DEFAULT                                !    ORCA R05 or R025 
    250265            !                                        ! ======================= 
     
    289304            ij0 = 116   ;   ij1 = 116 
    290305            !                                        ! ======================= 
     306         CASE ( 1 )                                  !  ORCA_R1 configurations 
     307            !                                        ! ======================= 
     308            ii0 = 297   ;   ii1 = 297  
     309            ij0 = 230   ;   ij1 = 230 
     310            !                                        ! ======================= 
    291311         CASE DEFAULT                                !    ORCA R05 or R025 
    292312            !                                        ! ======================= 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r2287 r2380  
    157157            IF(lwp) WRITE(numout,*) 
    158158            IF(lwp) WRITE(numout,*) '             orca_r2: Danish Straits : e2u reduced to 10 km' 
     159            ! 
     160         ENDIF 
     161 
     162            !                                             ! ===================== 
     163         IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN    ! ORCA R1 configuration 
     164            !                                             ! ===================== 
     165 
     166            ii0 = 281   ;   ii1 = 282        ! Gibraltar Strait (e2u = 20 km) 
     167            ij0 = 200   ;   ij1 = 200   ;   e2u( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  20.e3 
     168            IF(lwp) WRITE(numout,*) 
     169            IF(lwp) WRITE(numout,*) '             orca_r1: Gibraltar : e2u reduced to 20 km' 
     170 
     171            ii0 = 314   ;   ii1 = 315        ! Bhosporus Strait (e2u = 10 km) 
     172            ij0 = 208   ;   ij1 = 208   ;   e2u( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  10.e3 
     173            IF(lwp) WRITE(numout,*) 
     174            IF(lwp) WRITE(numout,*) '             orca_r1: Bhosporus : e2u reduced to 10 km' 
     175 
     176            ii0 =  44   ;   ii1 =  44        ! Lombok Strait (e1v = 13 km) 
     177            ij0 = 124   ;   ij1 = 125   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  13.e3 
     178            IF(lwp) WRITE(numout,*) 
     179            IF(lwp) WRITE(numout,*) '             orca_r1: Lombok : e1v reduced to 10 km' 
     180 
     181            ii0 =  48   ;   ii1 =  48        ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
     182            ij0 = 124   ;   ij1 = 125   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  8.e3 
     183            IF(lwp) WRITE(numout,*) 
     184            IF(lwp) WRITE(numout,*) '             orca_r1: Sumba : e1v reduced to 8 km' 
     185 
     186            ii0 =  53   ;   ii1 =  53        ! Ombai Strait (e1v = 13 km) 
     187            ij0 = 124   ;   ij1 = 125   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 13.e3 
     188            IF(lwp) WRITE(numout,*) 
     189            IF(lwp) WRITE(numout,*) '             orca_r1: Ombai : e1v reduced to 13 km' 
     190 
     191            ii0 =  56   ;   ii1 =  56        ! Timor Passage (e1v = 20 km) 
     192            ij0 = 124   ;   ij1 = 125   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 20.e3 
     193            IF(lwp) WRITE(numout,*) 
     194            IF(lwp) WRITE(numout,*) '             orca_r1: Timor Passage : e1v reduced to 20 km' 
     195 
     196            ii0 =  55   ;   ii1 =  55        ! West Halmahera Strait (e1v = 30 km) 
     197            ij0 = 141   ;   ij1 = 142   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 30.e3 
     198            IF(lwp) WRITE(numout,*) 
     199            IF(lwp) WRITE(numout,*) '             orca_r1: W Halmahera : e1v reduced to 30 km' 
     200 
     201            ii0 =  58   ;   ii1 =  58        ! East Halmahera Strait (e1v = 50 km) 
     202            ij0 = 141   ;   ij1 = 142   ;   e1v( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 50.e3 
     203            IF(lwp) WRITE(numout,*) 
     204            IF(lwp) WRITE(numout,*) '             orca_r1: E Halmahera : e1v reduced to 50 km' 
     205 
     206            ! 
     207 
     208            ! 
     209            ! 
     210            ! 
    159211            ! 
    160212         ENDIF 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r2287 r2380  
    331331         ! 
    332332      ENDIF 
     333            !                                               ! ===================== 
     334         IF( cp_cfg == "orca" .AND. jp_cfg .eq. 1 ) THEN    ! ORCA R1 configuration 
     335            !                                               ! ===================== 
     336 
     337            ii0 = 283   ;   ii1 = 284        ! Gibraltar Strait  
     338            ij0 = 200   ;   ij1 = 200   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  2.0   
     339            IF(lwp) WRITE(numout,*) 
     340            IF(lwp) WRITE(numout,*) '             orca_r1: Gibraltar : ' 
     341 
     342            ii0 = 314   ;   ii1 = 315        ! Bhosporus Strait  
     343            ij0 = 208   ;   ij1 = 208   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  2.0   
     344            IF(lwp) WRITE(numout,*) 
     345            IF(lwp) WRITE(numout,*) '             orca_r1: Bhosporus : ' 
     346 
     347            ii0 =  48   ;   ii1 =  48        ! Makassar Strait (Top)  
     348            ij0 = 149   ;   ij1 = 150   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  3.0   
     349            IF(lwp) WRITE(numout,*) 
     350            IF(lwp) WRITE(numout,*) '             orca_r1: Makassar (Top) : ' 
     351 
     352            ii0 =  44   ;   ii1 =  44        ! Lombok Strait  
     353            ij0 = 124   ;   ij1 = 125   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  2.0   
     354            IF(lwp) WRITE(numout,*) 
     355            IF(lwp) WRITE(numout,*) '             orca_r1: Lombok : ' 
     356 
     357            ii0 =  53   ;   ii1 =  53        ! Ombai Strait  
     358            ij0 = 124   ;   ij1 = 125   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 2.0   
     359            IF(lwp) WRITE(numout,*) 
     360            IF(lwp) WRITE(numout,*) '             orca_r1: Ombai : ' 
     361 
     362            ii0 =  56   ;   ii1 =  56        ! Timor Passage  
     363            ij0 = 124   ;   ij1 = 125   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 2.0   
     364            IF(lwp) WRITE(numout,*) 
     365            IF(lwp) WRITE(numout,*) '             orca_r1: ' 
     366 
     367            ii0 =  58   ;   ii1 =  58        ! West Halmahera Strait  
     368            ij0 = 141   ;   ij1 = 142   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 3.0   
     369            IF(lwp) WRITE(numout,*) 
     370            IF(lwp) WRITE(numout,*) '             orca_r1: West Halmahera : ' 
     371 
     372            ii0 =  55   ;   ii1 =  55        ! East Halmahera Strait  
     373            ij0 = 141   ;   ij1 = 142   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 3.0   
     374            IF(lwp) WRITE(numout,*) 
     375            IF(lwp) WRITE(numout,*) '             orca_r1: East Halmahera : ' 
     376 
     377            ! 
     378            ! 
     379         ENDIF 
    333380      ! 
    334381      CALL lbc_lnk( fmask, 'F', 1. )      ! Lateral boundary conditions on fmask 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r2379 r2380  
    443443            CALL iom_get ( inum, jpdom_data, 'Bathymetry', bathy ) 
    444444            CALL iom_close (inum) 
     445!                                                            ! ===================== 
     446            IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN    ! ORCA R1 configuration 
     447               ii0 = 142   ;   ii1 = 142                     ! Close Halmera Strait   
     448               ij0 =  51   ;   ij1 =  53                     ! ===================== 
     449               DO ji = mi0(ii0), mi1(ii1) 
     450                  DO jj = mj0(ij0), mj1(ij1) 
     451                     bathy(ji,jj) = 0.0  
     452                  END DO 
     453               END DO 
     454               IF(lwp) WRITE(numout,*) 
     455               IF(lwp) WRITE(numout,*) '             orca_r1: Halmera strait closed at i=',ii0,' j=',ij0,'->',ij1 
     456            ENDIF 
    445457            !                                                ! ===================== 
    446            IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
    447               !                                             ! ===================== 
     458            IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
     459               !                                             ! ===================== 
    448460              IF( n_cla == 0 ) THEN 
    449461                 ! 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90

    r2287 r2380  
    7474         ENDIF 
    7575 
    76          ! Special case for ORCA R2 and R4 configurations (overwrite the value of ahm1 ahm2) 
     76         ! Special case for ORCA R1, R2 and R4 configurations (overwrite the value of ahm1 ahm2) 
    7777         ! ============================================== 
    7878         IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) )   CALL ldf_dyn_c2d_orca( ld_print ) 
     79         IF( cp_cfg == "orca" .AND.   jp_cfg == 1)                       CALL ldf_dyn_c2d_orca_R1( ld_print ) 
    7980 
    8081         ! Control print 
     
    288289 
    289290   END SUBROUTINE ldf_dyn_c2d_orca 
     291 
     292   SUBROUTINE ldf_dyn_c2d_orca_R1( ld_print ) 
     293      !!---------------------------------------------------------------------- 
     294      !!                 ***  ROUTINE ldf_dyn_c2d  *** 
     295      !! 
     296      !!                   **** W A R N I N G **** 
     297      !! 
     298      !!                ORCA R1 configuration 
     299      !!                   
     300      !!                   **** W A R N I N G **** 
     301      !!                   
     302      !! ** Purpose :   initializations of the lateral viscosity for orca R1 
     303      !! 
     304      !! ** Method  :   blah blah blah... 
     305      !! 
     306      !!---------------------------------------------------------------------- 
     307      !! * Modules used 
     308      USE ldftra_oce, ONLY : aht0 
     309 
     310      !! * Arguments 
     311      LOGICAL, INTENT (in) ::   ld_print   ! If true, output arrays on numout 
     312 
     313      !! * Local variables 
     314      INTEGER ::   ji, jj, jn      ! dummy loop indices 
     315      INTEGER ::   inum            ! temporary logical unit 
     316      INTEGER ::   iim, ijm 
     317      INTEGER ::   ifreq, il1, il2, ij, ii 
     318      INTEGER, DIMENSION(jpidta,jpidta) ::   idata 
     319      INTEGER, DIMENSION(jpi   ,jpj   ) ::   icof 
     320 
     321      REAL(wp) ::   zahmeq, zcoft, zcoff, zmsk, zam20s 
     322 
     323      CHARACTER (len=15) ::   clexp 
     324      !!---------------------------------------------------------------------- 
     325 
     326      IF(lwp) WRITE(numout,*) 
     327      IF(lwp) WRITE(numout,*) 'inildf: 2d eddy viscosity coefficient' 
     328      IF(lwp) WRITE(numout,*) '~~~~~~  --' 
     329      IF(lwp) WRITE(numout,*) 
     330      IF(lwp) WRITE(numout,*) '        orca_r1 ocean model' 
     331      IF(lwp) WRITE(numout,*) 
     332 
     333#if defined key_antarctic 
     334#     include "ldfdyn_antarctic.h90" 
     335#elif defined key_arctic 
     336#     include "ldfdyn_arctic.h90" 
     337#else 
     338      ! Read 2d integer array to specify western boundary increase in the 
     339      ! ===================== equatorial strip (20N-20S) defined at t-points 
     340 
     341      CALL ctl_opn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     342         &           1, numout, lwp ) 
     343      REWIND inum 
     344      READ(inum,9101) clexp, iim, ijm 
     345      READ(inum,'(/)') 
     346      ifreq = 40 
     347      il1 = 1 
     348      DO jn = 1, jpidta/ifreq+1 
     349         READ(inum,'(/)') 
     350         il2 = MIN( jpidta, il1+ifreq-1 ) 
     351         READ(inum,9201) ( ii, ji = il1, il2, 5 ) 
     352         READ(inum,'(/)') 
     353         DO jj = jpjdta, 1, -1 
     354            READ(inum,9202) ij, ( idata(ji,jj), ji = il1, il2 ) 
     355         END DO 
     356         il1 = il1 + ifreq 
     357      END DO 
     358       
     359      DO jj = 1, nlcj 
     360         DO ji = 1, nlci 
     361            icof(ji,jj) = idata( mig(ji), mjg(jj) ) 
     362         END DO 
     363      END DO 
     364      DO jj = nlcj+1, jpj 
     365         DO ji = 1, nlci 
     366            icof(ji,jj) = icof(ji,nlcj) 
     367         END DO 
     368      END DO 
     369      DO jj = 1, jpj 
     370         DO ji = nlci+1, jpi 
     371            icof(ji,jj) = icof(nlci,jj) 
     372         END DO 
     373      END DO 
     374 
     375 9101 FORMAT(1x,a15,2i8) 
     376 9201 FORMAT(3x,13(i3,12x)) 
     377 9202 FORMAT(i3,41i3) 
     378 
     379 
     380      ! Set ahm1 and ahm2  ( T- and F- points) (used for laplacian operator) 
     381      ! ================= 
     382      ! define ahm1 and ahm2 at the right grid point position 
     383      ! (USER: modify ahm1 and ahm2 following your desiderata) 
     384       
     385       
     386      ! Decrease ahm to zahmeq m2/s in the tropics 
     387      ! (from 90   to 20   degrees: ahm = scaled by local metrics 
     388      !  from 20   to  2.5 degrees: ahm = decrease in (1-cos)/2 
     389      !  from  2.5 to  0   degrees: ahm = constant 
     390      ! symmetric in the south hemisphere) 
     391 
     392      zahmeq = aht0 
     393      zam20s = ahm0*COS( rad * 20. ) 
     394       
     395      DO jj = 1, jpj 
     396         DO ji = 1, jpi 
     397            IF( ABS( gphif(ji,jj) ) >= 20. ) THEN 
     398!              leave as set in ldf_dyn_c2d 
     399            ELSEIF( ABS( gphif(ji,jj) ) <= 2.5 ) THEN 
     400               ahm2(ji,jj) =  zahmeq 
     401            ELSE 
     402               ahm2(ji,jj) =  zahmeq + (zam20s-zahmeq)/2.   & 
     403                  * ( 1. - COS( rad * ( ABS(gphif(ji,jj))-2.5 ) * 180. / 17.5 ) ) 
     404            ENDIF 
     405            IF( ABS( gphit(ji,jj) ) >= 20. ) THEN 
     406!             leave as set in ldf_dyn_c2d 
     407            ELSEIF( ABS( gphit(ji,jj) ) <= 2.5 ) THEN 
     408               ahm1(ji,jj) =  zahmeq 
     409            ELSE 
     410               ahm1(ji,jj) =  zahmeq + (zam20s-zahmeq)/2.   & 
     411                  * ( 1. - COS( rad * ( ABS(gphit(ji,jj))-2.5 ) * 180. / 17.5 ) ) 
     412            ENDIF 
     413         END DO 
     414      END DO 
     415 
     416      ! increase along western boundaries of equatorial strip 
     417      ! t-point 
     418      DO jj = 1, jpjm1 
     419         DO ji = 1, jpim1 
     420          IF( ABS( gphit(ji,jj) ) < 20. ) THEN 
     421            zcoft = FLOAT( icof(ji,jj) ) / 100. 
     422            ahm1(ji,jj) = zcoft * ahm0 + (1.-zcoft) * ahm1(ji,jj)  
     423          ENDIF 
     424         END DO 
     425      END DO 
     426      ! f-point 
     427      icof(:,:) = icof(:,:) * tmask(:,:,1) 
     428      DO jj = 1, jpjm1 
     429         DO ji = 1, jpim1 
     430          IF( ABS( gphif(ji,jj) ) < 20. ) THEN 
     431            zmsk = tmask(ji,jj+1,1) + tmask(ji+1,jj+1,1) + tmask(ji,jj,1) + tmask(ji,jj+1,1) 
     432            IF( zmsk == 0. ) THEN 
     433               zcoff = 1. 
     434            ELSE 
     435               zcoff = FLOAT( icof(ji,jj+1) + icof(ji+1,jj+1) + icof(ji,jj) + icof(ji,jj+1) )   & 
     436                     / (zmsk * 100.) 
     437            ENDIF 
     438            ahm2(ji,jj) = zcoff * ahm0 + (1.-zcoff) * ahm2(ji,jj) 
     439          ENDIF 
     440         END DO 
     441      END DO 
     442#endif 
     443       
     444      ! Lateral boundary conditions on ( ahm1, ahm2 ) 
     445      !                                ============== 
     446      CALL lbc_lnk( ahm1, 'T', 1. )   ! T-point, unchanged sign 
     447      CALL lbc_lnk( ahm2, 'F', 1. )   ! F-point, unchanged sign 
     448 
     449      ! Control print 
     450      IF( lwp .AND. ld_print ) THEN 
     451         WRITE(numout,*) 
     452         WRITE(numout,*) 'inildf: 2D ahm1 array' 
     453         CALL prihre(ahm1,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     454         WRITE(numout,*) 
     455         WRITE(numout,*) 'inildf: 2D ahm2 array' 
     456         CALL prihre(ahm2,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     457      ENDIF 
     458 
     459   END SUBROUTINE ldf_dyn_c2d_orca_R1 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_oce.F90

    r2287 r2380  
    6161   !!--------------------------------------------------------------------- 
    6262#             include "par_ORCA_R2.h90" 
     63#elif defined key_orca_r1 
     64   !!--------------------------------------------------------------------- 
     65   !!   'key_orca_r1'   :                           global ocean : ORCA R1 
     66   !!--------------------------------------------------------------------- 
     67#             include "par_ORCA_R1.h90" 
    6368#elif defined key_orca_r05 
    6469   !!--------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.