*********************************************************************** program DelMatrix *********************************************************************** c c Deletes or assigns constant permeability modifier to all elements with c a permeability modifier lower than certain value. c c S. Finsterle c parameter (maxel=150000) character*5 elem,elem1,elem2,cmat character*10 caht character*40 filein,fileout character*80 line dimension elem(maxel) dimension idelete(maxel) data idelete/maxel*0/ write(*,*) write(*,*) ' Delete Matrix Elements' write(*,*) ' **********************' write(*,*) write(*,*) ' Input MESH file : ? ' read(*,'(a)')filein open(1,file=filein, status='old') write(*,*) ' Output MESH file : ? ' read(*,'(a)')fileout open(2,file=fileout, status='unknown') write(*,*) ' Cut-off permeability modifier : ? ' read(*,*) cutoff write(*,*) ' New permeability modifier (or zero): ? ' read(*,*) permnew write(*,*) 2000 continue read(1,7000,end=9000) line 7000 format(a) call lenos(line,ll) write(2,7000) line(:ll) if (line(1:5).ne.'ELEME') goto 2000 iel=0 ndelete=0 2001 continue c c --- elements iel=iel+1 if (mod(iel,1000).eq.1) & write(*,*) ' Working on element ',max(1,iel-1), & ' # of elements modified/deleted: ',ndelete read(1,7001) elem(iel),cmat,vol,caht,permmod,x,y,z 7001 format(a5,10x,a5,e10.4,a10,4e10.4) if (elem(iel).eq.' ') goto 2002 if (abs(permmod).lt.abs(cutoff)) then idelete(iel)=1 ndelete=ndelete+1 permmod=-abs(permnew) cmat='MATRI' endif if (idelete(iel).eq.0.or.abs(permnew).gt.1.0E-20) then read(caht,'(e10.4)',iostat=ios) aht if (abs(aht).lt.1.0e-10) caht=' ' write(2,7001) elem(iel),cmat,vol,caht,-abs(permmod),x,y,z endif goto 2001 2002 continue iel=iel-1 c c --- connections write(2,7000) ' ' if (abs(permnew).gt.1.0e-20) goto 2007 read(1,7000) elem1 write(2,7000) 'CONNE' icon=0 2003 continue icon=icon+1 if (mod(icon,1000).eq.1) & write(*,*) ' Working on connection ',max(1,icon-1) read(1,7002) elem1,elem2,isot,d1,d2,areax,betax 7002 format(2a5,15x,i5,4e10.4) if (elem1.eq.' '.or.elem1.eq.'+++ ') then write(2,7000) ' ' if (elem1.eq.'+++ ') goto 9000 goto 2007 endif do 1001 i=1,iel if (elem1.eq.elem(i)) goto 2004 1001 continue 2004 continue do 1002 j=1,iel if (elem2.eq.elem(j)) goto 2005 1002 continue 2005 continue if (i.gt.iel.or.j.gt.iel) goto 2003 if (idelete(i)+idelete(j).eq.0) & write(2,7002) elem1,elem2,isot,d1,d2,areax,betax goto 2003 c c --- write rest of file 2007 continue read(1,7000,end=9000) line call lenos(line,ll) write(2,7000) line(:ll) goto 2007 9000 continue close(1) close(2) end c --- end of DelMatrix *********************************************************************** subroutine lenos(string,lstr) *********************************************************************** character string*(*) lstr=1 ilenstr=len(string) if (ilenstr.eq.0) return do 1000 i=ilenstr,1,-1 if (string(i:i).ne.char(9).and.string(i:i).ne.' ') then lstr=i return endif 1000 continue end c --- end of lenos