Skip to content

Commit cd0eb1f

Browse files
authored
Added SaintVenant (#10)
1 parent 056c378 commit cd0eb1f

5 files changed

Lines changed: 34 additions & 7 deletions

File tree

docs/src/finite_strains.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ Implementations of mechanical (stress-strain) material models following
66
the `MaterialModelsBase.jl` interface.
77

88

9+
### Saint-Venant Elasticity
10+
```@docs
11+
SaintVenant
12+
```
13+
914
## Hyperelasticity
1015
### Neo-Hookean Materials
1116
```@docs

src/Elastic.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ LinearElastic(::Val{:isotropic})
2020
LinearElastic{:general}(C::SymmetricTensor{4,3})
2121
2222
Create a general `LinearElastic` material with the 4th order elastic stiffness tensor
23-
``\\boldsymbol{C}``, such that
24-
``\\boldsymbol{\\sigma} = \\boldsymbol{C}:\\boldsymbol{\\epsilon}``.
23+
``\\mathsf{\\boldsymbol{C}}``, such that
24+
``\\boldsymbol{\\sigma} = \\mathsf{\\boldsymbol{C}}:\\boldsymbol{\\epsilon}``.
2525
"""
2626
LinearElastic(::Val{:general})
2727

2828
"""
2929
LinearElastic{:cubicsymmetry}(; C1111::T, C1122::T, C1212::T) where {T}
3030
3131
Create a `LinearElastic` material where the stiffness tensor,
32-
``\\boldsymbol{C}``, possesses cubic symmetry along the coordinate axes.
33-
Using the 9-component Voigt notation, ``\\boldsymbol{C}`` can be expressed as
32+
``\\mathsf{\\boldsymbol{C}}``, possesses cubic symmetry along the coordinate axes.
33+
Using the 9-component Voigt notation, ``\\mathsf{\\boldsymbol{C}}`` can be expressed as
3434
3535
```math
36-
\\boldsymbol{C} =
36+
\\mathsf{\\boldsymbol{C}} =
3737
\\begin{bmatrix}
3838
C_{1111} & C_{1122} & C_{1122} & 0 & 0 & 0 & 0 & 0 & 0 \\\\
3939
C_{1122} & C_{1111} & C_{1122} & 0 & 0 & 0 & 0 & 0 & 0 \\\\

src/MechanicalMaterialModels.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ export CrystalPlasticity
5151

5252
include("hyper_elasticity/HyperElastic.jl")
5353
include("hyper_elasticity/NeoHooke.jl")
54-
export NeoHooke, CompressibleNeoHooke
54+
include("hyper_elasticity/SaintVenant.jl")
55+
export NeoHooke, CompressibleNeoHooke, SaintVenant
5556

5657
include("FiniteStrainPlastic.jl")
5758
export FiniteStrainPlastic
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
"""
3+
SaintVenant(elastic::LinearElastic)
4+
5+
The Saint-Venant formulation defined by the potential
6+
```math
7+
\\varPsi(\\boldsymbol{E}) = \\frac{1}{2}\\boldsymbol{E}:\\mathsf{\\boldsymbol{C}}:\\boldsymbol{E}
8+
```
9+
where ``\\boldsymbol{E}`` is the Green-Lagrange strain tensor and ``\\mathsf{\\boldsymbol{C}}`` is the
10+
elastic stiffness tensor defined in `elastic`.
11+
"""
12+
struct SaintVenant{E} <: AbstractHyperElastic
13+
elastic::E
14+
end
15+
16+
function compute_potential(m::SaintVenant, C::SymmetricTensor)
17+
E = (C - one(C)) / 2
18+
return (E m.elastic.C E) / 2
19+
end
20+
21+
MMB.get_vector_eltype(m::SaintVenant) = MMB.get_vector_eltype(m.elastic)

test/test_hyperelastic.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@testset "HyperElastic" begin
2-
models = (NeoHooke(;G=rand()), CompressibleNeoHooke(;G=rand(), K=rand()))
2+
models = (NeoHooke(;G=rand()), CompressibleNeoHooke(;G=rand(), K=rand()), SaintVenant(LinearElastic(E=rand(), ν=rand()/2)))
33
F = rand(Tensor{2,3})
44
for model in models
55
state = initial_material_state(model)

0 commit comments

Comments
 (0)