Ignore:
Timestamp:
Oct 9, 2012, 3:35:26 PM (12 years ago)
Author:
Laurent Fairhead
Message:

Version testing basée sur la r1628

http://lmdz.lmd.jussieu.fr/utilisateurs/distribution-du-modele/versions-intermediaires


Testing release based on r1628

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dyn3d/leapfrog.F

    r1529 r1665  
    7272
    7373      real zqmin,zqmax
    74       INTEGER nbetatmoy, nbetatdem,nbetat
    7574
    7675c   variables dynamiques
     
    118117
    119118      REAL  SSUM
    120       REAL time_0 , finvmaold(ip1jmp1,llm)
     119      REAL time_0
     120!     REAL finvmaold(ip1jmp1,llm)
    121121
    122122cym      LOGICAL  lafin
     
    212212      dq(:,:,:)=0.
    213213      CALL pression ( ip1jmp1, ap, bp, ps, p       )
    214       if (disvert_type==1) then
     214      if (pressure_exner) then
    215215        CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
    216       else ! we assume that we are in the disvert_type==2 case
     216      else
    217217        CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
    218218      endif
     
    222222c   ----------------------------------
    223223
    224    1  CONTINUE
    225 
    226       jD_cur = jD_ref + day_ini - day_ref + int (itau * dtvr / daysec)
    227       jH_cur = jH_ref +                                                 &
    228      &          (itau * dtvr / daysec - int(itau * dtvr / daysec))
     224   1  CONTINUE ! Matsuno Forward step begins here
     225
     226      jD_cur = jD_ref + day_ini - day_ref +                             &
     227     &          itau/day_step
     228      jH_cur = jH_ref + start_time +                                    &
     229     &          mod(itau,day_step)/float(day_step)
     230      jD_cur = jD_cur + int(jH_cur)
     231      jH_cur = jH_cur - int(jH_cur)
    229232
    230233
     
    255258
    256259c   ...    P.Le Van .26/04/94  ....
    257 
    258       CALL SCOPY   ( ijp1llm,   masse, 1, finvmaold,     1 )
    259       CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 )
    260 
    261    2  CONTINUE
     260! Ehouarn: finvmaold is actually not used
     261!      CALL SCOPY   ( ijp1llm,   masse, 1, finvmaold,     1 )
     262!      CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 )
     263
     264   2  CONTINUE ! Matsuno backward or leapfrog step begins here
    262265
    263266c-----------------------------------------------------------------------
     
    302305c   --------------------------------
    303306
     307      ! compute geopotential phi()
    304308      CALL geopot  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
    305309
     
    315319
    316320      IF( forward. OR . leapf )  THEN
    317 
     321! Ehouarn: NB: at this point p with ps are not synchronized
     322!              (whereas mass and ps are...)
    318323         CALL caladvtrac(q,pbaru,pbarv,
    319324     *        p, masse, dq,  teta,
     
    340345
    341346       CALL integrd ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 ,
    342      $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis ,
    343      $              finvmaold                                    )
     347     $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis )
     348!     $              finvmaold                                    )
    344349
    345350
     
    364369
    365370         CALL pression (  ip1jmp1, ap, bp, ps,  p      )
    366          if (disvert_type==1) then
     371         if (pressure_exner) then
    367372           CALL exner_hyb(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
    368          else ! we assume that we are in the disvert_type==2 case
     373         else
    369374           CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
    370375         endif
     
    372377!           rdaym_ini  = itau * dtvr / daysec
    373378!           rdayvrai   = rdaym_ini  + day_ini
    374            jD_cur = jD_ref + day_ini - day_ref
    375      $        + int (itau * dtvr / daysec)
    376            jH_cur = jH_ref +                                            &
    377      &              (itau * dtvr / daysec - int(itau * dtvr / daysec))
     379!           jD_cur = jD_ref + day_ini - day_ref
     380!     $        + int (itau * dtvr / daysec)
     381!           jH_cur = jH_ref +                                            &
     382!     &              (itau * dtvr / daysec - int(itau * dtvr / daysec))
     383           jD_cur = jD_ref + day_ini - day_ref +                        &
     384     &          itau/day_step
     385           jH_cur = jH_ref + start_time +                               &
     386     &              mod(itau,day_step)/float(day_step)
     387           jD_cur = jD_cur + int(jH_cur)
     388           jH_cur = jH_cur - int(jH_cur)
    378389!         write(lunout,*)'itau, jD_cur = ', itau, jD_cur, jH_cur
    379390!         call ju2ymds(jD_cur+jH_cur, an, mois, jour, secondes)
     
    394405! Ehouarn: be careful, diagedyn is Earth-specific (includes ../phylmd/..)!
    395406           IF (planet_type.eq."earth") THEN
     407#ifdef CPP_EARTH
    396408            CALL diagedyn(ztit,2,1,1,dtphys
    397409     &    , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2))
     410#endif
    398411           ENDIF
    399412         ENDIF ! of IF (ip_ebil_dyn.ge.1 )
     
    472485
    473486        CALL pression ( ip1jmp1, ap, bp, ps, p                  )
    474         if (disvert_type==1) then
     487        if (pressure_exner) then
    475488          CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
    476         else ! we assume that we are in the disvert_type==2 case
     489        else
    477490          CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
    478491        endif
     
    529542        ENDDO
    530543
    531         DO ij =  1,iim
    532           tppn(ij)  = aire(  ij    ) * ps (  ij    )
    533           tpps(ij)  = aire(ij+ip1jm) * ps (ij+ip1jm)
    534         ENDDO
    535           tpn  = SSUM(iim,tppn,1)/apoln
    536           tps  = SSUM(iim,tpps,1)/apols
    537 
    538         DO ij = 1, iip1
    539           ps(  ij    ) = tpn
    540           ps(ij+ip1jm) = tps
    541         ENDDO
    542 
     544        if (1 == 0) then
     545!!! Ehouarn: lines here 1) kill 1+1=2 in the dynamics
     546!!!                     2) should probably not be here anyway
     547!!! but are kept for those who would want to revert to previous behaviour
     548           DO ij =  1,iim
     549             tppn(ij)  = aire(  ij    ) * ps (  ij    )
     550             tpps(ij)  = aire(ij+ip1jm) * ps (ij+ip1jm)
     551           ENDDO
     552             tpn  = SSUM(iim,tppn,1)/apoln
     553             tps  = SSUM(iim,tpps,1)/apols
     554
     555           DO ij = 1, iip1
     556             ps(  ij    ) = tpn
     557             ps(ij+ip1jm) = tps
     558           ENDDO
     559        endif ! of if (1 == 0)
    543560
    544561      END IF ! of IF(apdiss)
     
    622639             ! Ehouarn: output only during LF or Backward Matsuno
    623640             if (leapf.or.(.not.leapf.and.(.not.forward))) then
    624               nbetat = nbetatdem
    625641              CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
    626642              unat=0.
     
    652668!              if (planet_type.eq."earth") then
    653669! Write an Earth-format restart file
    654                 CALL dynredem1("restart.nc",0.0,
     670                CALL dynredem1("restart.nc",start_time,
    655671     &                         vcov,ucov,teta,q,masse,ps)
    656672!              endif ! of if (planet_type.eq."earth")
    657673
    658674              CLOSE(99)
     675              !!! Ehouarn: Why not stop here and now?
    659676            ENDIF ! of IF (itau.EQ.itaufin)
    660677
     
    740757              IF(MOD(itau,iecri         ).EQ.0) THEN
    741758c              IF(MOD(itau,iecri*day_step).EQ.0) THEN
    742                 nbetat = nbetatdem
    743759                CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
    744760                unat=0.
     
    763779              IF(itau.EQ.itaufin) THEN
    764780!                if (planet_type.eq."earth") then
    765                   CALL dynredem1("restart.nc",0.0,
     781                  CALL dynredem1("restart.nc",start_time,
    766782     &                           vcov,ucov,teta,q,masse,ps)
    767783!                endif ! of if (planet_type.eq."earth")
Note: See TracChangeset for help on using the changeset viewer.