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

Changeset 446


Ignore:
Timestamp:
2006-04-26T11:32:54+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_bugfix_041:CE+RB: bug correction for offline dirver

Location:
trunk/NEMO/OFF_SRC
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OFF_SRC/dtadyn.F90

    r431 r446  
    1818   USE ldfslp 
    1919   USE blk_oce 
     20   USE ldfeiv          ! eddy induced velocity coef.      (ldf_eiv routine) 
     21   USE ldftra_oce      ! ocean tracer   lateral physics 
    2022   USE zdfmxl 
    2123   USE trabbl          ! tracers: bottom boundary layer 
    22    USE ldftra_oce 
    2324   USE ocfzpt 
    2425   USE zdfddm          ! vertical  physics: double diffusion 
     
    7576#endif 
    7677 
     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 
    7784   REAL(wp), DIMENSION(jpi,jpj,jpflx,2) ::   & 
    7885      flxdta       ! auxiliary 2-D forcing fields at two consecutive times 
     
    8592      bblydta      ! frequency of bbl in the y direction at 2 consecutive times 
    8693#endif 
    87  
    8894 
    8995   !! * Substitutions 
     
    180186      ! 0. Initialization 
    181187      ! ----------------- 
     188 
    182189      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 
    194202      ENDIF 
     203 
    195204 
    196205      zpdtan = raass / rdt 
     
    259268                avt(:,:,:)=avtdta(:,:,:,2) 
    260269 
    261  
    262  
    263270         IF(lwp) THEN 
    264271            WRITE(numout,*)' temperature ' 
    265272            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) 
    268274            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)   
    271276            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)  
    273278        ENDIF 
    274279 
     
    301306                flxdta(:,:,:,1) = flxdta(:,:,:,2) 
    302307                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 
    304312#if defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
    305313                bblxdta(:,:,1)=bblxdta(:,:,2) 
    306314                bblydta(:,:,1)=bblydta(:,:,2) 
    307315#endif 
    308  
    309  
    310316      ! 
    311317      ! indicates a swap 
     
    377383                flxdta(:,:,:,1) = flxdta(:,:,:,2) 
    378384                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 
    380389#if defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
    381390                bblxdta(:,:,1)=bblxdta(:,:,2) 
    382391                bblydta(:,:,1)=bblydta(:,:,2) 
    383392#endif 
    384  
    385  
    386393      ! 
    387394      ! indicates a swap 
     
    455462                    wslpj(:,:,:)=wslpjdta(:,:,:,2) 
    456463#endif 
    457  
    458464                    flx(:,:,:) = flxdta(:,:,:,2) 
    459465                    hmld(:,:)=zmxldta(:,:,2) 
    460  
     466#if defined key_traldf_eiv   &&   defined key_traldf_c2d 
     467                    ahtw(:,:)=ahtwdta(:,:,2) 
     468                    aeiw(:,:)=eivwdta(:,:,2) 
     469#endif 
    461470#if defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
    462471                    bblx(:,:)=bblxdta(:,:,2) 
    463472                    bbly(:,:)=bblydta(:,:,2) 
    464473#endif 
    465  
    466474       ! 
    467475       ! keep needed fluxes 
     
    472480                    freeze(:,:) = flx(:,:,jpice) 
    473481                    emp(:,:) = flx(:,:,jpemp) 
     482                    emps(:,:) = emp(:,:) 
    474483                    qsr(:,:) = flx(:,:,jpqsr) 
    475484 
     
    502511                    flx(:,:,:) = zweighm1 * flxdta(:,:,:,1) + zweigh * flxdta(:,:,:,2)  
    503512                    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 
    505517#if defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
    506518                    bblx(:,:)= zweighm1 * bblxdta(:,:,1) + zweigh * bblxdta(:,:,2) 
    507519                    bbly(:,:)= zweighm1 * bblydta(:,:,1) + zweigh * bblydta(:,:,2) 
    508520#endif 
    509  
    510521       ! 
    511522       ! keep needed fluxes 
     
    516527                  freeze(:,:) = flx(:,:,jpice) 
    517528                  emp(:,:) = flx(:,:,jpemp) 
     529                  emps(:,:) = emp(:,:) 
    518530                  qsr(:,:) = flx(:,:,jpqsr) 
    519531       ! 
     
    533545      ! 
    534546      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 
    535552 
    536553   END SUBROUTINE dta_dyn 
     
    559576      INTEGER , DIMENSION(ndtatot) :: istep 
    560577 
    561       REAL(wp) ::  zdate0, zdt 
     578      REAL(wp) ::  zdate0 
    562579 
    563580      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    564581        zu, zv, zw, zt, zs, zavt ! 3-D dynamical fields 
    565582 
     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 
    566593      REAL(wp), DIMENSION(jpi,jpj) :: & 
    567594        zlon, zlat, zemp, zqsr, zmld, zice, zwind  
     
    570597        zbblx, zbbly 
    571598#endif 
    572  
    573599      REAL(wp), DIMENSION(jpk) :: zlev 
    574600 
     
    584610      ! le dernier champ temporel 
    585611 
    586  
    587612      jkenr = kenr 
    588613 
     
    603628 
    604629         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) 
    606631 
    607632         IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     
    617642 
    618643         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) 
    620645 
    621646         IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     
    631656 
    632657         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) 
    634659 
    635660         IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     
    645670 
    646671         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) 
    648673 
    649674         IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     
    659684 
    660685         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) 
    662687 
    663688         IF( ipi /= jpidta .OR. ipj /= jpjdta  ) THEN 
     
    681706#endif 
    682707 
     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 
    683712 
    684713      CALL flinget(numfl_v,'vomecrty',jpidta,jpjdta,jpk,idtatot,jkenr,   & 
     
    690719#endif 
    691720 
     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 
    692726      CALL flinget(numfl_w,'vovecrtz',jpidta,jpjdta,jpk,idtatot,jkenr,   & 
    693727         &        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 
    694733 
    695734 
     
    702741#endif 
    703742 
     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 
    704751      CALL flinget(numfl_t,'votemper',jpidta,jpjdta,jpk,idtatot,jkenr,   & 
    705752         &        jkenr,mig(1),nlci,mjg(1),nlcj,zt(1:nlci,1:nlcj,1:jpk)) 
     
    710757      CALL flinget(numfl_t,'somixhgt',jpidta,jpjdta,1,idtatot,jkenr,  & 
    711758         &        jkenr,mig(1),nlci,mjg(1),nlcj,zmld(1:nlci,1:nlcj)) 
     759 
    712760 
    713761      CALL flinget(numfl_t,'sowaflup',jpidta,jpjdta,1,idtatot,jkenr,  & 
     
    742790               zbbly(ji,:)=zbbly(1,:) 
    743791#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 
    745801            ENDDO 
    746802            DO jj = nlcj+1, jpj 
     
    760816               zbbly(:,jj)=zbbly(:,1) 
    761817#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 
    763827            ENDDO 
    764828         ENDIF 
     
    771835            sdta(:,:,:,2)=zs(:,:,:)*tmask(:,:,:) 
    772836            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 
    773841      ! 
    774842      ! 
Note: See TracChangeset for help on using the changeset viewer.