Changeset 434 for trunk/NEMO/OPA_SRC/istate.F90
- Timestamp:
- 2006-04-10T17:46:12+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/istate.F90
r392 r434 101 101 CALL istate_eel ! EEL configuration : start from pre-defined 102 102 ! ! velocity and thermohaline fields 103 ELSEIF( cp_cfg == 'gyre') THEN103 ELSEIF( cp_cfg == 'gyre' ) THEN 104 104 CALL istate_gyre ! GYRE configuration : start from pre-defined temperature 105 105 ! ! and salinity fields … … 396 396 !! 9.0 ! 04-05 (A. Koch-Larrouy) Original code 397 397 !!---------------------------------------------------------------------- 398 !! * Modules used 399 USE ioipsl 400 398 401 !! * Local variables 399 INTEGER :: ji, jj, jk ! dummy loop indices 400 !!---------------------------------------------------------------------- 401 402 IF(lwp) WRITE(numout,*) 403 IF(lwp) WRITE(numout,*) 'istate_gyre : initial analytical T and S profil deduced from LEVITUS ' 404 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 405 406 DO jk = 1, jpk 407 DO jj = 1, jpj 408 DO ji = 1, jpi 409 tn(ji,jj,jk) = ( 16. - 12. * TANH( (fsdept(ji,jj,jk) - 400) / 700 ) ) & 410 & * (-TANH( (500-fsdept(ji,jj,jk)) / 150 ) + 1) / 2 & 411 & + ( 15. * ( 1. - TANH( (fsdept(ji,jj,jk)-50.) / 1500.) ) & 412 & - 1.4 * TANH((fsdept(ji,jj,jk)-100.) / 100.) & 413 & + 7. * (1500. - fsdept(ji,jj,jk)) / 1500. ) & 414 & * (-TANH( (fsdept(ji,jj,jk) - 500) / 150) + 1) / 2 415 tn(ji,jj,jk) = tn(ji,jj,jk) * tmask(ji,jj,jk) 416 tb(ji,jj,jk) = tn(ji,jj,jk) 417 418 sn(ji,jj,jk) = ( 36.25 - 1.13 * TANH( (fsdept(ji,jj,jk) - 305) / 460 ) ) & 419 & * (-TANH((500 - fsdept(ji,jj,jk)) / 150) + 1) / 2 & 420 & + ( 35.55 + 1.25 * (5000. - fsdept(ji,jj,jk)) / 5000. & 421 & - 1.62 * TANH( (fsdept(ji,jj,jk) - 60. ) / 650. ) & 422 & + 0.2 * TANH( (fsdept(ji,jj,jk) - 35. ) / 100. ) & 423 & + 0.2 * TANH( (fsdept(ji,jj,jk) - 1000.) / 5000.) ) & 424 & * (-TANH((fsdept(ji,jj,jk) - 500) / 150) + 1) / 2 425 sn(ji,jj,jk) = sn(ji,jj,jk) * tmask(ji,jj,jk) 426 sb(ji,jj,jk) = sn(ji,jj,jk) 402 INTEGER, PARAMETER :: jpmois = 12 403 INTEGER, PARAMETER :: & 404 ntsinit = 0 ! (0/1) (analytical/input data files) T&S initialization 405 406 CHARACTER (len=32) :: clname 407 INTEGER :: ji, jj, jk ! dummy loop indices 408 INTEGER :: ipi, ipj, ipk, itime ! temporary integers 409 INTEGER, DIMENSION(jpmois) :: istep 410 411 REAL(wp) :: zdate0, zdt 412 REAL(wp), DIMENSION(jpk) :: zlev 413 REAL(wp), DIMENSION(jpi,jpj) :: zlon, zlat 414 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zt_dta, zs_dta 415 !!---------------------------------------------------------------------- 416 417 SELECT CASE ( ntsinit) 418 419 CASE ( 0 ) ! analytical T/S profil deduced from LEVITUS 420 IF(lwp) WRITE(numout,*) 421 IF(lwp) WRITE(numout,*) 'istate_gyre : initial analytical T and S profil deduced from LEVITUS ' 422 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 423 424 DO jk = 1, jpk 425 DO jj = 1, jpj 426 DO ji = 1, jpi 427 tn(ji,jj,jk) = ( 16. - 12. * TANH( (fsdept(ji,jj,jk) - 400) / 700 ) ) & 428 & * (-TANH( (500-fsdept(ji,jj,jk)) / 150 ) + 1) / 2 & 429 & + ( 15. * ( 1. - TANH( (fsdept(ji,jj,jk)-50.) / 1500.) ) & 430 & - 1.4 * TANH((fsdept(ji,jj,jk)-100.) / 100.) & 431 & + 7. * (1500. - fsdept(ji,jj,jk)) / 1500. ) & 432 & * (-TANH( (fsdept(ji,jj,jk) - 500) / 150) + 1) / 2 433 tn(ji,jj,jk) = tn(ji,jj,jk) * tmask(ji,jj,jk) 434 tb(ji,jj,jk) = tn(ji,jj,jk) 435 436 sn(ji,jj,jk) = ( 36.25 - 1.13 * TANH( (fsdept(ji,jj,jk) - 305) / 460 ) ) & 437 & * (-TANH((500 - fsdept(ji,jj,jk)) / 150) + 1) / 2 & 438 & + ( 35.55 + 1.25 * (5000. - fsdept(ji,jj,jk)) / 5000. & 439 & - 1.62 * TANH( (fsdept(ji,jj,jk) - 60. ) / 650. ) & 440 & + 0.2 * TANH( (fsdept(ji,jj,jk) - 35. ) / 100. ) & 441 & + 0.2 * TANH( (fsdept(ji,jj,jk) - 1000.) / 5000.) ) & 442 & * (-TANH((fsdept(ji,jj,jk) - 500) / 150) + 1) / 2 443 sn(ji,jj,jk) = sn(ji,jj,jk) * tmask(ji,jj,jk) 444 sb(ji,jj,jk) = sn(ji,jj,jk) 445 END DO 427 446 END DO 428 447 END DO 429 END DO 448 449 CASE ( 1 ) ! T/S data fields read in dta_tem.nc/data_sal.nc files 450 IF(lwp) WRITE(numout,*) 451 IF(lwp) WRITE(numout,*) 'istate_gyre : initial T and S read from dta_tem.nc/data_sal.nc files' 452 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 453 IF(lwp) WRITE(numout,*) ' NetCDF FORMAT' 454 455 ! Read temperature field 456 ! ---------------------- 457 ! open file 458 zdt = rdt 459 clname = 'data_tem' 460 CALL flinopen(TRIM(clname), mig(1), nlci , mjg(1), nlcj & 461 & , .false. , ipi , ipj , ipk , zlon & 462 & , zlat , zlev , itime, istep , zdate0 & 463 & , zdt , numtdt ) 464 465 ! title, dimensions and tests 466 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 467 IF(lwp) THEN 468 WRITE(numout,*) 469 WRITE(numout,*) 'problem with dimensions' 470 WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 471 WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 472 WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 473 ENDIF 474 STOP 'istate_gyre' 475 ENDIF 476 IF(lwp) WRITE(numout,*) itime,istep(1),zdate0,zdt,numtdt 477 478 479 ! Read data 480 zt_dta(:,:,:) = 0.e0 481 CALL flinget( numtdt,'votemper',jpidta,jpjdta,jpk,1,1, & 482 & 1,mig(1),nlci,mjg(1),nlcj,zt_dta(1:nlci,1:nlcj,1:jpk)) 483 484 tn(:,:,:) = zt_dta(:,:,:)*tmask(:,:,:) 485 tb(:,:,:) = zt_dta(:,:,:)*tmask(:,:,:) 486 487 CALL flinclo( numtdt ) 488 489 IF(lwp) WRITE(numout,*) 490 IF(lwp) WRITE(numout,*) ' read temperature data ok' 491 IF(lwp) WRITE(numout,*) 492 493 ! Read salinity field 494 ! ------------------- 495 ! open file 496 zdt = rdt 497 clname = 'data_sal' 498 CALL flinopen(TRIM(clname), mig(1), nlci , mjg(1), nlcj & 499 & , .false. , ipi , ipj , ipk , zlon & 500 & , zlat , zlev , itime, istep , zdate0 & 501 & , zdt , numsdt ) 502 503 ! title, dimensions and tests 504 505 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 506 IF(lwp) THEN 507 WRITE(numout,*) 508 WRITE(numout,*) 'problem with dimensions' 509 WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 510 WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 511 WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 512 ENDIF 513 STOP 'istate_gyre' 514 ENDIF 515 IF(lwp) WRITE(numout,*) itime,istep(1),zdate0,zdt,numsdt 516 517 ! Read data 518 zs_dta(:,:,:) = 0.e0 519 CALL flinget(numsdt,'vosaline',jpidta,jpjdta,jpk,1,1, & 520 & 1,mig(1),nlci,mjg(1),nlcj,zs_dta(1:nlci,1:nlcj,1:jpk)) 521 522 sn(:,:,:) = zs_dta(:,:,:)*tmask(:,:,:) 523 sb(:,:,:) = zs_dta(:,:,:)*tmask(:,:,:) 524 525 CALL flinclo( numsdt ) 526 527 IF(lwp) WRITE(numout,*) 528 IF(lwp) WRITE(numout,*) ' read salinity data ok' 529 IF(lwp) WRITE(numout,*) 530 531 END SELECT 430 532 431 533 IF(lwp) THEN
Note: See TracChangeset
for help on using the changeset viewer.