Skip to content

Commit

Permalink
Merge branch 'main' into storage_core
Browse files Browse the repository at this point in the history
  • Loading branch information
kaipartmann authored Oct 16, 2024
2 parents 082b336 + d64c097 commit e7b6c96
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 17 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ A high-level Julia package for parallel peridynamics simulations
[![Aqua QA](https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg)](https://github.com/JuliaTesting/Aqua.jl)

**Citation:**\
[![DOI](https://proceedings.juliacon.org/papers/10.21105/jcon.00165/status.svg)](https://doi.org/10.21105/jcon.00165)
[![DOI](https://zenodo.org/badge/503281781.svg)](https://zenodo.org/badge/latestdoi/503281781)

## Main Features
Expand Down Expand Up @@ -82,6 +83,17 @@ in the julia package manager. Please take a look at the [documentation](https://
<figcaption>Fragmenting cylinder</figcaption><br><img src="https://github.com/user-attachments/assets/58e11123-6143-4e13-8642-7e30c9e6c86d" width="300"/>
</a></td>
</tr>
<tr>
<td align="center">
<a href="https://kaipartmann.github.io/Peridynamics.jl/stable/generated/tutorial_wave_in_bar/">
<figcaption>Wave propagation</figcaption><br><img src="https://github.com/user-attachments/assets/7fa65fd4-38d8-46cb-833f-990417211d17" width="300"/><br>
</a>
</td>
<td align="center">
<a href="https://kaipartmann.github.io/Peridynamics.jl/stable/generated/tutorial_wave_interface/">
<figcaption>Wave propagation across interface</figcaption><br><img src="https://github.com/user-attachments/assets/082f635f-caf2-40db-938e-e4a98e2f3915" width="300"/>
</a></td>
</tr>
</table>

## Usage
Expand Down
2 changes: 2 additions & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ LIT_TUTORIALS_IN = [
"tutorial_kalthoff-winkler_dynfrac.jl",
"tutorial_logo.jl",
"tutorial_cylinder.jl",
"tutorial_wave_interface.jl"
]
LIT_TUTORIALS_IN .= joinpath.(@__DIR__, "src", "literate", LIT_TUTORIALS_IN)
Literate.markdown.(LIT_TUTORIALS_IN, LIT_MD_OUT; credit=false)
Expand Down Expand Up @@ -76,6 +77,7 @@ makedocs(;
joinpath("generated", "tutorial_tension_dynfrac.md"),
joinpath("generated", "tutorial_tension_precrack.md"),
joinpath("generated", "tutorial_wave_in_bar.md"),
joinpath("generated", "tutorial_wave_interface.md"),
joinpath("generated", "tutorial_kalthoff-winkler_dynfrac.md"),
joinpath("generated", "tutorial_logo.md"),
joinpath("generated", "tutorial_cylinder.md"),
Expand Down
2 changes: 1 addition & 1 deletion docs/src/expl_nosbased.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [Non-ordinary state-based peridynamics](@id expl_nosb)

Non-ordinary state based-formulations have been developed to extend [state-based peridynamics](@ref expl_osb).
Non-ordinary state-based formulations have been developed to extend [state-based peridynamics](@ref expl_osb).
Hereafter, the correspondence formulation of non-ordinary state based peridynamics is considered, which uses an elastic model from the classical theory. [Silling2007](@cite)

First, the symmetric shape tensor is calculated:
Expand Down
16 changes: 16 additions & 0 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,22 @@ To install `Peridynamics.jl`, follow these steps:
</div>
```

```@raw html
<div class="tutorial-element">
<a href="https://kaipartmann.github.io/Peridynamics.jl/stable/generated/tutorial_wave_in_bar/">
<figcaption>Wave propagation</figcaption><br><img src="https://github.com/user-attachments/assets/7fa65fd4-38d8-46cb-833f-990417211d17" style="width: 90% !important;"/>
</a>
</div>
```

```@raw html
<div class="tutorial-element">
<a href="https://kaipartmann.github.io/Peridynamics.jl/stable/generated/tutorial_wave_interface/">
<figcaption>Wave propagation across interface</figcaption><br><img src="https://github.com/user-attachments/assets/082f635f-caf2-40db-938e-e4a98e2f3915" style="width: 90% !important;"/>
</a>
</div>
```

```@raw html
</div>
```
Expand Down
9 changes: 5 additions & 4 deletions docs/src/literate/tutorial_wave_in_bar.jl
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
# # Wave propagation in a thin bar
# # [Wave propagation in a thin bar](@id tut_wave)

# In this tutorial, a cuboid bar is created.
# A velocity pulse in the form of one period of a sine wave is applied to create
# a pressure wave that propagates through the bar.
# a displacement wave that propagates through the bar.
# The behaviour of this wave was investigated in [Partmann2024AAM](@cite).
#
# First import the Peridynamics.jl package:
using Peridynamics

# To get started, some parameters used to for this simulation are defined.
# To get started, some parameters used for this simulation are defined.
# These are the length of the bar `lx`, the width and height `lyz` and the number of
# points in the width `npyz`.

lx = 0.2
lyz = 0.002
npyz = 4

# With these parameters the point spacing can be calculated:
# With these parameters the point spacing `Δx` can be calculated:
Δx = lyz / npyz
# A cuboid body according to the ordinary state-based model with the specified dimensions
# and point spacing is then created:
Expand Down
80 changes: 80 additions & 0 deletions docs/src/literate/tutorial_wave_interface.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# # Wave propagation across material interface

# Based on the [wave propagation tutorial](@ref tut_wave), this tutorial features a
# displacement wave crossing a material interface, as investigated in
# [Partmann2024AAM](@cite). This means that a bar containing two sections with different
# material properties is regarded.

# First import the Peridynamics.jl package:
using Peridynamics

# Then the geometric parameters are set, which are the same as in the wave propagation
# tutorial.
# These are the length `lx`, width and height `lyz` of the cuboid as well as the number
# of points in the width `npyz`, which determines the point spacing `Δx`.
lx = 0.2
lyz = 0.002
npyz = 4
Δx = lyz / npyz
# With these parameters we now create a body, here using the non-ordinary state-based
# correspondence formulation.
pos, vol = uniform_box(lx, lyz, lyz, Δx)
body = Body(NOSBMaterial(), pos, vol)
# Again, failure is not allowed in the whole body.
failure_permit!(body, false)

# Then the material parameters for one half of the body are assigned to the whole body
# first.
material!(body, horizon=3.015Δx, rho=7850.0, E=210e9, nu=0.25, epsilon_c=0.01)

# Now a point set containing the other half of all points is created.
point_set!(x -> x < 0, body, :set1)
# ![](https://github.com/user-attachments/assets/c589ab03-e7f5-4b71-b0c2-0f05eb3cdddc)
# The parameters for this point set are then overwritten with their new parameters.
material!(body, :set1, horizon=3.015Δx, rho=7850.0, E=105e9, nu=0.25, epsilon_c=0.01)

# Except for the Young's modulus, these are the same in both sections:
#
# | material parameter | value |
# |:--------|:-------------|
# | Horizon $ δ $ | $3.015 \cdot Δx$ |
# | Density $ρ$ | $ 7850\,\mathrm{kg}\,\mathrm{m}^{-3}$ |
# | Young's modulus $E_I$ | $ 105 \, \mathrm{GPa}$ |
# | Young's modulus $E_{II}$ | $ 210 \, \mathrm{GPa}$ |
# | Poisson's ratio $ν$ | $0.25$ |
# | critical strain $ε_c$ | $0.01$ |


# To employ the boundary conditions creating a displacement wave, the point set `:left` is
# created:
point_set!(x -> x < -lx / 2 + 1.2Δx, body, :left)
# As in the wave propagation tutorial, the applied velocity boundary condition is
# ```math
# {v}_x (t) =
# \begin{cases}
# v_\mathrm{max} \cdot \sin(2\pi \cdot \frac{t}{T}) \qquad
# & \forall \; 0 \leq t \leq T \\
# 0 &\text{else.}
# \end{cases}
# ```
# ![](https://github.com/user-attachments/assets/34165b09-2df9-495d-8e41-acff28d0098c)
T, vmax = 1.0e-5, 2.0
velocity_bc!(t -> t < T ? vmax * sin(2π / T * t) : 0.0, body, :left, :x)

# The Velocity Verlet algorithm is used as time integration method and 2000 time steps
# are calculated:
vv = VelocityVerlet(steps=2000)
# Finally the job is defined and submitted.
#md # ```julia
#md # job = Job(body, vv; path="results/xwave_interface")
#md # submit(job)
#md # ```

# The following video shows the results for the displacement in x-direction $u_x$ and the
# first entry of the
# stress tensor, i.e. the normal stress in x-direction $\sigma_{11}$.
# ```@raw html
# <video controls loop="true">
# <source src="https://github.com/user-attachments/assets/d7e600ee-cad8-40f9-99f4-e96ac05585d6" />
# </video>
# ```
29 changes: 17 additions & 12 deletions docs/src/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -172,21 +172,26 @@ @article{Partmann2023IJF
}

@article{Partmann2024AAM,
author = {Kai Partmann and Manuel Dienst and Kerstin Weinberg},
journal = {submitted to Archive of Applied Mechanics},
number = {},
title = {Peridynamic computations of wave propagation and reflection at material interfaces},
volume = {},
year = {2024}
author = {Partmann, Kai and Dienst, Manuel and Weinberg, Kerstin},
journal = {Archive of Applied Mechanics},
title = {Peridynamic computations of wave propagation and reflection at material interfaces},
year = {2024},
issn = {1432-0681},
month = {jul},
doi = {10.1007/s00419-024-02646-x},
publisher = {Springer Science and Business Media LLC}
}


@article{Partmann2024PAMM,
author = {Kai Partmann and Manuel Dienst and Christian Wieners and Kerstin Weinberg},
journal = {submitted to PAMM},
number = {},
title = {Peridynamic computations for thin elastic rods},
volume = {},
year = {2024}
author = {Partmann, Kai and Dienst, Manuel and Wieners, Christian and Weinberg, Kerstin},
title = {Peridynamic computations for thin elastic rods},
journal = {PAMM},
year = {2024},
pages = {e202400103},
doi = {https://doi.org/10.1002/pamm.202400103},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/pamm.202400103},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/pamm.202400103}
}

@article{Peridigm2024,
Expand Down

0 comments on commit e7b6c96

Please sign in to comment.