Data Files for “Adhesive Rolling Resistance Linear Contact Model: Repose Angle” Problem
PFC2D Data Files
make_system.p2dat
; ===========================================================================
; fname: make_system.p2dat
; ===========================================================================
model new
model title 'Adhesive Rolling Resistance Linear Contact Model: Repose Angle'
model random 10001
; container and balls attributes
[cyl_rad = 50.0e-3] ; container half-width [m]
[cyl_height = 100.0e-3] ; container height [m]
[ravg = 1.5e-3 ] ; ball average radius [m]
[rdev = 0.5 ] ; ball relative radius deviation [-]
[dens = 2.0e3 ] ; ball density [kg/m3]
[poros = 0.3 ] ; initial porosity [-]
; contact model properties
[emod = 1.0e6] ; Young's modulus (deformability method) [Pa]
[kratio = 2.0 ] ; stiffness ratio (deformability method) [-]
[fric = 0.01 ] ; friction coefficient [-]
[dpnr = 0.2 ] ; normal critical damping ratio [-]
[dpsr = 0.2 ] ; shear critical damping ratio [-]
[dpm = 3 ] ; dashpot mode [-]
[rfric = 0.0 ] ; rolling resistance coefficient [-]
[F0 = 0.0 ] ; maximum attractive force [N]
[D0 = 0.0 ] ; attraction range [m]
; Set domain extent and boundary conditions.
model domain extent [-4.0*cyl_rad] [4.0*cyl_rad] ...
[-4.0*ravg] [2.0*cyl_height] ...
condition destroy
; Set the CMAT such that the arrlinear model acts at ball-ball contacts, and
; the rrlinear model acts at ball-facet contacts. The particles will not
; stick to the walls.
contact cmat default type ball-ball model arrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric ...
adh_F0 @F0 ...
adh_D0 @D0
contact cmat default type ball-facet model rrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric
; Generate the base plane and the container.
wall generate id 1 ...
name 'base_plane' ...
plane
wall create id 100 ...
name 'container' ...
vertices [-1.0*cyl_rad] 0.0 [-1.0*cyl_rad] @cyl_height ...
[-1.0*cyl_rad] @cyl_height [1.0*cyl_rad] @cyl_height ...
[1.0*cyl_rad] @cyl_height [1.0*cyl_rad] 0.0
; Distribute balls inside the container.
ball distribute porosity @poros ...
resolution @ravg ...
radius [1.0-0.5*rdev] [1.0+0.5*rdev] ...
box [-1.0*cyl_rad] [1.0*cyl_rad] ...
0.0 @cyl_height
; Bring to rest under gravity loading.
ball attribute density @dens damp 0.7
model cycle 1000 calm 10
model gravity 9.81
model solve ratio-average 1e-5
ball attribute damp 0.0
model save 'init.p2sav'
program return
; ===========================================================================
; eof: make_system.p2dat
move_container.p2dat
; ===========================================================================
; fname: move_container.p2dat
; input: fric, rfric, F0, D0
; ===========================================================================
[cyl_vel = 5.0e-2] ; upwards velocity [m/s]
model mechanical time-total 0.0
; *** Modify Material Properties
; Modify properties of existing ball-ball and ball-facet contacts.
contact property fric @fric rr_fric @rfric adh_f0 @F0 adh_d0 @D0 ...
range contact type 'ball-ball'
contact property fric @fric rr_fric @rfric ...
range contact type 'ball-facet'
; Modify properties of future ball-ball contacts.
contact cmat default type ball-ball model arrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric ...
adh_f0 @F0 ...
adh_d0 @D0
; Modify properties of future ball-facet contacts.
contact cmat default type ball-facet ...
property fric @fric rr_fric @rfric
; Proximity has changed automatically from change to a_d0.
; Force creation of new contacts via remapping of cell space.
model clean
wall attribute velocity-y @cyl_vel range id 100 by wall
ball attribute displacement multiply 0.0
model solve time [0.75*cyl_height/cyl_vel]
wall attribute velocity-y 0.0 range id 100 by wall
model solve ratio-average 1e-5
model save ...
[string.build('final-fric_%1_rfric_%2_F0_%3_D0_%4.p2sav',fric,rfric,F0,D0)]
program return
; ===========================================================================
; eof: move_container.p2dat
do_analysis.py
#=============================================================================
# do_analysis.py
#=============================================================================
import itasca
itasca.command("python-reset-state off")
fric_list = [0.5]
rfric_list = [0.1]
# F0_list is {0, 1, 5} times weight of single particle [N]
# D0_list is 100% of avg. particle radius [m]
F0_list = [0.0,0.14,0.7]
D0_list = [1.5e-3]
for f in fric_list:
for rf in rfric_list:
for myF0 in F0_list:
for myD0 in D0_list:
itasca.command("""
model restore \'init\'
[fric = {0}]
[rfric = {1}]
[F0 = {2}]
[D0 = {3}]
program call \'move_container.p2dat\'
""".format(f,rf,myF0,myD0)
)
#=============================================================================
# eof: do_analysis.py
zero_F0.p2dat
;=============================================================================
; fname: zero_F0.p2dat
;
;=============================================================================
; Zero F0 at existing and future contacts, solve.
model restore 'final-fric_0.5_rfric_0.1_F0_0.7_D0_0.0015.p2sav'
contact property adh_f0 0.0
contact cmat default type ball-ball ...
property adh_f0 0.0
model cycle 10
model solve ratio-average 1e-5
model save 'zero_F0.p2sav'
return
;=============================================================================
; eof: zero_F0.p2dat
PFC3D Data Files
make_system.p3dat
; ============================================================================
; fname: make_system.p3dat
; ============================================================================
model new
model title 'Adhesive Rolling Resistance Linear Contact Model: Repose Angle'
model random 10001
; container and balls attributes
[cyl_rad = 50.0e-3] ; container radius [m]
[cyl_height = 100.0e-3] ; container height [m]
[ravg = 3.0e-3 ] ; ball average radius [m]
[rdev = 0.25 ] ; ball relative radius deviation [-]
[dens = 2.0e3 ] ; ball density [kg/m3]
[poros = 0.45 ] ; initial porosity [-]
; contact model properties
[emod = 1.0e6] ; Young's modulus (deformability method) [Pa]
[kratio = 2.0 ] ; stiffness ratio (deformability method) [-]
[fric = 0.05 ] ; friction coefficient [-]
[dpnr = 0.2 ] ; normal critical damping ratio [-]
[dpsr = 0.2 ] ; shear critical damping ratio [-]
[dpm = 3 ] ; dashpot mode [-]
[rfric = 0.0 ] ; rolling resistance coefficient [-]
[F0 = 0.0 ] ; maximum attractive force [N]
[D0 = 0.0 ] ; attraction range [m]
; Set domain extent and boundary conditions.
model domain extent [-4.0*cyl_rad] [4.0*cyl_rad] ...
[-4.0*cyl_rad] [4.0*cyl_rad] ...
[-4.0*ravg] [2.0*cyl_height] ...
condition destroy
; Set the CMAT such that the arrlinear model acts at ball-ball contacts, and
; the rrlinear model acts at ball-facet contacts. The particles will not
; stick to the walls.
contact cmat default type ball-ball model arrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric ...
adh_f0 @F0 ...
adh_d0 @D0
contact cmat default type ball-facet model rrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric
; Generate the base plane and the container.
wall generate id 1 ...
name 'base_plane' ...
plane
wall generate id 100 ...
name 'container' ...
cylinder ...
base 0.0 0.0 0.0 ...
axis 0.0 0.0 0.1 ...
height @cyl_height ...
radius @cyl_rad ...
cap false true ...
one-wall
; Distribute balls inside the container.
ball distribute porosity @poros ...
resolution @ravg ...
radius [1.0-0.5*rdev] [1.0+0.5*rdev] ...
box [-1.0*cyl_rad] [1.0*cyl_rad] ...
[-1.0*cyl_rad] [1.0*cyl_rad] ...
0.0 @cyl_height ...
range cylinder end-1 0.0 0.0 0.0 ...
end-2 0.0 0.0 @cyl_height ...
radius @cyl_rad ...
extent
; Bring to rest under gravity loading.
ball attribute density @dens damp 0.7
model cycle 1000 calm 10
model gravity 9.81
model solve ratio-average 1e-5
ball attribute damp 0.0
model save 'init.p3sav'
program return
; ============================================================================
; eof: make_system.p3dat
move_container.p3dat
; ============================================================================
; fname: move_container.p3dat
; input: fric, rfric, F0, D0
; ============================================================================
[cyl_vel = 5.0e-2]
model mechanical time-total 0.0
; *** Modify Material Properties.
; Modify properties of existing ball-ball and ball-facet contacts.
contact property fric @fric rr_fric @rfric adh_f0 @F0 adh_d0 @D0 ...
range contact type 'ball-ball'
contact property fric @fric rr_fric @rfric ...
range contact type 'ball-facet'
; Modify properties of future ball-ball contacts.
contact cmat default type ball-ball model arrlinear ...
method deformability ...
emod @emod ...
kratio @kratio ...
property fric @fric ...
dp_nratio @dpnr ...
dp_sratio @dpsr ...
dp_mode @dpm ...
rr_fric @rfric ...
adh_f0 @F0 ...
adh_d0 @D0
; Modify properties of future ball-facet contacts.
contact cmat default type ball-facet ...
property fric @fric rr_fric @rfric
; Proximity has changed automatically from change to a_d0.
; Force creation of new contacts via remapping of cell space.
model clean
wall attribute velocity-z @cyl_vel range id 100 by wall
ball attribute displacement multiply 0.0
model solve time [0.75*cyl_height/cyl_vel]
wall attribute velocity-z 0.0 range id 100 by wall
model solve ratio-average 1e-5
model save ...
[string.build('final-fric_%1_rfric_%2_F0_%3_D0_%4.p3sav',fric,rfric,F0,D0)]
program return
; ===========================================================================
; eof: move_container.p3dat
do_analysis.py
#=============================================================================
# do_analysis.py
#=============================================================================
import itasca
itasca.command("python-reset-state off")
fric_list = [0.5]
rfric_list = [0.1]
# F0 is {0, 1, 5} times weight of single particle [N]
# D0 is 5% of avg. particle radius [m]
F0_list = [0.0, 2.2e-3, 1.1e-2]
D0_list = [1.5e-4]
for f in fric_list:
for rf in rfric_list:
for myF0 in F0_list:
for myD0 in D0_list:
itasca.command("""
model restore 'init'
[fric = {0}]
[rfric = {1}]
[F0 = {2}]
[D0 = {3}]
program call 'move_container.p3dat'
""".format(f,rf,myF0,myD0)
)
#=============================================================================
# eof: do_analysis.py
zero_F0.p3dat
; ===========================================================================
; fname: zero_F0.p3dat
; ===========================================================================
; Zero F0 at existing and future contacts, solve.
model restore 'final-fric_0.5_rfric_0.1_F0_0.011_D0_0.00015.p3sav'
contact property adh_f0 0.0
contact cmat default type ball-ball ...
property adh_f0 0.0
model cycle 10
model solve ratio-average 1e-5
model save 'zero_F0.p3sav'
program return
; ===========================================================================
; eof: zero_F0.p3dat
⇐ Adhesive Rolling Resistance Linear Contact Model: Repose Angle | Burger’s Contact Model: Stress Relaxation ⇒
Was this helpful? ... | PFC © 2019, Itasca | Updated: Apr 26, 2019 |