Changeset 1264


Ignore:
Timestamp:
May 16, 2014, 11:49:52 AM (11 years ago)
Author:
aslmd
Message:

LMDZ.MARS. Two modifications related to outputs. 1. corrected a bug for thermospheric outputs (writediagfi under a callstats flag) 2. (only for mesoscale) made adaptations to allow for freedust runs with MESOSCALE.

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

Legend:

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

    r1246 r1264  
    370370           stop
    371371         endif
     372#ifndef MESOSCALE
     373         ! this test is valid in GCM case
     374         ! ... not in mesoscale case, for we want to activate mesoscale lifting
    372375         if (freedust.and.lifting) then
    373376           print*,'if freedust is used, then lifting should not be used'
     
    375378           lifting=.false.
    376379         endif
     380#endif
    377381
    378382! callddevil
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r1246 r1264  
    18571857!                   call writediagfi(ngrid,"rho_"//trim(noms(iq)),
    18581858!     $                     "Number density","cm-3",3,rhopart)
    1859                    if ((noms(iq).eq."o") .or. (noms(iq).eq."co2").or.
    1860      $                 (noms(iq).eq."o3")) then                     
    1861                       call writediagfi(ngrid,"vmr_"//trim(noms(iq)),
    1862      $                         "Volume mixing ratio","mol/mol",3,vmr)
    1863                    end if
    18641859                   do ig = 1,ngrid
    18651860                      colden(ig,iq) = 0.                           
     
    18741869                   call wstats(ngrid,"c_"//trim(noms(iq)),           
    18751870     $                         "column","mol cm-2",2,colden(1,iq)) 
    1876                    call writediagfi(ngrid,"c_"//trim(noms(iq)), 
    1877      $                             "column","mol cm-2",2,colden(1,iq))
    18781871                  end if ! of if (noms(iq) .ne. "dust_mass" ...)
    18791872                end do ! of do iq=1,nq
     
    21342127
    21352128         if (tracer.and.(dustbin.ne.0)) then
     2129
    21362130          call WRITEDIAGFI(ngrid,'tau','taudust','SI',2,tau(1,1))
     2131
     2132#ifndef MESOINI
    21372133           if (doubleq) then
    21382134c            call WRITEDIAGFI(ngrid,'qsurf','qsurf',
     
    21642160c             call WRITEDIAGFI(ngrid,"tauscaling",
    21652161c     &                    "dust conversion factor"," ",2,tauscaling)
    2166 #ifdef MESOINI
     2162           else
     2163             do iq=1,dustbin
     2164               write(str2(1:2),'(i2.2)') iq
     2165               call WRITEDIAGFI(ngrid,'q'//str2,'mix. ratio',
     2166     &                         'kg/kg',3,zq(1,1,iq))
     2167               call WRITEDIAGFI(ngrid,'qsurf'//str2,'qsurf',
     2168     &                         'kg.m-2',2,qsurf(1,iq))
     2169             end do
     2170           endif ! (doubleq)
     2171
     2172           if (scavenging) then
     2173             call WRITEDIAGFI(ngrid,'ccnq','CCN mass mr',
     2174     &                        'kg/kg',3,qccn)
     2175             call WRITEDIAGFI(ngrid,'ccnN','CCN number',
     2176     &                        'part/kg',3,nccn)
     2177           endif ! (scavenging)
     2178
     2179c          if (submicron) then
     2180c            call WRITEDIAGFI(ngrid,'dustsubm','subm mass mr',
     2181c    &                        'kg/kg',3,pq(1,1,igcm_dust_submicron))
     2182c          endif ! (submicron)
     2183
     2184#else
    21672185!     !!! to initialize mesoscale we need scaled variables
    21682186!     !!! because this must correspond to starting point for tracers
     
    21752193!             call WRITEDIAGFI(ngrid,'ccnN','Nuclei number',
    21762194!     &           'part/kg',3,pq(1:ngrid,1:nlayer,igcm_ccn_number))
    2177               call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
    2178      &                        'kg/kg',3,pq(1,1,igcm_dust_mass))
    2179               call WRITEDIAGFI(ngrid,'dustN','Dust number',
    2180      &                        'part/kg',3,pq(1,1,igcm_dust_number))
    2181               call WRITEDIAGFI(ngrid,'ccn','Nuclei mass mr',
    2182      &                        'kg/kg',3,pq(1,1,igcm_ccn_mass))
    2183               call WRITEDIAGFI(ngrid,'ccnN','Nuclei number',
    2184      &                        'part/kg',3,pq(1,1,igcm_ccn_number))
    2185 #endif
    2186            else
    2187              do iq=1,dustbin
    2188                write(str2(1:2),'(i2.2)') iq
    2189                call WRITEDIAGFI(ngrid,'q'//str2,'mix. ratio',
    2190      &                         'kg/kg',3,zq(1,1,iq))
    2191                call WRITEDIAGFI(ngrid,'qsurf'//str2,'qsurf',
    2192      &                         'kg.m-2',2,qsurf(1,iq))
    2193              end do
    2194            endif ! (doubleq)
    2195 
    2196            if (scavenging) then
    2197              call WRITEDIAGFI(ngrid,'ccnq','CCN mass mr',
     2195      if (freedust) then
     2196             call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
     2197     &                        'kg/kg',3,qdust)
     2198             call WRITEDIAGFI(ngrid,'dustN','Dust number',
     2199     &                        'part/kg',3,ndust)
     2200             call WRITEDIAGFI(ngrid,'ccn','CCN mass mr',
    21982201     &                        'kg/kg',3,qccn)
    21992202             call WRITEDIAGFI(ngrid,'ccnN','CCN number',
    22002203     &                        'part/kg',3,nccn)
    2201            endif ! (scavenging)
    2202 
    2203 c          if (submicron) then
    2204 c            call WRITEDIAGFI(ngrid,'dustsubm','subm mass mr',
    2205 c    &                        'kg/kg',3,pq(1,1,igcm_dust_submicron))
    2206 c          endif ! (submicron)
     2204      else
     2205             call WRITEDIAGFI(ngrid,'dustq','Dust mass mr',
     2206     &                        'kg/kg',3,pq(1,1,igcm_dust_mass))
     2207             call WRITEDIAGFI(ngrid,'dustN','Dust number',
     2208     &                        'part/kg',3,pq(1,1,igcm_dust_number))
     2209             call WRITEDIAGFI(ngrid,'ccn','Nuclei mass mr',
     2210     &                        'kg/kg',3,pq(1,1,igcm_ccn_mass))
     2211             call WRITEDIAGFI(ngrid,'ccnN','Nuclei number',
     2212     &                        'part/kg',3,pq(1,1,igcm_ccn_number))
     2213      endif
     2214#endif
     2215
    22072216         end if  ! (tracer.and.(dustbin.ne.0))
    22082217
     
    22222231            call WRITEDIAGFI(ngrid,"qnir","NIR heating","K/s",
    22232232     $           3,zdtnirco2)
     2233
     2234
     2235             if (thermochem.or.photochem) then
     2236                do iq=1,nq
     2237                  if (noms(iq) .ne. "dust_mass" .and.
     2238     $                 noms(iq) .ne. "dust_number" .and.
     2239     $                 noms(iq) .ne. "ccn_mass" .and.
     2240     $                 noms(iq) .ne. "ccn_number" .and.
     2241     $                 noms(iq) .ne. "h2o_vap" .and.
     2242     $                 noms(iq) .ne. "h2o_ice") then
     2243                    vmr(1:ngrid,1:nlayer)=zq(1:ngrid,1:nlayer,iq)
     2244     &                          *mmean(1:ngrid,1:nlayer)/mmol(iq)
     2245                    rhopart(1:ngrid,1:nlayer)=zq(1:ngrid,1:nlayer,iq)
     2246     &                          *rho(1:ngrid,1:nlayer)*n_avog/
     2247     &                           (1000*mmol(iq))
     2248                   call writediagfi(ngrid,"rho_"//trim(noms(iq)),
     2249     $                     "Number density","cm-3",3,rhopart)
     2250                   if ((noms(iq).eq."o") .or. (noms(iq).eq."co2").or.
     2251     $                 (noms(iq).eq."o3")) then
     2252                      call writediagfi(ngrid,"vmr_"//trim(noms(iq)),
     2253     $                         "Volume mixing ratio","mol/mol",3,vmr)
     2254                   end if
     2255                   do ig = 1,ngrid
     2256                      colden(ig,iq) = 0.
     2257                   end do
     2258                   do l=1,nlayer
     2259                      do ig=1,ngrid
     2260                         colden(ig,iq) = colden(ig,iq) + zq(ig,l,iq)
     2261     $                                  *(zplev(ig,l)-zplev(ig,l+1))
     2262     $                                  *6.022e22/(mmol(iq)*g)
     2263                      end do
     2264                   end do
     2265                   call writediagfi(ngrid,"c_"//trim(noms(iq)),
     2266     $                             "column","mol cm-2",2,colden(1,iq))
     2267                  end if ! of if (noms(iq) .ne. "dust_mass" ...)
     2268                end do ! of do iq=1,nq
     2269             end if ! of if (thermochem.or.photochem)
     2270
    22242271
    22252272         endif  !(callthermos)
Note: See TracChangeset for help on using the changeset viewer.