Tensile test dynamic
Import the package:
using Peridynamics
Read and convert the Abaqus FEM mesh of a tensile test into a point cloud for the peridynamic model:
# insert your correct path to the downloaded mesh file!
inp_file = joinpath(@__DIR__, "..", "assets", "TensileTestMesh.inp");
Create a body with the points from the mesh: (The bond-based material model with energy based surface correction is used here.)
body = Body(BBMaterial(), inp_file)
16900-point Body{BBMaterial{NoCorrection}}:
3 point set(s):
16900-point set `all_points`
4200-point set `bottom`
4200-point set `top`
The element sets defined in Abaqus were converted into point sets of the Body:
point_sets(body)
Dict{Symbol, Vector{Int64}} with 3 entries:
:all_points => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 … 16891, 16892, 16893, 16894,…
:bottom => [11701, 11702, 11703, 11704, 11705, 11706, 11707, 11708, 11709…
:top => [7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510 ……
Specify the material parameters as:
material parameter | value |
---|---|
Horizon $ δ $ | $0.01 \, \mathrm{m}$ |
Density $ρ$ | $ 2700 \,\mathrm{kg}\,\mathrm{m}^{-3}$ |
Young's modulus $E$ | $ 70 \cdot 10^{9} \, \mathrm{Pa}$ |
Griffith's parameter $G_c$ | $100 \, \mathrm{N} \, \mathrm{m}^{-1}$ |
material!(body; horizon=0.01, rho=2700, E=70e9, Gc=100)
As loading condition for the specimen, a constant velocity of $0.6 \, \mathrm{m}\,\mathrm{s}^{-1}$ in $x$-direction is set for the bottom and top.
velocity_bc!(t -> -0.6, body, :bottom, 1)
velocity_bc!(t -> 0.6, body, :top, 1)
Set the number of time steps for the Velocity Verlet algorithm to 500 time steps:
vv = VelocityVerlet(steps=500)
VelocityVerlet:
n_steps 500
safety_factor 0.7
Create the job:
job = Job(body, vv; path="results/tension_dynamic_fracture")
Job:
spatial_setup 16900-point Body{BBMaterial{NoCorrection}}
time_solver VelocityVerlet(n_steps=500, safety_factor=0.7)
options export_allowed=true, freq=10
Submit the job to start simulations:
submit(job)