Ignore:
Timestamp:
Jun 20, 2011, 6:35:32 PM (13 years ago)
Author:
aslmd
Message:

MESOSCALE: sources storm maintenant compatibles avec ajout des thermiques par acolmd.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/meso_physiq.F

    r160 r169  
    5050c      5. Convective adjustment
    5151c      6. Condensation and sublimation of carbon dioxide.
    52 
    5352c      7.  TRACERS :
    5453c       7a. water and water ice
     
    5857c      8. Contribution to tendencies due to thermosphere
    5958c      9. Surface and sub-surface temperature calculations
    60 c     10. dust bomb propagative perturbation
    61 c     11. Write outputs :
     59c     10. Write outputs :
    6260c           - "startfi", "histfi" (if it's time)
    6361c           - Saving statistics (if "callstats = .true.")
    6462c           - Dumping eof (if "calleofdump = .true.")
    6563c           - Output any needed variables in "diagfi"
    66 c     12. Diagnostic: mass conservation of tracers
     64c     11. Diagnostic: mass conservation of tracers
    6765c
    6866c   author:
     
    202200      LOGICAL flag_LES     !! pour LES avec isfflx!=0
    203201      REAL qsurfice(ngridmx) !! pour diagnostics
    204       REAL qsurfice_dust(ngridmx) !! pour diagnostics de poussière
     202      REAL qsurfice_dust(ngridmx) !! pour diagnostics de poussiere
    205203      real alpha,lay1 ! coefficients for building layers
    206204      integer iloop
     
    252250c     Albedo of deposited surface ice
    253251      !!REAL, PARAMETER :: alb_surfice = 0.4 ! 0.45
    254       REAL, PARAMETER :: alb_surfice = 0.45 !!TESTS_JB
     252      REAL, PARAMETER :: alb_surfice = 0.45 !!TESTS_JB 
    255253
    256254      SAVE day_ini, icount
     
    349347      REAL ccn(ngridmx,nlayermx)   ! Cloud condensation nuclei
    350348                                   !   (particules kg-1)
    351       SAVE ccn  !! in case iradia != 1 
     349      SAVE ccn  !! in case iradia != 1
    352350      real rdust(ngridmx,nlayermx) ! dust geometric mean radius (m)
    353351      real qtot1,qtot2 ! total aerosol mass
     
    372370      REAL time_phys
    373371
     372c Variables from thermal
     373
     374      REAL lmax_th_out(ngrid)
     375      REAL pdu_th(ngrid,nlayer),pdv_th(ngrid,nlayer)
     376      REAL pdt_th(ngrid,nlayer),pdq_th(ngrid,nlayer,nq)
     377      INTEGER lmax_th(ngrid)
     378      REAL dtke_th(ngrid,nlayer+1)
     379      REAL dummycol(ngrid)
    374380c=======================================================================
    375381#ifdef MESOSCALE
     
    459465c ****WRF
    460466ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    461 
    462467
    463468
     
    593598      ENDIF        !  (end of "if firstcall")
    594599
    595 
    596600c ---------------------------------------------------
    597601c 1.2   Initializations done at every physical timestep:
     
    678682
    679683
    680       IF (callrad) THEN 
     684      IF (callrad) THEN
    681685         zdqnorm(:,:,:) = 0.         
    682686         IF( MOD(icount-1,iradia).EQ.0) THEN
     
    10091013            DO l=1,nlayer
    10101014              DO ig=1,ngrid
    1011                  pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdif(ig,l,iq)
    1012              ENDDO
     1015                 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdif(ig,l,iq) 
     1016              ENDDO
    10131017            ENDDO
    10141018           ENDDO
    1015 
    10161019           DO iq=1, nq
    10171020              DO ig=1,ngrid
     
    10191022              ENDDO
    10201023           ENDDO
    1021 !truc ajouté pour vérifier la conservation.
     1024!truc ajoute pour verifier la conservation.
    10221025              DO ig=1,ngrid
    10231026                 zdqsdif_diag(ig)=zdqsdif(ig,igcm_dust_mass)*3.6e9
     
    10281031         DO ig=1,ngrid
    10291032            zdtsurf(ig)=zdtsurf(ig)+
    1030      &      (fluxrad(ig)+fluxgrd(ig))/capcal(ig)
     1033     s      (fluxrad(ig)+fluxgrd(ig))/capcal(ig)
    10311034         ENDDO
    10321035!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    10391042      ENDIF ! of IF (calldifv)
    10401043
     1044c-----------------------------------------------------------------------
     1045c   TEST. Thermals :
     1046c HIGHLY EXPERIMENTAL, BEWARE !!
     1047c   -----------------------------
     1048 
     1049      if(calltherm) then
     1050 
     1051        call calltherm_interface(ngrid,nlayer,firstcall,
     1052     $ long,lati,zzlev,zzlay,
     1053     $ ptimestep,pu,pv,pt,pq,pdu,pdv,pdt,pdq,q2,
     1054     $ pplay,pplev,pphi,nq,zpopsk,
     1055     $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,dtke_th)
     1056 
     1057         DO l=1,nlayer
     1058           DO ig=1,ngrid
     1059              pdu(ig,l)=pdu(ig,l)+pdu_th(ig,l)
     1060              pdv(ig,l)=pdv(ig,l)+pdv_th(ig,l)
     1061              pdt(ig,l)=pdt(ig,l)+pdt_th(ig,l)
     1062              q2(ig,l)=q2(ig,l)+dtke_th(ig,l)*ptimestep
     1063           ENDDO
     1064        ENDDO
     1065 
     1066        DO ig=1,ngrid
     1067          q2(ig,nlayer+1)=q2(ig,nlayer+1)+dtke_th(ig,nlayer+1)*ptimestep
     1068        ENDDO     
     1069   
     1070        if (tracer) then
     1071        DO iq=1,nq
     1072         DO l=1,nlayer
     1073           DO ig=1,ngrid
     1074             pdq(ig,l,iq)=pdq(ig,l,iq)+pdq_th(ig,l,iq)
     1075           ENDDO
     1076         ENDDO
     1077        ENDDO
     1078        endif
     1079
     1080        else   !of if calltherm
     1081        lmax_th(:)=0
     1082        end if
    10411083
    10421084c-----------------------------------------------------------------------
     
    10561098
    10571099         CALL convadj(ngrid,nlayer,nq,ptimestep,
    1058      $                pplay,pplev,zpopsk,
     1100     $                pplay,pplev,zpopsk,lmax_th,
    10591101     $                pu,pv,zh,pq,
    10601102     $                pdu,pdv,zdh,pdq,
    10611103     $                zduadj,zdvadj,zdhadj,
    10621104     $                zdqadj)
     1105
    10631106
    10641107         DO l=1,nlayer
     
    11041147         DO ig=1,ngrid
    11051148            zdtsurf(ig) = zdtsurf(ig) + zdtsurfc(ig)
    1106 !!!**WRF: newphys: ici la pression n'est plus mise a jour ds le GCM
    1107 !!!**WRF: mais il faut retablir ca dans le cas du mesoscale ?
    1108 !!!**WRF: ...non probablement OK
    1109 !            ps(ig)=pplev(ig,1) + pdpsrf(ig)*ptimestep
    11101149         ENDDO
    11111150
     
    11351174c        ----------------------------------------
    11361175         IF (water) THEN
    1137 
    1138 c **WRF: new arguments here rnuclei,rice,nuice
    1139 c  plus no more iqmin +igcm_h2o_vap replaces iq, what are the consequences?
    1140 c  checks needed when tracers simulations
    11411176
    11421177           call watercloud(ngrid,nlayer,ptimestep,
     
    12601295           zdqssed(1:ngrid,1:nq)=0
    12611296
    1262 c
    1263 c **WRF: new arguments rnuclei, rice, need checks
    1264 c
    12651297           call callsedim(ngrid,nlayer, ptimestep,
    12661298     &                pplev,zzlev, pt, rdust, rice,
    12671299     &                pq, pdq, zdqsed, zdqssed,nq)
     1300
    12681301           DO iq=1, nq
    12691302             DO l=1,nlayer
     
    12831316         END IF   ! of IF (sedimentation)
    12841317
    1285 
    12861318c   7d. Updates
    12871319c     ---------
     
    13401372      ENDDO
    13411373
    1342 ccc
    1343 ccc  **WRF very specific to GCM
    1344 ccc
    13451374c  Prescribe a cold trap at south pole (except at high obliquity !!)
    13461375c  Temperature at the surface is set there to be the temperature
     
    13721401c              ALWAYS PLACE these lines after newcondens !!!
    13731402c       -------------------------------------------------------------
    1374 c
    13751403c **WRF : OK avec le mesoscale, pas d'indices bizarres au pole
    1376 c
    13771404         do ig=1,ngrid
    13781405           if ((co2ice(ig).eq.0).and.
     
    13921419      ENDIF
    13931420c-----------------------------------------------------------
    1394 c   10. Ajout tache de poussière ou 'dust bomb propagative perturbation'
     1421c   10. Ajout tache de poussiere ou 'dust bomb propagative perturbation'
    13951422c------------------------------------------------------------
    13961423            DO l=1,nlayer
     
    14211448
    14221449c-----------------------------------------------------------------------
    1423 c  11. Write output files
     1450c  10. Write output files
    14241451c  ----------------------
    14251452
     
    15631590           if (water) then
    15641591
    1565 !!
    1566 !!***WRF: ok, des nouveaux trucs cools de la nouvelle physique
    1567 !!
    15681592             call zerophys(ngrid,mtot)
    15691593             call zerophys(ngrid,icetot)
     
    16061630c        which can later be used to make the statistic files of the run:
    16071631c        "stats")          only possible in 3D runs !
    1608 
    16091632         
    16101633         IF (callstats) THEN
     
    17231746      !
    17241747      !enddo
    1725       TAU_lay(:)=tau(:,1)!!c'est le tau qui évolue
    1726        wtsurf(1:ngrid) = tsurf(1:ngrid)    !! surface temperature
     1748      TAU_lay(:)=tau(:,1)!!c'est le tau qui evolue
     1749      wtsurf(1:ngrid) = tsurf(1:ngrid)    !! surface temperature
    17271750      wco2ice(1:ngrid) = co2ice(1:ngrid)  !! co2 ice
    17281751      mtot(1:ngrid) = mtot(1:ngrid) * 1.e6 / rho_ice
    1729 c**********pour avoir qte poussière en surface****************
     1752c**********pour avoir qte poussiere en surface****************
    17301753      IF (igcm_dust_mass .ne. 0) THEN
    17311754        qsurfice_dust(1:ngrid) = qsurf(1:ngrid,igcm_dust_mass)
Note: See TracChangeset for help on using the changeset viewer.