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

Changeset 689 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2007-06-29T19:29:57+02:00 (17 years ago)
Author:
rblod
Message:

nemo_v2_bugfix_058:CT: make a better decomposition domain print in ocean.output file (i.e. from North to South)
nemo_v2_bugfix_059:CT: use lwp (instead hard-coded value .TRUE. ) as argument of ctlopn subroutine for clean outputs

Location:
trunk/NEMO/OPA_SRC
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DIA/diafwb.F90

    r648 r689  
    4444   !!---------------------------------------------------------------------- 
    4545   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    46    !! $Header$  
     46   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/DIA/diafwb.F90,v 1.11 2007/06/29 17:01:51 opalod Exp $  
    4747   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    4848   !!---------------------------------------------------------------------- 
     
    391391         clname = 'STRAIT.dat' 
    392392         CALL ctlopn( inum, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    393             &         1, numout, .TRUE., 1 ) 
     393            &         1, numout, lwp, 1 ) 
    394394         WRITE(inum,*) 
    395395         WRITE(inum,*)    'Net freshwater budget ' 
  • trunk/NEMO/OPA_SRC/FLO/flodom.F90

    r623 r689  
    2929   !!---------------------------------------------------------------------- 
    3030   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    31    !! $Header$  
     31   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/FLO/flodom.F90,v 1.7 2007/06/29 17:01:51 opalod Exp $  
    3232   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    3333   !!---------------------------------------------------------------------- 
     
    7070         clname='restart_float' 
    7171         CALL ctlopn( inum, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   & 
    72             &         1, numout, .TRUE., 1 ) 
     72            &         1, numout, lwp, 1 ) 
    7373         REWIND inum 
    7474 
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90

    r623 r689  
    88   !!---------------------------------------------------------------------- 
    99   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    10    !! $Header$  
     10   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90,v 1.6 2007/06/29 17:01:51 opalod Exp $  
    1111   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    1212   !!---------------------------------------------------------------------- 
     
    166166 
    167167      CALL ctlopn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    168          &           1, numout, .TRUE., 1 ) 
     168         &           1, numout, lwp, 1 ) 
    169169      REWIND inum 
    170170      READ(inum,9101) clexp, iim, ijm 
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90

    r623 r689  
    11   !!---------------------------------------------------------------------- 
    2    !!                        ***  ldfdyn_c3d.h90  *** 
    3    !!---------------------------------------------------------------------- 
    4  
    5    !!---------------------------------------------------------------------- 
    6    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    7    !! $Header$  
     2   !!                      ***  ldfdyn_c2d.h90  *** 
     3   !!---------------------------------------------------------------------- 
     4   !!   ldf_dyn_c2d  : set the lateral viscosity coefficients 
     5   !!   ldf_dyn_c2d_orca : specific case for orca r2 and r4 
     6   !!---------------------------------------------------------------------- 
     7 
     8   !!---------------------------------------------------------------------- 
     9   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     10   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90,v 1.9 2007/06/29 17:01:51 opalod Exp $  
    811   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    912   !!---------------------------------------------------------------------- 
    1013 
    11    !!---------------------------------------------------------------------- 
    12    !!   'key_dynldf_c3d'             3D lateral eddy viscosity coefficients 
    13    !!---------------------------------------------------------------------- 
    14  
    15    SUBROUTINE ldf_dyn_c3d( ld_print ) 
    16       !!---------------------------------------------------------------------- 
    17       !!                  ***  ROUTINE ldf_dyn_c3d  *** 
    18       !!                    
     14   SUBROUTINE ldf_dyn_c2d( ld_print ) 
     15      !!---------------------------------------------------------------------- 
     16      !!                 ***  ROUTINE ldf_dyn_c2d  *** 
     17      !!                   
    1918      !! ** Purpose :   initializations of the horizontal ocean physics 
    2019      !! 
    21       !! ** Method  :   3D eddy viscosity coef. ( longitude, latitude, depth ) 
    22       !!       laplacian operator   : ahm1, ahm2 defined at T- and F-points 
    23       !!                              ahm2, ahm4 never used 
    24       !!       bilaplacian operator : ahm1, ahm2 never used 
    25       !!                           :  ahm3, ahm4 defined at U- and V-points 
    26       !!       ??? explanation of the default is missing 
    27       !!---------------------------------------------------------------------- 
    28       !! * Modules used 
    29       USE ldftra_oce, ONLY : aht0 
    30  
     20      !! ** Method : 
     21      !!      2D eddy viscosity coefficients ( longitude, latitude ) 
     22      !! 
     23      !!       harmonic operator   : ahm1 is defined at t-point 
     24      !!                             ahm2 is defined at f-point 
     25      !!           + isopycnal     : ahm3 is defined at u-point 
     26      !!           or geopotential   ahm4 is defined at v-point 
     27      !!           iso-model level : ahm3, ahm4 not used 
     28      !! 
     29      !!       biharmonic operator : ahm1 is defined at u-point 
     30      !!                             ahm2 is defined at v-point 
     31      !!                           : ahm3, ahm4 not used 
     32      !! 
     33      !!---------------------------------------------------------------------- 
    3134      !! * Arguments 
    3235      LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout 
    3336 
    34       !! * local variables 
    35       INTEGER  ::   ji, jj, jk      ! dummy loop indices 
    36       REAL(wp) ::   & 
    37          zr = 0.2 ,   &  ! maximum of the reduction factor at the bottom ocean 
    38          !               ! ( 0 < zr < 1 ) 
    39          zh = 500.,   &  ! depth of at which start the reduction ( > dept(1) ) 
    40          zdx_max  ,   &  ! maximum grid spacing over the global domain 
    41          za00, zc, zd    ! temporary scalars 
    42       REAL(wp), DIMENSION(jpk) ::   zcoef   ! temporary workspace 
    43       !!---------------------------------------------------------------------- 
    44  
    45       IF(lwp) WRITE(numout,*) 
    46       IF(lwp) WRITE(numout,*) 'ldf_dyn_c3d : 3D lateral eddy viscosity coefficient' 
     37      !! * Local variables 
     38      REAL(wp) ::   za00, zdx_max 
     39      !!---------------------------------------------------------------------- 
     40 
     41      IF(lwp) WRITE(numout,*) 
     42      IF(lwp) WRITE(numout,*) 'ldf_dyn_c2d : 2d lateral eddy viscosity coefficient' 
    4743      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    48  
    49        
    50       ! Set ahm1 and ahm2 ( T- and F- points) (used for laplacian operators 
    51       ! =================                       whatever its orientation is) 
     44      IF(lwp) WRITE(numout,*) 
     45 
     46      ! harmonic operator (ahm1, ahm2) : ( T- and F- points) (used for laplacian operators 
     47      ! ===============================                       whatever its orientation is) 
    5248      IF( ln_dynldf_lap ) THEN 
    5349         ! define ahm1 and ahm2 at the right grid point position 
     
    6157         IF(lwp) WRITE(numout,*) '              maximum grid-spacing = ', zdx_max, ' maximum value for ahm = ', ahm0 
    6258 
    63  
    6459         za00 = ahm0 / zdx_max 
     60         ahm1(:,:) = za00 * e1t(:,:) 
     61         ahm2(:,:) = za00 * e1f(:,:) 
    6562 
    6663         IF( ln_dynldf_iso ) THEN 
     
    7168         ENDIF 
    7269 
    73          CALL ldf_zpf( .TRUE. , 1000., 500., 0.25, fsdept(:,:,:), ahm1 )   ! vertical profile 
    74          CALL ldf_zpf( .TRUE. , 1000., 500., 0.25, fsdept(:,:,:), ahm2 )   ! vertical profile 
    75          DO jk = 1,jpk 
    76             ahm1(:,:,jk) = za00 * e1t(:,:) * ahm1(:,:,jk) 
    77             ahm2(:,:,jk) = za00 * e1f(:,:) * ahm2(:,:,jk) 
    78          END DO 
    79  
    80  
    8170         ! Special case for ORCA R2 and R4 configurations (overwrite the value of ahm1 ahm2) 
    8271         ! ============================================== 
    83          IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) ) THEN 
    84             IF(lwp) WRITE(numout,*) 
    85             IF(lwp) WRITE(numout,*) '              ORCA R2 or R4: overwrite the previous definition of ahm' 
    86             IF(lwp) WRITE(numout,*) '              =============' 
    87             CALL ldf_dyn_c3d_orca( ld_print ) 
     72         IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) )   CALL ldf_dyn_c2d_orca( ld_print ) 
     73 
     74         ! Control print 
     75         IF( lwp .AND. ld_print ) THEN 
     76            WRITE(numout,*) 
     77            WRITE(numout,*) 'inildf: 2D ahm1 array' 
     78            CALL prihre(ahm1,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     79            WRITE(numout,*) 
     80            WRITE(numout,*) 'inildf: 2D ahm2 array' 
     81            CALL prihre(ahm2,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    8882         ENDIF 
    89  
    9083      ENDIF 
    91        
    92       ! Control print 
    93       IF(lwp .AND. ld_print ) THEN 
    94          WRITE(numout,*) 
    95          WRITE(numout,*) '         3D ahm1 array (k=1)' 
    96          CALL prihre( ahm1(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 
    97          WRITE(numout,*) 
    98          WRITE(numout,*) '         3D ahm2 array (k=1)' 
    99          CALL prihre( ahm2(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 
    100       ENDIF 
    101  
    102  
    103       ! ahm3 and ahm4 at U- and V-points (used for bilaplacian operator 
    104       ! ================================  whatever its orientation is) 
    105       ! (USER: modify ahm3 and ahm4 following your desiderata) 
    106       ! Here: ahm is proportional to the cube of the maximum of the gridspacing 
    107       !       in the to horizontal direction 
    108  
     84 
     85      ! biharmonic operator (ahm3, ahm4) : at U- and V-points (used for bilaplacian operator 
     86      ! =================================                      whatever its orientation is) 
    10987      IF( ln_dynldf_bilap ) THEN 
     88         ! (USER: modify ahm3 and ahm4 following your desiderata) 
     89         ! Here: ahm is proportional to the cube of the maximum of the gridspacing 
     90         !       in the to horizontal direction 
    11091 
    11192         zdx_max = MAXVAL( e1u(:,:) ) 
     
    11798 
    11899         za00 = ahm0 / ( zdx_max * zdx_max * zdx_max ) 
    119          ahm3(:,:,1) = za00 * e1u(:,:) * e1u(:,:) * e1u(:,:) 
    120          ahm4(:,:,1) = za00 * e1v(:,:) * e1v(:,:) * e1v(:,:) 
    121  
    122          zh = MAX( zh, fsdept(1,1,1) )   ! at least the first reach ahm0 
    123          IF( ln_zco ) THEN               ! z-coordinate, same profile everywhere 
    124             IF(lwp) WRITE(numout,'(36x," ahm ", 7x)') 
    125             DO jk = 1, jpk 
    126                IF( fsdept(1,1,jk) <= zh ) THEN 
    127                   zcoef(jk) = 1.e0 
    128                ELSE 
    129                   zcoef(jk) = 1.e0 + ( zr - 1.e0 )   & 
    130                      &               * (  1. - EXP( ( fsdept(1,1,jk   ) - zh ) / zh )  )   & 
    131                      &               / (  1. - EXP( ( fsdept(1,1,jpkm1) - zh ) / zh )  ) 
    132                ENDIF 
    133                ahm3(:,:,jk) = ahm3(:,:,1) * zcoef(jk) 
    134                ahm4(:,:,jk) = ahm4(:,:,1) * zcoef(jk) 
    135                IF(lwp) WRITE(numout,'(34x,E7.2,8x,i3)') zcoef(jk) * ahm0, jk 
    136             END DO 
    137          ELSE                            ! partial steps or s-ccordinate 
    138 # if defined key_zco 
    139             zc = gdept_0(jpkm1) 
    140 # else 
    141             zc = MAXVAL( fsdept(:,:,jpkm1) ) 
    142 # endif 
    143             IF( lk_mpp )   CALL mpp_max( zc )   ! max over the global domain 
    144  
    145             zc = 1. / (  1. - EXP( ( zc - zh ) / zh )  ) 
    146             DO jk = 2, jpkm1 
    147                DO jj = 1, jpj 
    148                   DO ji = 1, jpi 
    149                      IF( fsdept(ji,jj,jk) <= zh ) THEN 
    150                         ahm3(ji,jj,jk) = ahm3(ji,jj,1) 
    151                         ahm4(ji,jj,jk) = ahm4(ji,jj,1) 
    152                      ELSE 
    153                         zd = 1.e0 + ( zr - 1.e0 ) * (  1. - EXP( ( fsdept(ji,jj,jk) - zh ) / zh )  ) * zc 
    154                         ahm3(ji,jj,jk) = ahm3(ji,jj,1) * zd 
    155                         ahm4(ji,jj,jk) = ahm4(ji,jj,1) * zd 
    156                      ENDIF 
    157                   END DO 
    158                END DO 
    159             END DO 
    160             ahm3(:,:,jpk) = ahm3(:,:,jpkm1) 
    161             ahm4(:,:,jpk) = ahm4(:,:,jpkm1) 
    162             IF(lwp) WRITE(numout,'(36x," ahm ", 7x)') 
    163             DO jk = 1, jpk 
    164                IF(lwp) WRITE(numout,'(30x,E10.2,8x,i3)') ahm3(1,1,jk), jk 
    165             END DO 
    166          ENDIF 
     100         ahm3(:,:) = za00 * e1u(:,:) * e1u(:,:) * e1u(:,:) 
     101         ahm4(:,:) = za00 * e1v(:,:) * e1v(:,:) * e1v(:,:) 
    167102 
    168103         ! Control print 
    169104         IF( lwp .AND. ld_print ) THEN 
    170105            WRITE(numout,*) 
    171             WRITE(numout,*) 'inildf: ahm3 array at level 1' 
    172             CALL prihre(ahm3(:,:,1  ),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    173             WRITE(numout,*) 
    174             WRITE(numout,*) 'inildf: ahm4 array at level 1' 
    175             CALL prihre(ahm4(:,:,jpk),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     106            WRITE(numout,*) 'inildf: ahm3 array' 
     107            CALL prihre(ahm3,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     108            WRITE(numout,*) 
     109            WRITE(numout,*) 'inildf: ahm4 array' 
     110            CALL prihre(ahm4,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    176111         ENDIF 
    177112      ENDIF 
    178113 
    179    END SUBROUTINE ldf_dyn_c3d 
    180  
    181  
    182    SUBROUTINE ldf_dyn_c3d_orca( ld_print ) 
    183       !!---------------------------------------------------------------------- 
    184       !!                  ***  ROUTINE ldf_dyn_c3d  *** 
    185       !!                    
    186       !! ** Purpose :   ORCA R2 an R4 only 
    187       !! 
    188       !! ** Method  :   blah blah blah .... 
     114 
     115   END SUBROUTINE ldf_dyn_c2d 
     116 
     117 
     118   SUBROUTINE ldf_dyn_c2d_orca( ld_print ) 
     119      !!---------------------------------------------------------------------- 
     120      !!                 ***  ROUTINE ldf_dyn_c2d  *** 
     121      !! 
     122      !!                   **** W A R N I N G **** 
     123      !! 
     124      !!                ORCA R2 and R4 configurations 
     125      !!                   
     126      !!                   **** W A R N I N G **** 
     127      !!                   
     128      !! ** Purpose :   initializations of the lateral viscosity for orca R2 
     129      !! 
     130      !! ** Method  :   blah blah blah... 
     131      !! 
    189132      !!---------------------------------------------------------------------- 
    190133      !! * Modules used 
     
    192135 
    193136      !! * Arguments 
    194       LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout 
    195  
    196       !! * local variables 
    197       INTEGER ::   ji, jj, jk, jn      ! dummy loop indices 
    198       INTEGER ::   ii0, ii1, ij0, ij1  ! temporary integers 
    199       INTEGER ::   inum                ! temporary logical unit 
     137      LOGICAL, INTENT (in) ::   ld_print   ! If true, output arrays on numout 
     138 
     139      !! * Local variables 
     140      INTEGER ::   ji, jj, jn      ! dummy loop indices 
     141      INTEGER ::   inum            ! temporary logical unit 
    200142      INTEGER ::   iim, ijm 
    201143      INTEGER ::   ifreq, il1, il2, ij, ii 
    202       INTEGER, DIMENSION(jpidta, jpjdta) ::   idata 
    203       INTEGER, DIMENSION(jpi   , jpj   ) ::   icof 
    204  
    205       REAL(wp) ::   & 
    206          zahmeq, zcoff, zcoft, zmsk,   & ! ??? 
    207          zemax, zemin, zeref, zahmm 
    208       REAL(wp), DIMENSION(jpi,jpj) ::   zahm0 
    209       REAL(wp), DIMENSION(jpk) ::   zcoef 
     144      INTEGER, DIMENSION(jpidta,jpidta) ::   idata 
     145      INTEGER, DIMENSION(jpi   ,jpj   ) ::   icof 
     146 
     147      REAL(wp) ::   zahmeq, zcoft, zcoff, zmsk 
    210148 
    211149      CHARACTER (len=15) ::   clexp 
     
    213151 
    214152      IF(lwp) WRITE(numout,*) 
    215       IF(lwp) WRITE(numout,*) 'ldfdyn_c3d_orca : 3D eddy viscosity coefficient' 
    216       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    217       IF(lwp) WRITE(numout,*) 
    218       IF(lwp) WRITE(numout,*) '        orca R2 or R4 ocean model' 
    219       IF(lwp) WRITE(numout,*) '  reduced in the surface Eq. strip ' 
    220       IF(lwp) WRITE(numout,*) 
    221  
     153      IF(lwp) WRITE(numout,*) 'inildf: 2d eddy viscosity coefficient' 
     154      IF(lwp) WRITE(numout,*) '~~~~~~  --' 
     155      IF(lwp) WRITE(numout,*) 
     156      IF(lwp) WRITE(numout,*) '        orca ocean model' 
     157      IF(lwp) WRITE(numout,*) 
     158 
     159#if defined key_antarctic 
     160#     include "ldfdyn_antarctic.h90" 
     161#elif defined key_arctic 
     162#     include "ldfdyn_arctic.h90" 
     163#else 
    222164      ! Read 2d integer array to specify western boundary increase in the 
    223165      ! ===================== equatorial strip (20N-20S) defined at t-points 
    224166 
    225167      CALL ctlopn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    226          &         1, numout, .TRUE., 1 ) 
     168         &           1, numout, lwp, 1 ) 
    227169      REWIND inum 
    228170      READ(inum,9101) clexp, iim, ijm 
     
    256198         END DO 
    257199      END DO 
    258        
    259 9101  FORMAT(1x,a15,2i8) 
    260 9201  FORMAT(3x,13(i3,12x)) 
    261 9202  FORMAT(i3,41i3) 
    262        
    263       ! Set ahm1 and ahm2 
     200 
     201 9101 FORMAT(1x,a15,2i8) 
     202 9201 FORMAT(3x,13(i3,12x)) 
     203 9202 FORMAT(i3,41i3) 
     204 
     205 
     206      ! Set ahm1 and ahm2  ( T- and F- points) (used for laplacian operator) 
    264207      ! ================= 
    265        
    266208      ! define ahm1 and ahm2 at the right grid point position 
    267209      ! (USER: modify ahm1 and ahm2 following your desiderata) 
    268       ! biharmonic : ahm1 (ahm2) defined at u- (v-) point 
    269       ! harmonic   : ahm1 (ahm2) defined at t- (f-) point 
    270        
    271       ! first level : as for 2D coefficients 
     210       
    272211       
    273212      ! Decrease ahm to zahmeq m2/s in the tropics 
     
    276215      ! from  2.5 to  0 degre: ahm = constant 
    277216      ! symmetric in the south hemisphere) 
    278        
    279       IF( jp_cfg == 4 )   THEN 
    280          zahmeq = 5.0 * aht0 
    281          zahmm  = min( 160000.0, ahm0) 
    282          zemax = MAXVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 
    283          zemin = MINVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 
    284          zeref = MAXVAL ( e1t(:,:) * e2t(:,:),   & 
    285              &   tmask(:,:,1) .GE. 0.5 .AND. ABS(gphit(:,:)) .GT. 50. ) 
    286   
    287          DO jj = 1, jpj 
    288            DO ji = 1, jpi 
    289               zmsk = e1t(ji,jj) * e2t(ji,jj) 
    290               IF( abs(gphit(ji,jj)) .LE. 15 ) THEN  
    291                  zahm0(ji,jj) = ahm0 
    292               ELSE  
    293                  IF( zmsk .GE. zeref ) THEN  
    294                     zahm0(ji,jj) = ahm0 
    295                  ELSE  
    296                     zahm0(ji,jj) = zahmm + (ahm0-zahmm)*(1.0 -   & 
    297                         &          cos((rpi*0.5*(zmsk-zemin)/(zeref-zemin)))) 
    298                  ENDIF  
    299               ENDIF  
    300            END DO  
    301          END DO  
    302       ENDIF 
    303  
    304       IF( jp_cfg == 2 )   THEN 
    305          zahmeq     = aht0 
    306          zahmm      = ahm0 
    307          zahm0(:,:) = ahm0 
    308       ENDIF 
    309  
     217 
     218      zahmeq = aht0 
     219       
    310220      DO jj = 1, jpj 
    311221         DO ji = 1, jpi 
    312             IF( ABS(gphif(ji,jj)) >= 20.) THEN 
    313                ahm2(ji,jj,1) =  zahm0(ji,jj) 
    314             ELSEIF( ABS(gphif(ji,jj)) <= 2.5) THEN 
    315                ahm2(ji,jj,1) =  zahmeq 
     222            IF( ABS( gphif(ji,jj) ) >= 20. ) THEN 
     223               ahm2(ji,jj) =  ahm0 
     224            ELSEIF( ABS( gphif(ji,jj) ) <= 2.5 ) THEN 
     225               ahm2(ji,jj) =  zahmeq 
    316226            ELSE 
    317                ahm2(ji,jj,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2.   & 
    318                   &            *(1.-COS( rad*(ABS(gphif(ji,jj))-2.5)*180./17.5 ) ) 
     227               ahm2(ji,jj) = zahmeq + (ahm0-zahmeq)/2.   & 
     228                  * ( 1. - COS( rad * ( ABS(gphif(ji,jj))-2.5 ) * 180. / 17.5 ) ) 
    319229            ENDIF 
    320             IF( ABS(gphit(ji,jj)) >= 20.) THEN 
    321                ahm1(ji,jj,1) =  zahm0(ji,jj) 
    322             ELSEIF( ABS(gphit(ji,jj)) <= 2.5) THEN 
    323                ahm1(ji,jj,1) =  zahmeq 
     230            IF( ABS( gphit(ji,jj) ) >= 20. ) THEN 
     231               ahm1(ji,jj) =  ahm0 
     232            ELSEIF( ABS( gphit(ji,jj) ) <= 2.5 ) THEN 
     233               ahm1(ji,jj) =  zahmeq 
    324234            ELSE 
    325                ahm1(ji,jj,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2.   & 
    326                   &            *(1.-COS( rad*(ABS(gphit(ji,jj))-2.5)*180./17.5 ) ) 
     235               ahm1(ji,jj) = zahmeq + (ahm0-zahmeq)/2.   & 
     236                  * ( 1. - COS( rad * ( ABS(gphit(ji,jj))-2.5 ) * 180. / 17.5 ) ) 
    327237            ENDIF 
    328238         END DO 
    329239      END DO 
    330        
     240 
    331241      ! increase along western boundaries of equatorial strip 
    332242      ! t-point 
    333243      DO jj = 1, jpjm1 
    334244         DO ji = 1, jpim1 
    335             zcoft = float( icof(ji,jj) ) / 100. 
    336             ahm1(ji,jj,1) = zcoft * zahm0(ji,jj) + (1.-zcoft) * ahm1(ji,jj,1) 
     245            zcoft = FLOAT( icof(ji,jj) ) / 100. 
     246            ahm1(ji,jj) = zcoft * ahm0 + (1.-zcoft) * ahm1(ji,jj)  
    337247         END DO 
    338248      END DO 
     
    348258                     / (zmsk * 100.) 
    349259            ENDIF 
    350             ahm2(ji,jj,1) = zcoff * zahm0(ji,jj) + (1.-zcoff) * ahm2(ji,jj,1) 
    351          END DO 
    352       END DO 
    353  
    354       ! other level: re-increase the coef in the deep ocean 
    355        
    356 #if defined key_orca_lev10 
    357       DO jk = 1, 210 
    358          zcoef(jk) = 1. 
    359       END DO 
    360       DO jk= 211, 230 
    361          zcoef(jk) = 1. + 0.1 * FLOAT(jk-210) 
    362       END DO 
    363       DO jk= 231, 260 
    364          zcoef(jk) = 3. + 0.2 * FLOAT(jk-230) 
    365       END DO 
    366       DO jk= 261, 270 
    367          zcoef(jk) = 9. + 0.1 * FLOAT(jk-260) 
    368       END DO 
    369       DO jk= 271, jpk 
    370          zcoef(jk) = 10. 
    371       END DO 
    372       DO jk= 1, jpk 
    373          IF(lwp) WRITE(numout,*) 'k= ',jk, 'cof ', zcoef(jk) 
    374       END DO 
    375 #else 
    376        DO jk = 1, 21 
    377          zcoef(jk) = 1. 
    378       END DO 
    379       zcoef(22) = 2. 
    380       zcoef(23) = 3. 
    381       zcoef(24) = 5. 
    382       zcoef(25) = 7. 
    383       zcoef(26) = 9. 
    384       DO jk = 27, jpk 
    385          zcoef(jk) = 10. 
     260            ahm2(ji,jj) = zcoff * ahm0 + (1.-zcoff) * ahm2(ji,jj) 
     261         END DO 
    386262      END DO 
    387263#endif 
    388  
    389       DO jk = 2, jpk 
    390          ahm1(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm1(:,:,1) ) 
    391          ahm2(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm2(:,:,1) ) 
    392       END DO 
    393  
    394       IF( jp_cfg == 4 )   THEN 
    395          ! Limit AHM in Gibraltar strait 
    396          ij0 = 50   ;   ij1 = 53 
    397          ii0 = 69   ;   ii1 = 71 
    398          DO jk = 1, jpk 
    399             ahm1(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm1 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) )  
    400             ahm2(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm2 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) ) 
    401          END DO 
    402       ENDIF 
    403264       
    404265      ! Lateral boundary conditions on ( ahm1, ahm2 ) 
     
    408269 
    409270      ! Control print 
    410  
    411       IF(lwp) THEN 
    412          WRITE(numout,*) 
    413          WRITE(numout,*) '         3D ahm1 array (k=1)' 
    414          CALL prihre( ahm1(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 
    415          WRITE(numout,*) 
    416          WRITE(numout,*) '         3D ahm2 array (k=1)' 
    417          CALL prihre( ahm2(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 
    418          WRITE(numout,*) 
    419          WRITE(numout,*) '         3D ahm2 array (k=jpk)' 
    420          CALL prihre( ahm2(:,:,jpk), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 
    421       ENDIF 
    422  
    423  
    424       ! Set ahm3 and ahm4 
    425       ! ================= 
    426  
    427       ! define ahm3 and ahm4 at the right grid point position 
    428       ! initialization to a constant value 
    429       !     (USER: modify ahm3 and ahm4 following your desiderata) 
    430       !     harmonic isopycnal or geopotential: 
    431       !                          ahm3 (ahm4) defined at u- (v-) point 
    432       DO jk = 1, jpk 
    433          DO jj = 2, jpj 
    434             DO ji = 2, jpi 
    435                ahm3(ji,jj,jk) = 0.5 * ( ahm2(ji,jj,jk) + ahm2(ji  ,jj-1,jk) ) 
    436                ahm4(ji,jj,jk) = 0.5 * ( ahm2(ji,jj,jk) + ahm2(ji-1,jj  ,jk) ) 
    437             END DO 
    438          END DO 
    439       END DO 
    440       ahm3 ( :, 1, :) = ahm3 ( :, 2, :) 
    441       ahm4 ( :, 1, :) = ahm4 ( :, 2, :) 
    442        
    443       ! Lateral boundary conditions on ( ahm3, ahm4 ) 
    444       !                                ============== 
    445       CALL lbc_lnk( ahm3, 'U', 1. )   ! U-point, unchanged sign 
    446       CALL lbc_lnk( ahm4, 'V', 1. )   ! V-point, unchanged sign 
    447  
    448       ! Control print 
    449  
    450271      IF( lwp .AND. ld_print ) THEN 
    451272         WRITE(numout,*) 
    452          WRITE(numout,*) '         ahm3 array level 1' 
    453          CALL prihre(ahm3(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     273         WRITE(numout,*) 'inildf: 2D ahm1 array' 
     274         CALL prihre(ahm1,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    454275         WRITE(numout,*) 
    455          WRITE(numout,*) '         ahm4 array level 1' 
    456          CALL prihre(ahm4(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     276         WRITE(numout,*) 'inildf: 2D ahm2 array' 
     277         CALL prihre(ahm2,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    457278      ENDIF 
    458279 
    459    END SUBROUTINE ldf_dyn_c3d_orca 
     280   END SUBROUTINE ldf_dyn_c2d_orca 
  • trunk/NEMO/OPA_SRC/OBC/obcdta.F90

    r623 r689  
    5252   !!--------------------------------------------------------------------------------- 
    5353   !!   OPA 9.0 , LODYC-IPSL  (2003) 
    54    !! $Header$ 
     54   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/OBC/obcdta.F90,v 1.14 2007/06/29 17:01:51 opalod Exp $ 
    5555   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    5656   !!--------------------------------------------------------------------------------- 
     
    674674         IF( kt == nit000 .OR. kt <= kbsfstart )   THEN 
    675675            CALL ctlopn( inum, 'obceastbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    676                &         1, numout, .TRUE., 1 ) 
     676               &         1, numout, lwp, 1 ) 
    677677            READ(inum,*) 
    678678            READ(inum,*) 
     
    693693         IF( kt == nit000 .OR. kt <= kbsfstart ) then 
    694694            CALL ctlopn( inum, 'obcwestbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    695                &         1, numout, .TRUE., 1 ) 
     695               &         1, numout, lwp, 1 ) 
    696696            READ(inum,*) 
    697697            READ(inum,*) 
     
    712712         IF( kt == nit000 .OR. kt <= kbsfstart )   THEN 
    713713            CALL ctlopn( inum, 'obcsouthbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    714                &         1, numout, .TRUE., 1 ) 
     714               &         1, numout, lwp, 1 ) 
    715715            READ(inum,*) 
    716716            READ(inum,*) 
     
    730730         IF( kt == nit000 .OR. kt <= kbsfstart )   THEN 
    731731            CALL ctlopn( inum, 'obcnorthbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    732                &         1, numout, .TRUE., 1 ) 
     732               &         1, numout, lwp, 1 ) 
    733733            READ(inum,*) 
    734734            READ(inum,*) 
  • trunk/NEMO/OPA_SRC/OBC/obcrst.F90

    r623 r689  
    2626   !!--------------------------------------------------------------------------------- 
    2727   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    28    !! $Header$  
     28   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/OBC/obcrst.F90,v 1.8 2007/06/29 17:01:51 opalod Exp $  
    2929   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    3030   !!--------------------------------------------------------------------------------- 
     
    9898 
    9999         CALL ctlopn( inum, 'restart.obc.output', 'UNKNOWN', 'UNFORMATTED', 'DIRECT',   & 
    100             &         nreclo, numout, .TRUE., 1 ) 
     100            &         nreclo, numout, lwp, 1 ) 
    101101  
    102102         ! 1.2 Write header 
     
    349349      ! --------------- 
    350350      CALL ctlopn( inum, 'restart.obc.output', 'UNKNOWN', 'UNFORMATTED', 'DIRECT',   & 
    351          &         nreclo, numout, .TRUE., 1 ) 
     351         &         nreclo, numout, lwp, 1 ) 
    352352 
    353353      ! 1. Read 
  • trunk/NEMO/OPA_SRC/mppini_2.h90

    r680 r689  
    7575      !!---------------------------------------------------------------------- 
    7676      !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    77       !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/mppini_2.h90,v 1.16 2007/06/05 10:27:49 opalod Exp $  
     77      !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/mppini_2.h90,v 1.17 2007/06/29 17:00:01 opalod Exp $  
    7878      !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    7979      !!---------------------------------------------------------------------- 
     
    323323            il2 = MIN(jpni,il1+ifreq-1) 
    324324            WRITE(numout,*) 
    325             WRITE(numout,9401) (ji,ji=il1,il2) 
    326325            WRITE(numout,9400) ('***',ji=il1,il2-1) 
    327             DO jj = 1, jpnj 
    328                ! WRITE(numout,9400) 
     326            DO jj = jpnj, 1, -1 
    329327               WRITE(numout,9403) ('   ',ji=il1,il2-1) 
    330328               WRITE(numout,9402) jj, (ilci(ji,jj),ilcj(ji,jj),ji=il1,il2) 
     
    332330               WRITE(numout,9403) ('   ',ji=il1,il2-1) 
    333331               WRITE(numout,9400) ('***',ji=il1,il2-1) 
    334                ! WRITE(numout,9400) 
    335332            END DO 
     333            WRITE(numout,9401) (ji,ji=il1,il2) 
    336334            il1 = il1+ifreq 
    337335         END DO 
Note: See TracChangeset for help on using the changeset viewer.