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