Ignore:
Timestamp:
Jun 14, 2012, 4:14:11 PM (13 years ago)
Author:
emillour
Message:

Mars GCM:

  • Added possibility to run with a varying EUV cycle following real one. The flag solvarmod=1 triggers this behaviour, with companion flag solvaryear=## , where ## is the Mars Year (from 23 to 30). Setting solvarmod=0 reverts to 'old' behaviour, where there is a constant EUV forcing throughout the run, set by the "solarcondate" flag.
  • Needs corresponding input data files ("param_v6" subdirectory of "EUV" subdirectory in "datadir").
  • Added files jthermcalc_e107.F and param_read_e107.F in "aeronomars", modified files euvheat.F90, hrtherm.F, chemthermos.F90, param_v4.h and param_read.F in "aeronomars" and files inifis.F, physiq.F and callkeys.h in "phymars".

FGG

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

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/callkeys.h

    r635 r705  
    1616     
    1717      COMMON/callkeys_i/iradia,iaervar,iddist,ilwd,ilwb,ilwn,ncouche    &
    18      &   ,dustbin,nltemodel,nircorr
     18     &   ,dustbin,nltemodel,nircorr,solvarmod,solvaryear
    1919     
    2020      COMMON/callkeys_r/topdustref,solarcondate,semi,alphan,euveff,     &
     
    4747      integer ilwn
    4848      integer ncouche
     49      integer solvarmod   ! model for solar EUV variation
     50      integer solvaryear  ! mars year for realisticly varying solar EUV
    4951
    5052      logical rayleigh
  • trunk/LMDZ.MARS/libf/phymars/inifis.F

    r677 r705  
    584584         write(*,*) " thermochem = ",thermochem
    585585
     586         write(*,*) "Method to include solar variability"
     587         write(*,*) "0-> old method (using solarcondate); ",
     588     &                  "1-> variability wit E10.7"
     589         solvarmod=1
     590         call getin("solvarmod",solvarmod)
     591         write(*,*) " solvarmod = ",solvarmod
     592
    586593         write(*,*) "date for solar flux calculation:",
    587      &   " (1985 < date < 2002)"
     594     &   " (1985 < date < 2002)",
     595     $   " (Only used if solvarmod=0)"
    588596         write(*,*) "(Solar min=1996.4 ave=1993.4 max=1990.6)"
    589597         solarcondate=1993.4 ! default value
     
    591599         write(*,*) " solarcondate = ",solarcondate
    592600         
     601         write(*,*) "Solar variability as observed for MY: "
     602         write(*,*) "Only if solvarmod=1"
     603         solvaryear=24
     604         call getin("solvaryear",solvaryear)
     605         write(*,*) " solvaryear = ",solvaryear
     606
    593607         write(*,*) "UV heating efficiency:",
    594608     &   "measured values between 0.19 and 0.23 (Fox et al. 1996)",
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r698 r705  
    308308      real rho(ngridmx,nlayermx)  ! density
    309309      real vmr(ngridmx,nlayermx)  ! volume mixing ratio
     310      real rhopart(ngridmx,nlayermx) ! number density of a given species
    310311      real colden(ngridmx,nqmx)   ! vertical column of tracers
    311312      REAL mtot(ngridmx)          ! Total mass of water vapor (kg/m2)
     
    429430c        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    430431
    431          if (callthermos) call param_read
     432         if (callthermos) then
     433            if(solvarmod.eq.0) call param_read
     434            if(solvarmod.eq.1) call param_read_e107
     435         endif
    432436#endif
    433437c        Initialize R and Cp as constant
     
    561565                 CALL nltecool(ngrid,nlayer,nq,pplay,pt,pq,zdtnlte)
    562566              else if(nltemodel.eq.2) then
    563                  do ig=1,ngrid
    564                     do l=1,nlayer
    565                        co2vmr_gcm(ig,l)=pq(ig,l,igcm_co2)*
    566      $                      mmean(ig,l)/mmol(igcm_co2)
    567                        n2vmr_gcm(ig,l)=pq(ig,l,igcm_n2)*
    568      $                      mmean(ig,l)/mmol(igcm_n2)
    569                        covmr_gcm(ig,l)=pq(ig,l,igcm_co)*
    570      $                      mmean(ig,l)/mmol(igcm_co)
    571                        ovmr_gcm(ig,l)=pq(ig,l,igcm_o)*
    572      $                      mmean(ig,l)/mmol(igcm_o)
    573                     enddo
    574                  enddo
     567                co2vmr_gcm(1:ngrid,1:nlayer)=
     568     &                      pq(1:ngrid,1:nlayer,igcm_co2)*
     569     &                      mmean(1:ngrid,1:nlayer)/mmol(igcm_co2)
     570                n2vmr_gcm(1:ngrid,1:nlayer)=
     571     &                      pq(1:ngrid,1:nlayer,igcm_n2)*
     572     &                      mmean(1:ngrid,1:nlayer)/mmol(igcm_n2)
     573                covmr_gcm(1:ngrid,1:nlayer)=
     574     &                      pq(1:ngrid,1:nlayer,igcm_co)*
     575     &                      mmean(1:ngrid,1:nlayer)/mmol(igcm_co)
     576                ovmr_gcm(1:ngrid,1:nlayer)=
     577     &                      pq(1:ngrid,1:nlayer,igcm_o)*
     578     &                      mmean(1:ngrid,1:nlayer)/mmol(igcm_o)
    575579                 
    576580                 CALL NLTEdlvr09_TCOOL(ngrid,nlayer,pplay*9.869e-6,
     
    578582     $                ovmr_gcm,  zdtnlte )
    579583
    580                  do ig=1,ngrid
    581                     do l=1,nlayer
    582                        zdtnlte(ig,l)=zdtnlte(ig,l)/86400.
    583                     enddo
    584                  enddo
     584                 zdtnlte(1:ngrid,1:nlayer)=
     585     &                             zdtnlte(1:ngrid,1:nlayer)/86400.
    585586              endif
    586587           else
     
    15491550        call wstats(ngrid,"v","Meridional (North-South) wind",
    15501551     &                "m.s-1",3,zv)
    1551 c           call wstats(ngrid,"w","Vertical (down-up) wind",
    1552 c     &                "m.s-1",3,pw)
     1552        call wstats(ngrid,"w","Vertical (down-up) wind",
     1553     &                "m.s-1",3,pw)
    15531554        call wstats(ngrid,"rho","Atmospheric density","kg/m3",3,rho)
    1554 c           call wstats(ngrid,"pressure","Pressure","Pa",3,pplay)
     1555        call wstats(ngrid,"pressure","Pressure","Pa",3,pplay)
    15551556c          call wstats(ngrid,"q2",
    15561557c    &                "Boundary layer eddy kinetic energy",
     
    16241625     $                 noms(iq) .ne. "ccn_mass" .and.
    16251626     $                 noms(iq) .ne. "ccn_number") then
    1626                    do l=1,nlayer
    1627                       do ig=1,ngrid
    1628                          vmr(ig,l)=zq(ig,l,iq)*mmean(ig,l)/mmol(iq)
    1629                       end do
    1630                    end do
     1627                    vmr(1:ngrid,1:nlayer)=zq(1:ngrid,1:nlayer,iq)
     1628     &                          *mmean(1:ngrid,1:nlayer)/mmol(iq)
     1629                    rhopart(1:ngrid,1:nlayer)=zq(1:ngrid,1:nlayer,iq)
     1630     &                          *rho(1:ngrid,1:nlayer)*n_avog/
     1631     &                           (1000*mmol(iq))
    16311632                   call wstats(ngrid,"vmr_"//trim(noms(iq)),
    16321633     $                         "Volume mixing ratio","mol/mol",3,vmr)
     1634!                   call wstats(ngrid,"rho_"//trim(noms(iq)),
     1635!     $                     "Number density","cm-3",3,rhopart)
     1636!                   call writediagfi(ngrid,"rho_"//trim(noms(iq)),
     1637!     $                     "Number density","cm-3",3,rhopart)
    16331638                   if ((noms(iq).eq."o") .or. (noms(iq).eq."co2").or.
    16341639     $                 (noms(iq).eq."o3")) then                     
     
    19281933c          endif ! (submicron)
    19291934         end if  ! (tracer.and.(dustbin.ne.0))
     1935
     1936
     1937c        ----------------------------------------------------------
     1938c        Thermospheric outputs
     1939c        ----------------------------------------------------------
     1940
     1941         if(callthermos) then
     1942
     1943            call WRITEDIAGFI(ngridmx,"q15um","15 um cooling","K/s",
     1944     $           3,zdtnlte)
     1945            call WRITEDIAGFI(ngridmx,"quv","UV heating","K/s",
     1946     $           3,zdteuv)
     1947            call WRITEDIAGFI(ngridmx,"cond","Thermal conduction","K/s",
     1948     $           3,zdtconduc)
     1949            call WRITEDIAGFI(ngridmx,"qnir","NIR heating","K/s",
     1950     $           3,zdtnirco2)
     1951
     1952         endif  !(callthermos)
    19301953
    19311954c        ----------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.