This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Segmentation fault for the following Fortran program at -O3 on x86-64.


The program is attached.

The command line was:

gfortran -c -O3 inv_dee_main.f

with this gfortran:

Using built-in specs.
COLLECT_GCC=/usr/crz/bin/gfortran
COLLECT_LTO_WRAPPER=/usr/crz/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc/configure --enable-checking=release --prefix=/usr/crz --disable-multilib --disable-nls --with-arch-64=native --with-tune-64=native --enable-languages=fortran,c++ --disable-werror
Thread model: posix
gcc version 4.6.0 20100805 (experimental) (GCC)


gdb backtrace gives:

$ gdb /usr/crz/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/f951
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) run inv_dee_main.f -ffixed-form -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=core2 -quiet -dumpbase inv_dee_main.f -auxbase inv_dee_main -O3 -version -fintrinsic-modules-path /usr/crz/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/finclude -o /tmp/ccpApakj.s
Starting program: /usr/crz/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/f951 inv_dee_main.f -ffixed-form -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=core2 -quiet -dumpbase inv_dee_main.f -auxbase inv_dee_main -O3 -version -fintrinsic-modules-path /usr/crz/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/finclude -o /tmp/ccpApakj.s
GNU Fortran (GCC) version 4.6.0 20100805 (experimental) (x86_64-unknown-linux-gnu)
compiled by GNU C version 4.6.0 20100805 (experimental), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU Fortran (GCC) version 4.6.0 20100805 (experimental) (x86_64-unknown-linux-gnu)
compiled by GNU C version 4.6.0 20100805 (experimental), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072


Program received signal SIGSEGV, Segmentation fault.
find_uses_to_rename_use (bb=0x7f91a552e9c0, use=0x7f91a56e82c0, use_blocks=<value optimized out>, need_phis=0x1316ec0) at ../../gcc/gcc/tree-ssa-loop-manip.c:1242
1242 }
(gdb) where
#0 find_uses_to_rename_use (bb=0x7f91a552e9c0, use=0x7f91a56e82c0, use_blocks=<value optimized out>, need_phis=0x1316ec0) at ../../gcc/gcc/tree-ssa-loop-manip.c:1242
#1 0x0000000000000a00 in ?? ()
#2 0x000000000136d510 in ?? ()
#3 0x0000000001373a50 in ?? ()
#4 0x0000000000000000 in ?? ()


Note that 1242 is the last line of tree-ssa-loop-manip.c - it looks like most of the stack has been blown away, and the segmentation fault simply happens on return ...

This revision works: 162679
--
Toon Moene - e-mail: toon@moene.org - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
At home: http://moene.org/~toon/; weather: http://moene.org/~hirlam/
Progress of GNU Fortran: http://gcc.gnu.org/gcc-4.5/changes.html#Fortran
      subroutine inv_dee_main
      implicit none
                             INTEGER
     1 JPMXGICL         , JPMXGRCL
     2,JPMXICRL         , JPMXICHL         , JPMXICBL
     3,JPMXICDL         
     4,JPMXOCRL         , JPMXOCHL         , JPMXOCBL
     5,JPMXOCDL         , JPMXDEPL
                             PARAMETER(
     1 JPMXGICL=       1, JPMXGRCL=  2 000 000
     2,JPMXICRL=  164811, JPMXICHL=     581, JPMXICBL=      72
     3,JPMXICDL=    3072
     4,JPMXOCRL=  164811, JPMXOCHL=     581, JPMXOCBL=      72
     5,JPMXOCDL=    3072, JPMXDEPL=     319                   ) 
                             INTEGER
     1 JPMXLID          , JPMXPCD          , JPMXRE1
     2,JPMXRE2          , JPMXDE1          , JPMXDE2
     3,JPMXRBLE         , JPMXDBLE
     4,JPMXRDF          , JPMXDDF          , JPMXADF
     5,JPMXSBI2         , JPMXSMI2         , JPMXSMV
     6,JPMXSMW          , JPMXSMX          , JPMXSMY
     7,JPMXSMA          , JPMXSMB          , JPMXSMC
     8,JPMXSBI1
                             PARAMETER (
     1 JPMXLID =       9, JPMXPCD =      13, JPMXRE1 =      30
     2,JPMXRE2 =      30, JPMXDE1 =      30, JPMXDE2 =      30
     3,JPMXRBLE=      30, JPMXDBLE=      30
     4,JPMXRDF =       5, JPMXDDF =       7, JPMXADF =       7
     5,JPMXSBI2=       5, JPMXSMI2=       4, JPMXSMV =       3
     6,JPMXSMW =       3, JPMXSMX =       5, JPMXSMY =       7
     7,JPMXSMA =       3, JPMXSMB =       3, JPMXSMC =       3
     8,JPMXSBI1=       5                                      )
                             INTEGER
     1 JPMXOTP          , JPMXOCT
     2,JPMXUP           , JPMXAD           , JPMXVAR
     3,JPMXTOCH         , JPMXSSCH
     4,JPXTSL           , JPXCMA
     5,JPXSATS
                             PARAMETER (
     1 JPMXOTP =      10, JPMXOCT =      11
     2,JPMXUP  =      10, JPMXAD  =      20, JPMXVAR =      68
     3,JPMXTOCH=      27, JPMXSSCH=       7
     4,JPXTSL  =      25, JPXCMA  =       1
     5,JPXSATS =       6                                       )
       INTEGER          NOOBST  ,NOCODT
     1,NSYNOP,NSYNOPSQ,NSYNCT,NSRSCD,NSRSCDSQ,NATSCD,NATSCDSQ,NSHSCD
     2,NSHSCDSQ,NABSCD,NABSCDSQ,NSHRED,NSHREDSQ,NATSHS,NATSHSSQ
     3,NSYRCD,NSYRCDSQ
     1,NAIREP,NAIREPSQ,NAIRCT,NAIRCD,NAIRCDSQ,NCODAR,NCODARSQ,NCOLBA
     3,NCOLBASQ,NAMDAR,NAMDARSQ,NACARS,NACARSSQ,NSIMAI,NSIMAISQ
     1,NSATOB,NSATOBSQ,NSABCT,NSTBCD,NSTBCDSQ,NSST,NSSTSQ
     1,NDRIBU,NDRIBUSQ,NDRICT,NDRBCD,NDRBCDSQ,NBATHY,NBATHYSQ,NTESAC
     3,NTESACSQ,NDERS1,NDERS1SQ
     1,NTEMP,NTEMPSQ,NTEMCT,NLDTCD,NLDTCDSQ,NSHTCD,NSHTCDSQ,NTDROP
     3,NTDROPSQ,NROCOB,NROCOBSQ,NROCSH,NROCSHSQ,NMBTMP,NMBTMPSQ
     4,NSIMTE,NSIMTESQ
     1,NPILOT,NPILOTSQ,NPILCT,NLDPCD,NLDPCDSQ,NSHPCD,NSHPCDSQ,NWPPCD
     1,NWPPCDSQ,NEWPPCD,NEWPPCDSQ,NSATEM,NSATEMSQ,NSAMCT
     2,NSTMCD,NSTMCDSQ,NSTOVS,NSTOVSSQ,NSTDWL
     3,NSTDWLSQ,NSTTOV,NSTTOVSQ,NGTSTB,NGTSTBSQ,NGTST1,NGTST1SQ
     4,NGTST2,NGTST2SQ,NGTHRB,NGTHRBSQ,NGTHR1,NGTHR1SQ,NGTHR2
     5,NGTHR2SQ,NSSMI,NSSMISQ
     1,NPAOB,NPAOBSQ,NPAOCT,NPABCD,NPABCDSQ
     1,NSCATT,NSCATTSQ,NSCACT,NSCAT1,NSCAT1SQ,NSCAT2,NSCAT2SQ,NSCAT3
     1,NSCAT3SQ,NRARAD,NRARADSQ,NRARCT,NRARA1,NRARA1SQ
       COMMON/YOMCOCTP/ NOOBST,NOCODT
     1,NSYNOP,NSYNOPSQ,NSYNCT,NSRSCD,NSRSCDSQ,NATSCD,NATSCDSQ,NSHSCD
     2,NSHSCDSQ,NABSCD,NABSCDSQ,NSHRED,NSHREDSQ,NATSHS,NATSHSSQ
     3,NSYRCD,NSYRCDSQ
     1,NAIREP,NAIREPSQ,NAIRCT,NAIRCD,NAIRCDSQ,NCODAR,NCODARSQ,NCOLBA
     3,NCOLBASQ,NAMDAR,NAMDARSQ,NACARS,NACARSSQ,NSIMAI,NSIMAISQ
     1,NSATOB,NSATOBSQ,NSABCT,NSTBCD,NSTBCDSQ,NSST,NSSTSQ
     1,NDRIBU,NDRIBUSQ,NDRICT,NDRBCD,NDRBCDSQ,NBATHY,NBATHYSQ,NTESAC
     3,NTESACSQ,NDERS1,NDERS1SQ
     1,NTEMP,NTEMPSQ,NTEMCT,NLDTCD,NLDTCDSQ,NSHTCD,NSHTCDSQ,NTDROP
     3,NTDROPSQ,NROCOB,NROCOBSQ,NROCSH,NROCSHSQ,NMBTMP,NMBTMPSQ
     4,NSIMTE,NSIMTESQ
     1,NPILOT,NPILOTSQ,NPILCT,NLDPCD,NLDPCDSQ,NSHPCD,NSHPCDSQ,NWPPCD
     1,NWPPCDSQ,NEWPPCD,NEWPPCDSQ
     1,NSATEM,NSATEMSQ,NSAMCT,NSTMCD,NSTMCDSQ,NSTOVS
     2,NSTOVSSQ,NSTDWL,NSTDWLSQ,NSTTOV,NSTTOVSQ,NGTSTB,NGTSTBSQ
     3,NGTST1,NGTST1SQ,NGTST2,NGTST2SQ,NGTHRB,NGTHRBSQ,NGTHR1
     4,NGTHR1SQ,NGTHR2,NGTHR2SQ,NSSMI,NSSMISQ
     1,NPAOB,NPAOBSQ,NPAOCT,NPABCD,NPABCDSQ
     1,NSCATT,NSCATTSQ,NSCACT,NSCAT1,NSCAT1SQ,NSCAT2,NSCAT2SQ,NSCAT3
     1,NSCAT3SQ,NRARAD,NRARADSQ,NRARCT,NRARA1,NRARA1SQ
      integer
     $     novarib,nvnumb
                             COMMON/YOMVNMB/
     1 NOVARIB ,NVNUMB(JPMXVAR)
      integer
     1 NMXPPCD ,NPRESCD
     2,NMXLID
     3,NPRESVC ,NHEIGVC           ,NTOVCVC ,NSCACVC
     4,NMXSBI1 ,NSBI1   ,NMXSBI2 ,NSBI2I2 
     5,NMXSMI2 ,NSMI2I2 
     6,NMXSMVV ,NSMVV  
     7,NMXSMWW ,NSMWW  
     8,NMXSMXX ,NSMXX  
     9,NMXSMYY ,NSMYY  
     1,NMXSMAA ,NSMAA  
     2,NMXSMBB ,NSMBB  
     3,NMXSMCC ,NSMCC 
     4,NINTESC ,NREALSC           ,NCHARSC
                             COMMON/YOMNMCOD/
     1 NMXPPCD ,NPRESCD (JPMXPCD )
     2,NMXLID
     3,NPRESVC ,NHEIGVC           ,NTOVCVC ,NSCACVC
     4,NMXSBI1 ,NSBI1   (JPMXSBI1),NMXSBI2 ,NSBI2I2 (JPMXSBI2)
     5,NMXSMI2 ,NSMI2I2 (JPMXSMI2)
     6,NMXSMVV ,NSMVV   (JPMXSMV )
     7,NMXSMWW ,NSMWW   (JPMXSMW )
     8,NMXSMXX ,NSMXX   (JPMXSMX )
     9,NMXSMYY ,NSMYY   (JPMXSMY )
     1,NMXSMAA ,NSMAA   (JPMXSMA )
     2,NMXSMBB ,NSMBB   (JPMXSMB )
     3,NMXSMCC ,NSMCC   (JPMXSMC )
     4,NINTESC ,NREALSC           ,NCHARSC
      logical 
     $     lsynop,lsynopz,
     $     lship,lshipz,
     $     lairep,lairept,lairepu,lairepv,
     $     ldribu,ldribuz,
     $     ltemp,ltempt,ltempu,ltempv,
     $     lpilot,lpilotu,lpilotv,
     $     lsubdom,lthin
      character*100 cmafile
      integer plen,nxdom,nydom
      namelist/clcnam/
     $     lsynop,lsynopz,
     $     lship,lshipz,
     $     lairep,lairept,lairepu,lairepv,
     $     ldribu,ldribuz,
     $     ltemp,ltempt,ltempu,ltempv,
     $     lpilot,lpilotu,lpilotv,
     $     lsubdom,
     $     plen,nxdom,nydom,cmafile
      real,allocatable :: pcma(:)
      integer len,iunit
      integer i,j
      integer ngbgps
      parameter (ngbgps=31)
      real dlon,dlat,splon,splat,south,west
      integer nxfirst,nyfirst,nx,ny,idom
      integer numlev,numoblev,numsurf
      parameter(numlev=3,numoblev=1000,numsurf=1000)
      real preslev(numlev)
      integer ihor,iver,ixe,iye
      integer i_otyp(numoblev,numlev),i_vtyp(numoblev,numlev),
     $        i_xobs(numoblev,numlev),i_yobs(numoblev,numlev),
     $        i_lev(numoblev,numlev),i_styp(numoblev,numlev),
     $        i_sdom(numoblev),
     $        i_numob
      real i_ino(numoblev,numlev),i_sigmao(numoblev,numlev),
     $     i_lon(numoblev,numlev),i_lat(numoblev,numlev),
     $     i_ppp(numoblev,numlev)
      logical        l_numob(numoblev,numlev)
      integer surf_otyp(numsurf),surf_vtyp(numsurf),
     $        surf_styp(numsurf),
     $        surf_xobs(numsurf),surf_yobs(numsurf),
     $        surf_lev(numsurf),surf_sdom(numsurf),
     $        surf_numob
      integer count_200,count_500,count_850,isurflim
      real rdistlim
      real surf_ino(numsurf),surf_sigmao(numsurf),
     $     surf_lon(numsurf),surf_lat(numsurf),
     $     surf_ppp(numsurf)
      integer ilev1,ilev2,ilev3
      parameter(ilev1=10,ilev2=20,ilev3=25)
      integer maxlev,nxf,nyf,igrib,nx_grid,ny_grid
      parameter (maxlev=100,nxf=500,nyf=500,igrib=11)
      real gribbuf(nxf,nyf)
      integer nx_grib,ny_grib,nlev_grib,year,month,day,hour,length
      real afull(maxlev),bfull(maxlev)
      integer idum
      integer iunitout,itype,isubtype,kbufl
      integer iret,irednum
      logical lselect,lexists
      real plon,plat,xpos,ypos,frlobspos
      integer totalno,no
      integer nxmax_sub,nymax_sub
      parameter(nxmax_sub=10,nymax_sub=10)
      integer indexx,indexy,
     x        xfirst_sub(nxmax_sub),nx_sub(nxmax_sub),
     x        yfirst_sub(nymax_sub),ny_sub(nymax_sub),
     x        xacc,yacc,rest
             do ixe=1,numoblev
             do iye=1,numlev
                i_otyp(ixe,iye)=0
                i_styp(ixe,iye)=0
                i_vtyp(ixe,iye)=0
                i_sigmao(ixe,iye)=0
                i_xobs(ixe,iye)=0
                i_yobs(ixe,iye)=0
                i_lev(ixe,iye)=0
                i_ino(ixe,iye)=0.
                i_lat(ixe,iye)=0.
                i_lon(ixe,iye)=0.
                i_ppp(ixe,iye)=0.
                i_sdom(ixe)=0
                l_numob(ixe,iye)=.false.
             enddo
             enddo
             i_numob=0
             do ixe=1,numsurf
                surf_otyp(ixe)=0
                surf_styp(ixe)=0
                surf_vtyp(ixe)=0
                surf_sigmao(ixe)=0
                surf_xobs(ixe)=0
                surf_yobs(ixe)=0
                surf_lev(ixe)=0
                surf_ino(ixe)=0.
                surf_lat(ixe)=0.
                surf_lon(ixe)=0.
                surf_ppp(ixe)=0.
                surf_sdom(ixe)=0
             enddo
             surf_numob=1
             isurflim=200
             rdistlim=1.
             irednum=0
      cmafile='ACMA01' 
      lsynop=.true.
      lsynopz=.true.
      lship=.true.
      lshipz=.true.
      lairep=.true.
      lairept=.true.
      lairepu=.true.
      lairepv=.true.
      ldribu=.true.
      ldribuz=.true.
      ltemp=.true.
      ltempt=.true.
      ltempu=.true.
      ltempv=.true.
      lpilot=.true.
      lpilotu=.true.
      lpilotv=.true.
      lsubdom=.false.
      nxdom=1
      nydom=1
      plen=50000000
      iunit=10
      inquire(file='clcnam.dat',exist=lexists)
      if (lexists) then
         open(iunit,file='clcnam.dat')
         read(iunit,clcnam)
         close(iunit)
      endif   
      write(*,clcnam)
      allocate(pcma(plen))
      call setcma(.true.)
      call auxcmaread(cmafile,pcma,plen,len)
      call hgropen(igrib,gribbuf,nxf*nyf)
      call hgetddr(
     $   west,south,dlat,dlon,splon,splat,afull,bfull,
     $   year,month,day,hour,length,nx_grib,ny_grib,nlev_grib)
         call hgread(igrib,105,1,0.0,gribbuf,nx_grib,ny_grib,idum,iret)
      call hgrclos(igrib)
      write(*,*)'Information for grib file fort.igrib'
      write(*,'(A,2F7.2)')'(west,south)=',west,south
      write(*,'(A,2F7.2)')'(dlat,dlon)=',dlat,dlon
      write(*,'(A,2F7.2)')'(splon,splat)=',splon,splat
      write(*,'(A,3I5)')'(nx_grib,ny_grib,nlev_grib)=',
     $     nx_grib,ny_grib,nlev_grib
      if (ltemp) then
        if  (ltempt) then
           call allstat_temp(pcma,plen,len,ntemp,0,255,
     $          .false.,nvnumb(8),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
              if  (ltempu) then
           call allstat_temp(pcma,plen,len,ntemp,0,255,
     $          .false.,nvnumb(2),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
              endif
              if  (ltempv) then
           call allstat_temp(pcma,plen,len,ntemp,0,255,
     $          .false.,nvnumb(2),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
              endif
              endif
                          if  (lpilot) then
              if  (lpilotu) then
           call allstat_temp(pcma,plen,len,npilot,0,255,
     $          .false.,nvnumb(8),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
              if  (lpilotv) then
           call allstat_temp(pcma,plen,len,npilot,0,255,
     $          .false.,nvnumb(3),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
      endif

              if  (lairep) then
              if  (lairept) then
           call allstat_temp(pcma,plen,len,nairep,0,255,
     $          .false.,nvnumb(2),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
              if  (lairepu) then
           call allstat_temp(pcma,plen,len,nairep,0,255,
     $          .false.,nvnumb(2),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
              if  (lairepv) then
           call allstat_temp(pcma,plen,len,nairep,0,255,
     $          .false.,nvnumb(3),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,ilev1,ilev2,ilev3,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $     i_ino,i_otyp,i_vtyp,i_sigmao,i_xobs,i_yobs,i_lev,
     $     numoblev,numlev,i_numob,l_numob,
     $     i_lat,i_lon,i_ppp)
        endif
      endif
      if  (lsynop) then
         if (lsynopz) then
           call allstat_surf(pcma,plen,len,nsynop,0,20,
     $          .false.,nvnumb(3),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,40,ilev2,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $          surf_ino,surf_otyp,surf_styp,surf_vtyp,surf_sigmao,
     $          surf_xobs,surf_yobs,surf_lev,
     $          surf_lat,surf_lon,surf_ppp,
     $          numsurf,surf_numob)
       endif
      endif
      if  (lship) then
         if (lshipz) then
           call allstat_surf(pcma,plen,len,nsynop,21,255,
     $          .false.,nvnumb(3),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,40,ilev2,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $          surf_ino,surf_otyp,surf_styp,surf_vtyp,surf_sigmao,
     $          surf_xobs,surf_yobs,surf_lev,
     $          surf_lat,surf_lon,surf_ppp,
     $          numsurf,surf_numob)
       endif
      endif
      if  (ldribu) then
         if (ldribuz) then
           call allstat_surf(pcma,plen,len,ndribu,21,255,
     $          .false.,nvnumb(3),npresvc,
     $          south,dlat,splat,splon,west,dlon,
     $          nx_grib,ny_grib,nlev_grib,40,ilev2,
     $          gribbuf,afull,bfull,
     $          nxfirst,nyfirst,nx,ny,idom,
     $          surf_ino,surf_otyp,surf_styp,surf_vtyp,surf_sigmao,
     $          surf_xobs,surf_yobs,surf_lev,
     $          surf_lat,surf_lon,surf_ppp,
     $          numsurf,surf_numob)
       endif
      endif
        rest=mod(nx_grib,nxdom)
        write(6,*) 'restx',rest
        xacc=0
      do i=1,nxdom
        xfirst_sub(i)=xacc+1
      if (i.le.rest) then
        nx_sub(i)=xacc+nx_grib/nxdom+1
      else
        nx_sub(i)=xacc+nx_grib/nxdom
      endif
        xacc=nx_sub(i)
      enddo
        rest=mod(ny_grib,nydom)
        write(6,*) 'resty',rest
        yacc=0
       do i=1,nydom
          yfirst_sub(i)=yacc+1
          if (i.le.rest) then
        ny_sub(i)=yacc+ny_grib/nydom+1
      else
        ny_sub(i)=yacc+ny_grib/nydom
      endif
        yacc=ny_sub(i)
      enddo
      write(6,*)'nxdom,nydom',nxdom,nydom
      write(6,*) xfirst_sub(1:3),nx_sub(1:3)
      write(6,*) yfirst_sub(1:3),ny_sub(1:3)
      lthin=.false.
      if (lthin) then
           rdistlim=8.
      call surf_thin(numsurf,surf_numob,irednum,surf_otyp,
     x               surf_styp,surf_vtyp,surf_xobs,
     x               surf_yobs,surf_ino,surf_sigmao,
     x               isurflim,rdistlim)
      endif
      idom=0
      do iye=1,nydom
      do ixe=1,nxdom
       idom=idom+1
      do i=1,i_numob
      do j=1,numlev
      if (l_numob(i,j)) then
        if ((i_xobs(i,j).ge.xfirst_sub(ixe)).and.
     x     (i_xobs(i,j).le.nx_sub(ixe)).and.
     x     (i_yobs(i,j).ge.yfirst_sub(iye)).and.
     x     (i_yobs(i,j).le.ny_sub(iye)))  then
      write(20+idom,'(7I4,F12.2,4F16.10)') i_otyp(i,j),i_styp(i,j),
     x                       i_vtyp(i,j),
     x                       i_xobs(i,j),i_yobs(i,j),i_lev(i,j),
     x                       idom,
     x                       i_ppp(i,j),i_lon(i,j),i_lat(i,j),
     x                       i_ino(i,j),i_sigmao(i,j)  
      endif 
      endif 
      enddo
      enddo
      enddo
      enddo
      idom=0
      do iye=1,nydom
      do ixe=1,nxdom
      idom=idom+1
      do i=1,surf_numob
        if ((surf_xobs(i).ge.xfirst_sub(ixe)).and.
     x     (surf_xobs(i).le.nx_sub(ixe)).and.
     x     (surf_yobs(i).ge.yfirst_sub(iye)).and.
     x     (surf_yobs(i).le.ny_sub(iye)))  then
      write(20+idom,'(7I4,F12.2,4F16.10)') surf_otyp(i),
     x                  surf_styp(i),
     x                  surf_vtyp(i),
     x                  surf_xobs(i),surf_yobs(i),40,idom,
     x                  surf_ppp(i),surf_lon(i),surf_lat(i),
     x                  surf_ino(i),surf_sigmao(i)
      endif
      enddo
      enddo
      enddo
      count_200=0
      do i=1,i_numob
      if (l_numob(i,1)) count_200=count_200+1
      enddo
      count_500=0
      do i=1,i_numob
      if (l_numob(i,2)) count_500=count_500+1
      enddo
      count_850=0
      do i=1,i_numob
      if (l_numob(i,3)) count_850=count_850+1
      enddo
      write(6,*) 'number of obs.:',count_200,count_500,
     x                                      count_850,surf_numob
      end


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]