# Slope stability study using the PFC

**URL:** <https://forum.itascainternational.com/t/slope-stability-study-using-the-pfc/1985>\
**Category:** Uncategorized\
**Created:** [March 12, 2025, 10:49am UTC](https://forum.itascainternational.com/t/slope-stability-study-using-the-pfc/1985 "2025-03-12T10:49:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ShivamPandey](https://avatars.discourse-cdn.com/v4/letter/s/f4b2a3/32.png) [@ShivamPandey](https://forum.itascainternational.com/u/ShivamPandey)\
**Post date:** [March 12, 2025, 10:49am UTC](https://forum.itascainternational.com/t/slope-stability-study-using-the-pfc/1985/1 "2025-03-12T10:49:39Z")

</div>

I am trying to study the slope, and the model is ready. Can anyone tell me what I can do to make it more correct and make it more fast? The sidewall are the boundary and want to keep it fixed. May I know how can I fix it and if wants to study the dynamic condition and then how can I do.  
This is my geometry and attached it.  
[sbench501.stl](https://cciitpatna-my.sharepoint.com/:u:/g/personal/shivam_2221ce04_iitp_ac_in/ESNESdwzgDJCq2TsxDy2ncMB3412JzMKhyUCduPwbcyG0A?e=sFmESJ)

the below is my code  
model new  
model large-strain true  
wall resolution full  
[ballemod1 = 15e6]  
model random 10001  
model domain extent -20 100 -20 80 -40 100 condition destroy  
geometry import ‘sbench501.stl’ set ‘s\_geom’ ;skip-errors id 100  
;wall import filename ‘tr3.stl’ skip-errors id 100  
wall import filename ‘sbench501.stl’ skip-errors id 100  
wall group ‘slope’ range set id 100  
wall generate id 111 plane dip 0 dip-direction 0 position 0 0 -0.04  
wall generate id 112 plane dip 90 dip-direction 90 position -0.04 0 0  
wall group ‘sidewall’ range id 111 112

;wall create vertices 0 465 0 50 0 -0.5 id 1  
;wall create vertices -0.5 0 0 50 0 270 id 2  
;model save ‘nigahi\_withnigahicorrected1’  
;pause  
; Use nigahi\_withnigahicorrected model for the study for further slope  
;model restore ‘nigahi\_withnigahicorrected’  
;contact cmat default model linear method deform emod 1.0e9 kratio 0.0  
contact cmat default model linearpbond method deformability …  
emod [ballemod1] kratio 1.5  
;contact cmat default property dp\_nratio 0.5  
fish define granulometry  
global exptab = table.create(‘experimental’)  
table(exptab,0.000075) = 0.10  
table(exptab,0.00018) = 0.75  
table(exptab,0.00025) = 0.98  
table(exptab,0.00043) = 1  
end  
@granulometry  
[dmin=0.00085]  
;ball distribute porosity 0.4 … ;box 0 465 0 50 0 270  
; number-bins 4 …  
; bin 1 …  
; radius [0.5_dmin] [0.5_table.x(exptab,1)] …  
; volume-fraction [table.y(exptab,1)] …  
; bin 2 …  
; radius [0.5_table.x(exptab,1)] [0.5_table.x(exptab,2)] …  
; volume-fraction [table.y(exptab,2)-table.y(exptab,1)] …  
; bin 3 …  
; radius [0.5_table.x(exptab,2)] [0.5_table.x(exptab,3)] …  
; volume-fraction [table.y(exptab,3)-table.y(exptab,2)] …  
; bin 4 …  
; radius [0.5_table.x(exptab,3)] [0.5_table.x(exptab,4)] …  
; volume-fraction [table.y(exptab,4)-table.y(exptab,3)] …  
; box 0 465 0 50 0 270;[-rad] [rad] [-rad] [rad] [-halfLen] [halfLen] range cylinder end-1 (0,0,[-halfLen]) end-2 (0,0,[halfLen]) radius [rad\*0.95]

ball distribute box 0 60 0 30 0 60 radius 0.00001 1.5 porosity 0.3;  
ball attribute density 2500 damp 0.7  
pause  
;ball distribute box 0 465 0 50 0 172 radius 0.0001 2.5 porosity 0.5  
;ball distribute box 0 465 0 50 0 270 radius 0.000001 1.5 porosity 0.4

;ball generate radius 0.0001 0.00475 …  
; number 300000 box 0 465 0 50 0 270  
;ball distribute box 0 33 0 50 0 270 radius 0.5 0.75  
;ball distribute box 32.5 73 0 50 239 270 radius 0.5 0.75  
;  
;ball distribute box 32 82 0 50 0 240 radius 0.5 0.75  
;  
;ball distribute box 81 131 0 50 0 210 radius 0.5 0.75  
;  
;ball distribute box 130 180 0 50 0 180 radius 0.5 0.75  
;  
;ball distribute box 179 229 0 50 0 150 radius 0.5 0.75  
;  
;ball distribute box 228 278 0 50 0 120 radius 0.5 0.75  
;  
;ball distribute box 277 327 0 50 0 90 radius 0.5 0.75  
;  
;ball distribute box 326 376 0 50 0 60 radius 0.5 0.75  
;  
;ball distribute box 375 425 0 50 0 30 radius 0.5 0.75  
;ball delete range id 100; outside  
ball delete range geometry-space ‘nigahi\_geom’ outside  
geometry delete ; to delete geometry  
model save ‘slop11\_tr’  
;model restore ‘slope7\_tr’  
;model calm 0  
;ball generate radius 0.5 0.75 …  
; number 20000 box 0 33 0 50 0 270  
;ball generate radius 0.5 0.75 …  
; number 20000 box 33 73 0 50 240 270  
;ball generate radius 0.5 0.75 …  
; number 20000 box 33 82 0 50 0 240  
;ball generate radius 0.5 0.75 …  
; number 20000 box 82 131 0 50 0 210  
;ball generate radius 0.5 0.75 …  
; number 20000 box 131 180 0 50 0 180  
;ball generate radius 0.5 0.75 …  
; number 20000 box 180 229 0 50 0 150  
;ball generate radius 0.5 0.75 …  
; number 20000 box 229 278 0 50 0 120  
;ball generate radius 0.5 0.75 …  
; number 20000 box 278 327 0 50 0 90  
;ball generate radius 0.5 0.75 …  
; number 20000 box 327 376 0 50 0 60  
;ball generate radius 0.5 0.75 …  
; number 20000 box 376 425 0 50 0 30

model gravity 0 0 -9.8  
;ball attribute density 2500 damp 0.7  
contact cmat apply  
; Activate timestep scaling where the timestep is 1 and the masses and  
; velocities of the rigid blocks are scaled so they have the same time response  
model mechanical timestep scale  
model cycle 10  
contact method bond gap 1.0e-2 range contact type ‘ball-ball’  
contact property lin\_mode 1 lin\_force 0 0 0 pb\_ten 5e4 pb\_coh 10.0e4  
;set the stiffness of the parallel-bond portion of the contact model  
contact method pb\_deformability emod [ballemod1] kratio 3 …  
range contact type 'ball-ball

model calm  
ball fix velocity spin  
model mechanical timestep auto  
model solve cycle 100 calm 1000  
ball free velocity spin  
wall delete walls range id 100  
;fix the boundary  
wall attribute velocity-z 0.0 range id 111  
wall attribute velocity-x 0.0 range id 112  
;wall delete range group ‘slope’;range set name ‘box’

ball attribute damp 0.8  
contact property fric 0.6 dp\_nratio 0.5 dp\_mode 1 lin\_mode 1  
contact cmat default property fric 0.6 dp\_nratio 0.5 dp\_mode 1 lin\_mode 1  
;fix the boundary  
wall attribute velocity-z 0.0 range id 111 by wall  
wall attribute velocity-x 0.0 range id 112 by wall  
ball attribute displacement multiply 0.0  
model orientation-tracking on  
model history mechanical unbalanced-maximum

model solve elastic time 2.0  
;solve fos

This is the image of the output model.

 ![image](https://canada1.discourse-cdn.com/flex031/uploads/itasca/original/2X/9/9953f32c6c5534fe4a5a609925f9206fea22cfd7.png)  
@dblanksma @jhazzard

---

<div class="post-metadata">

**Author:** ![dpotyondy](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.itascainternational.com/dpotyondy/32/1399_2.png) [@dpotyondy](https://forum.itascainternational.com/u/dpotyondy)\
**Post date:** [March 12, 2025, 6:07pm UTC](https://forum.itascainternational.com/t/slope-stability-study-using-the-pfc/1985/2 "2025-03-12T18:07:24Z")

</div>

There is no magic bullet to make the model run faster. For this system, you can either: (1) run the code dynamically (default in PFC) and choose stiffnesses (kn and ks, kn/ks in [1,4], then make kn as small as possible to prevent excessive overlap; or (2) keep stiffnesses realistic, and run the code in density-scaling model (see command {model mechanical timestep scale}) that will scale the inertial masses such that the critical timestep for all DOFs is unity — for this case, the dynamic response is incorrect, but response is okay if modes are run quasi-statically.
