program smooth c implicit real(a-h,k-z) integer im,jm,i,j,itmax,irec,irec2,itmax2 integer is,ii,jj,i1,i2,j1,j2,i11,i22,j11,j22 parameter(imov=15*24,imov2=5*24) parameter(im=15238,jm=1+2*imov,jm2=1+2*imov2) parameter(dtmax=25.) character fname*17,c4*4 c real var2(im,jm),var3(im,jm) integer*2 errormask(im) c do i=1,im do j=1,jm var2(i,j)=0. var3(i,j)=0. enddo enddo c--------1---------2---------3---------4---------5---------6---------7 open(15,file='filename.txt',form='formatted') open(16,file='errormask.dat',form='unformatted' * ,status='old',access='direct',recl=im/2) irec3=0 iy=1 read(15,'(a17,i5)') fname,itmax c4=fname(10:13) itmax2=itmax write(6,'(2a)') 'Now reading data file = ',fname open(17,file='../'//fname,form='unformatted' * ,status='old',access='direct',recl=im) open(25,file='../new2'//fname,form='unformatted' * ,status='unknown',access='direct',recl=im) read(16,rec=iy) (errormask(i),i=1,im) irec=0 irec2=0 c--------1---------2---------3---------4---------5---------6---------7 if(iy.eq.1) then do j=1,jm irec=irec+1 read(17,rec=irec) (var2(i,j),i=1,im) do i=1,im var3(i,j)=var2(i,j) enddo enddo endif c--------1---------2---------3---------4---------5---------6---------7 j=0 1111 continue j=j+1 do i=1,im ! grid if(errormask(i).eq.1) then j1=j-imov j2=j+imov if(j1.lt.1) j1=1 c--------1---------2---------3---------4---------5---------6---------7 if(j2.gt.jm) then c--------1---------2 if(irec.eq.itmax) then close(17) iy=iy+1 read(15,'(a17,i5)') fname,itmax c4=fname(10:13) write(6,'(2a)') 'Now reading data file = ',fname open(17,file='../'//fname,form='unformatted' * ,status='old',access='direct',recl=im) irec=0 endif ! if(irec.lt.itmax) c--------1---------2 do jj=1,jm-1 do ii=1,im var2(ii,jj)=var2(ii,jj+1) var3(ii,jj)=var3(ii,jj+1) enddo enddo irec=irec+1 read(17,rec=irec) (var2(ii,jm),ii=1,im) do ii=1,im var3(ii,jm)=var2(ii,jm) enddo j2=jm j=j-1 j1=j1-1 endif ! if(j2.gt.jm) c--------1---------2---------3---------4---------5---------6---------7 aaa=0. do jj=j1,j2 aaa=aaa+var2(i,jj) enddo movave=aaa/real(j2-j1+1) c--------1---------2---------3---------4---------5---------6---------7 j11=j-imov2 j22=j+imov2 if(j11.lt.1) j11=1 if(j22.gt.jm) j22=jm bbb=0. do jj=j11,j22 bbb=bbb+var2(i,jj) enddo movave2=bbb/real(j22-j11+1) c--------1---------2---------3---------4---------5---------6---------7 pert=var2(i,j)-movave pert2=var2(i,j)-movave2 if(abs(pert).gt.dtmax*0.5.and. * abs(pert2).gt.dtmax*0.5) then if(abs(pert).gt.abs(pert2)) then if(pert2.gt.0.) var3(i,j)=movave2+dtmax*0.5 if(pert2.lt.0.) var3(i,j)=movave2-dtmax*0.5 else if(pert.gt.0.) var3(i,j)=movave+dtmax*0.5 if(pert.lt.0.) var3(i,j)=movave-dtmax*0.5 endif endif c--------1---------2---------3---------4---------5---------6---------7 if(i.eq.4913.and.j.ge.2) * write(6,'(2i7,5i4,4f9.2)') irec,irec2+1,j,j1,j2,j11,j22 * ,var2(i,j-1),var3(i,j-1),movave,movave2 else ! (errormask(i).eq.0) var3(i,j)=var2(i,j) endif ! enddo ! igrid c--------1---------2---------3---------4---------5---------6---------7 if(irec2.eq.itmax2) then close(25) open(25,file='../new2'//fname,form='unformatted' * ,status='unknown',access='direct',recl=im) read(16,rec=iy) (errormask(i),i=1,im) irec2=0 itmax2=itmax endif if(j.ge.2) then irec2=irec2+1 write(25,rec=irec2) (var3(ii,j-1),ii=1,im) endif if(iy.eq.15.and.irec2.eq.imov) goto 9999 goto 1111 9999 continue irec2=irec2+1 write(25,rec=irec2) (var3(ii,j),ii=1,im) close(15) close(16) close(17) close(25) c--------1---------2---------3---------4---------5---------6---------7 c stop end