subroutine cnnct(nsta,npt,nem,icn,ir,ne,nt,m,l) c c********************************************************************** c c (1) function : c generation of the connectivity matrix c (2) variables : c nem : number of elemants between stations c icn : connectivity matrix c c********************************************************************** c integer icn(l,3),ir(nt,m),npt(nt),nem(nt) nsta1=nsta-1 do i=1,nsta1 i1=i+1 if(npt(i).lt.npt(i1)) nem(i)=npt(i1)-1 if(npt(i).eq.npt(i1)) nem(i)=(npt(i)-1)*2 if(npt(i).gt.npt(i1)) nem(i)=npt(i)-1 enddo ne=0 do 20 i=1,nsta1 nn=nem(i) nn1=nn/2+1 i1=i+1 if(npt(i).lt.npt(i1)) go to 30 if(npt(i).eq.npt(i1)) go to 50 if(npt(i).gt.npt(i1)) go to 80 30 do 40 j=1,nn j1=j+1 ne=ne+1 icn(ne,1)=ir(i,1) icn(ne,2)=ir(i1,j1) icn(ne,3)=ir(i1,j) 40 continue go to 20 50 do 60 j=1,nn1,2 jj=j-1 i1=i+1 j1=j+1 if(jj.eq.0) go to 70 ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,jj) icn(ne,3)=ir(i,jj) ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,j) icn(ne,3)=ir(i1,jj) if(j1.gt.nn1) go to 60 70 ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,j1) icn(ne,3)=ir(i1,j) ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i,j1) icn(ne,3)=ir(i1,j1) 60 continue go to 20 85 do 61 j=1,nn1,2 jj=j-1 i1=i+1 j1=j+1 if(jj.eq.0) go to 75 ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,jj+2) icn(ne,3)=ir(i,jj) ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,j+2) icn(ne,3)=ir(i1,jj+2) if(j1.gt.nn1) go to 61 75 ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i1,j1+2) icn(ne,3)=ir(i1,j+2) ne=ne+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i,j1) icn(ne,3)=ir(i1,j1+2) 61 continue go to 20 80 do 90 j=1,nn ne=ne+1 j1=j+1 icn(ne,1)=ir(i,j) icn(ne,2)=ir(i,j1) icn(ne,3)=ir(i1,1) 90 continue 20 continue return end