Skip to content

Commit d3a34d0

Browse files
authored
Merge pull request #65 from MultiSimOLab/magneticparams
Refactors material model parameters.
2 parents 5e97fb9 + 2ddd2f6 commit d3a34d0

File tree

4 files changed

+99
-99
lines changed

4 files changed

+99
-99
lines changed

Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ Profile = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79"
2121
ProfileView = "c46f51b8-102a-5cf2-8d2c-8597cb0e0da7"
2222
Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665"
2323
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
24+
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
2425
WriteVTK = "64499a7a-5c06-52f2-abe2-ccb03c286192"

src/PhysicalModels/MagneticModels.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ struct HardMagnetic <: Magneto
119119
χr::Float64
120120
βmok::Float64
121121
βcoup::Float64
122-
function HardMagnetic(; μ0::Float64, αr::Float64, χe::Float64=0.0, χr::Float64=8.0, βmok::Float64=1.0, βcoup::Float64=1.0)
122+
function HardMagnetic(; μ0::Float64, αr::Float64, χe::Float64=0.0, χr::Float64=8.0, βmok::Float64=0.0, βcoup::Float64=0.0)
123123
new(μ0, αr, χe, χr, βmok, βcoup)
124124
end
125125

@@ -167,7 +167,7 @@ struct HardMagnetic2D <: Magneto
167167
χr::Float64
168168
βmok::Float64
169169
βcoup::Float64
170-
function HardMagnetic2D(; μ0::Float64, αr::Float64, χe::Float64=0.0, χr::Float64=8.0, βmok::Float64=1.0, βcoup::Float64=1.0)
170+
function HardMagnetic2D(; μ0::Float64, αr::Float64, χe::Float64=0.0, χr::Float64=8.0, βmok::Float64=0.0, βcoup::Float64=0.0)
171171
new(μ0, αr, χe, χr, βmok, βcoup)
172172
end
173173

src/PhysicalModels/MechanicalModels.jl

Lines changed: 85 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -343,66 +343,65 @@ struct NonlinearMooneyRivlin3D <: IsoElastic
343343
λ::Float64
344344
μ1::Float64
345345
μ2::Float64
346-
α::Float64
347-
β::Float64
346+
α1::Float64
347+
α2::Float64
348348
ρ::Float64
349-
function NonlinearMooneyRivlin3D(; λ::Float64, μ1::Float64, μ2::Float64, α::Float64, β::Float64, ρ::Float64=0.0)
350-
new(λ, μ1, μ2, α, β, ρ)
349+
function NonlinearMooneyRivlin3D(; λ::Float64, μ1::Float64, μ2::Float64, α1::Float64, α2::Float64, ρ::Float64=0.0)
350+
new(λ, μ1, μ2, α1, α2, ρ)
351351
end
352352

353353
function (obj::NonlinearMooneyRivlin3D)(Λ::Float64=1.0; Threshold=0.01)
354-
λ, μ1, μ2, α, β = obj.λ, obj.μ1, obj.μ2, obj.α, obj.β
354+
λ, μ1, μ2, α1, α2 = obj.λ, obj.μ1, obj.μ2, obj.α1, obj.α2
355355
J(F) = det(F)
356356
H(F) = det(F) * inv(F)'
357357

358-
Ψ(F) = μ1 / (2.0 * α * 3.0^(α - 1)) * (tr((F)' * F))^α + μ2 / (2.0 * β * 3.0^(β - 1)) * (tr((H(F))' * H(F)))^β - (μ1 + 2 * μ2) * logreg(J(F)) +
358+
Ψ(F) = μ1 / (2.0 * α1 * 3.0^(α1 - 1)) * (tr((F)' * F))^α1 + μ2 / (2.0 * α2 * 3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^α2 - (μ1 + 2 * μ2) * logreg(J(F)) +
359359
/ 2.0) * (J(F) - 1)^2
360360

361-
∂Ψ_∂F(F) = (μ1 / (3.0^(α - 1)) * (tr((F)' * F))^(α - 1)) * F
362-
∂Ψ_∂H(F) = (μ2 / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 1)) * H(F)
361+
∂Ψ_∂F(F) = (μ1 / (3.0^(α1 - 1)) * (tr((F)' * F))^(α1 - 1)) * F
362+
∂Ψ_∂H(F) = (μ2 / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 1)) * H(F)
363363
∂log∂J(J) = J >= Threshold ? 1 / J : (2 / Threshold - J / (Threshold^2))
364364
∂log2∂J2(J) = J >= Threshold ? -1 / (J^2) : (-1 / (Threshold^2))
365365
∂Ψ_∂J(F) = -(μ1 + 2.0 * μ2) * ∂log∂J(J(F)) + λ * (J(F) - 1)
366366
∂Ψ2_∂J2(F) = -(μ1 + 2.0 * μ2) * ∂log2∂J2(J(F)) + λ
367367

368368
∂Ψu(F) = ∂Ψ_∂F(F) + ∂Ψ_∂H(F) × F + ∂Ψ_∂J(F) * H(F)
369-
∂ΨFF(F) = (2 * μ1 * (α - 1) / (3.0^(α - 1)) * (tr((F)' * F))^(α - 2)) * (F F) + (μ1 / (3.0^(α - 1)) * (tr((F)' * F))^(α - 1)) * I9
370-
∂ΨHH(F) = (2 * μ2 * (β - 1) / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 2)) * (H(F) H(F)) + (μ2 / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 1)) * I9
369+
∂ΨFF(F) = (2 * μ1 * (α1 - 1) / (3.0^(α1 - 1)) * (tr((F)' * F))^(α1 - 2)) * (F F) + (μ1 / (3.0^(α1 - 1)) * (tr((F)' * F))^(α1 - 1)) * I9
370+
∂ΨHH(F) = (2 * μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 2)) * (H(F) H(F)) + (μ2 / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 1)) * I9
371371
∂Ψuu(F) = ∂ΨFF(F) + (F × (∂ΨHH(F) × F)) + ∂Ψ2_∂J2(F) * (H(F) H(F)) + ×ᵢ⁴(∂Ψ_∂H(F) + ∂Ψ_∂J(F) * F)
372372
return (Ψ, ∂Ψu, ∂Ψuu)
373373
end
374374
end
375375

376-
377376
struct NonlinearMooneyRivlin2D <: IsoElastic
378377
λ::Float64
379378
μ1::Float64
380379
μ2::Float64
381-
α::Float64
382-
β::Float64
380+
α1::Float64
381+
α2::Float64
383382
ρ::Float64
384-
function NonlinearMooneyRivlin2D(; λ::Float64, μ1::Float64, μ2::Float64, α::Float64, β::Float64, ρ::Float64=0.0)
385-
new(λ, μ1, μ2, α, β, ρ)
383+
function NonlinearMooneyRivlin2D(; λ::Float64, μ1::Float64, μ2::Float64, α1::Float64, α2::Float64, ρ::Float64=0.0)
384+
new(λ, μ1, μ2, α1, α2, ρ)
386385
end
387386

388387
function (obj::NonlinearMooneyRivlin2D)(Λ::Float64=1.0; Threshold=0.01)
389-
λ, μ1, μ2, α, β = obj.λ, obj.μ1, obj.μ2, obj.α, obj.β
388+
λ, μ1, μ2, α1, α2 = obj.λ, obj.μ1, obj.μ2, obj.α1, obj.α2
390389
J(F) = det(F)
391390
H(F) = det(F) * inv(F)'
392-
Ψ(F) = μ1 / (2.0 * α * 3.0^(α - 1)) * (tr((F)' * F) + 1.0)^α + μ2 / (2.0 * β * 3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^β - (μ1 + 2.0 * μ2) * logreg(J(F)) +
391+
Ψ(F) = μ1 / (2.0 * α1 * 3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^α1 + μ2 / (2.0 * α2 * 3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^α2 - (μ1 + 2.0 * μ2) * logreg(J(F)) +
393392
/ 2.0) * (J(F) - 1)^2
394393

395-
∂Ψ_∂F(F) = ((μ1 / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 1)) + μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1)) * F
394+
∂Ψ_∂F(F) = ((μ1 / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 1)) + μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1)) * F
396395
∂log∂J(J) = J >= Threshold ? 1 / J : (2 / Threshold - J / (Threshold^2))
397396
∂log2∂J2(J) = J >= Threshold ? -1 / (J^2) : (-1 / (Threshold^2))
398-
∂Ψ_∂J(F) = μ2 / (3.0^(β - 1)) * J(F) * (tr((F)' * F) + J(F)^2)^(β - 1) - (μ1 + 2.0 * μ2) * ∂log∂J(J(F)) + λ * (J(F) - 1)
397+
∂Ψ_∂J(F) = μ2 / (3.0^(α2 - 1)) * J(F) * (tr((F)' * F) + J(F)^2)^(α2 - 1) - (μ1 + 2.0 * μ2) * ∂log∂J(J(F)) + λ * (J(F) - 1)
399398

400399
∂Ψu(F) = ∂Ψ_∂F(F) + ∂Ψ_∂J(F) * H(F)
401400

402-
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 1)) + μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1)) * I4 +
403-
2 * ((μ1 * (α - 1) / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 2)) + μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * (F F)
404-
∂Ψ2_∂FJ(F) = (2 * μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * J(F) * F
405-
∂Ψ2_∂JJ(F) = μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1) + (2 * μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * J(F)^2 - (μ1 + 2.0 * μ2) * ∂log2∂J2(J(F)) + λ
401+
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 1)) + μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1)) * I4 +
402+
2 * ((μ1 * (α1 - 1) / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 2)) + μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * (F F)
403+
∂Ψ2_∂FJ(F) = (2 * μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * J(F) * F
404+
∂Ψ2_∂JJ(F) = μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1) + (2 * μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * J(F)^2 - (μ1 + 2.0 * μ2) * ∂log2∂J2(J(F)) + λ
406405

407406
∂Ψuu(F) = ∂Ψ2_∂FF(F) + (∂Ψ2_∂FJ(F) H(F) + H(F) ∂Ψ2_∂FJ(F)) + ∂Ψ2_∂JJ(F) * (H(F) H(F)) + ∂Ψ_∂J(F) * _∂H∂F_2D()
408407
return (Ψ, ∂Ψu, ∂Ψuu)
@@ -414,66 +413,65 @@ struct NonlinearMooneyRivlin2D_CV <: IsoElastic
414413
λ::Float64
415414
μ1::Float64
416415
μ2::Float64
417-
α::Float64
418-
β::Float64
416+
α1::Float64
417+
α2::Float64
419418
γ::Float64
420419
ρ::Float64
421-
function NonlinearMooneyRivlin2D_CV(; λ::Float64, μ1::Float64, μ2::Float64, α::Float64, β::Float64, γ::Float64, ρ::Float64=0.0)
422-
new(λ, μ1, μ2, α, β, γ, ρ)
420+
function NonlinearMooneyRivlin2D_CV(; λ::Float64, μ1::Float64, μ2::Float64, α1::Float64, α2::Float64, γ::Float64, ρ::Float64=0.0)
421+
new(λ, μ1, μ2, α1, α2, γ, ρ)
423422
end
424423

425424
function (obj::NonlinearMooneyRivlin2D_CV)(Λ::Float64=1.0)
426-
λ, μ1, μ2, α, β, γ = obj.λ, obj.μ1, obj.μ2, obj.α, obj.β, obj.γ
425+
λ, μ1, μ2, α1, α2, γ = obj.λ, obj.μ1, obj.μ2, obj.α1, obj.α2, obj.γ
427426
J(F) = det(F)
428427
H(F) = det(F) * inv(F)'
429-
Ψ(F) = μ1 / (2.0 * α * 3.0^(α - 1)) * (tr((F)' * F) + 1.0)^α + μ2 / (2.0 * β * 3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^β - (μ1 + 2.0 * μ2) * log(J(F)) +
428+
Ψ(F) = μ1 / (2.0 * α1 * 3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^α1 + μ2 / (2.0 * α2 * 3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^α2 - (μ1 + 2.0 * μ2) * log(J(F)) +
430429
(λ) * (J(F)^(γ) + J(F)^(-γ))
431430

432-
∂Ψ_∂F(F) = ((μ1 / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 1)) + μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1)) * F
433-
∂Ψ_∂J(F) = μ2 / (3.0^(β - 1)) * J(F) * (tr((F)' * F) + J(F)^2)^(β - 1) - (μ1 + 2.0 * μ2) * (1.0 / J(F)) + λ * γ * (J(F)^- 1) - J(F)^(-γ - 1))
431+
∂Ψ_∂F(F) = ((μ1 / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 1)) + μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1)) * F
432+
∂Ψ_∂J(F) = μ2 / (3.0^(α2 - 1)) * J(F) * (tr((F)' * F) + J(F)^2)^(α2 - 1) - (μ1 + 2.0 * μ2) * (1.0 / J(F)) + λ * γ * (J(F)^- 1) - J(F)^(-γ - 1))
434433

435434
∂Ψu(F) = ∂Ψ_∂F(F) + ∂Ψ_∂J(F) * H(F)
436435

437-
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 1)) + μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1)) * I4 +
438-
2 * ((μ1 * (α - 1) / (3.0^(α - 1)) * (tr((F)' * F) + 1.0)^(α - 2)) + μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * (F F)
439-
∂Ψ2_∂FJ(F) = (2 * μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * J(F) * F
440-
∂Ψ2_∂JJ(F) = μ2 / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 1) + (2 * μ2 * (β - 1) / (3.0^(β - 1)) * (tr((F)' * F) + J(F)^2)^(β - 2)) * J(F)^2 + (μ1 + 2.0 * μ2) * (1.0 / (J(F))^2) + λ * γ * ((γ - 1) * J(F)^- 2) ++ 1) * J(F)^(-γ - 2))
436+
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 1)) + μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1)) * I4 +
437+
2 * ((μ1 * (α1 - 1) / (3.0^(α1 - 1)) * (tr((F)' * F) + 1.0)^(α1 - 2)) + μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * (F F)
438+
∂Ψ2_∂FJ(F) = (2 * μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * J(F) * F
439+
∂Ψ2_∂JJ(F) = μ2 / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 1) + (2 * μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((F)' * F) + J(F)^2)^(α2 - 2)) * J(F)^2 + (μ1 + 2.0 * μ2) * (1.0 / (J(F))^2) + λ * γ * ((γ - 1) * J(F)^- 2) ++ 1) * J(F)^(-γ - 2))
441440

442441
∂Ψuu(F) = ∂Ψ2_∂FF(F) + (∂Ψ2_∂FJ(F) H(F) + H(F) ∂Ψ2_∂FJ(F)) + ∂Ψ2_∂JJ(F) * (H(F) H(F)) + ∂Ψ_∂J(F) * _∂H∂F_2D()
443442
return (Ψ, ∂Ψu, ∂Ψuu)
444443
end
445444
end
446445

447-
448446
struct NonlinearMooneyRivlin_CV <: IsoElastic
449447
λ::Float64
450448
μ1::Float64
451449
μ2::Float64
452-
α::Float64
453-
β::Float64
450+
α1::Float64
451+
α2::Float64
454452
γ::Float64
455453
ρ::Float64
456-
function NonlinearMooneyRivlin_CV(; λ::Float64, μ1::Float64, μ2::Float64, α::Float64, β::Float64, γ::Float64, ρ::Float64=0.0)
457-
new(λ, μ1, μ2, α, β, γ, ρ)
454+
function NonlinearMooneyRivlin_CV(; λ::Float64, μ1::Float64, μ2::Float64, α1::Float64, α2::Float64, γ::Float64, ρ::Float64=0.0)
455+
new(λ, μ1, μ2, α1, α2, γ, ρ)
458456
end
459457

460458
function (obj::NonlinearMooneyRivlin_CV)(Λ::Float64=1.0)
461-
λ, μ1, μ2, α, β, γ = obj.λ, obj.μ1, obj.μ2, obj.α, obj.β, obj.γ
459+
λ, μ1, μ2, α1, α2, γ = obj.λ, obj.μ1, obj.μ2, obj.α1, obj.α2, obj.γ
462460
J(F) = det(F)
463461
H(F) = det(F) * inv(F)'
464-
Ψ(F) = μ1 / (2.0 * α * 3.0^(α - 1)) * (tr((F)' * F))^α +
465-
μ2 / (2.0 * β * 3.0^(β - 1)) * (tr((H(F))' * H(F)))^β -
462+
Ψ(F) = μ1 / (2.0 * α1 * 3.0^(α1 - 1)) * (tr((F)' * F))^α1 +
463+
μ2 / (2.0 * α2 * 3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^α2 -
466464
(μ1 + 2 * μ2) * log(J(F)) + λ * (J(F)^(γ) + J(F)^(-γ))
467465

468-
∂Ψ_∂F(F) = ((μ1 / (3.0^(α - 1)) * (trAA(F))^(α - 1))) * F
469-
∂Ψ_∂H(F) = ((μ2 / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 1))) * H(F)
466+
∂Ψ_∂F(F) = ((μ1 / (3.0^(α1 - 1)) * (trAA(F))^(α1 - 1))) * F
467+
∂Ψ_∂H(F) = ((μ2 / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 1))) * H(F)
470468
∂Ψ_∂J(F) = -(μ1 + 2 * μ2) * (1.0 / J(F)) + λ * γ * (J(F)^- 1) - J(F)^(-γ - 1))
471469
∂Ψu(F) = ∂Ψ_∂F(F) + ∂Ψ_∂H(F) × F + ∂Ψ_∂J(F) * H(F)
472470

473-
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α - 1)) * (tr((F)' * F))^(α - 1))) * I9 +
474-
2 * ((μ1 * (α - 1) / (3.0^(α - 1)) * (tr((F)' * F))^(α - 2))) * (F F)
475-
∂Ψ2_∂HH(F) = ((μ2 / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 1))) * I9 +
476-
2 * ((μ2 * (β - 1) / (3.0^(β - 1)) * (tr((H(F))' * H(F)))^(β - 2))) * (H(F) H(F))
471+
∂Ψ2_∂FF(F) = ((μ1 / (3.0^(α1 - 1)) * (tr((F)' * F))^(α1 - 1))) * I9 +
472+
2 * ((μ1 * (α1 - 1) / (3.0^(α1 - 1)) * (tr((F)' * F))^(α1 - 2))) * (F F)
473+
∂Ψ2_∂HH(F) = ((μ2 / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 1))) * I9 +
474+
2 * ((μ2 * (α2 - 1) / (3.0^(α2 - 1)) * (tr((H(F))' * H(F)))^(α2 - 2))) * (H(F) H(F))
477475
∂Ψ2_∂JJ(F) = (μ1 + 2 * μ2) * (1.0 / (J(F))^2) + λ * γ * ((γ - 1) * J(F)^- 2) ++ 1) * J(F)^(-γ - 2))
478476

479477
∂Ψuu(F) = ∂Ψ2_∂FF(F) + (F × (∂Ψ2_∂HH(F) × F)) + ∂Ψ2_∂JJ(F) * (H(F) H(F)) + ×ᵢ⁴(∂Ψ_∂H(F) + ∂Ψ_∂J(F) * F)
@@ -622,13 +620,14 @@ struct EightChain <: IsoElastic
622620
end
623621

624622

623+
625624
struct TransverseIsotropy3D <: AnisoElastic
626625
μ::Float64
627-
α::Float64
628-
β::Float64
626+
α1::Float64
627+
α2::Float64
629628
ρ::Float64
630-
function TransverseIsotropy3D(; μ::Float64, α::Float64, β::Float64, ρ::Float64=0.0)
631-
new(μ, α, β, ρ)
629+
function TransverseIsotropy3D(; μ::Float64, α1::Float64, α2::Float64, ρ::Float64=0.0)
630+
new(μ, α1, α2, ρ)
632631
end
633632

634633

@@ -637,20 +636,20 @@ struct TransverseIsotropy3D <: AnisoElastic
637636
H(F) = det(F) * inv(F)'
638637
I4(F, N) = (F * N) (F * N)
639638
I5(F, N) = (H(F) * N) (H(F) * N)
640-
μ, α, β = obj.μ, obj.α, obj.β
641-
Ψ(F, N) = μ / (2.0 * α) * (I4(F, N)^α - 1) + μ / (2.0 * β) * (I5(F, N)^β - 1) - μ * logreg(J(F))
639+
μ, α1, α2 = obj.μ, obj.α1, obj.α2
640+
Ψ(F, N) = μ / (2.0 * α1) * (I4(F, N)^α1 - 1) + μ / (2.0 * α2) * (I5(F, N)^α2 - 1) - μ * logreg(J(F))
642641

643-
∂Ψ_∂F(F, N) =* (I4(F, N)^(α - 1))) * ((F * N) N)
644-
∂Ψ_∂H(F, N) =* (I5(F, N)^(β - 1))) * ((H(F) * N) N)
642+
∂Ψ_∂F(F, N) =* (I4(F, N)^(α1 - 1))) * ((F * N) N)
643+
∂Ψ_∂H(F, N) =* (I5(F, N)^(α2 - 1))) * ((H(F) * N) N)
645644
∂log∂J(J) = J >= Threshold ? 1 / J : (2 / Threshold - J / (Threshold^2))
646645
∂log2∂J2(J) = J >= Threshold ? -1 / (J^2) : (-1 / (Threshold^2))
647646
∂Ψ_∂J(F, N) = -μ * ∂log∂J(J(F))
648647
∂Ψ2_∂J2(F, N) = -μ * ∂log2∂J2(J(F))
649648

650649
∂Ψu(F, N) = ∂Ψ_∂F(F, N) + ∂Ψ_∂H(F, N) × F + ∂Ψ_∂J(F, N) * H(F)
651650

652-
∂ΨFF(F, N) = μ * (I4(F, N)^(α - 1)) * (I3 ₁₃²⁴ (N N)) + 2μ * (α - 1) * I4(F, N)^(α - 2) * (((F * N) N) ((F * N) N))
653-
∂ΨHH(F, N) = μ * (I5(F, N)^(β - 1)) * (I3 ₁₃²⁴ (N N)) + 2μ * (β - 1) * I5(F, N)^(β - 2) * (((H(F) * N) N) ((H(F) * N) N))
651+
∂ΨFF(F, N) = μ * (I4(F, N)^(α1 - 1)) * (I3 ₁₃²⁴ (N N)) + 2μ * (α1 - 1) * I4(F, N)^(α1 - 2) * (((F * N) N) ((F * N) N))
652+
∂ΨHH(F, N) = μ * (I5(F, N)^(α2 - 1)) * (I3 ₁₃²⁴ (N N)) + 2μ * (α2 - 1) * I5(F, N)^(α2 - 2) * (((H(F) * N) N) ((H(F) * N) N))
654653
∂Ψuu(F, N) = ∂ΨFF(F, N) + (F × (∂ΨHH(F, N) × F)) + ∂Ψ2_∂J2(F, N) * (H(F) H(F)) + ×ᵢ⁴(∂Ψ_∂H(F, N) + ∂Ψ_∂J(F, N) * F)
655654
return (Ψ, ∂Ψu, ∂Ψuu)
656655
end
@@ -659,20 +658,20 @@ end
659658

660659
struct TransverseIsotropy2D <: AnisoElastic
661660
μ::Float64
662-
α::Float64
663-
β::Float64
661+
α1::Float64
662+
α2::Float64
664663
ρ::Float64
665-
function TransverseIsotropy2D(; μ::Float64, α::Float64, β::Float64, ρ::Float64=0.0)
666-
new(μ, α, β, ρ)
664+
function TransverseIsotropy2D(; μ::Float64, α1::Float64, α2::Float64, ρ::Float64=0.0)
665+
new(μ, α1, α2, ρ)
667666
end
668667

669668
function (obj::TransverseIsotropy2D)(Λ::Float64=1.0; Threshold=0.01)
670669
J(F) = det(F)
671670
H(F) = det(F) * inv(F)'
672671
I4(F, N) = (F * N) (F * N)
673672
I5(F, N) = (H(F) * N) (H(F) * N)
674-
μ, α, β = obj.μ, obj.α, obj.β
675-
Ψ(F, N) = μ / (2.0 * α) * (I4(F, N)^α - 1) + μ / (2.0 * β) * (I5(F, N)^β - 1) - μ * logreg(J(F))
673+
μ, α1, α2 = obj.μ, obj.α1, obj.α2
674+
Ψ(F, N) = μ / (2.0 * α1) * (I4(F, N)^α1 - 1) + μ / (2.0 * α2) * (I5(F, N)^α2 - 1) - μ * logreg(J(F))
676675

677676
∂I4∂F(F, N) = 2 * ((F * N) N)
678677
∂I4∂F∂F(F, N) = 2 * (I2 ₁₃²⁴ (N N))
@@ -684,14 +683,14 @@ struct TransverseIsotropy2D <: AnisoElastic
684683
∂Ψ_∂J(F, N) = -μ * ∂log∂J(J(F))
685684
∂Ψ2_∂J2(F, N) = -μ * ∂log2∂J2(J(F))
686685

687-
∂Ψu(F, N) =/ 2 * (I4(F, N)^(α - 1))) * ∂I4∂F(F, N) +
688-
/ 2 * (I5(F, N)^(β - 1))) * ∂I5∂F(F, N) +
686+
∂Ψu(F, N) =/ 2 * (I4(F, N)^(α1 - 1))) * ∂I4∂F(F, N) +
687+
/ 2 * (I5(F, N)^(α2 - 1))) * ∂I5∂F(F, N) +
689688
∂Ψ_∂J(F, N) * H(F)
690689

691-
∂Ψuu(F, N) = μ / 2 * (α - 1) * (I4(F, N)^(α - 2)) * (∂I4∂F(F, N)) (∂I4∂F(F, N)) +
692-
μ / 2 * (I4(F, N)^(α - 1)) * ∂I4∂F∂F(F, N) +
693-
μ / 2 * (β - 1) * (I5(F, N)^(β - 2)) * (∂I5∂F(F, N)) (∂I5∂F(F, N)) +
694-
μ / 2 * (I5(F, N)^(β - 1)) * ∂I5∂F∂F(F, N) +
690+
∂Ψuu(F, N) = μ / 2 * (α1 - 1) * (I4(F, N)^(α1 - 2)) * (∂I4∂F(F, N)) (∂I4∂F(F, N)) +
691+
μ / 2 * (I4(F, N)^(α1 - 1)) * ∂I4∂F∂F(F, N) +
692+
μ / 2 * (α2 - 1) * (I5(F, N)^(α2 - 2)) * (∂I5∂F(F, N)) (∂I5∂F(F, N)) +
693+
μ / 2 * (I5(F, N)^(α2 - 1)) * ∂I5∂F∂F(F, N) +
695694
∂Ψ2_∂J2(F, N) * (H(F) H(F)) +
696695
∂Ψ_∂J(F, N) * _∂H∂F_2D()
697696
return (Ψ, ∂Ψu, ∂Ψuu)
@@ -822,22 +821,22 @@ struct IncompressibleNeoHookean3D <: IsoElastic
822821

823822
end
824823

825-
function SecondPiola(obj::IncompressibleNeoHookean3D::Float64=1.0)
826-
Ψ(C) = obj.μ / 2 * tr(C) * det(C)^(-1 / 3)
827-
S(C) = begin
828-
detC = det(C)
829-
invC = inv(C)
830-
obj.μ * detC^(-1 / 3) * I3 - obj.μ / 3 * tr(C) * detC^(-1 / 3) * invC
831-
end
832-
∂S∂C(C) = begin
833-
detC = det(C)
834-
trC = tr(C)
835-
invC = inv(C)
836-
IinvC = I3 invC
837-
1 / 3 * obj.μ * detC^(-1 / 3) * (4 / 3 * trC * invC invC - (IinvC + IinvC') - trC / detC * ×ᵢ⁴(C))
838-
end
839-
return (Ψ, S, ∂S∂C)
824+
function SecondPiola(obj::IncompressibleNeoHookean3D, Λ::Float64=1.0)
825+
Ψ(C) = obj.μ / 2 * tr(C) * det(C)^(-1 / 3)
826+
S(C) = begin
827+
detC = det(C)
828+
invC = inv(C)
829+
obj.μ * detC^(-1 / 3) * I3 - obj.μ / 3 * tr(C) * detC^(-1 / 3) * invC
830+
end
831+
∂S∂C(C) = begin
832+
detC = det(C)
833+
trC = tr(C)
834+
invC = inv(C)
835+
IinvC = I3 invC
836+
1 / 3 * obj.μ * detC^(-1 / 3) * (4 / 3 * trC * invC invC - (IinvC + IinvC') - trC / detC * ×ᵢ⁴(C))
840837
end
838+
return (Ψ, S, ∂S∂C)
839+
end
841840

842841
struct IncompressibleNeoHookean2D <: IsoElastic
843842
λ::Float64

0 commit comments

Comments
 (0)