Changeset 722 for trunk/LMDZ.MARS/libf


Ignore:
Timestamp:
Jul 12, 2012, 11:43:18 PM (12 years ago)
Author:
jbmadeleine
Message:

Found an array overflow (tauscaling) in the 1D version of the model
by compiling with g95 (debug mode). Minor changes in the 1D outputs
too.

File:
1 edited

Legend:

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

    r719 r722  
    21572157         call WRITEDIAGFI(ngrid,'co2col','integrated co2 mass'          &
    21582158     &                                      ,'kg/m-2',0,co2col)
    2159          endif
     2159         endif ! of if (calltherm)
     2160
    21602161         call WRITEDIAGFI(ngrid,'w','vertical velocity'                 &
    21612162     &                              ,'m/s',1,pw)
     
    21752176!        call WRITEDIAGFI(ngridmx,'lw_htrt','lw heat. rate',
    21762177!     &                   'w.m-2',1,zdtlw/zpopsk)
     2178         call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",0,
     2179     &                  co2ice)
    21772180
    21782181! or output in diagfi.nc (for testphys1d)
     
    21972200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    21982201         IF (water) THEN
    2199            CALL WRITEDIAGFI(ngridmx,'tauTESap',
     2202
     2203           if (.not.activice) then
     2204
     2205             tauTES=0
     2206             do l=1,nlayermx
     2207               Qabsice = min(
     2208     &             max(0.4e6*rice(1,l)*(1.+nuice_ref)-0.05 ,0.),1.2
     2209     &                      )
     2210               opTES(1,l)= 0.75 * Qabsice *
     2211     &             zq(1,l,igcm_h2o_ice) *
     2212     &             (pplev(1,l) - pplev(1,l+1)) / g
     2213     &             / (rho_ice * rice(1,l) * (1.+nuice_ref))
     2214               tauTES=tauTES+ opTES(1,l)
     2215             enddo
     2216             CALL WRITEDIAGFI(ngridmx,'tauTESap',
    22002217     &                         'tau abs 825 cm-1',
    22012218     &                         '',0,tauTES)
    2202      
    2203            CALL WRITEDIAGFI(ngridmx,'tauTES',
     2219           else
     2220
     2221             CALL WRITEDIAGFI(ngridmx,'tauTES',
    22042222     &                         'tau abs 825 cm-1',
    22052223     &                         '',0,taucloudtes)
     2224           endif
    22062225     
    22072226           mtot = 0
    22082227           icetot = 0
    22092228           h2otot = qsurf(1,igcm_h2o_ice)
    2210            rave = 0
     2229
    22112230           do l=1,nlayer
    22122231             mtot = mtot +  zq(1,l,igcm_h2o_vap)
     
    22142233             icetot = icetot +  zq(1,l,igcm_h2o_ice)
    22152234     &                 * (pplev(1,l) - pplev(1,l+1)) / g
     2235           end do
     2236           h2otot = h2otot+mtot+icetot
     2237
     2238             CALL WRITEDIAGFI(ngridmx,'h2otot',
     2239     &                         'h2otot',
     2240     &                         'kg/m2',0,h2otot)
     2241             CALL WRITEDIAGFI(ngridmx,'mtot',
     2242     &                         'mtot',
     2243     &                         'kg/m2',0,mtot)
     2244             CALL WRITEDIAGFI(ngridmx,'icetot',
     2245     &                         'icetot',
     2246     &                         'kg/m2',0,icetot)
     2247
     2248           if (scavenging) then
     2249
     2250             rave = 0
     2251             do l=1,nlayer
    22162252cccc Column integrated effective ice radius
    22172253cccc is weighted by total ice surface area (BETTER)
    2218               rave = rave + tauscaling(ig) *
    2219      &               zq(1,l,igcm_ccn_number) *
    2220      &               (pplev(1,l) - pplev(1,l+1)) / g *
    2221      &               rice(1,l) * rice(1,l)*  (1.+nuice_ref)
    2222 cccc Column integrated effective ice radius
    2223 cccc is weighted by total ice mass         (LESS GOOD)
    2224 c             rave = rave + zq(1,l,igcm_h2o_ice)
    2225 c     &                 * (pplev(1,l) - pplev(1,l+1)) / g
    2226 c     &                 *  rice(1,l) * (1.+nuice_ref)
    2227            end do
    2228            rave=icetot*0.75/max(rave*pi*rho_ice,1.e-30) ! surface weight
    2229 c           rave=rave/max(icetot,1.e-30)    ! mass weight
    2230             h2otot = h2otot+mtot+icetot
    2231            
    2232            
    2233              if (scavenging) then
    2234                Nccntot= 0
     2254             rave = rave + tauscaling(1) *
     2255     &              zq(1,l,igcm_ccn_number) *
     2256     &              (pplev(1,l) - pplev(1,l+1)) / g *
     2257     &              rice(1,l) * rice(1,l)*  (1.+nuice_ref)
     2258             enddo
     2259             rave=icetot*0.75/max(rave*pi*rho_ice,1.e-30) ! surface weight
     2260
     2261              Nccntot= 0
    22352262              call watersat(ngridmx*nlayermx,zt,pplay,zqsat)
    22362263               do l=1,nlayermx
     
    22432270!     &                      (pplev(1,l) - pplev(1,l+1)) / g
    22442271               enddo
    2245 
     2272               call WRITEDIAGFI(ngrid,"satu","vap in satu","kg/kg",1,
     2273     &                    satu)
    22462274               CALL WRITEDIAGFI(ngridmx,'Nccntot',
    22472275     &                         'Nccntot',
    22482276     &                         'nbr/m2',0,Nccntot)
    2249              endif
    2250              
    2251              
    2252              CALL WRITEDIAGFI(ngridmx,'h2otot',
    2253      &                         'h2otot',
    2254      &                         'kg/m2',0,h2otot)
    2255              CALL WRITEDIAGFI(ngridmx,'mtot',
    2256      &                         'mtot',
    2257      &                         'kg/m2',0,mtot)
    2258              CALL WRITEDIAGFI(ngridmx,'icetot',
    2259      &                         'icetot',
    2260      &                         'kg/m2',0,icetot)
    2261              CALL WRITEDIAGFI(ngridmx,'reffice',
    2262      &                         'reffice',
    2263      &                         'm',0,rave)
    2264  
    2265 
    2266             do iq=1,nq
    2267                call WRITEDIAGFI(ngridmx,trim(noms(iq))//'_s',
    2268      &              trim(noms(iq))//'_s','kg/kg',0,qsurf(1,iq))
    2269             end do
    2270 
    2271          
    2272         call WRITEDIAGFI(ngridmx,'zdqsed_dustq','sedimentation q',
     2277
     2278             call WRITEDIAGFI(ngridmx,'zdqsed_dustq','sedimentation q',
    22732279     &                   'kg.m-2.s-1',1,zdqsed(1,:,igcm_dust_mass))
    2274         call WRITEDIAGFI(ngridmx,'zdqsed_dustN','sedimentation N',
     2280             call WRITEDIAGFI(ngridmx,'zdqsed_dustN','sedimentation N',
    22752281     &                'Nbr.m-2.s-1',1,zdqsed(1,:,igcm_dust_number))
     2282
     2283           else ! of if (scavenging)
     2284
     2285cccc Column integrated effective ice radius
     2286cccc is weighted by total ice mass         (LESS GOOD)
     2287             rave = 0
     2288             do l=1,nlayer
     2289               rave = rave + zq(1,l,igcm_h2o_ice)
     2290     &              * (pplev(1,l) - pplev(1,l+1)) / g
     2291     &              *  rice(1,l) * (1.+nuice_ref)
     2292             enddo
     2293             rave=max(rave/max(icetot,1.e-30),1.e-30) ! mass weight
     2294           endif ! of if (scavenging)
     2295
     2296           CALL WRITEDIAGFI(ngridmx,'reffice',
     2297     &                      'reffice',
     2298     &                      'm',0,rave)
     2299
     2300           do iq=1,nq
     2301             call WRITEDIAGFI(ngridmx,trim(noms(iq))//'_s',
     2302     &            trim(noms(iq))//'_s','kg/kg',0,qsurf(1,iq))
     2303           end do
    22762304     
    22772305        call WRITEDIAGFI(ngridmx,'zdqcloud_ice','cloud ice',
     
    22832311     &                          +zdqcloud(1,:,igcm_h2o_vap))
    22842312     
    2285      
    22862313          call WRITEDIAGFI(ngrid,"rice","ice radius","m",1,
    22872314     &                    rice)
    2288           call WRITEDIAGFI(ngrid,"satu","vap in satu","kg/kg",1,
    2289      &                    satu)
    22902315         ENDIF ! of IF (water)
    22912316         
Note: See TracChangeset for help on using the changeset viewer.