#< #parse_ref # #Usage: #parse_ref.x out.H # #Input Parameters: # # #Output Parameters: # # # #Description: # # # #> #%end of self-documentaiton #------------------------------------------------- # #Author: Robert Clapp, ESMB 463, 7230253 # #Date Created:Thu Jul 29 13:14:35 PDT 1999 # #Purpose: # program parse_ref{ integer n1,n2,i1,i2,ilast,ia real, allocatable :: array(:,:) real :: last,fract logical :: good from history: integer n1,n2 allocate(array(2,n1)) do i2=1,n2{ call sreed('in',array,size(array)*4) last=array(1,i1)-10;good=.true. do i1=1,n1{ if(array(1,i1) < last && good ){ good=.false. # write(0,*) "bad begin",i1,i2,last,array(1,i1) ilast=i1-1 } else if(array(1,i1) > last){ if(.not. good){ #we found an increasing point interp do ia=ilast+1,i1-1{ fract=real(ia-ilast)/real(i1-ilast) array(:,ia)=(1.-fract)*array(:,ilast)+fract*array(:,i1) } good=.true. # write(0,*) "bad finished",i1,i2,last,array(1,i1),":",array(1,ilast+1:i1-1) } last=array(1,i1) } } call srite("out",array,size(array)*4) } }