Changeset 473 for trunk/NEMO/OPA_SRC/DOM/domzgr.F90
- Timestamp:
- 2006-05-11T17:04:37+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DOM/domzgr.F90
r454 r473 93 93 IF( ln_zps ) ioptio = ioptio + 1 94 94 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' ) 100 96 101 97 IF( ln_zco ) THEN 102 98 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' ) 108 100 ENDIF 109 101 … … 264 256 265 257 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 ' ) 276 260 END DO 277 261 … … 318 302 !!---------------------------------------------------------------------- 319 303 !! * Modules used 320 USE io ipsl304 USE iom 321 305 322 306 !! * Local declarations 323 CHARACTER (len=18) :: clname ! temporary characters324 LOGICAL :: llbon ! check the existence of bathy files325 307 INTEGER :: ji, jj, jl, jk ! dummy loop indices 326 INTEGER :: inum = 11! temporary logical unit308 INTEGER :: inum ! temporary logical unit 327 309 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 332 311 INTEGER , DIMENSION(jpidta,jpjdta) :: & 333 312 idta ! global domain integer data 334 313 REAL(wp) :: & 335 314 r_bump, h_bump, h_oce, & ! bump characteristics 336 zi, zj, z date0, zdt, zh! temporary scalars315 zi, zj, zh ! temporary scalars 337 316 REAL(wp), DIMENSION(jpidta,jpjdta) :: & 338 zlamt, zphit, & ! 2D workspace (NetCDF read)339 317 zdta ! global domain scalar data 340 REAL(wp), DIMENSION(jpk) :: &341 zdept ! 1D workspace (NetCDF read)342 318 !!---------------------------------------------------------------------- 343 319 … … 427 403 ENDIF 428 404 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 429 419 ! ! =============== ! 430 420 ELSEIF( ntopo == 1 ) THEN ! read in file ! 431 421 ! ! =============== ! 432 422 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 453 429 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 ' ) 457 431 ELSE 458 432 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 460 435 ENDIF 461 436 ENDIF 462 437 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 482 443 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 ' ) 486 445 ELSE 487 zdta(:,:) = 0.e0 446 bathy(:,:) = 0.e0 ! initialisation 447 nstop = nstop - 1 ! supress the error count for opening 'bathy_level.nc' 488 448 IF(lwp) WRITE(numout,*)' zgr_bat : bathy_meter not found, but not used, bathy array set to zero' 489 449 ENDIF … … 492 452 ELSE ! error ! 493 453 ! ! =============== ! 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 516 457 517 458 ! ======================= … … 531 472 ENDIF 532 473 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 533 479 ! =========== 534 480 ! Zoom domain … … 1221 1167 WRITE(numout,9430) (jk,fsdept(1,1,jk),fsdepw(1,1,jk), & 1222 1168 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 1235 1189 ENDIF 1236 1190
Note: See TracChangeset
for help on using the changeset viewer.