Changeset 528 for trunk


Ignore:
Timestamp:
Feb 14, 2012, 11:39:54 AM (13 years ago)
Author:
aslmd
Message:

LMDZ.MARS : problem with r520. commits were made on an older version. fix the (numerous) problems this caused. please developers use svn update before committing.

Location:
trunk/LMDZ.MARS/libf/phymars
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r523 r528  
    340340
    341341      REAL lmax_th_out(ngridmx),zmax_th(ngridmx)
    342       REAL, SAVE :: wmax_th(ngridmx)
    343       REAL hfmax_th(ngridmx)
     342      REAL, SAVE :: wstar(ngridmx)
     343      REAL, SAVE :: hfmax_th(ngridmx)
    344344      REAL pdu_th(ngridmx,nlayermx),pdv_th(ngridmx,nlayermx)
    345345      REAL pdt_th(ngridmx,nlayermx),pdq_th(ngridmx,nlayermx,nqmx)
     
    350350      REAL z_out                          ! height of interpolation between z0 and z1 [meters]
    351351      REAL ustar(ngridmx),tstar(ngridmx)  ! friction velocity and friction potential temp
    352       REAL L_mo(ngridmx)
     352      REAL L_mo(ngridmx),wstarpbl(ngridmx),vhf(ngridmx),vvv(ngridmx)
    353353      REAL zu2(ngridmx)
    354354c=======================================================================
     
    367367         fluxrad(:)=0
    368368
    369          wmax_th(:)=0.
     369         wstar(:)=0.
    370370
    371371c        read startfi
     
    577577                 enddo
    578578              endif
     579           else
     580              zdtnlte(:,:)=0.
    579581           endif
    580582
     
    754756          DO ig=1, ngridmx
    755757             IF (zh(ig,1) .lt. tsurf(ig)) THEN
    756                wmax_th(ig)=1.
    757              ENDIF       
     758               wstar(ig)=1.
     759               hfmax_th(ig)=0.2
     760             ELSE
     761               wstar(ig)=0.
     762               hfmax_th(ig)=0.
     763             ENDIF     
    758764          ENDDO
    759765        ENDIF
     
    771777     $        zdum1,zdum2,zdh,pdq,zflubid,
    772778     $        zdudif,zdvdif,zdhdif,zdtsdif,q2,
    773      &        zdqdif,zdqsdif,wmax_th,zcdv,zcdh)
     779     &        zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th)
    774780
    775781#ifdef MESOSCALE
     
    832838     $ pplay,pplev,pphi,zpopsk,
    833839     $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,zmax_th,
    834      $ dtke_th,hfmax_th,wmax_th)
     840     $ dtke_th,hfmax_th,wstar)
    835841 
    836842         DO l=1,nlayer
     
    861867        else   !of if calltherm
    862868        lmax_th(:)=0
    863         wmax_th(:)=0.
     869        wstar(:)=0.
     870        hfmax_th(:)=0.
    864871        lmax_th_out(:)=0.
    865872        end if
     
    913920c   -------------------------------------------
    914921
    915 #ifdef MESOSCALE
    916       !!! get the actual co2 seasonal cap from Titus observations
    917       CALL geticecover( ngrid, 180.*zls/pi,
     922      IF (tituscap) THEN
     923         !!! get the actual co2 seasonal cap from Titus observations
     924         CALL geticecover( ngrid, 180.*zls/pi,
    918925     .                  180.*long/pi, 180.*lati/pi, co2ice )
    919       co2ice = co2ice * 10000.
    920 #endif
     926         co2ice = co2ice * 10000.
     927      ENDIF
    921928
    922929      IF (callcond) THEN
     
    964971c        ----------------------------------------
    965972         IF (water) THEN
    966          
    967973
    968974           call watercloud(ngrid,nlayer,ptimestep,
     
    979985           ENDDO
    980986           endif
    981            
     987
    982988! increment water vapour and ice atmospheric tracers tendencies
    983989           IF (water) THEN
     
    11701176        ENDDO    ! (iq)
    11711177
    1172 
    11731178      endif !  of if (tracer)
    11741179
     
    12441249      ENDIF  ! of IF (tracer.AND.water.AND.(ngridmx.NE.1))
    12451250
    1246 
     1251c
    12471252c   9.2 Compute soil temperatures and subsurface heat flux:
    12481253c   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    13031308       DO ig=1,ngridmx
    13041309          DO l=1,nlayermx
    1305               zh(ig,l) = zt(ig,l)*(zplay(ig,l)/zplev(ig,1))**rcp
     1310              zh(ig,l) = zt(ig,l)*(zplev(ig,1)/zplay(ig,l))**rcp
    13061311          ENDDO
    13071312       ENDDO
     
    15951600#include "fill_save.inc"
    15961601#else
     1602#ifndef MESOINI
    15971603
    15981604c        ==========================================================
     
    16471653             endif
    16481654
    1649 #ifdef MESOINI
     1655#else
     1656     !!! this is to ensure correct initialisation of mesoscale model
     1657        call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2,
     1658     &                  tsurf)
     1659        call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",2,ps)
     1660        call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",2,
     1661     &                  co2ice)
     1662        call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt)
     1663        call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu)
     1664        call WRITEDIAGFI(ngrid,"v","Meridional wind","m.s-1",3,zv)
    16501665        call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
    16511666     &                  emis)
    1652         call WRITEDIAGFI(ngrid,"rho","density","none",3,rho)
    16531667        call WRITEDIAGFI(ngrid,"tsoil","Soil temperature",
    16541668     &                       "K",3,tsoil)
     
    18331847         z_out=0.
    18341848         if (calltherm .and. (z_out .gt. 0.)) then
    1835          call surflayer_interpol(ngrid,nlayer,z0,g,zzlay,zu,zv,wmax_th
    1836      &              ,tsurf,zh,z_out,Teta_out,u_out,ustar,tstar,L_mo)
    1837 
    1838          zu2(:)=sqrt(zu(:,1)*zu(:,1)+zv(:,1)*zv(:,1))
    1839          call WRITEDIAGFI(ngridmx,'sqrt(zu2)',
    1840      &              'horizontal velocity norm','m/s',
    1841      &                         2,zu2)
    1842 
    1843          call WRITEDIAGFI(ngridmx,'Teta_out',
    1844      &              'potential temperature at z_out','K',
    1845      &                         2,Teta_out)
    1846          call WRITEDIAGFI(ngridmx,'u_out',
    1847      &              'horizontal velocity norm at z_out','m/s',
    1848      &                         2,u_out)
    1849          call WRITEDIAGFI(ngridmx,'u*',
    1850      &              'friction velocity','m/s',
    1851      &                         2,ustar)
    1852          call WRITEDIAGFI(ngridmx,'teta*',
    1853      &              'friction potential temperature','K',
    1854      &                         2,tstar)
    1855          call WRITEDIAGFI(ngrid,'L',
    1856      &              'Monin Obukhov length','m',
    1857      &                         2,L_mo)
     1849
     1850         call pbl_parameters(ngrid,nlayer,z0,
     1851     & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out,
     1852     & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv)
     1853
    18581854         else
    18591855           if((.not. calltherm).and.(z_out .gt. 0.)) then
     
    18921888     &              'maximum TH heat flux','K.m/s',
    18931889     &                         2,hfmax_th)
    1894         call WRITEDIAGFI(ngridmx,'wmax_th',
     1890        call WRITEDIAGFI(ngridmx,'wstar',
    18951891     &              'maximum TH vertical velocity','m/s',
    1896      &                         2,wmax_th)
     1892     &                         2,wstar)
    18971893
    18981894         endif
     
    19441940         z_out=0.
    19451941         if (calltherm .and. (z_out .gt. 0.)) then
    1946          call surflayer_interpol(ngrid,nlayer,z0,g,zzlay,zu,zv,wmax_th
    1947      &              ,tsurf,zh,z_out,Teta_out,u_out,ustar,tstar,L_mo)
    1948 
    1949          zu2(:)=sqrt(zu(:,1)*zu(:,1)+zv(:,1)*zv(:,1))
    1950          call WRITEDIAGFI(ngridmx,'sqrt(zu2)',
    1951      &              'horizontal velocity norm','m/s',
    1952      &                         0,zu2)
    1953 
    1954          call WRITEDIAGFI(ngridmx,'Teta_out',
    1955      &              'potential temperature at z_out','K',
    1956      &                         0,Teta_out)
    1957          call WRITEDIAGFI(ngridmx,'u_out',
    1958      &              'horizontal velocity norm at z_out','m/s',
    1959      &                         0,u_out)
    1960          call WRITEDIAGFI(ngridmx,'u*',
    1961      &              'friction velocity','m/s',
    1962      &                         0,ustar)
    1963          call WRITEDIAGFI(ngridmx,'teta*',
    1964      &              'friction potential temperature','K',
    1965      &                         0,tstar)
     1942
     1943         call pbl_parameters(ngrid,nlayer,z0,
     1944     & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out,
     1945     & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv)
     1946
    19661947         else
    19671948           if((.not. calltherm).and.(z_out .gt. 0.)) then
     
    19771958     &              'hauteur du thermique','point',
    19781959     &                         0,lmax_th_out)
     1960        call WRITEDIAGFI(ngridmx,'zmax_th',
     1961     &              'hauteur du thermique','m',
     1962     &                         0,zmax_th)
    19791963        call WRITEDIAGFI(ngridmx,'hfmax_th',
    19801964     &              'maximum TH heat flux','K.m/s',
    19811965     &                         0,hfmax_th)
    1982         call WRITEDIAGFI(ngridmx,'wmax_th',
     1966        call WRITEDIAGFI(ngridmx,'wstar',
    19831967     &              'maximum TH vertical velocity','m/s',
    1984      &                         0,wmax_th)
     1968     &                         0,wstar)
    19851969
    19861970         co2col(:)=0.
  • trunk/LMDZ.MARS/libf/phymars/surfini.F

    r520 r528  
    6464       
    6565#ifdef MESOSCALE
    66 
    6766      do ig=1,ngridmx
    68 
    6967         !write(*,*) "all qsurf to zero. dirty."
    7068         do iq=1,nqmx
     
    8381                 watercaptag(ig)  = .false.
    8482                 dryness(ig)      = 1.
    85          endif
    86          
    87       endif
     83         endif 
     84      enddo
    8885#else
    8986       ! print*,'ngridmx',ngridmx
Note: See TracChangeset for help on using the changeset viewer.