Changeset 1605


Ignore:
Timestamp:
2009-08-11T14:33:40+02:00 (12 years ago)
Author:
ctlod
Message:

Doctor naming of OPA namelist variables, see ticket: #526

Location:
trunk/NEMO/NST_SRC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/NST_SRC/agrif_oce.F90

    r1152 r1605  
    11MODULE agrif_oce 
     2   !!====================================================================== 
     3   !!                       ***  MODULE agrif_oce  *** 
     4   !! AGRIF :   define in memory AGRIF variables 
    25   !!---------------------------------------------------------------------- 
    3    !!                       ***  MODULE agrif_oce  *** 
    4    !! 
    5    !! ** Purpose :   Define in memory agrif variables 
     6   !! History :  2.0  ! 2007-12  (R. Benshila)  Original code 
    67   !!---------------------------------------------------------------------- 
    7    !! History : 
    8    !!   9.0  !  07-12  (R. Benshila)  initial version 
     8#if defined key_agrif 
    99   !!---------------------------------------------------------------------- 
    10    !!  OPA 9.0 , LOCEAN-IPSL (2006) 
    11    !! $Id$ 
    12    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     10   !!   'key_agrif'                                              AGRIF zoom 
    1311   !!---------------------------------------------------------------------- 
    14    !! * Modules used 
    1512   USE par_oce      ! ocean parameters 
    1613   USE dom_oce      ! domain parameters 
     
    1916   PUBLIC  
    2017 
    21 #if defined key_agrif 
     18   !                                              !!* Namelist namagrif: AGRIF parameters 
     19   LOGICAL , PUBLIC ::   ln_spc_dyn    = .FALSE.   !: 
     20   INTEGER , PUBLIC ::   nn_cln_update = 3         !: update frequency  
     21   REAL(wp), PUBLIC ::   rn_sponge_tra = rdt       !: sponge coeff. for tracers 
     22   REAL(wp), PUBLIC ::   rn_sponge_dyn = rdt       !: sponge coeff. for dynamics 
    2223 
    23    !! Namelist parameters (namagrif) 
    24    !! ------------------------------ 
    25    LOGICAL, PUBLIC :: ln_spc_dyn  = .FALSE. 
    26    INTEGER, PUBLIC :: nbclineupdate = 3  !: update frequency  
    27    REAL(wp), PUBLIC :: visc_tra = rdt  !: sponge coeff. for tracers 
    28    REAL(wp), PUBLIC :: visc_dyn = rdt  !: sponge coeff. for dynamics 
     24   !                                              !!! OLD namelist names 
     25   INTEGER , PUBLIC ::   nbclineupdate             !: update frequency  
     26   REAL(wp), PUBLIC ::   visc_tra                  !: sponge coeff. for tracers 
     27   REAL(wp), PUBLIC ::   visc_dyn                  !: sponge coeff. for dynamics 
    2928 
    30    !! Use for sponge computation 
    31    !! -------------------------- 
    32    LOGICAL, PUBLIC :: spongedoneT = .FALSE.   
    33    LOGICAL, PUBLIC :: spongedoneU = .FALSE. 
    34    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &   
    35       spe1ur, spe2vr ,spbtr2, spe1ur2, spe2vr2, spbtr3   
     29   LOGICAL , PUBLIC :: spongedoneT = .FALSE.   !: tracer   sponge layer indicator 
     30   LOGICAL , PUBLIC :: spongedoneU = .FALSE.   !: dynamics sponge layer indicator 
     31   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   spe1ur, spe2vr ,spbtr2, spe1ur2, spe2vr2, spbtr3   !: ??? 
     32 
    3633#endif 
    37  
     34   !!---------------------------------------------------------------------- 
     35   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 
     36   !! $Id$ 
     37   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     38   !!====================================================================== 
    3839END MODULE agrif_oce 
  • trunk/NEMO/NST_SRC/agrif_opa_interp.F90

    r1300 r1605  
    11MODULE agrif_opa_interp 
     2   !!====================================================================== 
     3   !!                   ***  MODULE  agrif_opa_interp  *** 
     4   !! AGRIF: interpolation package 
     5   !!====================================================================== 
     6   !! History :  2.0  !  2002-06  (XXX)  Original cade 
     7   !!             -   !  2005-11  (XXX)  
     8   !!            3.2  !  2009-04  (R. Benshila)  
     9   !!---------------------------------------------------------------------- 
    210#if defined key_agrif && ! defined key_off_tra 
     11   !!---------------------------------------------------------------------- 
     12   !!   'key_agrif'                                              AGRIF zoom 
     13   !!   NOT 'key_off_tra'                               NO off-line tracers 
     14   !!---------------------------------------------------------------------- 
     15   !!   Agrif_tra     : 
     16   !!   Agrif_dyn     :  
     17   !!   interpu       : 
     18   !!   interpv       : 
     19   !!---------------------------------------------------------------------- 
    320   USE par_oce 
    421   USE oce 
     
    623   USE sol_oce 
    724   USE agrif_oce 
     25   USE phycst 
     26   USE in_out_manager 
    827 
    928   IMPLICIT NONE 
    1029   PRIVATE 
    1130     
    12    PUBLIC Agrif_tra, Agrif_dyn, interpu, interpv 
    13  
    14    !!---------------------------------------------------------------------- 
    15    !!   OPA 9.0 , LOCEAN-IPSL (2006) 
     31   PUBLIC   Agrif_tra, Agrif_dyn, interpu, interpv 
     32 
     33#  include "domzgr_substitute.h90"   
     34#  include "vectopt_loop_substitute.h90" 
     35   !!---------------------------------------------------------------------- 
     36   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 
    1637   !! $Id$ 
    1738   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    2142    
    2243   SUBROUTINE Agrif_tra 
    23       !!--------------------------------------------- 
    24       !!   *** ROUTINE Agrif_Tra *** 
    25       !!--------------------------------------------- 
    26 #  include "domzgr_substitute.h90"   
    27 #  include "vectopt_loop_substitute.h90" 
    28        
    29       INTEGER :: ji,jj,jk 
    30       REAL(wp) :: zrhox 
    31       REAL(wp) :: alpha1, alpha2, alpha3, alpha4 
    32       REAL(wp) :: alpha5, alpha6, alpha7 
    33       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zta, zsa 
     44      !!---------------------------------------------------------------------- 
     45      !!                  ***  ROUTINE Agrif_Tra  *** 
     46      !!---------------------------------------------------------------------- 
     47      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     48      REAL(wp) ::   zrhox , alpha1, alpha2, alpha3 
     49      REAL(wp) ::   alpha4, alpha5, alpha6, alpha7 
     50      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zta, zsa   ! 3D workspace 
     51      !!---------------------------------------------------------------------- 
    3452      ! 
    35       IF(Agrif_Root()) RETURN 
    36  
    37       Agrif_SpecialValue=0. 
     53      IF( Agrif_Root() )  RETURN 
     54 
     55      Agrif_SpecialValue    = 0.e0 
    3856      Agrif_UseSpecialValue = .TRUE. 
    39       zta = 0.e0 
    40       zsa = 0.e0 
    41  
    42       CALL Agrif_Bc_variable(zta,tn) 
    43       CALL Agrif_Bc_variable(zsa,sn) 
     57      zta(:,:,:) = 0.e0 
     58      zsa(:,:,:) = 0.e0 
     59 
     60      CALL Agrif_Bc_variable( zta, tn ) 
     61      CALL Agrif_Bc_variable( zsa, sn ) 
    4462      Agrif_UseSpecialValue = .FALSE. 
    4563 
    4664      zrhox = Agrif_Rhox() 
    4765 
    48       alpha1 = (zrhox-1.)/2. 
    49       alpha2 = 1.-alpha1 
    50  
    51       alpha3 = (zrhox-1)/(zrhox+1) 
    52       alpha4 = 1.-alpha3 
    53  
    54       alpha6 = 2.*(zrhox-1.)/(zrhox+1.) 
    55       alpha7 = -(zrhox-1)/(zrhox+3) 
     66      alpha1 = ( zrhox - 1. ) * 0.5 
     67      alpha2 = 1. - alpha1 
     68 
     69      alpha3 = ( zrhox - 1. ) / ( zrhox + 1. ) 
     70      alpha4 = 1. - alpha3 
     71 
     72      alpha6 = 2. * ( zrhox - 1. ) / ( zrhox + 1. ) 
     73      alpha7 =    - ( zrhox - 1. ) / ( zrhox + 3. ) 
    5674      alpha5 = 1. - alpha6 - alpha7 
    5775 
    58       IF((nbondi == 1).OR.(nbondi == 2)) THEN 
     76      IF( nbondi == 1 .OR. nbondi == 2 ) THEN 
    5977 
    6078         ta(nlci,:,:) = alpha1 * zta(nlci,:,:) + alpha2 * zta(nlci-1,:,:) 
    6179         sa(nlci,:,:) = alpha1 * zsa(nlci,:,:) + alpha2 * zsa(nlci-1,:,:) 
    6280 
    63          DO jk=1,jpk       
    64             DO jj=1,jpj 
    65                IF (umask(nlci-2,jj,jk).EQ.0.) THEN 
     81         DO jk = 1, jpkm1 
     82            DO jj = 1, jpj 
     83               IF( umask(nlci-2,jj,jk) == 0.e0 ) THEN 
    6684                  ta(nlci-1,jj,jk) = ta(nlci,jj,jk) * tmask(nlci-1,jj,jk) 
    6785                  sa(nlci-1,jj,jk) = sa(nlci,jj,jk) * tmask(nlci-1,jj,jk) 
     
    6987                  ta(nlci-1,jj,jk)=(alpha4*ta(nlci,jj,jk)+alpha3*ta(nlci-2,jj,jk))*tmask(nlci-1,jj,jk) 
    7088                  sa(nlci-1,jj,jk)=(alpha4*sa(nlci,jj,jk)+alpha3*sa(nlci-2,jj,jk))*tmask(nlci-1,jj,jk) 
    71                   IF (un(nlci-2,jj,jk).GT.0.) THEN 
     89                  IF( un(nlci-2,jj,jk) > 0.e0 ) THEN 
    7290                     ta(nlci-1,jj,jk)=( alpha6*ta(nlci-2,jj,jk)+alpha5*ta(nlci,jj,jk)  & 
    73                                       + alpha7*ta(nlci-3,jj,jk) ) * tmask(nlci-1,jj,jk) 
     91                        &             + alpha7*ta(nlci-3,jj,jk) ) * tmask(nlci-1,jj,jk) 
    7492                     sa(nlci-1,jj,jk)=( alpha6*sa(nlci-2,jj,jk)+alpha5*sa(nlci,jj,jk)  & 
    75                                       + alpha7*sa(nlci-3,jj,jk) ) * tmask(nlci-1,jj,jk) 
     93                        &             + alpha7*sa(nlci-3,jj,jk) ) * tmask(nlci-1,jj,jk) 
    7694                  ENDIF 
    7795               ENDIF 
     
    8098      ENDIF 
    8199 
    82       IF((nbondj == 1).OR.(nbondj == 2)) THEN 
     100      IF( nbondj == 1 .OR. nbondj == 2 ) THEN 
    83101 
    84102         ta(:,nlcj,:) = alpha1 * zta(:,nlcj,:) + alpha2 * zta(:,nlcj-1,:) 
    85103         sa(:,nlcj,:) = alpha1 * zsa(:,nlcj,:) + alpha2 * zsa(:,nlcj-1,:) 
    86104 
    87          DO jk=1,jpk       
    88             DO ji=1,jpi 
    89                IF (vmask(ji,nlcj-2,jk).EQ.0.) THEN 
     105         DO jk = 1, jpkm1 
     106            DO ji = 1, jpi 
     107               IF( vmask(ji,nlcj-2,jk) == 0.e0 ) THEN 
    90108                  ta(ji,nlcj-1,jk) = ta(ji,nlcj,jk) * tmask(ji,nlcj-1,jk) 
    91109                  sa(ji,nlcj-1,jk) = sa(ji,nlcj,jk) * tmask(ji,nlcj-1,jk) 
     
    93111                  ta(ji,nlcj-1,jk)=(alpha4*ta(ji,nlcj,jk)+alpha3*ta(ji,nlcj-2,jk))*tmask(ji,nlcj-1,jk)         
    94112                  sa(ji,nlcj-1,jk)=(alpha4*sa(ji,nlcj,jk)+alpha3*sa(ji,nlcj-2,jk))*tmask(ji,nlcj-1,jk) 
    95                   IF (vn(ji,nlcj-2,jk) .GT. 0.) THEN 
     113                  IF (vn(ji,nlcj-2,jk) > 0.e0 ) THEN 
    96114                     ta(ji,nlcj-1,jk)=( alpha6*ta(ji,nlcj-2,jk)+alpha5*ta(ji,nlcj,jk)  & 
    97                                       + alpha7*ta(ji,nlcj-3,jk) ) * tmask(ji,nlcj-1,jk) 
     115                        &             + alpha7*ta(ji,nlcj-3,jk) ) * tmask(ji,nlcj-1,jk) 
    98116                     sa(ji,nlcj-1,jk)=( alpha6*sa(ji,nlcj-2,jk)+alpha5*sa(ji,nlcj,jk)  & 
    99                                       + alpha7*sa(ji,nlcj-3,jk))*tmask(ji,nlcj-1,jk) 
     117                        &             + alpha7*sa(ji,nlcj-3,jk))*tmask(ji,nlcj-1,jk) 
    100118                  ENDIF 
    101119               ENDIF 
     
    104122      ENDIF 
    105123 
    106       IF((nbondi == -1).OR.(nbondi == 2)) THEN 
     124      IF( nbondi == -1 .OR. nbondi == 2 ) THEN 
    107125         ta(1,:,:) = alpha1 * zta(1,:,:) + alpha2 * zta(2,:,:) 
    108126         sa(1,:,:) = alpha1 * zsa(1,:,:) + alpha2 * zsa(2,:,:)       
    109          DO jk=1,jpk       
    110             DO jj=1,jpj 
    111                IF (umask(2,jj,jk).EQ.0.) THEN 
     127         DO jk = 1, jpkm1 
     128            DO jj = 1, jpj 
     129               IF( umask(2,jj,jk) == 0.e0 ) THEN 
    112130                  ta(2,jj,jk) = ta(1,jj,jk) * tmask(2,jj,jk) 
    113131                  sa(2,jj,jk) = sa(1,jj,jk) * tmask(2,jj,jk) 
     
    115133                  ta(2,jj,jk)=(alpha4*ta(1,jj,jk)+alpha3*ta(3,jj,jk))*tmask(2,jj,jk)         
    116134                  sa(2,jj,jk)=(alpha4*sa(1,jj,jk)+alpha3*sa(3,jj,jk))*tmask(2,jj,jk) 
    117                   IF (un(2,jj,jk).LT.0.) THEN 
     135                  IF( un(2,jj,jk) < 0.e0 ) THEN 
    118136                     ta(2,jj,jk)=(alpha6*ta(3,jj,jk)+alpha5*ta(1,jj,jk)+alpha7*ta(4,jj,jk))*tmask(2,jj,jk) 
    119137                     sa(2,jj,jk)=(alpha6*sa(3,jj,jk)+alpha5*sa(1,jj,jk)+alpha7*sa(4,jj,jk))*tmask(2,jj,jk) 
     
    124142      ENDIF 
    125143 
    126       IF((nbondj == -1).OR.(nbondj == 2)) THEN 
     144      IF( nbondj == -1 .OR. nbondj == 2 ) THEN 
    127145         ta(:,1,:) = alpha1 * zta(:,1,:) + alpha2 * zta(:,2,:) 
    128146         sa(:,1,:) = alpha1 * zsa(:,1,:) + alpha2 * zsa(:,2,:) 
    129147         DO jk=1,jpk       
    130148            DO ji=1,jpi 
    131                IF (vmask(ji,2,jk).EQ.0.) THEN 
     149               IF( vmask(ji,2,jk) == 0.e0 ) THEN 
    132150                  ta(ji,2,jk)=ta(ji,1,jk) * tmask(ji,2,jk) 
    133151                  sa(ji,2,jk)=sa(ji,1,jk) * tmask(ji,2,jk) 
     
    135153                  ta(ji,2,jk)=(alpha4*ta(ji,1,jk)+alpha3*ta(ji,3,jk))*tmask(ji,2,jk) 
    136154                  sa(ji,2,jk)=(alpha4*sa(ji,1,jk)+alpha3*sa(ji,3,jk))*tmask(ji,2,jk)  
    137                   IF (vn(ji,2,jk) .LT. 0.) THEN 
     155                  IF( vn(ji,2,jk) < 0.e0 ) THEN 
    138156                     ta(ji,2,jk)=(alpha6*ta(ji,3,jk)+alpha5*ta(ji,1,jk)+alpha7*ta(ji,4,jk))*tmask(ji,2,jk) 
    139157                     sa(ji,2,jk)=(alpha6*sa(ji,3,jk)+alpha5*sa(ji,1,jk)+alpha7*sa(ji,4,jk))*tmask(ji,2,jk) 
     
    143161         END DO 
    144162      ENDIF 
    145  
     163      ! 
    146164   END SUBROUTINE Agrif_tra 
    147165 
     166 
    148167   SUBROUTINE Agrif_dyn( kt ) 
    149       !!--------------------------------------------- 
    150       !!   *** ROUTINE Agrif_DYN *** 
    151       !!--------------------------------------------- 
    152       USE phycst 
    153       USE in_out_manager 
    154  
    155 #  include "domzgr_substitute.h90" 
    156        
    157       INTEGER, INTENT(in) :: kt 
    158  
     168      !!---------------------------------------------------------------------- 
     169      !!                  ***  ROUTINE Agrif_DYN  *** 
     170      !!----------------------------------------------------------------------   
     171      INTEGER, INTENT(in) ::   kt 
     172      !! 
     173      INTEGER :: ji,jj,jk 
    159174      REAL(wp) :: timeref 
    160175      REAL(wp) :: z2dt, znugdt 
     
    163178      REAL(wp), DIMENSION(jpi,jpj) :: spgu1,spgv1 
    164179      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zua, zva 
    165       INTEGER :: ji,jj,jk 
    166  
    167       IF (Agrif_Root()) RETURN 
     180      !!----------------------------------------------------------------------   
     181 
     182      IF( Agrif_Root() )  RETURN 
    168183 
    169184      zrhox = Agrif_Rhox() 
     
    177192      IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 
    178193      ! coefficients 
    179       znugdt =  rnu * grav * z2dt     
     194      znugdt =  grav * z2dt     
    180195 
    181196      Agrif_SpecialValue=0. 
     
    505520   END SUBROUTINE Agrif_dyn 
    506521 
     522 
    507523   SUBROUTINE interpu(tabres,i1,i2,j1,j2,k1,k2) 
    508       !!--------------------------------------------- 
    509       !!   *** ROUTINE interpu *** 
    510       !!--------------------------------------------- 
    511 #  include "domzgr_substitute.h90"    
    512      
     524      !!---------------------------------------------------------------------- 
     525      !!                  ***  ROUTINE interpu  *** 
     526      !!----------------------------------------------------------------------   
    513527      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    514528      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
    515  
     529      !! 
    516530      INTEGER :: ji,jj,jk 
     531      !!----------------------------------------------------------------------   
    517532 
    518533      DO jk=k1,k2 
     
    528543   END SUBROUTINE interpu 
    529544 
     545 
    530546   SUBROUTINE interpu2d(tabres,i1,i2,j1,j2) 
    531       !!--------------------------------------------- 
    532       !!   *** ROUTINE interpu2d *** 
    533       !!--------------------------------------------- 
    534  
     547      !!---------------------------------------------------------------------- 
     548      !!                  ***  ROUTINE interpu2d  *** 
     549      !!----------------------------------------------------------------------   
    535550      INTEGER, INTENT(in) :: i1,i2,j1,j2 
    536551      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
    537  
     552      !! 
    538553      INTEGER :: ji,jj 
     554      !!----------------------------------------------------------------------   
    539555 
    540556      DO jj=j1,j2 
     
    547563   END SUBROUTINE interpu2d 
    548564 
     565 
    549566   SUBROUTINE interpv(tabres,i1,i2,j1,j2,k1,k2) 
    550       !!--------------------------------------------- 
    551       !!   *** ROUTINE interpv *** 
    552       !!--------------------------------------------- 
    553 #  include "domzgr_substitute.h90"  
    554        
     567      !!---------------------------------------------------------------------- 
     568      !!                  ***  ROUTINE interpv  *** 
     569      !!----------------------------------------------------------------------   
    555570      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    556571      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
    557  
     572      !! 
    558573      INTEGER :: ji, jj, jk 
     574      !!----------------------------------------------------------------------   
    559575 
    560576      DO jk=k1,k2 
     
    571587   END SUBROUTINE interpv 
    572588 
     589 
    573590   SUBROUTINE interpv2d(tabres,i1,i2,j1,j2) 
    574       !!--------------------------------------------- 
    575       !!   *** ROUTINE interpv2d *** 
    576       !!--------------------------------------------- 
    577  
     591      !!---------------------------------------------------------------------- 
     592      !!                  ***  ROUTINE interpu2d  *** 
     593      !!----------------------------------------------------------------------   
    578594      INTEGER, INTENT(in) :: i1,i2,j1,j2 
    579595      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
    580  
     596      !! 
    581597      INTEGER :: ji,jj 
     598      !!----------------------------------------------------------------------   
    582599 
    583600      DO jj=j1,j2 
     
    591608 
    592609#else 
     610   !!---------------------------------------------------------------------- 
     611   !!   Empty module                                          no AGRIF zoom 
     612   !!---------------------------------------------------------------------- 
    593613CONTAINS 
    594  
    595614   SUBROUTINE Agrif_OPA_Interp_empty 
    596       !!--------------------------------------------- 
    597       !!   *** ROUTINE agrif_OPA_Interp_empty *** 
    598       !!--------------------------------------------- 
    599615      WRITE(*,*)  'agrif_opa_interp : You should not have seen this print! error?' 
    600616   END SUBROUTINE Agrif_OPA_Interp_empty 
    601617#endif 
     618 
     619   !!====================================================================== 
    602620END MODULE agrif_opa_interp 
  • trunk/NEMO/NST_SRC/agrif_user.F90

    r1465 r1605  
    77 
    88   SUBROUTINE Agrif_InitWorkspace 
    9       !!------------------------------------------ 
    10       !!   *** ROUTINE Agrif_InitWorkspace *** 
    11       !!------------------------------------------  
     9      !!---------------------------------------------------------------------- 
     10      !!                 *** ROUTINE Agrif_InitWorkspace *** 
     11      !!---------------------------------------------------------------------- 
    1212      USE par_oce 
    1313      USE dom_oce 
    1414      USE Agrif_Util 
    15  
     15      !! 
    1616      IMPLICIT NONE 
    17        
     17      !! 
    1818#if defined key_mpp_dyndist 
    1919      CHARACTER(len=20) :: namelistname 
    2020      INTEGER nummpp 
    21       NAMELIST/nam_mpp_dyndist/jpni,jpnj,jpnij 
    22  
    23       IF (Agrif_Nbstepint() .EQ. 0) THEN 
     21      NAMELIST/nammpp_dyndist/ jpni, jpnj, jpnij 
     22#endif 
     23      !!---------------------------------------------------------------------- 
     24 
     25#if defined key_mpp_dyndist 
     26      ! MPP dynamical distribution : read the processor cutting in the namelist 
     27      IF( Agrif_Nbstepint() == 0 ) THEN 
    2428        nummpp = Agrif_Get_Unit() 
    2529        namelistname='namelist' 
    26         IF (.NOT. Agrif_Root()) namelistname=TRIM(Agrif_CFixed())//'_namelist' 
    27         OPEN(nummpp,file=namelistname,status='OLD',form='formatted') 
    28         READ (nummpp,nam_mpp_dyndist) 
     30        IF(.NOT. Agrif_Root() )   namelistname=TRIM(Agrif_CFixed())//'_namelist' 
     31        ! 
     32        OPEN (nummpp,file=namelistname,status='OLD',form='formatted') 
     33        READ (nummpp,nammpp_dyndist) 
    2934        CLOSE(nummpp) 
    3035      ENDIF 
     
    3237 
    3338      IF( .NOT. Agrif_Root() ) THEN 
    34          jpiglo = nbcellsx + 2 + 2*nbghostcells 
    35          jpjglo = nbcellsy + 2 + 2*nbghostcells 
    36          jpi = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci 
    37          jpj = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj 
    38          jpim1 = jpi-1 
    39          jpjm1 = jpj-1 
    40          jpkm1 = jpk-1                                         
    41          jpij  = jpi*jpj 
    42          jpidta = jpiglo 
    43          jpjdta = jpjglo 
     39         jpiglo  = nbcellsx + 2 + 2*nbghostcells 
     40         jpjglo  = nbcellsy + 2 + 2*nbghostcells 
     41         jpi     = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci 
     42         jpj     = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj 
     43         jpim1   = jpi-1 
     44         jpjm1   = jpj-1 
     45         jpkm1   = jpk-1                                         
     46         jpij    = jpi*jpj 
     47         jpidta  = jpiglo 
     48         jpjdta  = jpjglo 
    4449         jpizoom = 1 
    4550         jpjzoom = 1 
    46          nperio = 0 
    47          jperio = 0 
     51         nperio  = 0 
     52         jperio  = 0 
    4853      ENDIF 
    49  
     54      ! 
    5055   END SUBROUTINE Agrif_InitWorkspace 
    5156 
    52    ! 
    5357#if ! defined key_off_tra 
    5458 
    5559   SUBROUTINE Agrif_InitValues 
    56       !!------------------------------------------ 
    57       !!   *** ROUTINE Agrif_InitValues *** 
    58       !! 
    59       !! ** Purpose :: Declaration of variables to 
    60       !!               be interpolated 
    61       !!------------------------------------------ 
     60      !!---------------------------------------------------------------------- 
     61      !!                 *** ROUTINE Agrif_InitValues *** 
     62      !! 
     63      !! ** Purpose :: Declaration of variables to be interpolated 
     64      !!---------------------------------------------------------------------- 
    6265      USE Agrif_Util 
    6366      USE oce  
     
    7881      USE agrif_top_interp 
    7982      USE agrif_top_sponge 
    80  
     83      !! 
    8184      IMPLICIT NONE 
    82  
     85      !! 
    8386      REAL(wp) :: tabtemp(jpi,jpj,jpk) 
    8487#if defined key_top 
     
    8689#endif  
    8790      LOGICAL check_namelist 
     91      !!---------------------------------------------------------------------- 
    8892 
    8993      ! 0. Initializations 
     
    313317#endif 
    314318      nbcline = 0 
    315  
     319      ! 
    316320   END SUBROUTINE Agrif_InitValues 
    317    ! 
    318321 
    319322#else 
     323 
    320324   SUBROUTINE Agrif_InitValues 
    321       !!------------------------------------------ 
    322       !!   *** ROUTINE Agrif_InitValues *** 
    323       !! 
    324       !! ** Purpose :: Declaration of variables to 
    325       !!               be interpolated 
    326       !!------------------------------------------ 
     325      !!---------------------------------------------------------------------- 
     326      !!                 *** ROUTINE Agrif_InitValues *** 
     327      !! 
     328      !! ** Purpose :: Declaration of variables to be interpolated 
     329      !!---------------------------------------------------------------------- 
    327330      USE Agrif_Util 
    328331      USE oce  
     
    334337      USE agrif_top_interp 
    335338      USE agrif_top_sponge 
    336  
     339      !! 
    337340      IMPLICIT NONE 
    338  
     341      !! 
    339342      REAL(wp) :: tabtrtemp(jpi,jpj,jpk,jptra) 
    340343      LOGICAL check_namelist 
     344      !!---------------------------------------------------------------------- 
    341345 
    342346      ! 0. Initializations 
     
    441445      CALL Agrif_Update_trc(0) 
    442446      nbcline_trc = 0 
    443  
     447      ! 
    444448   END SUBROUTINE Agrif_InitValues 
     449 
    445450#endif 
    446451    
    447 SUBROUTINE Agrif_detect(g,sizex) 
    448       !!------------------------------------------ 
     452   SUBROUTINE Agrif_detect( g, sizex ) 
     453      !!---------------------------------------------------------------------- 
    449454      !!   *** ROUTINE Agrif_detect *** 
    450       !!------------------------------------------ 
     455      !!---------------------------------------------------------------------- 
    451456      USE Agrif_Types 
    452   
     457      !!  
    453458      INTEGER, DIMENSION(2) :: sizex 
    454459      INTEGER, DIMENSION(sizex(1),sizex(2)) :: g  
    455  
    456       Return 
    457  
    458    End SUBROUTINE Agrif_detect 
     460      !!---------------------------------------------------------------------- 
     461      ! 
     462      RETURN 
     463      ! 
     464   END SUBROUTINE Agrif_detect 
     465 
    459466 
    460467   SUBROUTINE agrif_opa_init 
    461       !!--------------------------------------------- 
    462       !!   *** ROUTINE agrif_init *** 
    463       !!--------------------------------------------- 
     468      !!---------------------------------------------------------------------- 
     469      !!                     *** ROUTINE agrif_init *** 
     470      !!---------------------------------------------------------------------- 
    464471      USE agrif_oce  
    465472      USE in_out_manager 
    466  
     473      !! 
    467474      IMPLICIT NONE 
    468  
    469       NAMELIST/namagrif/ nbclineupdate, visc_tra, visc_dyn, ln_spc_dyn 
    470  
    471       REWIND ( numnam ) 
    472       READ   ( numnam, namagrif ) 
    473       IF(lwp) THEN 
     475      !! 
     476      NAMELIST/namagrif/ nn_cln_update, rn_sponge_tra, rn_sponge_dyn, ln_spc_dyn 
     477      !!---------------------------------------------------------------------- 
     478 
     479      REWIND( numnam )                ! Read namagrif namelist 
     480      READ  ( numnam, namagrif ) 
     481      ! 
     482      IF(lwp) THEN                    ! control print 
    474483         WRITE(numout,*) 
    475          WRITE(numout,*) 'agrif_opa_init : agrif parameters' 
     484         WRITE(numout,*) 'agrif_opa_init : AGRIF parameters' 
    476485         WRITE(numout,*) '~~~~~~~~~~~~' 
    477          WRITE(numout,*) '          Namelist namagrif : set agrif parameters' 
    478          WRITE(numout,*) '             baroclinic update frequency          =  ', nbclineupdate 
    479          WRITE(numout,*) '             sponge coefficient for tracers       =  ', visc_tra 
    480          WRITE(numout,*) '             sponge coefficient for dynamics      =  ', visc_dyn 
    481          WRITE(numout,*) '             use special values for dynamics      = ', ln_spc_dyn 
     486         WRITE(numout,*) '   Namelist namagrif : set AGRIF parameters' 
     487         WRITE(numout,*) '      baroclinic update frequency       nn_cln_update = ', nn_cln_update 
     488         WRITE(numout,*) '      sponge coefficient for tracers    rn_sponge_tra = ', rn_sponge_tra, ' s' 
     489         WRITE(numout,*) '      sponge coefficient for dynamics   rn_sponge_tra = ', rn_sponge_dyn, ' s' 
     490         WRITE(numout,*) '      use special values for dynamics   ln_spc_dyn    = ', ln_spc_dyn 
    482491         WRITE(numout,*)  
    483492      ENDIF 
    484  
     493      ! 
     494      ! convert DOCTOR namelist name into OLD names 
     495      nbclineupdate = nn_cln_update 
     496      visc_tra      = rn_sponge_tra 
     497      visc_dyn      = rn_sponge_dyn 
     498      ! 
    485499    END SUBROUTINE agrif_opa_init 
    486 #if defined key_mpp_mpi 
    487    SUBROUTINE Agrif_InvLoc(indloc,nprocloc,i,indglob) 
    488       !!------------------------------------------ 
    489       !!   *** ROUTINE Agrif_detect *** 
    490       !!------------------------------------------ 
     500 
     501# if defined key_mpp_mpi 
     502 
     503   SUBROUTINE Agrif_InvLoc( indloc, nprocloc, i, indglob ) 
     504      !!---------------------------------------------------------------------- 
     505      !!                     *** ROUTINE Agrif_detect *** 
     506      !!---------------------------------------------------------------------- 
    491507      USE dom_oce 
    492        
     508      !! 
    493509      IMPLICIT NONE 
    494  
     510      !! 
    495511      INTEGER :: indglob,indloc,nprocloc,i 
    496  
     512      !!---------------------------------------------------------------------- 
     513      ! 
    497514      SELECT CASE(i) 
    498515      CASE(1) 
     
    505522         indglob = indloc 
    506523      END SELECT 
    507  
     524      ! 
    508525   END SUBROUTINE Agrif_InvLoc 
    509 #endif 
     526 
     527# endif 
     528 
    510529#else 
    511530   SUBROUTINE Subcalledbyagrif 
    512       !!------------------------------------------ 
     531      !!---------------------------------------------------------------------- 
    513532      !!   *** ROUTINE Subcalledbyagrif *** 
    514       !!------------------------------------------ 
     533      !!---------------------------------------------------------------------- 
    515534      WRITE(*,*) 'Impossible to be here' 
    516535   END SUBROUTINE Subcalledbyagrif 
Note: See TracChangeset for help on using the changeset viewer.