Changeset 446
- Timestamp:
- 2006-04-26T11:32:54+02:00 (18 years ago)
- Location:
- trunk/NEMO/OFF_SRC
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OFF_SRC/dtadyn.F90
r431 r446 18 18 USE ldfslp 19 19 USE blk_oce 20 USE ldfeiv ! eddy induced velocity coef. (ldf_eiv routine) 21 USE ldftra_oce ! ocean tracer lateral physics 20 22 USE zdfmxl 21 23 USE trabbl ! tracers: bottom boundary layer 22 USE ldftra_oce23 24 USE ocfzpt 24 25 USE zdfddm ! vertical physics: double diffusion … … 75 76 #endif 76 77 78 #if defined key_traldf_eiv && defined key_traldf_c2d 79 REAL(wp), DIMENSION(jpi,jpj,2) :: & 80 ahtwdta , & ! Lateral diffusivity 81 eivwdta ! G&M coefficient 82 #endif 83 77 84 REAL(wp), DIMENSION(jpi,jpj,jpflx,2) :: & 78 85 flxdta ! auxiliary 2-D forcing fields at two consecutive times … … 85 92 bblydta ! frequency of bbl in the y direction at 2 consecutive times 86 93 #endif 87 88 94 89 95 !! * Substitutions … … 180 186 ! 0. Initialization 181 187 ! ----------------- 188 182 189 IF (lfirdyn) THEN 183 ! 184 ! time step MUST BE nint000 185 ! 186 IF( kt .NE. nit000 ) THEN 187 IF (lwp) THEN 188 WRITE (numout,*) ' kt MUST BE EQUAL to nit000. kt=',kt,' nit000=',nit000 189 END IF 190 STOP 'dtadyn' 191 END IF 192 ! Initialize the parameters of the interpolation 193 CALL dta_dyn_init 190 ! 191 ! time step MUST BE nint000 192 ! 193 IF (kt.ne.nit000) THEN 194 IF (lwp) THEN 195 WRITE (numout,*) ' kt MUST BE EQUAL to nit000. kt=',kt & 196 ,' nit000=',nit000 197 END IF 198 STOP 'dtadyn' 199 END if 200 ! Initialize the parameters of the interpolation 201 CALL dta_dyn_init 194 202 ENDIF 203 195 204 196 205 zpdtan = raass / rdt … … 259 268 avt(:,:,:)=avtdta(:,:,:,2) 260 269 261 262 263 270 IF(lwp) THEN 264 271 WRITE(numout,*)' temperature ' 265 272 WRITE(numout,*) 266 CALL prihre(tn(1,1,1),jpi,jpj,1,jpi,10,1,jpj,10,1.,numout) 267 WRITE(numout,*) 273 CALL prihre(tn(1,1,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 268 274 WRITE(numout,*) ' level = ',jpk/2 269 CALL prihre(tn(1,1,jpk/2),jpi,jpj,1,jpi,10,1,jpj,10,1.,numout) 270 WRITE(numout,*) 275 CALL prihre(tn(1,1,jpk/2),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 271 276 WRITE(numout,*) ' level = ',jpkm1 272 CALL prihre(tn(1,1,jpkm1),jpi,jpj,1,jpi, 10,1,jpj,10,1.,numout)277 CALL prihre(tn(1,1,jpkm1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 273 278 ENDIF 274 279 … … 301 306 flxdta(:,:,:,1) = flxdta(:,:,:,2) 302 307 zmxldta(:,:,1)=zmxldta(:,:,2) 303 308 #if defined key_traldf_eiv && defined key_traldf_c2d 309 ahtwdta(:,:,1)=ahtwdta(:,:,2) 310 eivwdta(:,:,1)=eivwdta(:,:,2) 311 #endif 304 312 #if defined key_trcbbl_dif || defined key_trcbbl_adv 305 313 bblxdta(:,:,1)=bblxdta(:,:,2) 306 314 bblydta(:,:,1)=bblydta(:,:,2) 307 315 #endif 308 309 310 316 ! 311 317 ! indicates a swap … … 377 383 flxdta(:,:,:,1) = flxdta(:,:,:,2) 378 384 zmxldta(:,:,1)=zmxldta(:,:,2) 379 385 #if defined key_traldf_eiv && defined key_traldf_c2d 386 ahtwdta(:,:,1)=ahtwdta(:,:,2) 387 eivwdta(:,:,1)=eivwdta(:,:,2) 388 #endif 380 389 #if defined key_trcbbl_dif || defined key_trcbbl_adv 381 390 bblxdta(:,:,1)=bblxdta(:,:,2) 382 391 bblydta(:,:,1)=bblydta(:,:,2) 383 392 #endif 384 385 386 393 ! 387 394 ! indicates a swap … … 455 462 wslpj(:,:,:)=wslpjdta(:,:,:,2) 456 463 #endif 457 458 464 flx(:,:,:) = flxdta(:,:,:,2) 459 465 hmld(:,:)=zmxldta(:,:,2) 460 466 #if defined key_traldf_eiv && defined key_traldf_c2d 467 ahtw(:,:)=ahtwdta(:,:,2) 468 aeiw(:,:)=eivwdta(:,:,2) 469 #endif 461 470 #if defined key_trcbbl_dif || defined key_trcbbl_adv 462 471 bblx(:,:)=bblxdta(:,:,2) 463 472 bbly(:,:)=bblydta(:,:,2) 464 473 #endif 465 466 474 ! 467 475 ! keep needed fluxes … … 472 480 freeze(:,:) = flx(:,:,jpice) 473 481 emp(:,:) = flx(:,:,jpemp) 482 emps(:,:) = emp(:,:) 474 483 qsr(:,:) = flx(:,:,jpqsr) 475 484 … … 502 511 flx(:,:,:) = zweighm1 * flxdta(:,:,:,1) + zweigh * flxdta(:,:,:,2) 503 512 hmld(:,:) = zweighm1 * zmxldta(:,:,1) + zweigh * zmxldta(:,:,2) 504 513 #if defined key_traldf_eiv && defined key_traldf_c2d 514 ahtw(:,:) = zweighm1 * ahtwdta(:,:,1) + zweigh * ahtwdta(:,:,2) 515 aeiw(:,:) = zweighm1 * eivwdta(:,:,1) + zweigh * eivwdta(:,:,2) 516 #endif 505 517 #if defined key_trcbbl_dif || defined key_trcbbl_adv 506 518 bblx(:,:)= zweighm1 * bblxdta(:,:,1) + zweigh * bblxdta(:,:,2) 507 519 bbly(:,:)= zweighm1 * bblydta(:,:,1) + zweigh * bblydta(:,:,2) 508 520 #endif 509 510 521 ! 511 522 ! keep needed fluxes … … 516 527 freeze(:,:) = flx(:,:,jpice) 517 528 emp(:,:) = flx(:,:,jpemp) 529 emps(:,:) = emp(:,:) 518 530 qsr(:,:) = flx(:,:,jpqsr) 519 531 ! … … 533 545 ! 534 546 CALL eos( tn, sn, rhd, rhop ) 547 548 #if defined key_traldf_c2d 549 ! In case of 2D varying coefficients, we need aeiv and aeiu 550 IF( lk_traldf_eiv ) CALL ldf_eiv( kt ) ! eddy induced velocity coefficient 551 #endif 535 552 536 553 END SUBROUTINE dta_dyn … … 559 576 INTEGER , DIMENSION(ndtatot) :: istep 560 577 561 REAL(wp) :: zdate0 , zdt578 REAL(wp) :: zdate0 562 579 563 580 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 564 581 zu, zv, zw, zt, zs, zavt ! 3-D dynamical fields 565 582 583 # if defined key_traldf_eiv 584 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 585 zaeiu, zaeiv, zaeiw 586 # endif 587 588 # if defined key_traldf_eiv && defined key_traldf_c2d 589 REAL(wp), DIMENSION(jpi,jpj) :: & 590 zeivw, zahtw 591 # endif 592 566 593 REAL(wp), DIMENSION(jpi,jpj) :: & 567 594 zlon, zlat, zemp, zqsr, zmld, zice, zwind … … 570 597 zbblx, zbbly 571 598 #endif 572 573 599 REAL(wp), DIMENSION(jpk) :: zlev 574 600 … … 584 610 ! le dernier champ temporel 585 611 586 587 612 jkenr = kenr 588 613 … … 603 628 604 629 CALL flinopen(clname_t,mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj, & 605 & ipk,zlon,zlat,zlev,itime,istep,zdate0, zdt,numfl_t)630 & ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numfl_t) 606 631 607 632 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN … … 617 642 618 643 CALL flinopen(clname_u,mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj, & 619 & ipk,zlon,zlat,zlev,itime,istep,zdate0, zdt,numfl_u)644 & ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numfl_u) 620 645 621 646 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN … … 631 656 632 657 CALL flinopen(clname_v,mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj, & 633 & ipk,zlon,zlat,zlev,itime,istep,zdate0, zdt,numfl_v)658 & ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numfl_v) 634 659 635 660 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN … … 645 670 646 671 CALL flinopen(clname_w,mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj, & 647 & ipk,zlon,zlat,zlev,itime,istep,zdate0, zdt,numfl_w)672 & ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numfl_w) 648 673 649 674 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN … … 659 684 660 685 CALL flinopen(clname_s,mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj, & 661 & ipk,zlon,zlat,zlev,itime,istep,zdate0, zdt,numfl_s)686 & ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numfl_s) 662 687 663 688 IF( ipi /= jpidta .OR. ipj /= jpjdta ) THEN … … 681 706 #endif 682 707 708 # if defined key_traldf_eiv 709 CALL flinget(numfl_u,'vozoeivu',jpidta,jpjdta,jpk,idtatot,jkenr, & 710 & jkenr,mig(1),nlci,mjg(1),nlcj,zaeiu(1:nlci,1:nlcj,1:jpk)) 711 #endif 683 712 684 713 CALL flinget(numfl_v,'vomecrty',jpidta,jpjdta,jpk,idtatot,jkenr, & … … 690 719 #endif 691 720 721 # if defined key_traldf_eiv 722 CALL flinget(numfl_v,'vomeeivv',jpidta,jpjdta,jpk,idtatot,jkenr, & 723 & jkenr,mig(1),nlci,mjg(1),nlcj,zaeiv(1:nlci,1:nlcj,1:jpk)) 724 #endif 725 692 726 CALL flinget(numfl_w,'vovecrtz',jpidta,jpjdta,jpk,idtatot,jkenr, & 693 727 & jkenr,mig(1),nlci,mjg(1),nlcj,zw(1:nlci,1:nlcj,1:jpk)) 728 729 # if defined key_traldf_eiv 730 CALL flinget(numfl_w,'voveeivw',jpidta,jpjdta,jpk,idtatot,jkenr, & 731 & jkenr,mig(1),nlci,mjg(1),nlcj,zaeiw(1:nlci,1:nlcj,1:jpk)) 732 #endif 694 733 695 734 … … 702 741 #endif 703 742 743 #if defined key_traldf_eiv && defined key_traldf_c2d 744 CALL flinget(numfl_w,'soleahtw',jpidta,jpjdta,1,idtatot,jkenr, & 745 jkenr,mig(1),nlci,mjg(1),nlcj,zahtw(1:nlci,1:nlcj)) 746 747 CALL flinget(numfl_w,'soleaeiw',jpidta,jpjdta,1,idtatot,jkenr, & 748 jkenr,mig(1),nlci,mjg(1),nlcj,zeivw(1:nlci,1:nlcj)) 749 #endif 750 704 751 CALL flinget(numfl_t,'votemper',jpidta,jpjdta,jpk,idtatot,jkenr, & 705 752 & jkenr,mig(1),nlci,mjg(1),nlcj,zt(1:nlci,1:nlcj,1:jpk)) … … 710 757 CALL flinget(numfl_t,'somixhgt',jpidta,jpjdta,1,idtatot,jkenr, & 711 758 & jkenr,mig(1),nlci,mjg(1),nlcj,zmld(1:nlci,1:nlcj)) 759 712 760 713 761 CALL flinget(numfl_t,'sowaflup',jpidta,jpjdta,1,idtatot,jkenr, & … … 742 790 zbbly(ji,:)=zbbly(1,:) 743 791 #endif 744 792 #if defined key_traldf_eiv 793 zaeiu(ji,:,:)=zaeiu(1,:,:) 794 zaeiv(ji,:,:)=zaeiv(1,:,:) 795 zaeiw(ji,:,:)=zaeiw(1,:,:) 796 #endif 797 #if defined key_traldf_eiv && defined key_traldf_c2d 798 zahtw(ji,:)=zahtw(1,:) 799 zeivw(ji,:)=zeivw(1,:) 800 #endif 745 801 ENDDO 746 802 DO jj = nlcj+1, jpj … … 760 816 zbbly(:,jj)=zbbly(:,1) 761 817 #endif 762 818 #if defined key_traldf_eiv 819 zaeiu(:,jj,:)=zaeiu(:,1,:) 820 zaeiv(:,jj,:)=zaeiv(:,1,:) 821 zaeiw(:,jj,:)=zaeiw(:,1,:) 822 #endif 823 #if defined key_traldf_eiv && defined key_traldf_c2d 824 zahtw(:,jj)=zahtw(:,1) 825 zeivw(:,jj)=zeivw(:,1) 826 #endif 763 827 ENDDO 764 828 ENDIF … … 771 835 sdta(:,:,:,2)=zs(:,:,:)*tmask(:,:,:) 772 836 avtdta(:,:,:,2)=zavt(:,:,:)*tmask(:,:,:) 837 #if defined key_traldf_eiv && defined key_traldf_c2d 838 ahtwdta(:,:,2)=zahtw(:,:)*tmask(:,:,1) 839 eivwdta(:,:,2)=zeivw(:,:)*tmask(:,:,1) 840 #endif 773 841 ! 774 842 !
Note: See TracChangeset
for help on using the changeset viewer.