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 parametervalue
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)