implicit none integer i,j,k,l double precision rc(500000),w(100,500000),limit, . wprom(500000),expw(500000),wsd(500000),KB,limit2, . force,rcreal character inpfile*64,titulo*20 integer numfiles,lines,nf logical eof KB=300*1.38065E-23*6.022142E23/4.184/1000.0 write(*,*) 'kb= ',KB write(*,*) 'ingrese el nombre del SCRIPT file a leer' read(*,*) inpfile open(unit=100,file=inpfile) read(100,*) titulo,numfiles read(100,*) titulo,limit,limit2 do i=1,numfiles read(100,'(A30)') inpfile write(*,*) 'got file= ',inpfile open(unit=1,file=inpfile) eof=.true. j=1 do while(eof) read(1,*,end=20) rc(j),force,rcreal,w(i,j) c solo guarda si esta por arriba del limite if(rc(j).lt.limit.or.rc(j).gt.limit2) then continue else j=j+1 c si nf=2 pone dos casillas ya que promeda con otro set v=1/2 if(nf.eq.2) then rc(j)=rc(j-1) w(i,j)=w(i,j-1) j=j+1 endif endif enddo 20 lines=j-1 write(*,*) 'nlines',lines c enddo desde 1 hta nro de files a procesar close(1) enddo open(unit=2,file='j_contactenated_out.txt') do i=1,lines write(2,'(101f8.3)') rc(i),(w(j,i),j=1,numfiles) enddo wprom=0.0 expw=0.0 wsd=0.0 open(unit=2,file='jarz_estimator_out.txt') do i=1,lines do j=1,numfiles wprom(i)=wprom(i)+w(j,i) expw(i)=expw(i)+EXP(-1*w(j,i)/KB) wsd(i)=wsd(i)+w(j,i)**2 enddo wprom(i)=wprom(i)/numfiles expw(i)=expw(i)/numfiles wsd(i)=wsd(i)/numfiles c write(*,*) '< exp w > 2nd Cumulant < w > SD ' write(2,'(5f9.4)') rc(i), -1*KB*log(expw(i)), . wprom(i)-0.5*numfiles/(numfiles-1)/KB*(wsd(i)-wprom(i)**2), . wprom(i),sqrt(wsd(i)-wprom(i)**2)/KB enddo end