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 1601 for trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90 – NEMO

Ignore:
Timestamp:
2009-08-11T12:09:19+02:00 (15 years ago)
Author:
ctlod
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r1152 r1601  
    44   !! Ocean physics:  lateral viscosity coefficient  
    55   !!===================================================================== 
     6   !! History :  OPA  ! 1997-07  (G. Madec)  multi dimensional coefficients 
     7   !!   NEMO     1.0  ! 2002-09  (G. Madec)  F90: Free form and module 
     8   !!---------------------------------------------------------------------- 
    69 
    710   !!---------------------------------------------------------------------- 
     
    1114   !!   ldf_dyn_c1d   : 1D eddy viscosity coefficient initialization 
    1215   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1416   USE oce             ! ocean dynamics and tracers    
    1517   USE dom_oce         ! ocean space and time domain  
     
    1719   USE phycst          ! physical constants 
    1820   USE ldfslp          ! ??? 
     21   USE ioipsl 
    1922   USE in_out_manager  ! I/O manager 
    2023   USE lib_mpp         ! distribued memory computing library 
     
    2427   PRIVATE 
    2528 
    26    !! *  Routine accessibility 
    27    PUBLIC ldf_dyn_init   ! called by opa.F90 
     29   PUBLIC   ldf_dyn_init   ! called by opa.F90 
    2830 
    2931  INTERFACE ldf_zpf 
     
    3436#  include "domzgr_substitute.h90" 
    3537   !!---------------------------------------------------------------------- 
    36    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     38   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    3739   !! $Id$  
    38    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     40   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    3941   !!---------------------------------------------------------------------- 
    4042 
     
    4850      !! 
    4951      !! ** Method  :   
    50       !!      Eddy viscosity coefficients: 
    51       !!         default option   : constant coef. ahm0 (namelist) 
    52       !!        'key_dynldf_c1d': depth dependent coef. defined in  
    53       !!                        in ldf_dyn_c1d routine 
    54       !!        'key_dynldf_c2d': latitude and longitude dependent coef. 
    55       !!                        defined in ldf_dyn_c2d routine 
    56       !!        'key_dynldf_c3d': latitude, longitude, depth dependent coef. 
    57       !!                        defined in ldf_dyn_c3d routine 
     52      !!      -  default option : ahm = constant coef. = rn_ahm_0 (namelist) 
     53      !!      - 'key_dynldf_c1d': ahm = F(depth)                     see ldf_dyn_c1d.h90 
     54      !!      - 'key_dynldf_c2d': ahm = F(latitude,longitude)        see ldf_dyn_c2d.h90 
     55      !!      - 'key_dynldf_c3d': ahm = F(latitude,longitude,depth)  see ldf_dyn_c3d.h90 
     56      !! 
    5857      !!      N.B. User defined include files.  By default, 3d and 2d coef. 
    5958      !!      are set to a constant value given in the namelist and the 1d 
     
    6160      !!      profile. 
    6261      !! 
    63       !! Reference : 
    64       !!      Madec, G. and M. Imbard, 1996, A global ocean mesh to overcome 
    65       !!      the North Pole singularity, Climate Dynamics, 12, 381-388. 
    66       !! 
    67       !! History : 
    68       !!        !  07-97  (G. Madec)  from inimix.F split in 2 routines 
    69       !!        !  08-97  (G. Madec)  multi dimensional coefficients 
    70       !!   8.5  !  02-09  (G. Madec)  F90: Free form and module 
    71       !!---------------------------------------------------------------------- 
    72       !! * Modules used 
    73       USE ioipsl 
    74  
    75       !! * Local declarations 
     62      !! Reference :   Madec, G. and M. Imbard, 1996: Climate Dynamics, 12, 381-388. 
     63      !!---------------------------------------------------------------------- 
    7664      INTEGER ::   ioptio         ! ??? 
    7765      LOGICAL :: ll_print = .FALSE.    ! Logical flag for printing viscosity coef. 
    78  
    79         
    80       NAMELIST/nam_dynldf/ ln_dynldf_lap  , ln_dynldf_bilap,                & 
    81          &                 ln_dynldf_level, ln_dynldf_hor, ln_dynldf_iso,   & 
    82          &                 ahm0, ahmb0 
    83       !!---------------------------------------------------------------------- 
    84  
    85  
    86       ! Define the lateral physics parameters 
    87       ! ====================================== 
    88      
    89       ! Read Namelist nam_dynldf : Lateral physics 
    90       REWIND( numnam ) 
    91       READ  ( numnam, nam_dynldf ) 
    92  
    93       ! Parameter print 
    94       IF(lwp) THEN 
     66      !!  
     67      NAMELIST/namdyn_ldf/ ln_dynldf_lap  , ln_dynldf_bilap,                  & 
     68         &                 ln_dynldf_level, ln_dynldf_hor  , ln_dynldf_iso,   & 
     69         &                 rn_ahm_0       , rn_ahmb_0 
     70      !!---------------------------------------------------------------------- 
     71 
     72      REWIND( numnam )                  ! Read Namelist namdyn_ldf : Lateral physics 
     73      READ  ( numnam, namdyn_ldf ) 
     74 
     75      IF(lwp) THEN                      ! Parameter print 
    9576         WRITE(numout,*) 
    9677         WRITE(numout,*) 'ldf_dyn : lateral momentum physics' 
    9778         WRITE(numout,*) '~~~~~~~' 
    98          WRITE(numout,*) '          Namelist nam_dynldf : set lateral mixing parameters' 
    99          WRITE(numout,*) '             laplacian operator          ln_dynldf_lap   = ', ln_dynldf_lap 
    100          WRITE(numout,*) '             bilaplacian operator        ln_dynldf_bilap = ', ln_dynldf_bilap 
    101          WRITE(numout,*) '             iso-level                   ln_dynldf_level = ', ln_dynldf_level 
    102          WRITE(numout,*) '             horizontal (geopotential)   ln_dynldf_hor   = ', ln_dynldf_hor 
    103          WRITE(numout,*) '             iso-neutral                 ln_dynldf_iso   = ', ln_dynldf_iso 
    104          WRITE(numout,*) '             horizontal eddy viscosity            ahm0   = ', ahm0 
    105          WRITE(numout,*) '             background viscosity                 ahmb0  = ', ahmb0 
    106       ENDIF 
     79         WRITE(numout,*) '   Namelist nam_dynldf : set lateral mixing parameters' 
     80         WRITE(numout,*) '      laplacian operator          ln_dynldf_lap   = ', ln_dynldf_lap 
     81         WRITE(numout,*) '      bilaplacian operator        ln_dynldf_bilap = ', ln_dynldf_bilap 
     82         WRITE(numout,*) '      iso-level                   ln_dynldf_level = ', ln_dynldf_level 
     83         WRITE(numout,*) '      horizontal (geopotential)   ln_dynldf_hor   = ', ln_dynldf_hor 
     84         WRITE(numout,*) '      iso-neutral                 ln_dynldf_iso   = ', ln_dynldf_iso 
     85         WRITE(numout,*) '      horizontal eddy viscosity   rn_ahm_0        = ', rn_ahm_0 
     86         WRITE(numout,*) '      background viscosity        rn_ahmb_0       = ', rn_ahmb_0 
     87      ENDIF 
     88 
     89      ahm0  = rn_ahm_0                  ! OLD namelist variables defined from DOCTOR namelist variables 
     90      ahmb0 = rn_ahmb_0 
    10791 
    10892      ! ... check of lateral diffusive operator on tracers 
     
    11296      ioptio = 0 
    11397#if defined key_dynldf_c3d 
    114       IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( latitude, longitude, depth)' 
     98      IF(lwp) WRITE(numout,*) '   momentum mixing coef. = F( latitude, longitude, depth)' 
    11599      ioptio = ioptio+1 
    116100#endif 
    117101#if defined key_dynldf_c2d 
    118       IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( latitude, longitude)' 
     102      IF(lwp) WRITE(numout,*) '   momentum mixing coef. = F( latitude, longitude)' 
    119103      ioptio = ioptio+1 
    120104#endif 
    121105#if defined key_dynldf_c1d 
    122       IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( depth )' 
     106      IF(lwp) WRITE(numout,*) '   momentum mixing coef. = F( depth )' 
    123107      ioptio = ioptio+1 
    124       IF( ln_sco ) CALL ctl_stop( '          key_dynldf_c1d cannot be used in s-coordinate (ln_sco)' ) 
     108      IF( ln_sco ) CALL ctl_stop( 'key_dynldf_c1d cannot be used in s-coordinate (ln_sco)' ) 
    125109#endif 
    126110      IF( ioptio == 0 ) THEN 
    127           IF(lwp) WRITE(numout,*) '          momentum mixing coef. = constant  (default option)' 
     111          IF(lwp) WRITE(numout,*) '   momentum mixing coef. = constant  (default option)' 
    128112        ELSEIF( ioptio > 1 ) THEN 
    129            CALL ctl_stop( '          use only one of the following keys:',   & 
    130                 &         ' key_dynldf_c3d, key_dynldf_c2d, key_dynldf_c1d' ) 
     113           CALL ctl_stop( 'use only one of the following keys: key_dynldf_c3d, key_dynldf_c2d, key_dynldf_c1d' ) 
    131114      ENDIF 
    132115 
    133116 
    134117      IF( ln_dynldf_bilap ) THEN 
    135          IF(lwp) WRITE(numout,*) '          biharmonic momentum diffusion' 
    136          IF( ahm0 > 0 .AND. .NOT. lk_esopa )   & 
    137               &   CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be negative' ) 
     118         IF(lwp) WRITE(numout,*) '   biharmonic momentum diffusion' 
     119         IF( ahm0 > 0 .AND. .NOT. lk_esopa )   CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be negative' ) 
    138120      ELSE 
    139          IF(lwp) WRITE(numout,*) '          harmonic momentum diff. (default)' 
    140          IF( ahm0 < 0 .AND. .NOT. lk_esopa ) & 
    141               &   CALL ctl_stop( '          The horizontal viscosity coef. ahm0 must be positive' ) 
     121         IF(lwp) WRITE(numout,*) '   harmonic momentum diff. (default)' 
     122         IF( ahm0 < 0 .AND. .NOT. lk_esopa )   CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be positive' ) 
    142123      ENDIF 
    143124 
     
    145126      ! Lateral eddy viscosity 
    146127      ! ====================== 
    147  
    148128#if defined key_dynldf_c3d 
    149129      CALL ldf_dyn_c3d( ll_print )   ! ahm = 3D coef. = F( longitude, latitude, depth ) 
     
    159139      IF(lwp) WRITE(numout,*) '        ahm1 = ahm2 = ahm0 =  ',ahm0 
    160140#endif 
    161  
     141      ! 
    162142   END SUBROUTINE ldf_dyn_init 
    163143 
     
    178158      !! 
    179159      !! ** Method  :   1D eddy viscosity coefficients ( depth ) 
    180       !! 
    181       !!---------------------------------------------------------------------- 
    182       !! * Arguments 
    183       LOGICAL , INTENT (in   ) :: ld_print   ! If true, output arrays on numout 
    184       REAL(wp), INTENT (in   ) ::   & 
    185           pdam,     &  ! depth of the inflection point 
    186           pwam,     &  ! width of inflection 
    187           pbot         ! battom value (0<pbot<= 1) 
    188       REAL(wp), INTENT (in   ), DIMENSION(jpk) ::   & 
    189           pdep         ! depth of the gridpoint (T, U, V, F) 
    190       REAL(wp), INTENT (inout), DIMENSION(jpk) ::   & 
    191           pah          ! adimensional vertical profile 
    192  
    193       !! * Local variables 
     160      !!---------------------------------------------------------------------- 
     161      LOGICAL , INTENT(in   )                 ::   ld_print   ! If true, output arrays on numout 
     162      REAL(wp), INTENT(in   )                 ::   pdam       ! depth of the inflection point 
     163      REAL(wp), INTENT(in   )                 ::   pwam       ! width of inflection 
     164      REAL(wp), INTENT(in   )                 ::   pbot       ! bottom value (0<pbot<= 1) 
     165      REAL(wp), INTENT(in   ), DIMENSION(jpk) ::   pdep       ! depth of the gridpoint (T, U, V, F) 
     166      REAL(wp), INTENT(inout), DIMENSION(jpk) ::   pah        ! adimensional vertical profile 
     167      !! 
    194168      INTEGER  ::   jk           ! dummy loop indices 
    195169      REAL(wp) ::   zm00, zm01, zmhb, zmhs       ! temporary scalars 
     
    205179      END DO 
    206180 
    207       ! Control print 
    208       IF(lwp .AND. ld_print ) THEN 
     181      IF(lwp .AND. ld_print ) THEN      ! Control print 
    209182         WRITE(numout,*) 
    210183         WRITE(numout,*) '         ahm profile : ' 
     
    215188         END DO 
    216189      ENDIF 
    217  
     190      ! 
    218191   END SUBROUTINE ldf_zpf_1d 
    219192 
     
    226199      !! 
    227200      !! ** Method  :   1D eddy viscosity coefficients ( depth ) 
    228       !! 
    229       !!---------------------------------------------------------------------- 
    230       !! * Arguments 
    231       LOGICAL , INTENT (in   ) :: ld_print   ! If true, output arrays on numout 
    232       REAL(wp), INTENT (in   ) ::   & 
    233           pdam,     &  ! depth of the inflection point 
    234           pwam,     &  ! width of inflection 
    235           pbot         ! battom value (0<pbot<= 1) 
    236       REAL(wp), INTENT (in   ), DIMENSION(jpk) ::   & 
    237           pdep         ! depth of the gridpoint (T, U, V, F) 
    238       REAL(wp), INTENT (inout), DIMENSION(jpi,jpj,jpk) ::   & 
    239           pah          ! adimensional vertical profile 
    240  
    241       !! * Local variables 
     201      !!---------------------------------------------------------------------- 
     202      LOGICAL , INTENT(in   )                         ::   ld_print   ! If true, output arrays on numout 
     203      REAL(wp), INTENT(in   )                         ::   pdam       ! depth of the inflection point 
     204      REAL(wp), INTENT(in   )                         ::   pwam       ! width of inflection 
     205      REAL(wp), INTENT(in   )                         ::   pbot       ! bottom value (0<pbot<= 1) 
     206      REAL(wp), INTENT(in   ), DIMENSION        (jpk) ::   pdep       ! depth of the gridpoint (T, U, V, F) 
     207      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pah        ! adimensional vertical profile 
     208      !! 
    242209      INTEGER  ::   jk           ! dummy loop indices 
    243210      REAL(wp) ::   zm00, zm01, zmhb, zmhs, zcf  ! temporary scalars 
     
    254221      END DO 
    255222 
    256       ! Control print 
    257       IF(lwp .AND. ld_print ) THEN 
     223      IF(lwp .AND. ld_print ) THEN      ! Control print 
    258224         WRITE(numout,*) 
    259225         WRITE(numout,*) '         ahm profile : ' 
     
    264230         END DO 
    265231      ENDIF 
    266  
     232      ! 
    267233   END SUBROUTINE ldf_zpf_1d_3d 
    268234 
     
    275241      !! 
    276242      !! ** Method  :   3D for partial step or s-coordinate 
    277       !! 
    278       !!---------------------------------------------------------------------- 
    279       !! * Arguments 
    280       LOGICAL , INTENT (in   ) :: ld_print   ! If true, output arrays on numout 
    281       REAL(wp), INTENT (in   ) ::   & 
    282           pdam,     &  ! depth of the inflection point 
    283           pwam,     &  ! width of inflection 
    284           pbot         ! reduction factor (surface value / bottom value) 
    285       REAL(wp), INTENT (in   ), DIMENSION(jpi,jpj,jpk) ::   & 
    286           pdep         ! dep of the gridpoint (T, U, V, F) 
    287       REAL(wp), INTENT (inout), DIMENSION(jpi,jpj,jpk) ::   & 
    288           pah          ! adimensional vertical profile 
    289  
    290       !! * Local variables 
     243      !!---------------------------------------------------------------------- 
     244      LOGICAL , INTENT(in   )                         ::   ld_print   ! If true, output arrays on numout 
     245      REAL(wp), INTENT(in   )                         ::   pdam       ! depth of the inflection point 
     246      REAL(wp), INTENT(in   )                         ::   pwam       ! width of inflection 
     247      REAL(wp), INTENT(in   )                         ::   pbot       ! bottom value (0<pbot<= 1) 
     248      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk) ::   pdep       ! dep of the gridpoint (T, U, V, F) 
     249      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pah        ! adimensional vertical profile 
     250      !! 
    291251      INTEGER  ::   jk           ! dummy loop indices 
    292252      REAL(wp) ::   zm00, zm01, zmhb, zmhs       ! temporary scalars 
     
    302262      END DO 
    303263 
    304       ! Control print 
    305       IF(lwp .AND. ld_print ) THEN 
     264      IF(lwp .AND. ld_print ) THEN      ! Control print 
    306265         WRITE(numout,*) 
    307266         WRITE(numout,*) '         ahm profile : ' 
     
    312271         END DO 
    313272      ENDIF 
    314  
     273      ! 
    315274   END SUBROUTINE ldf_zpf_3d 
     275 
    316276   !!====================================================================== 
    317277END MODULE ldfdyn 
Note: See TracChangeset for help on using the changeset viewer.