Return to PS list

Questions [ 1 | 2 | 3 ]

 Top

 Intermediate results

 Final results

 code


Top

 Intermediate results

 Final results

 code

The following are example plots of the temperature as a function of time (at 10 deg.F/min), the factor aTM as a function of temperature (a linear fit to the plot in the paper), the relaxation modulus as a function of equivalent time elapsed (a bi-linear fit to the plot in the paper), and the equivalent time as a function of time (again, for a 10 deg F/min cooldown)


 

 Top

 Intermediate results

 Final results

 code

At last, results. Also included elastic responce at 1 F/min for comparison. See that viscoelastic effects are significant, but not very sensative to the ramp rate.


 Top

 Intermediate results

 Final results

 code

Finally, code.

      character*1 tab
      double precision time(1000), Temp(1000), x(1000), xx(1000), 
     +oneoverat(1000), dedx(1000), C(1000), stress(1000)
     
c set cprime (in F/sec), other fixed stuff      
      tab = char(09)
      cprime = 10./60.
      alpha = 1.3
      dt = 280/cprime/800
      deps = - dt * cprime*alpha
      
c set times to check.  Lots of steps on the ramp
c plus a bunch after its over.  
c Also, do T and x (squiggle), from the curve fits
c and integral calcs in the written solution, 
c and compute time-speed-up and strain increments

      time(1) = 0.
      temp(1) = 350
      x(1) = 0
      C(1) = 3.
      oneoverat(1) = 10.**14
      dedx(1) = -cprime*alpha/oneoverat(1)
      
c  during ramp (800 steps!) F_DoBackground call just makes this act
c  like a proper Mac application
      do 1 i = 1, 800
        write (6,801) i
        CALL F_DoBackground 
        time(i+1) = dt * i
        Temp(i+1) = 350-cprime*time(i+1)
        x(i+1) = 1.e+14/(log(10.)*cprime/20)*(1-10**(-cprime*time(i+1)/20.))
        oneoverat(i+1) = 10**((Temp(i-1)-70)/20)
    1   dedx(i) = -cprime*alpha/oneoverat(i+1)
    
c  after ramp (200 steps, one/day)
      do 2 i = 802,1000
        write (6,801) i
        CALL F_DoBackground 
        time(i) = time(801) + (i-801) * 3600*24
        Temp(i) = 70
        x(i) = x(801) + time(i) - time(801)
        oneoverat(i) = 1
    2   dedx(1) = 0

c  now compute a table of C vs x values.  This is just for plotting.

      xx(1) = 0
      C(1) = 3
      do 3 i = 2, 1000
        xx(i) = 10**((i-1)/1000.*17.)
    3   C(i) = GETC(xx(i))

c  do hereditary integral

      stress(1) = 0

c     calculate stress at each time i

      do 200 i = 2,1000
        write (6,802) i
        CALL F_DoBackground 
        stress(i) = 0

c       do so by summing over all the strain increments at times
c       j that go from zero to now (time i); each multipled by
c       the C value for the time from the strain (j) to now (i)

c       also note here an avoid to numerical problems- the factor
c       x(j+1)-x(j) is the difference between two huge numbers, and will
c       go incorrectly to -> 0 for large times.  We note for constant
c       time steps that the the strain step is also constant, and just 
c       use it (see notes).  After ramp (j>800) no deps, so no additional
c       stess, but note that we still do these calcs even for i>800 
c       because the x(i)-x(j) terms continue to change
c       the 'old' way is commented out below-

        do 100 j = 1, min((i-1),800)       
            stress(i) = stress(i) + deps * GETC(x(i)-x(j))
  100   continue
c        do 100 j = 1, i-1
c  100     stress(i) = stress(i) + (x(j+1)-x(j)) * dedx(j) * GETC(x(i)-x(j))

  200 continue

c  big dump of everything in a tab-separated set of columns
c  only do one out of every 10!

      do 300 i = 1, 1000, 10
  300 write (6,800) time(i), tab, x(i), tab, Temp(i), tab, oneoverat(i), 
     +              tab, dedx(i), tab, stress(i), tab, xx(i), tab, C(i)
  800 format(1x, 1pd11.3, 7(a1, 1pd11.3))
  801 format ('+ set up ',i3)
  802 format ('+ stress calcs ',i3)
  
c that's all folks!
      stop
      end
  
C
      DOUBLE PRECISION FUNCTION GETC(X)
      DOUBLE PRECISION X
C      
       getc = min((3.-.075*log10(x)),(5.-.25*log10(x)))

      RETURN
      END
C