Heated Specimen with Free Boundaries

Note

The project file for this example may be viewed/run in PFC.[1] The data files used are shown at the end of this example.

A temperature change, ΔT, is applied to a cubic specimen with unconstrained boundaries. The thermally induced strains are measured and compared with analytical values for an isotropic elastic continuum.

Analytical Values

The stress-strain relation with thermally induced strain is given by Equation (1) ([Timoshenko1970b]):

(1)ϵx=1E[σxν(σy+σz)]+αtΔTϵy=1E[σyν(σz+σx)]+αtΔTϵz=1E[σzν(σx+σy)]+αtΔT

where E and ν are the Young’s modulus and the Poisson’s ratio, respectively. Also, αt is the coefficient of linear thermal expansion.

The analytical values for the thermally induced strains with free boundaries are given by Equation (2):

(2)ϵx=ϵy=ϵz=αtΔT

Model and Results

The file “free_expansion.dat” is used for this example. A 2 × 2 × 2 m specimen is created. It comprises approximately 4000 balls with uniform size distribution (radius range from 0.05 to 0.08 m), with a porosity of 0.36. Once the specimen is generated, contact bonds are installed at ball-ball contacts, the surrounding walls are deleted, and the specimen is brought to equilibrium.

The strains are measured using a measurement sphere with a radius of 0.95 m, centered within the specimen. In PFC, the particle thermal-expansion coefficient is the same as the coefficient of linear thermal expansion: αt = 3 × 10-6/°C, in this case.

The expected strains for ΔT = +100°C are

(3)ϵx=ϵy=ϵz=3.0×104

The expected strains for ΔT = -100°C are

(4)ϵx=ϵy=ϵz=3.0×104

Figure 1 and Figure 2 show displacement vectors resulting from the positive and negative temperature change; they show an isotropic expansion and isotropic contraction, respectively. Figure 3 and Figure 4 show histories of strain recorded during the expansion and contraction phases respectively.

The result of the simulation is in accordance with the analytical solution.

../../../../../../../_images/p3d-freeexpA-disp.png

Figure 1: Displacement field at the end of thermal isotropic expansion.

../../../../../../../_images/p3d-freeexpB-disp.png

Figure 2: Displacement field at the end of thermal isotropic contraction.

../../../../../../../_images/p3d-freeexpA-strains.png

Figure 3: Strain histories at the end of thermal isotropic expansion.

../../../../../../../_images/p3d-freeexpB-strains.png

Figure 4: Strain histories at the end of thermal isotropic contraction.

References

[Timoshenko1970b]Timoshenko, S. P., and J. N. Goodier. Theory of Elasticity, 3rd Ed. New York: McGraw-Hill, 1970.

Data Files

free_expansion.dat

; fname: free_expansion.dat (3D)
;
; Itasca Consulting Group, Inc.
; ========================================================================
; Thermal option verification problem:
;        Free expansion of a heated specimen
;
; ========================================================================
program log-file "free_expansion.log"
program log on
; ========================================================================
model new
model large-strain on
model title 'Free expansion of a heated specimen'

; build specimen

model domain extent -5 5
contact cmat default type ball-ball    ...
              model linearcbond ...
              method deformability emod 3.81e8 krat 1.0 proximity 0.005

contact cmat default type ball-facet   ...
              model linear     ...
              method deformability emod 3.81e8 krat 1.0


wall generate box -1 1
model random 10001
ball distribute porosity 0.36     ...
                 radius 0.05 0.08 ...
                 box -1 1

ball attribute position multiply 0.95
ball attribute density 1500.0 damp 0.7
model cycle 2000 calm 100
model mechanical timestep scale
model solve ratio-average 1e-4

contact method bond gap 0.005
contact property cb_tenF 1e20 cb_shearF 1e20
wall delete
ball attribute displacement multiply 0.0 
model cycle 1000
model mechanical timestep auto
model solve ratio-average 1e-6


; install measurement sphere and activate strain calculation

measure create id 1 radius 0.95

fish define ini_mstrains
  global mp = measure.find(1)
  global mstrains = matrix(3,3)
end
[ini_mstrains]

fish define accumulate_mstrains
  global msrate =  measure.strain.rate(mp)
  global mstrains = mstrains + msrate * global.timestep
  global xxmstrain = mstrains(1,1)
  global yymstrain = mstrains(2,2)  
  global zzmstrain = mstrains(3,3)  
end

fish callback add accumulate_mstrains 11.0
fish history xxmstrain
fish history yymstrain
fish history zzmstrain

model save "initial"

;---------------- case a: apply +100 deg C ----------------------------
model configure thermal
ball thermal attribute expansion 3.0e-6
ball thermal attribute specific-heat 1.0e3
ball thermal attribute temperature 0.0
ball thermal attribute temperature-increment=100.0
model cycle 1
model thermal off mechanical on
ball attribute displacement multiply 0.0
model cycle 1000
model solve ratio-average 1e-6
model save "final1"

;---------------- case b: apply -100 deg C ----------------------------
model restore "initial"
model configure thermal
ball thermal attribute expansion 3.0e-6
ball thermal attribute specific-heat 1.0e3
ball thermal attribute temperature 0.0
ball thermal attribute temperature-increment=-100.0
model thermal on mechanical on
model cycle 1
model thermal off mechanical on
ball attribute displacement multiply 0.0
model cycle 1000
model solve ratio-average 1e-6
model save "final2"

program log off
program return
; ========================================================================
; eof: free_expansion.dat (3D)

Endnotes

[1]

To view this project in PFC, use the program menu.

Help ▼ Examples…

  ⮡   PFC
    ⮡   Thermal
      ⮡   FreeExpansion
        ⮡   FreeExpansion.prj