Tensile test quasi-static
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 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 force density of $1 \times 10^9 \, \mathrm{N}\,\mathrm{m}^{-3}$ in $x$-direction is set for the bottom and top.
forcedensity_bc!(t -> -3e11, body, :bottom, 1)
forcedensity_bc!(t -> 3e11, body, :top, 1)
Do not allow failure in the entire body:
failure_permit!(body, false)
We set the number of time steps for the dynamic relaxation algorithm to 500 time steps.
dr = DynamicRelaxation(steps=500, damping_factor=0.2)
DynamicRelaxation:
n_steps 500
Δt 1
Λ 0.2
Create the job:
job = Job(body, dr; path="results/tension_static")
Job:
spatial_setup 16900-point Body{BBMaterial{NoCorrection}}
time_solver DynamicRelaxation(n_steps=500, Δt=1.0, Λ=0.2)
options export_allowed=true, freq=10
submit(job)