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 473 for trunk/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2006-05-11T17:04:37+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_060: SM: IOM + 301 levels + CORE + begining of ctl_stop

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DOM/domzgr.F90

    r454 r473  
    9393      IF( ln_zps ) ioptio = ioptio + 1 
    9494      IF( ln_sco ) ioptio = ioptio + 1 
    95       IF ( ioptio /= 1 ) THEN 
    96           IF(lwp) WRITE(numout,cform_err) 
    97           IF(lwp) WRITE(numout,*) ' none or several vertical coordinate options used' 
    98           nstop = nstop + 1 
    99       ENDIF 
     95      IF ( ioptio /= 1 ) CALL ctl_stop( ' none or several vertical coordinate options used' ) 
    10096 
    10197      IF( ln_zco ) THEN 
    10298          IF(lwp) WRITE(numout,*) '          z-coordinate with reduced incore memory requirement' 
    103           IF( ln_zps .OR. ln_sco ) THEN 
    104              IF(lwp) WRITE(numout,cform_err) 
    105              IF(lwp) WRITE(numout,*) ' reduced memory with zps or sco option is impossible' 
    106              nstop = nstop + 1 
    107           ENDIF 
     99          IF( ln_zps .OR. ln_sco ) CALL ctl_stop( ' reduced memory with zps or sco option is impossible' ) 
    108100      ENDIF 
    109101 
     
    264256 
    265257      DO jk = 1, jpk 
    266          IF( e3w_0(jk) <= 0. .OR. e3t_0(jk) <= 0. ) THEN 
    267             IF(lwp) WRITE(numout,cform_err) 
    268             IF(lwp) WRITE(numout,*) ' e3w or e3t =< 0 ' 
    269             nstop = nstop + 1 
    270          ENDIF 
    271          IF( gdepw_0(jk) < 0. .OR. gdept_0(jk) < 0.) THEN 
    272             IF(lwp) WRITE(numout,cform_err) 
    273             IF(lwp) WRITE(numout,*) ' gdepw or gdept < 0 ' 
    274             nstop = nstop + 1 
    275          ENDIF 
     258         IF( e3w_0(jk)  <= 0. .OR. e3t_0(jk)  <= 0. ) CALL ctl_stop( ' e3w or e3t =< 0 ' ) 
     259         IF( gdepw_0(jk) < 0. .OR. gdept_0(jk) < 0. ) CALL ctl_stop( ' gdepw or gdept < 0 ' ) 
    276260      END DO 
    277261 
     
    318302      !!---------------------------------------------------------------------- 
    319303      !! * Modules used 
    320       USE ioipsl 
     304      USE iom 
    321305 
    322306      !! * Local declarations 
    323       CHARACTER (len=18) ::   clname    ! temporary characters 
    324       LOGICAL ::   llbon                ! check the existence of bathy files 
    325307      INTEGER ::   ji, jj, jl, jk       ! dummy loop indices 
    326       INTEGER ::   inum = 11            ! temporary logical unit 
     308      INTEGER ::   inum                 ! temporary logical unit 
    327309      INTEGER  ::   & 
    328          ipi, ipj, ipk,              &  ! temporary integers 
    329          itime, ih,                  &  !    "          " 
    330          ii_bump, ij_bump               ! bump center position 
    331       INTEGER, DIMENSION (1) ::   istep 
     310         ii_bump, ij_bump, ih           ! bump center position 
    332311      INTEGER , DIMENSION(jpidta,jpjdta) ::   & 
    333312         idta                           ! global domain integer data 
    334313      REAL(wp) ::   & 
    335314         r_bump, h_bump, h_oce,      &  ! bump characteristics  
    336          zi, zj, zdate0, zdt, zh        ! temporary scalars 
     315         zi, zj, zh                     ! temporary scalars 
    337316      REAL(wp), DIMENSION(jpidta,jpjdta) ::   & 
    338          zlamt, zphit,               &  ! 2D workspace (NetCDF read) 
    339317         zdta                           ! global domain scalar data 
    340       REAL(wp), DIMENSION(jpk) ::   & 
    341          zdept                          ! 1D workspace (NetCDF read) 
    342318      !!---------------------------------------------------------------------- 
    343319 
     
    427403         ENDIF 
    428404 
     405         ! ======================================= 
     406         ! local domain level and meter bathymetry (mbathy,bathy) 
     407         ! ======================================= 
     408          
     409         mbathy(:,:) = 0                                 ! set to zero extra halo points 
     410         bathy (:,:) = 0.e0                              ! (require for mpp case) 
     411          
     412         DO jj = 1, nlcj                                 ! interior values 
     413            DO ji = 1, nlci 
     414               mbathy(ji,jj) = idta( mig(ji), mjg(jj) ) 
     415               bathy (ji,jj) = zdta( mig(ji), mjg(jj) ) 
     416            END DO 
     417         END DO 
     418 
    429419         !                                            ! =============== ! 
    430420      ELSEIF( ntopo == 1 ) THEN                       !   read in file  ! 
    431421         !                                            ! =============== ! 
    432422 
    433          clname = 'bathy_level.nc'                       ! Level bathymetry 
    434 #if defined key_agrif 
    435          IF( .NOT. Agrif_Root() ) THEN 
    436             clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    437          ENDIF 
    438 #endif 
    439          INQUIRE( FILE=clname, EXIST=llbon ) 
    440          IF( llbon ) THEN 
    441             IF(lwp) WRITE(numout,*) 
    442             IF(lwp) WRITE(numout,*) '         read level bathymetry in ', clname 
    443             IF(lwp) WRITE(numout,*) 
    444             ipi = jpidta      ;       ipj   = jpjdta 
    445             ipk = 1           ;       itime = 1           ;       zdt = rdt 
    446             CALL flinopen( clname, 1, jpidta, 1, jpjdta, .FALSE.,   & 
    447                &           ipi, ipj, ipk, zlamt, zphit, zdept, itime, istep, zdate0, zdt, inum ) 
    448             CALL flinget( inum, 'Bathy_level', jpidta, jpjdta, 1,   & 
    449                &          itime, 1, 1, 1, jpidta, 1, jpjdta, zdta(:,:) ) 
    450             CALL flinclo( inum ) 
    451             idta(:,:) = zdta(:,:) 
    452          ELSE 
     423         CALL iom_open ( 'bathy_level.nc', inum )   ! Level bathymetry 
     424         IF ( inum > 0 ) THEN 
     425            CALL iom_get ( inum, jpdom_data, 'Bathy_level', bathy ) 
     426            CALL iom_close (inum) 
     427            mbathy(:,:) = INT( bathy(:,:) ) 
     428         ELSE  
    453429            IF( ln_zco ) THEN 
    454                IF(lwp) WRITE(numout,cform_err) 
    455                IF(lwp) WRITE(numout,*)'    zgr_bat : unable to read the file ', clname 
    456                nstop = nstop + 1 
     430               CALL ctl_stop( '    zgr_bat : unable to read the file ' ) 
    457431            ELSE 
    458432               IF(lwp) WRITE(numout,*)'    zgr_bat : bathy_level will be computed from bathy_meter' 
    459                idta(:,:) = jpkm1      ! initialisation 
     433               nstop = nstop - 1        ! supress the error count for opening 'bathy_level.nc' 
     434               mbathy(:,:) = jpkm1       
    460435            ENDIF 
    461436         ENDIF 
    462437 
    463          clname = 'bathy_meter.nc'                       ! meter bathymetry 
    464 #if defined key_agrif 
    465             IF( .NOT. Agrif_Root() ) THEN 
    466                clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    467             ENDIF 
    468 #endif 
    469          INQUIRE( FILE=clname, EXIST=llbon ) 
    470          IF( llbon ) THEN 
    471             IF(lwp) WRITE(numout,*) 
    472             IF(lwp) WRITE(numout,*) '         read meter bathymetry in ', clname 
    473             IF(lwp) WRITE(numout,*) 
    474             ipi = jpidta      ;       ipj   = jpjdta 
    475             ipk = 1           ;       itime = 1         ;       zdt = rdt 
    476             CALL flinopen( clname, 1, jpidta, 1, jpjdta, .FALSE.,   &     
    477                &           ipi, ipj, ipk, zlamt, zphit, zdept, itime, istep, zdate0, zdt, inum ) 
    478             CALL flinget( inum, 'Bathymetry', jpidta, jpjdta, 1,   & 
    479                &          itime, 1, 1, 1, jpidta, 1, jpjdta, zdta(:,:) )  
    480             CALL flinclo( inum ) 
    481          ELSE 
     438         CALL iom_open ( 'bathy_meter.nc', inum )   ! meter bathymetry 
     439         IF ( inum > 0 ) THEN 
     440            CALL iom_get ( inum, jpdom_data, 'Bathymetry', bathy ) 
     441            CALL iom_close (inum) 
     442         ELSE  
    482443            IF( ln_zps .OR. ln_sco ) THEN 
    483                IF(lwp) WRITE(numout,cform_err)        
    484                IF(lwp) WRITE(numout,*)'    zgr_bat : unable to read the file', clname 
    485                nstop = nstop + 1 
     444              CALL ctl_stop( '    zgr_bat : unable to read the file ' ) 
    486445            ELSE 
    487                zdta(:,:) = 0.e0 
     446               bathy(:,:) = 0.e0        ! initialisation 
     447               nstop = nstop - 1        ! supress the error count for opening 'bathy_level.nc' 
    488448               IF(lwp) WRITE(numout,*)'    zgr_bat : bathy_meter not found, but not used, bathy array set to zero' 
    489449            ENDIF 
     
    492452      ELSE                                            !      error      ! 
    493453         !                                            ! =============== ! 
    494          IF(lwp) WRITE(numout,cform_err) 
    495          IF(lwp) WRITE(numout,*) '          parameter , ntopo = ', ntopo 
    496          nstop = nstop + 1 
    497       ENDIF 
    498  
    499  
    500       ! ======================================= 
    501       ! local domain level and meter bathymetry (mbathy,bathy) 
    502       ! ======================================= 
    503  
    504       mbathy(:,:) = 0                                 ! set to zero extra halo points 
    505       bathy (:,:) = 0.e0                              ! (require for mpp case) 
    506  
    507       DO jj = 1, nlcj                                 ! interior values 
    508          DO ji = 1, nlci 
    509             mbathy(ji,jj) = idta( mig(ji), mjg(jj) ) 
    510             bathy (ji,jj) = zdta( mig(ji), mjg(jj) ) 
    511          END DO 
    512       END DO 
    513  
    514       write(numout,*) ' MIN val mbathy 2 ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    515  
     454         WRITE(ctmp1,*) '          parameter , ntopo = ', ntopo 
     455         CALL ctl_stop( '    zgr_bat : '//trim(ctmp1) ) 
     456      ENDIF 
    516457 
    517458      ! ======================= 
     
    531472      ENDIF 
    532473 
     474#if defined key_orca_lev10 
     475      ! 10 time the vertical resolution 
     476      mbathy(:,:) = 10 * mbathy(:,:) 
     477      IF(lwp) WRITE(numout,*) ' ATTENTION: 300 niveaux avec bathy levels "vraie?"' 
     478#endif 
    533479      ! =========== 
    534480      ! Zoom domain  
     
    12211167         WRITE(numout,9430) (jk,fsdept(1,1,jk),fsdepw(1,1,jk),     & 
    12221168                             fse3t (1,1,jk),fse3w (1,1,jk),jk=1,jpk) 
    1223          WRITE(numout,*) 
    1224          WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(20,20), hbatt(20,20) 
    1225          WRITE(numout,*) ' ~~~~~~  --------------------' 
    1226          WRITE(numout,9420) 
    1227          WRITE(numout,9430) (jk,fsdept(20,20,jk),fsdepw(20,20,jk),     & 
    1228                              fse3t (20,20,jk),fse3w (20,20,jk),jk=1,jpk) 
    1229          WRITE(numout,*) 
    1230          WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(100,74), hbatt(100,74) 
    1231          WRITE(numout,*) ' ~~~~~~  --------------------' 
    1232          WRITE(numout,9420) 
    1233          WRITE(numout,9430) (jk,fsdept(100,74,jk),fsdepw(100,74,jk),     & 
    1234                              fse3t (100,74,jk),fse3w (100,74,jk),jk=1,jpk) 
     1169         DO jj = mj0(20), mj1(20) 
     1170            DO ji = mi0(20), mi1(20) 
     1171               WRITE(numout,*) 
     1172               WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
     1173               WRITE(numout,*) ' ~~~~~~  --------------------' 
     1174               WRITE(numout,9420) 
     1175               WRITE(numout,9430) (jk,fsdept(ji,jj,jk),fsdepw(ji,jj,jk),     & 
     1176                    &                 fse3t (ji,jj,jk),fse3w (ji,jj,jk),jk=1,jpk) 
     1177            END DO 
     1178         END DO 
     1179         DO jj = mj0(74), mj1(74) 
     1180            DO ji = mi0(100), mi1(100) 
     1181               WRITE(numout,*) 
     1182               WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
     1183               WRITE(numout,*) ' ~~~~~~  --------------------' 
     1184               WRITE(numout,9420) 
     1185               WRITE(numout,9430) (jk,fsdept(ji,jj,jk),fsdepw(ji,jj,jk),     & 
     1186                    &                 fse3t (ji,jj,jk),fse3w (ji,jj,jk),jk=1,jpk) 
     1187            END DO 
     1188         END DO 
    12351189      ENDIF 
    12361190 
Note: See TracChangeset for help on using the changeset viewer.