Brazilian Test
This tutorial sets up the Brazilian Test experiment, commonly used to investigate fracture of brittle materials like ultra-high performance concrete. Therefore a cylindrical specimen is loaded by two opposing forces applying pressure on the cross section of the specimen.
To start, we import the package.
using Peridynamics
Then we define the geometrical parameters of the specimen which are the diameter Ø
and the length l
as well as the point spacing Δx
of the model. The parameter b
is used later defining point sets for the boundary conditions.
Ø = 0.05 # [m]
l = 0.015 # [m]
Δx = Ø/61 # [m]
b = 0.017 # [m]
0.017
With the diameter, length and point spacing, we create the cylindrical body.
pos, vol = uniform_cylinder(Ø, l, Δx)
cyl = Body(BBMaterial(), pos, vol)
52794-point Body{BBMaterial{NoCorrection}}:
1 point set(s):
52794-point set `all_points`
The horizon is specified in relation to the point spacing.
δ = 3.015Δx
0.002471311475409836
Then the material parameters are set.
material!(cyl; horizon=δ, E=50e9, rho=2400, Gc=140)
To apply the opposing forces, two point sets are generated.
point_set!(p -> p[1] ≥ Ø/2-3Δx && abs(p[2]) ≤ 1.1*b/2, cyl, :set_1)
point_set!(p -> p[1] ≤ -Ø/2+3Δx && abs(p[2]) ≤ 1.1*b/2, cyl, :set_2)
The functions for the velocity boundary conditions, that have the same value but act in different directions, are defined next.
v_set1(p, t) = - 2 * exp(-t/0.00002) * (-1/0.02^2 * p[2]^2 + 1)
v_set2(p, t) = 2 * exp(-t/0.00002) * (-1/0.02^2 * p[2]^2 + 1)
v_set2 (generic function with 1 method)
Then these functions are set as the boundary conditions in x-direction, while the velocites of the points in y- and z-direction are 0.
velocity_bc!(v_set1, cyl, :set_1, :x)
velocity_bc!(t -> 0, cyl, :set_1, :y)
velocity_bc!(t -> 0, cyl, :set_1, :z)
velocity_bc!(v_set2, cyl, :set_2, :x)
velocity_bc!(t -> 0, cyl, :set_2, :y)
velocity_bc!(t -> 0, cyl, :set_2, :z)
The Velocity Verlet algotihm is employed as time integration method where 6000 time steps are calculated.
vv = VelocityVerlet(steps=6000)
VelocityVerlet:
n_steps 6000
safety_factor 0.7
Finally the job is defined and submitted.
job = Job(cyl, vv; path="results/brazilian_bb_uniform")
submit(job)