# Inclusions in a Matrix

Introduction

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.

An unconfined compression test is performed on a bonded-particle model (BPM) with uniform mechanical properties. Select regions of the sample (inclusions) are given smaller or larger stiffness parameters, and the test is repeated. This tutorial demonstrates advanced usage of the Contact Model Assignment Table (CMAT) to build complex materials with a spatial distribution of mechanical properties. The linear and linear parallel bond contact models are used. The material-modeling support package can also be used to create and test BPMs; however, it would need to be modified to add the inclusions.

Numerical Model

The complete data file (2D) for this example is “inclusions.dat (2D)”. Select lines of this file are discussed below. The initial stage of constructing the bonded-particle specimen is not discussed since the procedure is similar to the one presented in the “Generating a Bonded Assembly” tutorial. Note that balls have been created with the `ball distribute`

command and have all been assigned the *matrix* group identifier.

The lines shown below create top and bottom wall platens, assign their vertical velocities, and set up history monitoring.

```
; prepare for tests : add top and bottom platens and set up monitoring
contact cmat default type 'ball-facet' model linear ...
property kn 1e8 ks 5e7 fric 0.25
wall generate id 1 plane position 0.0 4.015
wall generate id 2 plane position 0.0 -4.015
wall attribute velocity-y -0.005 range id 1
wall attribute velocity-y 0.005 range id 2
wall history force-contact-y id 1
wall history force-contact-y id 2
wall history displacement-y id 2
ball attribute displacement 0.0
model save 'initial1'
```

The initial system is shown in Figure 1.

The first compression test is performed via the following lines:

```
; perform UCS test (activate fragment tracking)
fragment register ball-ball
fragment activate time 0.1
model solve time 5.0
model save 'final1'
```

Note that fragment tracking is activated to monitor fragmentation of the BPM during the test. The final state is shown in Figure 2.

Next the initial BPM is altered to model inclusions in select model regions:

```
; use groups to identify inclusions
model restore 'initial1'
ball group 'inclusions' range circle center 1.0 3.0 rad 0.5
ball group 'inclusions' range circle center -0.5 1.0 rad 0.5
ball group 'inclusions' range circle center 0.5 -1.5 rad 0.5
ball group 'inclusions' range circle center -1.0 -3.0 rad 0.5
model save 'initial-groups'
```

Balls inside the inclusions are assigned the *inclusions* group identifier.

The system before compression is shown in Figure 3.

Next contact properties within the inclusions and matrix are altered. The group identifiers are used to identify contacts within the matrix and within inclusions. The `contact cmat apply`

command is required to apply the modified default CMAT entries to existing contacts. The compression test is then repeated. In this case, the inclusions are softer than the matrix. A comparable additional section of commands (not shown here — refer to the full data file listing below) repeat these operations to produce inclusions that are more stiff than the matrix.

```
; change contact model properties - softer inclusions
contact cmat default type ball-ball model linear ...
property kn 1e7 ks 5e6 fric 0.25 lin_mode 1
contact cmat add 1 model linearpbond ...
property kn 1e8 ks 5e7 fric 0.25 lin_mode 1 ...
pb_kn 1e8 pb_ks 5e7 pb_ten 2e5 pb_coh 5e4 pb_fa 20 ...
range group 'matrix' matches 2
contact cmat add 2 model linearpbond ...
property kn 1e7 ks 5e6 fric 0.25 lin_mode 1 ...
pb_kn 1e7 pb_ks 5e6 pb_ten 2e4 pb_coh 5e3 pb_fa 20 ...
range group 'inclusions' matches 2
contact cmat apply
contact method bond gap 0.0
; repeat UCS test
fragment register ball-ball
fragment activate time 0.1
model solve time 5.0
model save 'final2'
```

Figures 4 and 5 show the model after compression for the case of inclusions softer and stiffer than the matrix, respectively. One can observe that failure initiates near the soft inclusions and the resulting stress concentration drives the failure through neighboring soft inclusions in Figure 4. Note that some failure has occurred in all of the soft inclusions. For the case of stiff inclusions (Figure 5), on the other hand, failure occurs predominantly in the matrix and along the inclusion/matrix boundaries.

For all three cases, Figure 6 shows the evolution of the \(y\)-component of the resultants of the contact forces acting on the top platen versus the platen \(y\)-displacement. The soft inclusions significantly decrease the yield strength of the BPM, along with the post-peak response. The stiff inclusions, on the other hand, have little impact on these responses.

Discussion

This tutorial provides an introduction to how the Contact Model Assignment Table (CMAT) may be used to build complex models with heterogeneous mechanical properties. The results of an unconfined compression test performed on a uniform and heterogeneous materials with soft and stiff inclusions have been discussed.

Data Files

inclusions.dat (2D)

```
; filename: inclusions.dat (2D)
;
; PFC2D tutorial - Demonstrate usage of CMAT to build complex material
; with spatial distributions of mechanical properties
;
;=========================================================================
model new
model large-strain on
model title 'Soft and Stiff Inclusions in a Matrix'
; build initial BPM
model domain extent -5 5
contact cmat default model linear property kn 1e5
wall generate box -2 2 -4 4
model random 10001
ball distribute porosity 0.08 radius 0.05 0.07 box -2 2 -4 4 group 'matrix'
ball attribute position mult 0.9
ball attribute density 1000.0 damp 0.7
model cycle 1000 calm 10
model mechanical timestep scale
model solve ratio-average 1e-5
model mechanical timestep auto
model solve ratio-average 1e-5
contact cmat default model linearpbond ...
property kn 1e8 ks 5e7 fric 0.25 lin_mode 1 ...
pb_kn 1e8 pb_ks 5e7 pb_ten 2e5 pb_coh 5e4 pb_fa 20
contact cmat apply
contact method bond gap 0.0
wall delete
model solve elastic ratio-average 1e-5
; excerpt-hkht-start
; prepare for tests : add top and bottom platens and set up monitoring
contact cmat default type 'ball-facet' model linear ...
property kn 1e8 ks 5e7 fric 0.25
wall generate id 1 plane position 0.0 4.015
wall generate id 2 plane position 0.0 -4.015
wall attribute velocity-y -0.005 range id 1
wall attribute velocity-y 0.005 range id 2
wall history force-contact-y id 1
wall history force-contact-y id 2
wall history displacement-y id 2
ball attribute displacement 0.0
model save 'initial1'
; excerpt-hkht-end
; excerpt-ubcs-start
; perform UCS test (activate fragment tracking)
fragment register ball-ball
fragment activate time 0.1
model solve time 5.0
model save 'final1'
; excerpt-ubcs-end
; excerpt-wepg-start
; use groups to identify inclusions
model restore 'initial1'
ball group 'inclusions' range circle center 1.0 3.0 rad 0.5
ball group 'inclusions' range circle center -0.5 1.0 rad 0.5
ball group 'inclusions' range circle center 0.5 -1.5 rad 0.5
ball group 'inclusions' range circle center -1.0 -3.0 rad 0.5
model save 'initial-groups'
; excerpt-wepg-end
; excerpt-iljg-start
; change contact model properties - softer inclusions
contact cmat default type ball-ball model linear ...
property kn 1e7 ks 5e6 fric 0.25 lin_mode 1
contact cmat add 1 model linearpbond ...
property kn 1e8 ks 5e7 fric 0.25 lin_mode 1 ...
pb_kn 1e8 pb_ks 5e7 pb_ten 2e5 pb_coh 5e4 pb_fa 20 ...
range group 'matrix' matches 2
contact cmat add 2 model linearpbond ...
property kn 1e7 ks 5e6 fric 0.25 lin_mode 1 ...
pb_kn 1e7 pb_ks 5e6 pb_ten 2e4 pb_coh 5e3 pb_fa 20 ...
range group 'inclusions' matches 2
contact cmat apply
contact method bond gap 0.0
; repeat UCS test
fragment register ball-ball
fragment activate time 0.1
model solve time 5.0
model save 'final2'
; excerpt-iljg-end
; change contact model properties - stiffer inclusions
model restore 'initial-groups'
contact cmat default type ball-ball model linear ...
property kn 1e8 ks 5e7 fric 0.25 lin_mode 1
contact cmat add 1 model linearpbond ...
property kn 1e8 ks 5e7 fric 0.25 lin_mode 1 ...
pb_kn 1e8 pb_ks 5e7 pb_ten 2e5 pb_coh 5e4 pb_fa 20 ...
range group 'matrix' matches 2
contact cmat add 2 model linearpbond ...
property kn 1e9 ks 5e8 fric 0.25 lin_mode 1 ...
pb_kn 1e9 pb_ks 5e8 pb_ten 2e6 pb_coh 5e5 pb_fa 20 ...
range group 'inclusions' matches 2
contact cmat apply
contact method bond gap 0.0
; repeat UCS test
fragment register ball-ball
fragment activate time 0.1
model solve time 5.0
model save 'final3'
program return
;=========================================================================
; eof: inclusions.dat (2D)
```

Endnotes

[1] | To view this project in PFC, use the program menu.
⮡ PFC |

Was this helpful? ... | PFC © 2021, Itasca | Updated: Jun 17, 2023 |