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 5829 – NEMO

Changeset 5829


Ignore:
Timestamp:
2015-10-24T15:03:08+02:00 (8 years ago)
Author:
gm
Message:

#1593: Simplification LDF-ADV: remove key_noslip_accurate & minor changes

Location:
branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r5770 r5829  
    260260   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4) 
    261261 
    262 #if defined key_noslip_accurate 
    263    INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:  )  :: npcoa              !: ??? 
    264    INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  :: nicoa, njcoa       !: ??? 
    265 #endif 
    266  
    267262   !!---------------------------------------------------------------------- 
    268263   !! calendar variables 
     
    398393 
    399394      ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) ) 
    400  
    401 #if defined key_noslip_accurate 
    402       ALLOCATE( npcoa(4,jpk), nicoa(2*(jpi+jpj),4,jpk), njcoa(2*(jpi+jpj),4,jpk), STAT=ierr(13) ) 
    403 #endif 
    404395      ! 
    405396      dom_oce_alloc = MAXVAL(ierr) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r5782 r5829  
    2222   !!---------------------------------------------------------------------- 
    2323   !!   dom_msk        : compute land/ocean mask 
    24    !!   dom_msk_nsa    : update land/ocean mask when no-slip accurate option is used. 
    2524   !!---------------------------------------------------------------------- 
    2625   USE oce             ! ocean dynamics and tracers 
     
    3736 
    3837   PUBLIC   dom_msk         ! routine called by inidom.F90 
    39    PUBLIC   dom_msk_alloc   ! routine called by nemogcm.F90 
    4038 
    4139   !                            !!* Namelist namlbc : lateral boundary condition * 
     
    4341   LOGICAL, PUBLIC :: ln_vorlat  !  consistency of vorticity boundary condition  
    4442   !                                            with analytical eqs. 
    45  
    46  
    47    INTEGER, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  icoord ! Workspace for dom_msk_nsa() 
    4843 
    4944   !! * Substitutions 
     
    5550   !!---------------------------------------------------------------------- 
    5651CONTAINS 
    57     
    58    INTEGER FUNCTION dom_msk_alloc() 
    59       !!--------------------------------------------------------------------- 
    60       !!                 ***  FUNCTION dom_msk_alloc  *** 
    61       !!--------------------------------------------------------------------- 
    62       dom_msk_alloc = 0 
    63 #if defined key_noslip_accurate 
    64       ALLOCATE(icoord(jpi*jpj*jpk,3), STAT=dom_msk_alloc) 
    65 #endif 
    66       IF( dom_msk_alloc /= 0 )   CALL ctl_warn('dom_msk_alloc: failed to allocate icoord array') 
    67       ! 
    68    END FUNCTION dom_msk_alloc 
    69  
    7052 
    7153   SUBROUTINE dom_msk 
     
    319301      ENDIF 
    320302 
    321  
    322       ! mask for second order calculation of vorticity 
    323       ! ---------------------------------------------- 
    324       CALL dom_msk_nsa 
    325  
    326        
    327303      ! Lateral boundary conditions on velocity (modify fmask) 
    328304      ! ---------------------------------------      
     
    478454      ! 
    479455   END SUBROUTINE dom_msk 
    480  
    481 #if defined key_noslip_accurate 
    482    !!---------------------------------------------------------------------- 
    483    !!   'key_noslip_accurate' :         accurate no-slip boundary condition 
    484    !!---------------------------------------------------------------------- 
    485     
    486    SUBROUTINE dom_msk_nsa 
    487       !!--------------------------------------------------------------------- 
    488       !!                 ***  ROUTINE dom_msk_nsa  *** 
    489       !!  
    490       !! ** Purpose : 
    491       !! 
    492       !! ** Method  : 
    493       !! 
    494       !! ** Action : 
    495       !!---------------------------------------------------------------------- 
    496       INTEGER  ::   ji, jj, jk, jl      ! dummy loop indices 
    497       INTEGER  ::   ine, inw, ins, inn, itest, ierror, iind, ijnd 
    498       REAL(wp) ::   zaa 
    499       !!--------------------------------------------------------------------- 
    500       ! 
    501       IF( nn_timing == 1 )  CALL timing_start('dom_msk_nsa') 
    502       ! 
    503       IF(lwp) WRITE(numout,*) 
    504       IF(lwp) WRITE(numout,*) 'dom_msk_nsa : noslip accurate boundary condition' 
    505       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   using Schchepetkin and O Brian scheme' 
    506       IF( lk_mpp )   CALL ctl_stop( ' mpp version is not yet implemented' ) 
    507  
    508       ! mask for second order calculation of vorticity 
    509       ! ---------------------------------------------- 
    510       ! noslip boundary condition: fmask=1  at convex corner, store 
    511       ! index of straight coast meshes ( 'west', refering to a coast, 
    512       ! means west of the ocean, aso) 
    513        
    514       DO jk = 1, jpk 
    515          DO jl = 1, 4 
    516             npcoa(jl,jk) = 0 
    517             DO ji = 1, 2*(jpi+jpj) 
    518                nicoa(ji,jl,jk) = 0 
    519                njcoa(ji,jl,jk) = 0 
    520             END DO 
    521          END DO 
    522       END DO 
    523        
    524       IF( jperio == 2 ) THEN 
    525          WRITE(numout,*) ' ' 
    526          WRITE(numout,*) ' symetric boundary conditions need special' 
    527          WRITE(numout,*) ' treatment not implemented. we stop.' 
    528          STOP 
    529       ENDIF 
    530        
    531       ! convex corners 
    532        
    533       DO jk = 1, jpkm1 
    534          DO jj = 1, jpjm1 
    535             DO ji = 1, jpim1 
    536                zaa = tmask(ji  ,jj,jk) + tmask(ji  ,jj+1,jk)   & 
    537                   &+ tmask(ji+1,jj,jk) + tmask(ji+1,jj+1,jk) 
    538                IF( ABS(zaa-3._wp) <= 0.1_wp )   fmask(ji,jj,jk) = 1._wp 
    539             END DO 
    540          END DO 
    541       END DO 
    542  
    543       ! north-south straight coast 
    544  
    545       DO jk = 1, jpkm1 
    546          inw = 0 
    547          ine = 0 
    548          DO jj = 2, jpjm1 
    549             DO ji = 2, jpim1 
    550                zaa = tmask(ji+1,jj,jk) + tmask(ji+1,jj+1,jk) 
    551                IF( ABS(zaa-2._wp) <= 0.1_wp .AND. fmask(ji,jj,jk) == 0._wp ) THEN 
    552                   inw = inw + 1 
    553                   nicoa(inw,1,jk) = ji 
    554                   njcoa(inw,1,jk) = jj 
    555                   IF( nprint == 1 ) WRITE(numout,*) ' west  : ', jk, inw, ji, jj 
    556                ENDIF 
    557                zaa = tmask(ji,jj,jk) + tmask(ji,jj+1,jk) 
    558                IF( ABS(zaa-2._wp) <= 0.1_wp .AND. fmask(ji,jj,jk) == 0._wp ) THEN 
    559                   ine = ine + 1 
    560                   nicoa(ine,2,jk) = ji 
    561                   njcoa(ine,2,jk) = jj 
    562                   IF( nprint == 1 ) WRITE(numout,*) ' east  : ', jk, ine, ji, jj 
    563                ENDIF 
    564             END DO 
    565          END DO 
    566          npcoa(1,jk) = inw 
    567          npcoa(2,jk) = ine 
    568       END DO 
    569  
    570       ! west-east straight coast 
    571  
    572       DO jk = 1, jpkm1 
    573          ins = 0 
    574          inn = 0 
    575          DO jj = 2, jpjm1 
    576             DO ji =2, jpim1 
    577                zaa = tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) 
    578                IF( ABS(zaa-2._wp) <= 0.1_wp .AND. fmask(ji,jj,jk) == 0._wp ) THEN 
    579                   ins = ins + 1 
    580                   nicoa(ins,3,jk) = ji 
    581                   njcoa(ins,3,jk) = jj 
    582                   IF( nprint == 1 ) WRITE(numout,*) ' south : ', jk, ins, ji, jj 
    583                ENDIF 
    584                zaa = tmask(ji+1,jj,jk) + tmask(ji,jj,jk) 
    585                IF( ABS(zaa-2._wp) <= 0.1_wp .AND. fmask(ji,jj,jk) == 0._wp ) THEN 
    586                   inn = inn + 1 
    587                   nicoa(inn,4,jk) = ji 
    588                   njcoa(inn,4,jk) = jj 
    589                   IF( nprint == 1 ) WRITE(numout,*) ' north : ', jk, inn, ji, jj 
    590                ENDIF 
    591             END DO 
    592          END DO 
    593          npcoa(3,jk) = ins 
    594          npcoa(4,jk) = inn 
    595       END DO 
    596  
    597       itest = 2 * ( jpi + jpj ) 
    598       DO jk = 1, jpk 
    599          IF( npcoa(1,jk) > itest .OR. npcoa(2,jk) > itest .OR.   & 
    600              npcoa(3,jk) > itest .OR. npcoa(4,jk) > itest ) THEN 
    601              
    602             WRITE(ctmp1,*) ' level jk = ',jk 
    603             WRITE(ctmp2,*) ' straight coast index arraies are too small.:' 
    604             WRITE(ctmp3,*) ' npe, npw, nps, npn = ', npcoa(1,jk), npcoa(2,jk),   & 
    605                 &                                     npcoa(3,jk), npcoa(4,jk) 
    606             WRITE(ctmp4,*) ' 2*(jpi+jpj) = ',itest,'. we stop.' 
    607             CALL ctl_stop( ctmp1, ctmp2, ctmp3, ctmp4 ) 
    608         ENDIF 
    609       END DO 
    610  
    611       ierror = 0 
    612       iind = 0 
    613       ijnd = 0 
    614       IF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6 )   iind = 2 
    615       IF( nperio == 3 .OR. nperio == 4 .OR. nperio == 5 .OR. nperio == 6 )   ijnd = 2 
    616       DO jk = 1, jpk 
    617          DO jl = 1, npcoa(1,jk) 
    618             IF( nicoa(jl,1,jk)+3 > jpi+iind ) THEN 
    619                ierror = ierror+1 
    620                icoord(ierror,1) = nicoa(jl,1,jk) 
    621                icoord(ierror,2) = njcoa(jl,1,jk) 
    622                icoord(ierror,3) = jk 
    623             ENDIF 
    624          END DO 
    625          DO jl = 1, npcoa(2,jk) 
    626             IF(nicoa(jl,2,jk)-2 < 1-iind ) THEN 
    627                ierror = ierror + 1 
    628                icoord(ierror,1) = nicoa(jl,2,jk) 
    629                icoord(ierror,2) = njcoa(jl,2,jk) 
    630                icoord(ierror,3) = jk 
    631             ENDIF 
    632          END DO 
    633          DO jl = 1, npcoa(3,jk) 
    634             IF( njcoa(jl,3,jk)+3 > jpj+ijnd ) THEN 
    635                ierror = ierror + 1 
    636                icoord(ierror,1) = nicoa(jl,3,jk) 
    637                icoord(ierror,2) = njcoa(jl,3,jk) 
    638                icoord(ierror,3) = jk 
    639             ENDIF 
    640          END DO 
    641          DO jl = 1, npcoa(4,jk) 
    642             IF( njcoa(jl,4,jk)-2 < 1) THEN 
    643                ierror=ierror + 1 
    644                icoord(ierror,1) = nicoa(jl,4,jk) 
    645                icoord(ierror,2) = njcoa(jl,4,jk) 
    646                icoord(ierror,3) = jk 
    647             ENDIF 
    648          END DO 
    649       END DO 
    650        
    651       IF( ierror > 0 ) THEN 
    652          IF(lwp) WRITE(numout,*) 
    653          IF(lwp) WRITE(numout,*) '              Problem on lateral conditions' 
    654          IF(lwp) WRITE(numout,*) '                 Bad marking off at points:' 
    655          DO jl = 1, ierror 
    656             IF(lwp) WRITE(numout,*) 'Level:',icoord(jl,3),   & 
    657                &                  '  Point(',icoord(jl,1),',',icoord(jl,2),')' 
    658          END DO 
    659          CALL ctl_stop( 'We stop...' ) 
    660       ENDIF 
    661       ! 
    662       IF( nn_timing == 1 )  CALL timing_stop('dom_msk_nsa') 
    663       ! 
    664    END SUBROUTINE dom_msk_nsa 
    665  
    666 #else 
    667    !!---------------------------------------------------------------------- 
    668    !!   Default option :                                      Empty routine 
    669    !!---------------------------------------------------------------------- 
    670    SUBROUTINE dom_msk_nsa        
    671    END SUBROUTINE dom_msk_nsa 
    672 #endif 
    673456    
    674457   !!====================================================================== 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r5737 r5829  
    688688      !!                - vertical interpolation: simple averaging 
    689689      !!---------------------------------------------------------------------- 
    690       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in    ) ::  pe3_in     ! input e3 to be interpolated 
    691       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout ) ::  pe3_out    ! output interpolated e3 
    692       CHARACTER(LEN=*), INTENT( in )                    ::  pout       ! grid point of out scale factors 
    693       !                                                                !   =  'U', 'V', 'W, 'F', 'UW' or 'VW' 
     690      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::  pe3_in    ! input e3 to be interpolated 
     691      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::  pe3_out   ! output interpolated e3 
     692      CHARACTER(LEN=*)                , INTENT(in   ) ::  pout      ! grid point of out scale factors 
     693      !                                                             !   =  'U', 'V', 'W, 'F', 'UW' or 'VW' 
    694694      ! 
    695695      INTEGER ::   ji, jj, jk                                          ! dummy loop indices 
    696       LOGICAL ::   l_is_orca                                           ! local logical 
    697       !!---------------------------------------------------------------------- 
     696      !!---------------------------------------------------------------------- 
     697      ! 
    698698      IF( nn_timing == 1 )  CALL timing_start('dom_vvl_interpol') 
    699          ! 
    700       l_is_orca = .FALSE. 
    701       IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) l_is_orca = .TRUE.      ! ORCA R2 configuration - will need to correct some locations 
    702  
    703       SELECT CASE ( pout ) 
    704          !               ! ------------------------------------- ! 
    705       CASE( 'U' )        ! interpolation from T-point to U-point ! 
    706          !               ! ------------------------------------- ! 
    707          ! horizontal surface weighted interpolation 
     699      ! 
     700      SELECT CASE ( pout )    !==  type of interpolation  ==! 
     701         ! 
     702      CASE( 'U' )                   !* from T- to U-point : hor. surface weighted mean 
    708703         DO jk = 1, jpk 
    709704            DO jj = 1, jpjm1 
     
    715710            END DO 
    716711         END DO 
    717          ! 
    718          ! boundary conditions 
    719712         CALL lbc_lnk( pe3_out(:,:,:), 'U', 1._wp ) 
    720713         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    721          !               ! ------------------------------------- ! 
    722       CASE( 'V' )        ! interpolation from T-point to V-point ! 
    723          !               ! ------------------------------------- ! 
    724          ! horizontal surface weighted interpolation 
     714         ! 
     715      CASE( 'V' )                   !* from T- to V-point : hor. surface weighted mean 
    725716         DO jk = 1, jpk 
    726717            DO jj = 1, jpjm1 
     
    732723            END DO 
    733724         END DO 
    734          ! 
    735          ! boundary conditions 
    736725         CALL lbc_lnk( pe3_out(:,:,:), 'V', 1._wp ) 
    737726         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    738          !               ! ------------------------------------- ! 
    739       CASE( 'F' )        ! interpolation from U-point to F-point ! 
    740          !               ! ------------------------------------- ! 
    741          ! horizontal surface weighted interpolation 
     727         ! 
     728      CASE( 'F' )                   !* from U-point to F-point : hor. surface weighted mean 
    742729         DO jk = 1, jpk 
    743730            DO jj = 1, jpjm1 
     
    749736            END DO 
    750737         END DO 
    751          ! 
    752          ! boundary conditions 
    753738         CALL lbc_lnk( pe3_out(:,:,:), 'F', 1._wp ) 
    754739         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    755          !               ! ------------------------------------- ! 
    756       CASE( 'W' )        ! interpolation from T-point to W-point ! 
    757          !               ! ------------------------------------- ! 
    758          ! vertical simple interpolation 
     740         ! 
     741      CASE( 'W' )                   !* from T- to W-point : vertical simple mean 
     742         ! 
    759743         pe3_out(:,:,1) = e3w_0(:,:,1) + pe3_in(:,:,1) - e3t_0(:,:,1) 
    760          ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
     744         ! - ML - The use of mask in this formulea enables the special treatment of the last w-point without indirect adressing 
     745!!gm BUG? use here wmask in case of ISF ?  to be checked 
    761746         DO jk = 2, jpk 
    762747            pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1.0_wp - 0.5_wp * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )   & 
    763748               &                            +            0.5_wp * tmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
    764749         END DO 
    765          !               ! -------------------------------------- ! 
    766       CASE( 'UW' )       ! interpolation from U-point to UW-point ! 
    767          !               ! -------------------------------------- ! 
    768          ! vertical simple interpolation 
     750         ! 
     751      CASE( 'UW' )                  !* from U- to UW-point : vertical simple mean 
     752         ! 
    769753         pe3_out(:,:,1) = e3uw_0(:,:,1) + pe3_in(:,:,1) - e3u_0(:,:,1) 
    770754         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
     755!!gm BUG? use here wumask in case of ISF ?  to be checked 
    771756         DO jk = 2, jpk 
    772757            pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )   & 
    773758               &                             +            0.5_wp * umask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
    774759         END DO 
    775          !               ! -------------------------------------- ! 
    776       CASE( 'VW' )       ! interpolation from V-point to VW-point ! 
    777          !               ! -------------------------------------- ! 
    778          ! vertical simple interpolation 
     760         ! 
     761      CASE( 'VW' )                  !* from V- to VW-point : vertical simple mean 
     762         ! 
    779763         pe3_out(:,:,1) = e3vw_0(:,:,1) + pe3_in(:,:,1) - e3v_0(:,:,1) 
    780764         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
     765!!gm BUG? use here wvmask in case of ISF ?  to be checked 
    781766         DO jk = 2, jpk 
    782767            pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )   & 
     
    785770      END SELECT 
    786771      ! 
    787  
    788772      IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_interpol') 
    789  
     773      ! 
    790774   END SUBROUTINE dom_vvl_interpol 
     775 
    791776 
    792777   SUBROUTINE dom_vvl_rst( kt, cdrw ) 
     
    802787      !!                they are set to 0. 
    803788      !!---------------------------------------------------------------------- 
    804       !! * Arguments 
    805789      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
    806790      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
    807       !! * Local declarations 
     791      ! 
    808792      INTEGER ::   jk 
    809793      INTEGER ::   id1, id2, id3, id4, id5     ! local integers 
     
    900884            END IF 
    901885         ENDIF 
    902  
     886         ! 
    903887      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    904888         !                                   ! =================== 
     
    920904            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    921905         ENDIF 
    922  
    923       ENDIF 
     906         ! 
     907      ENDIF 
     908      ! 
    924909      IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_rst') 
    925  
     910      ! 
    926911   END SUBROUTINE dom_vvl_rst 
    927912 
     
    934919      !!                for vertical coordinate 
    935920      !!---------------------------------------------------------------------- 
    936       INTEGER ::   ioptio 
    937       INTEGER ::   ios 
    938  
     921      INTEGER ::   ioptio, ios 
     922      !! 
    939923      NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, ln_vvl_ztilde_as_zstar, & 
    940                       & ln_vvl_zstar_at_eqtor      , rn_ahe3     , rn_rst_e3t            , & 
    941                       & rn_lf_cutoff               , rn_zdef_max , ln_vvl_dbg                ! not yet implemented: ln_vvl_kepe 
     924         &              ln_vvl_zstar_at_eqtor      , rn_ahe3     , rn_rst_e3t            , & 
     925         &              rn_lf_cutoff               , rn_zdef_max , ln_vvl_dbg                ! not yet implemented: ln_vvl_kepe 
    942926      !!----------------------------------------------------------------------  
    943  
     927      ! 
    944928      REWIND( numnam_ref )              ! Namelist nam_vvl in reference namelist :  
    945929      READ  ( numnam_ref, nam_vvl, IOSTAT = ios, ERR = 901) 
    946930901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_vvl in reference namelist', lwp ) 
    947  
     931      ! 
    948932      REWIND( numnam_cfg )              ! Namelist nam_vvl in configuration namelist : Parameters of the run 
    949933      READ  ( numnam_cfg, nam_vvl, IOSTAT = ios, ERR = 902 ) 
    950934902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist', lwp ) 
    951935      IF(lwm) WRITE ( numond, nam_vvl ) 
    952  
     936      ! 
    953937      IF(lwp) THEN                    ! Namelist print 
    954938         WRITE(numout,*) 
     
    983967         WRITE(numout,*) '                                         ln_vvl_dbg     = ', ln_vvl_dbg 
    984968      ENDIF 
    985  
     969      ! 
    986970      ioptio = 0                      ! Parameter control 
    987       IF( ln_vvl_ztilde_as_zstar ) ln_vvl_ztilde = .true. 
    988       IF( ln_vvl_zstar           )        ioptio = ioptio + 1 
    989       IF( ln_vvl_ztilde          )        ioptio = ioptio + 1 
    990       IF( ln_vvl_layer           )        ioptio = ioptio + 1 
    991  
     971      IF( ln_vvl_ztilde_as_zstar )   ln_vvl_ztilde = .true. 
     972      IF( ln_vvl_zstar           )   ioptio = ioptio + 1 
     973      IF( ln_vvl_ztilde          )   ioptio = ioptio + 1 
     974      IF( ln_vvl_layer           )   ioptio = ioptio + 1 
     975      ! 
    992976      IF( ioptio /= 1 )   CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 
    993977      IF( .NOT. ln_vvl_zstar .AND. nn_isf .NE. 0) CALL ctl_stop( 'Only vvl_zstar has been tested with ice shelf cavity' ) 
    994  
     978      ! 
    995979      IF(lwp) THEN                   ! Print the choice 
    996980         WRITE(numout,*) 
     
    1003987         ! IF( .NOT. ln_vvl_kepe ) WRITE(numout,*) '              kinetic to potential energy transfer : option not used' 
    1004988      ENDIF 
    1005  
     989      ! 
    1006990#if defined key_agrif 
    1007991      IF (.NOT.Agrif_Root()) CALL ctl_stop( 'AGRIF not implemented with non-linear free surface (key_vvl)' ) 
    1008992#endif 
    1009  
     993      ! 
    1010994   END SUBROUTINE dom_vvl_ctl 
    1011995 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r5656 r5829  
    37443744      LOGICAL          , INTENT(in   ) ::   ldwp      ! boolean term for print 
    37453745      INTEGER, OPTIONAL, INTENT(in   ) ::   karea     ! proc number 
    3746       !! 
     3746      ! 
    37473747      CHARACTER(len=80) ::   clfile 
    37483748      INTEGER           ::   iost 
    37493749      !!---------------------------------------------------------------------- 
    3750  
     3750      ! 
    37513751      ! adapt filename 
    37523752      ! ---------------- 
     
    37613761      knum=get_unit() 
    37623762#endif 
    3763  
     3763      ! 
    37643764      iost=0 
    37653765      IF( cdacce(1:6) == 'DIRECT' )  THEN 
     
    37943794         STOP 'ctl_opn bad opening' 
    37953795      ENDIF 
    3796  
     3796      ! 
    37973797   END SUBROUTINE ctl_opn 
    37983798 
     3799 
    37993800   SUBROUTINE ctl_nam ( kios, cdnam, ldwp ) 
    38003801      !!---------------------------------------------------------------------- 
     
    38053806      !! ** Method  :   Fortan open 
    38063807      !!---------------------------------------------------------------------- 
    3807       INTEGER          , INTENT(inout) ::   kios      ! IO status after reading the namelist 
    3808       CHARACTER(len=*) , INTENT(in   ) ::   cdnam     ! group name of namelist for which error occurs 
    3809       CHARACTER(len=4)                 ::   clios     ! string to convert iostat in character for print 
    3810       LOGICAL          , INTENT(in   ) ::   ldwp      ! boolean term for print 
    3811       !!---------------------------------------------------------------------- 
    3812  
    3813       !  
    3814       ! ---------------- 
    3815       WRITE (clios, '(I4.0)') kios 
     3808      INTEGER         , INTENT(inout) ::   kios    ! IO status after reading the namelist 
     3809      CHARACTER(len=*), INTENT(in   ) ::   cdnam   ! group name of namelist for which error occurs 
     3810      CHARACTER(len=4)                ::   clios   ! string to convert iostat in character for print 
     3811      LOGICAL         , INTENT(in   ) ::   ldwp    ! boolean term for print 
     3812      !!---------------------------------------------------------------------- 
     3813      ! 
     3814      WRITE (clios, '(I4.0)')   kios 
    38163815      IF( kios < 0 ) THEN          
    3817          CALL ctl_warn( 'W A R N I N G:  end of record or file while reading namelist ' & 
    3818  &           // TRIM(cdnam) // ' iostat = ' // TRIM(clios) ) 
    3819       ENDIF 
    3820  
     3816         CALL ctl_warn( 'end of record or file while reading namelist '  & 
     3817            &           // TRIM(cdnam) // ' iostat = ' // TRIM(clios) ) 
     3818      ENDIF 
     3819      ! 
    38213820      IF( kios > 0 ) THEN 
    3822          CALL ctl_stop( 'E R R O R :   misspelled variable in namelist ' & 
    3823  &           // TRIM(cdnam) // ' iostat = ' // TRIM(clios) ) 
     3821         CALL ctl_stop( 'misspelled variable in namelist '  & 
     3822            &           // TRIM(cdnam) // ' iostat = ' // TRIM(clios) ) 
    38243823      ENDIF 
    38253824      kios = 0 
    38263825      RETURN 
    3827        
     3826      ! 
    38283827   END SUBROUTINE ctl_nam 
     3828 
    38293829 
    38303830   INTEGER FUNCTION get_unit() 
Note: See TracChangeset for help on using the changeset viewer.