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 763 for branches/dev_001_GM/NEMO/TOP_SRC/trclec.F90 – NEMO

Ignore:
Timestamp:
2007-12-13T14:52:50+01:00 (17 years ago)
Author:
gm
Message:

dev_001_GM - Style only addition in TOP F90 h90 routines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_001_GM/NEMO/TOP_SRC/trclec.F90

    r719 r763  
    11MODULE trclec 
    2    !!========================================================================== 
    3    !! 
    4    !!                       *** MODULE trclec *** 
    5    !! Read and print options for the passive tracer run (namelist) 
    6    !! O.Aumont and A.El Moussaoui 03/05 F90 
    7    !!========================================================================= 
    8    !!  TOP 1.0,  LOCEAN-IPSL (2005)  
    9    !! $Header$  
    10    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     2   !!====================================================================== 
     3   !!                       ***  MODULE trclec  *** 
     4   !! TOP :   Read and print options for the passive tracer run (namelist) 
     5   !!====================================================================== 
     6   !! History :    -   !  1996-11  (M.A. Foujols, M. Levy)  original code 
     7   !!              -   !  1998-04  (M.A Foujols, L. Bopp) ahtrb0 for isopycnal mixing 
     8   !!              -   !  1999-10  (M.A. Foujols, M. Levy) separation of sms 
     9   !!              -   !  2000-07  (A. Estublier) add TVD and MUSCL : Tests on ndttrc 
     10   !!              -   !  2000-11  (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 
     11   !!              -   !  2001-01 (E Kestenare) suppress ndttrc=1 for CEN2 and TVD schemes 
     12   !!             1.0  !  2005-03 (O. Aumont, A. El Moussaoui) F90 
    1113   !!---------------------------------------------------------------------- 
    1214#if defined key_passivetrc 
    13    !! * Modules used 
    14    !! ============== 
     15   !!---------------------------------------------------------------------- 
     16   !!   'key_passivetrc'                                    Passive tracers 
     17   !!---------------------------------------------------------------------- 
     18   !!   trc_lec    :  Read and print options for the passive tracer run (namelist) 
     19   !!---------------------------------------------------------------------- 
    1520   USE oce_trc 
    1621   USE trc 
     
    2126   PRIVATE  
    2227 
    23    !! * Accessibility 
    24    PUBLIC trc_lec 
    25  
    26 #include "passivetrc_substitute.h90" 
     28   PUBLIC trc_lec      ! called in ??? 
     29 
     30   !! * Substitutions 
     31#  include "passivetrc_substitute.h90" 
     32   !!---------------------------------------------------------------------- 
     33   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)  
     34   !! $Header:$  
     35   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     36   !!---------------------------------------------------------------------- 
    2737 
    2838CONTAINS 
     
    3040   SUBROUTINE trc_lec 
    3141      !!--------------------------------------------------------------------- 
    32       !!                       ROUTINE trclec 
    33       !!                     ****************** 
    34       !!  PURPOSE : 
    35       !!  --------- 
    36       !!     READ and PRINT options for the passive tracer run (namelist) 
     42      !!                     ***  ROUTINE trc_lec  *** 
    3743      !! 
    38       !!   History: 
    39       !!   -------- 
    40       !!      original  : 96-11 (M.A. Foujols, M. Levy) passive tracer 
    41       !!      modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal 
    42       !!                                                  diffusion 
    43       !!      modification : 99-10(M.A. Foujols, M. Levy) separation of sms 
    44       !!      additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests  
    45       !!                                      on ndttrc 
    46       !!      additions : 00-06(A. Estublier) MUSCL Scheme : Tests  
    47       !!                                      on ndttrc 
    48       !!      additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc 
    49       !!      modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 
    50       !!      modification : 01-01 (E Kestenare) suppress ndttrc=1  
    51       !!                                         for Arakawa and TVD schemes 
    52       !!     O.Aumont and A.El Moussaoui 03/05 F90 
    53       !!---------------------------------------------------------------------- 
    54  
    55       !! local declarations 
    56       !! ================== 
    57  
     44      !! ** Purpose :   READ and PRINT options for the passive tracer run (namelist)  
     45      !! 
     46      !! ** Method  : - read namelist 
     47      !!--------------------------------------------------------------------- 
    5848      INTEGER ::  ji 
    5949      CHARACTER (len=32) :: clname 
    60  
     50      !! 
     51      NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, ctrcnm, ctrcnl, ctrcun, lutini     ! general    
     52      NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster 
     53#if defined key_trc_diatrd 
     54      NAMELIST/natrtd/ luttrd, nwritetrd                                             ! dynamical trends 
     55#endif 
     56#if defined key_trc_diaadd 
     57      NAMELIST/natadd/ ctrc3d, ctrc3l, ctrc2d, ctrc2l, ctrc3u, ctrc2u, nwriteadd     ! additional diagnostics 
     58#endif 
    6159      !!--------------------------------------------------------------------- 
    62       !!  OPA.90   03/2005  
    63       !!--------------------------------------------------------------------- 
    64  
    65       !! 0. initializations 
    66       !! ------------------ 
    67  
    68       namelist/nattrc/nwritetrc,lrsttr,nrsttr, ctrcnm,ctrcnl,ctrcun,lutini     !general    
    69  
    70       namelist/natnum/rsc,rtrn,ncortrc,ndttrc,crosster 
    71  
    72 #if defined key_trc_diatrd 
    73       namelist/natrtd/luttrd,nwritetrd                      ! dynamical trends 
    74 #endif 
    75  
    76 #if defined key_trc_diaadd 
    77       namelist/natadd/ctrc3d,ctrc3l,ctrc2d,ctrc2l, ctrc3u, ctrc2u,     & 
    78          nwriteadd                             !additional diagnostics 
    79 #endif 
    80  
    81       IF(lwp) THEN 
    82          WRITE(numout,*) ' ' 
    83          WRITE(numout,*) ' ROUTINE trclec' 
    84          WRITE(numout,*) ' **************' 
    85          WRITE(numout,*) ' ' 
    86          WRITE(numout,*) ' namelist for passive tracer' 
    87          WRITE(numout,*) ' ***************************' 
    88          WRITE(numout,*) ' ' 
    89       ENDIF 
    90  
    91       clname='namelist.passivetrc' 
     60 
     61      IF(lwp) WRITE(numout,*) 
     62      IF(lwp) WRITE(numout,*) 'trc_lec : read the passive tracer namelists' 
     63      IF(lwp) WRITE(numout,*) '~~~~~~~' 
     64 
     65      clname = 'namelist.passivetrc' 
    9266      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   & 
    9367         &         1, numout, .FALSE., 1 ) 
    9468 
    9569 
    96       !! 1., 2. & 3. initialization with namelist files 
    97       !! ---------------------------------------------- 
    98       !! 1.0 namelist nattrc : 
    99  
    100       nwritetrc = 10 
    101       lrsttr=.FALSE. 
    102       nrsttr = 0 
    103  
    104       DO ji=1,jptra 
    105          WRITE (ctrcnm(ji),'("TR_",I1)') ji 
    106          WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 
    107          ctrcun(ji)='mmole/m3' 
    108          lutini(ji)=.FALSE.  
    109       END DO 
    110  
    111  
    112       REWIND(numnat) 
    113       READ(numnat,nattrc) 
    114  
    115       IF(lwp) THEN 
    116          WRITE(numout,*) ' ' 
    117          WRITE(numout,*) 'nattrc' 
    118          WRITE(numout,*) ' ' 
    119          WRITE(numout,*)          & 
    120             ' frequency of outputs for passive tracers nwritetrc = '    & 
    121             ,nwritetrc   
    122          WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   & 
    123             &         lrsttr 
    124          WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   &  
    125             &         nrsttr 
    126          DO ji=1,jptra 
    127             WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji)       &  
    128                &           ,ctrcnl(ji)  
    129             WRITE(numout,*) ' in unit = ',ctrcun(ji) 
    130             WRITE(numout,*) ' initial value in FILE : ',lutini(ji)  
    131             WRITE(numout,*) ' ' 
    132          END DO 
    133          WRITE(numout,*) ' ' 
     70      ! Namelist nattrc (files) 
     71      ! ---------------------------------------------- 
     72      nwritetrc = 10                 ! default values 
     73      lrsttr    = .FALSE. 
     74      nrsttr    =  0 
     75      DO ji = 1, jptra 
     76         WRITE(ctrcnm(ji),'("TR_",I1)'           ) ji 
     77         WRITE(ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 
     78         ctrcun(ji) = 'mmole/m3' 
     79         lutini(ji) = .FALSE.  
     80      END DO 
     81 
     82      REWIND( numnat )               ! read nattrc 
     83      READ  ( numnat, nattrc ) 
     84 
     85      IF(lwp) THEN                   ! control print 
     86         WRITE(numout,*) 
     87         WRITE(numout,*) ' Namelist : nattrc' 
     88         WRITE(numout,*) '    frequency of outputs for passive tracers nwritetrc = ', nwritetrc   
     89         WRITE(numout,*) '    restart LOGICAL for passive tr. lrsttr = ', lrsttr 
     90         WRITE(numout,*) '    control of time step for p. tr. nrsttr = ', nrsttr 
     91         DO ji = 1, jptra 
     92            WRITE(numout,*) '    tracer nb: ', ji, ' name = ', ctrcnm(ji), ctrcnl(ji), ' in unit = ',ctrcun(ji) 
     93            WRITE(numout,*) '    initial value in FILE : ',lutini(ji)  
     94         END DO 
    13495      ENDIF 
    13596 
    13697#if defined key_trc_diatrd 
    13798 
    138       !! 1.2 namelist nattrd : passive tracers dynamical trends 
    139  
    140       nwritetrd=10 
    141  
    142       !! default : no dynamical trend recording 
    143       !! -------------------------------------- 
    144       DO ji=1,jptra 
     99      ! Namelist natrtd (transport trends) 
     100      ! ---------------------------------------------- 
     101      nwritetrd = 10                 ! default values (no dynamical trend recording) 
     102      DO ji = 1, jptra 
    145103         luttrd(ji) = .FALSE. 
    146104      END DO 
    147105 
    148       REWIND(numnat) 
    149       READ(numnat,natrtd) 
     106      REWIND( numnat )               ! read natrtd 
     107      READ  ( numnat, natrtd ) 
    150108 
    151109      nkeep=0 
    152110      ikeep(:)=0 
    153       DO ji=1,jptra 
    154          IF (luttrd(ji)) THEN  
    155              nkeep=nkeep+1 
     111      DO ji = 1, jptra 
     112         IF( luttrd(ji) ) THEN  
     113             nkeep    = nkeep + 1 
    156114             ikeep(ji)=nkeep 
    157115         END IF  
    158116      END DO 
    159       IF (nkeep.GT.0) THEN   
    160         IF (.NOT. ALLOCATED(trtrd)) ALLOCATE(trtrd(jpi,jpj,jpk,nkeep,jpdiatrc))  
    161         trtrd(:,:,:,:,:)=0.0 
     117      IF( nkeep > 0 ) THEN   
     118        IF(.NOT. ALLOCATED( trtrd ) )   ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) )  
     119        trtrd(:,:,:,:,:) = 0.e0 
    162120      ENDIF  
    163       IF(lwp) THEN 
    164          WRITE(numout,*) 'natrtd' 
    165          WRITE(numout,*) ' ' 
    166          WRITE(numout,*)                        & 
    167             ' frequency of outputs for dynamical trends nwritetrd = '   & 
    168             ,nwritetrd 
    169          DO ji=1,jptra 
    170             WRITE(numout,*)                      & 
    171                ' keep dynamical trends for tracer number :',ji          & 
    172                ,luttrd(ji), ikeep(ji) 
    173          END DO 
    174          WRITE(numout,*) 'total = ',nkeep,' tracers dyn trends saved' 
    175          WRITE(numout,*) 'size of trtrd = ',jpi*jpj*jpk*nkeep*jpdiatrc 
    176       ENDIF 
    177 #endif 
    178  
    179       !!1.3 namelist natadd : passive tracers diagnostics 
    180       !!------------------------------------------------- 
     121 
     122      IF(lwp) THEN                   ! control print 
     123         WRITE(numout,*) 
     124         WRITE(numout,*) ' Namelist : natrtd' 
     125         WRITE(numout,*) '    frequency of outputs for dynamical trends nwritetrd = ', nwritetrd 
     126         DO ji = 1, jptra 
     127            WRITE(numout,*) '    keep dynamical trends for tracer number :', ji, luttrd(ji), ikeep(ji) 
     128         END DO 
     129         WRITE(numout,*) '    total = ', nkeep, ' tracers dyn trends saved' 
     130         WRITE(numout,*) '    size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc 
     131      ENDIF 
     132#endif 
    181133 
    182134#if defined key_trc_diaadd 
    183135 
    184       nwriteadd = 10 
    185  
    186       !! default value for 3D output arrays : short and long name, units 
    187  
    188       DO ji=1,jpdia3d 
    189          WRITE (ctrc3d(ji),'("3D_",I1)') ji 
    190          WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji 
    191          ctrc3u(ji)=' ' 
    192       END DO 
    193  
    194  
    195       !! default value for 2D output arrays : short and long name, units 
    196       !! --------------------------------------------------------------- 
    197       DO ji=1,jpdia2d 
    198          WRITE (ctrc2d(ji),'("2D_",I1)') ji 
    199          WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji 
    200          ctrc2u(ji)=' ' 
    201       END DO 
    202  
    203       REWIND(numnat) 
    204       READ(numnat,natadd) 
    205  
    206       IF(lwp) THEN 
    207          WRITE(numout,*) ' natadd' 
    208          WRITE(numout,*) ' ' 
    209          WRITE(numout,*)                          & 
    210             ' frequency of outputs for additional arrays nwriteadd = '   & 
    211             ,nwriteadd 
    212          DO ji=1,jpdia3d 
    213             WRITE(numout,*)                     & 
    214                'name of 3d output field number :',ji,' : ',ctrc3d(ji)   
    215             WRITE(numout,*) ctrc3l(ji)   
    216             WRITE(numout,*) ' in unit = ',ctrc3u(ji) 
    217          END DO 
    218          WRITE(numout,*) ' ' 
    219          DO ji=1,jpdia2d 
    220             WRITE(numout,*)                    & 
    221                'name of 2d output field number :',ji,' : ',ctrc2d(ji)   
    222             WRITE(numout,*) ctrc2l(ji)   
    223             WRITE(numout,*) ' in unit = ',ctrc2u(ji) 
    224          END DO 
    225          WRITE(numout,*) ' ' 
    226       ENDIF 
    227 #endif 
    228  
    229       !! 1.1 namelist natnum : 
    230       !! --------------------- 
    231       rsc=1. 
    232       rtrn=1.e-15 
    233       ncortrc=1 
    234       ndttrc=4 
    235       crosster=.FALSE. 
    236  
    237       REWIND(numnat) 
    238       READ(numnat,natnum) 
    239  
    240 !!Chris  computes the first time step of tracer model 
     136      ! Namelist natrtd (transport trends) 
     137      ! ---------------------------------------------- 
     138      nwriteadd = 10                 ! default values  
     139      !                                 ! 3D output arrays 
     140      DO ji = 1, jpdia3d 
     141         WRITE(ctrc3d(ji),'("3D_",I1)') ji                      ! short name 
     142         WRITE(ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji    ! long name 
     143         ctrc3u(ji) = ' '                                       ! units  
     144      END DO 
     145      !                                 ! 2D output arrays 
     146      DO ji = 1, jpdia2d 
     147         WRITE(ctrc2d(ji),'("2D_",I1)') ji                      ! short name 
     148         WRITE(ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji    ! long name 
     149         ctrc2u(ji) = ' '                                       ! units 
     150      END DO 
     151 
     152      REWIND( numnat )               ! read natrtd 
     153      READ  ( numnat, natadd ) 
     154 
     155      IF(lwp) THEN                   ! control print 
     156         WRITE(numout,*) 
     157         WRITE(numout,*) ' Namelist : natadd' 
     158         WRITE(numout,*) '    frequency of outputs for additional arrays nwriteadd = ', nwriteadd 
     159         DO ji = 1, jpdia3d 
     160            WRITE(numout,*) '    3d output field No :',ji,' names ',ctrc3d(ji), ctrc3l(ji), ' in ', ctrc3u(ji) 
     161         END DO 
     162         DO ji = 1, jpdia2d 
     163            WRITE(numout,*) '    2d output field No :',ji,' names ',ctrc2d(ji), ctrc2l(ji), ' in ', ctrc2u(ji) 
     164         END DO 
     165      ENDIF 
     166#endif 
     167 
     168      !! Namelist natnum : 
     169      !! ----------------- 
     170      rsc      = 1.                 ! default values 
     171      rtrn     = 1.e-15 
     172      ncortrc  = 1 
     173      ndttrc   = 4 
     174      crosster = .FALSE. 
     175 
     176      REWIND( numnat )              ! read natnum 
     177      READ  ( numnat, natnum ) 
     178 
     179      !!Chris  computes the first time step of tracer model 
    241180      nittrc000 = nit000 + ndttrc - 1 
    242181 
    243       IF(lwp) THEN 
    244          WRITE(numout,*) ' ' 
    245          WRITE(numout,*) 'natnum' 
    246          WRITE(numout,*) ' ' 
    247          WRITE(numout,*) ' tuning coefficient              rsc     = ',    & 
    248             rsc 
    249          WRITE(numout,*) ' truncation value                rtrn    = ',    & 
    250             rtrn 
    251          WRITE(numout,*) ' number of corrective phase      ncortrc = ',    & 
    252             ncortrc 
    253          WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    & 
    254             ndttrc 
    255          WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    & 
    256             nittrc000 
    257          WRITE(numout,*) ' computes or not crossterms    crosster  = ',    & 
    258             crosster 
    259       ENDIF 
    260  
    261  
    262       !! namelist of transport 
    263       !! --------------------- 
     182      IF(lwp) THEN                  ! control print 
     183         WRITE(numout,*) 
     184         WRITE(numout,*) ' Namelist : natnum' 
     185         WRITE(numout,*) 
     186         WRITE(numout,*) ' tuning coefficient              rsc     = ', rsc 
     187         WRITE(numout,*) ' truncation value                rtrn    = ', rtrn 
     188         WRITE(numout,*) ' number of corrective phase      ncortrc = ', ncortrc 
     189         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ', ndttrc 
     190         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000 
     191         WRITE(numout,*) ' computes or not crossterms    crosster  = ', crosster 
     192      ENDIF 
     193 
     194      ! namelist of transport 
     195      ! --------------------- 
    264196      CALL trc_trp_lec 
    265197 
    266       !! namelist of SMS 
    267       !! ---------------       
     198      ! namelist of SMS 
     199      ! ---------------       
    268200      CALL trc_lsm 
    269  
     201      ! 
    270202   END SUBROUTINE trc_lec 
    271203 
    272204#else 
     205   !!---------------------------------------------------------------------- 
     206   !!  Dummy module :                                     No passive tracer 
     207   !!---------------------------------------------------------------------- 
     208CONTAINS 
     209   SUBROUTINE trc_lec                      ! Empty routine    
     210   END SUBROUTINE trc_lec 
     211#endif 
     212 
    273213   !!====================================================================== 
    274    !!  Empty module : No passive tracer 
    275    !!====================================================================== 
    276 CONTAINS 
    277  
    278    SUBROUTINE trc_lec 
    279  
    280    END SUBROUTINE trc_lec 
    281  
    282 #endif 
    283  
    284214END MODULE  trclec 
Note: See TracChangeset for help on using the changeset viewer.