Skip to content

Commit c7ab2d2

Browse files
authored
Merge pull request #74 from MultiSimOLab/fix-thermo
Fix thermo-mechanical coupling at constitutive model definition
2 parents 9119a4e + 82863eb commit c7ab2d2

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/PhysicalModels/ThermoElectroMechanicalModels.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectro
117117
end
118118

119119
function (obj::ThermoElectroMech_Bonet)(Λ::Float64=1.0; kwargs...)
120-
@unpack Cv,θr, α, κ, γv, γd = obj.thermo
120+
@unpack Cv, θr, α, κ, γv, γd = obj.thermo
121121
em = ElectroMechModel(obj.electro, obj.mechano)
122122
Ψem, ∂Ψem∂F, ∂Ψem∂E, ∂Ψem∂FF, ∂Ψem∂EF, ∂Ψem∂EE = em(;kwargs...)
123123
gd(θ) = 1/(γd+1) * ((θ/θr)^(γd+1) -1)
@@ -135,18 +135,18 @@ struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectro
135135
∂ηR∂F(F) = ∂ηR∂J(F)*H(F)
136136
∂2ηR∂FF(F) = ×ᵢ⁴(∂ηR∂J(F) * F)
137137

138-
Ψ(F, E, θ, X...) = Ψem(F, E, X...)*(1.0+gd(θ))+gv(θ)*ηR(F)
138+
Ψ(F, E, θ, X...) = Ψem(F, E, X...)*(1.0+gd(θ)) - θr*gv(θ)*ηR(F)
139139

140-
∂Ψ_∂F(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂F(F, E, X...) + gv(θ)*∂ηR∂F(F)
140+
∂Ψ_∂F(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂F(F, E, X...) - θr*gv(θ)*∂ηR∂F(F)
141141
∂Ψ_∂E(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂E(F, E, X...)
142-
∂Ψ_∂θ(F, E, θ, X...) = ∂gd(θ) *Ψem(F, E, X...) + ∂gv(θ)*ηR(F)
142+
∂Ψ_∂θ(F, E, θ, X...) = ∂gd(θ) *Ψem(F, E, X...) - θr*∂gv(θ)*ηR(F)
143143

144-
∂2Ψ_∂2F(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂FF(F, E, X...) + gv(θ)*∂2ηR∂FF(F)
144+
∂2Ψ_∂2F(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂FF(F, E, X...) - θr*gv(θ)*∂2ηR∂FF(F)
145145
∂2Ψ_∂2E(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂EE(F, E, X...)
146-
∂2Ψ_∂2θ(F, E, θ, X...) = ∂∂gd(θ) *Ψem(F, E, X...) + ∂∂gv(θ)*ηR(F)
146+
∂2Ψ_∂2θ(F, E, θ, X...) = ∂∂gd(θ) *Ψem(F, E, X...) - θr*∂∂gv(θ)*ηR(F)
147147

148148
∂ΨEF(F, E, θ, X...) = (1.0+gd(θ)) *∂Ψem∂EF(F, E, X...)
149-
∂ΨFθ(F, E, θ, X...) = ∂gd(θ) *∂Ψem∂F(F, E, X...) + ∂gv(θ)*∂ηR∂F(F)
149+
∂ΨFθ(F, E, θ, X...) = ∂gd(θ) *∂Ψem∂F(F, E, X...) - θr*∂gv(θ)*∂ηR∂F(F)
150150
∂ΨEθ(F, E, θ, X...) = ∂gd(θ) *∂Ψem∂E(F, E, X...)
151151

152152
return (Ψ, ∂Ψ_∂F, ∂Ψ_∂E, ∂Ψ_∂θ, ∂2Ψ_∂2F, ∂2Ψ_∂2E, ∂2Ψ_∂2θ, ∂ΨEF, ∂ΨFθ, ∂ΨEθ)

test/TestConstitutiveModels/PhysicalModelTests.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,9 +462,11 @@ end
462462
∇u = TensorValue(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0) * 1e-3
463463
∇φ = VectorValue(1.0, 2.0, 3.0)
464464
θt = 3.4 - 1.0
465+
θr = 293.0
466+
Cv = 17.385
465467
modelMR = MooneyRivlin3D=0.0, μ1=0.5, μ2=0.5)
466468
modelID = IdealDielectric=1.0)
467-
modelT = ThermalModel(Cv=17.385, θr=293.0, α=0.00156331, γv=2.0, γd=2.0)
469+
modelT = ThermalModel(Cv=Cv, θr=θr, α=0.00156331, γv=2.0, γd=2.0)
468470

469471
modelTEM = ThermoElectroMech_Bonet(modelT, modelID, modelMR)
470472
Ψ, ∂Ψu, ∂ΨE, ∂Ψθ, ∂ΨFF, ∂ΨEE, ∂2Ψθθ, ∂ΨEF, ∂ΨFθ, ∂ΨEθ = modelTEM()
@@ -497,6 +499,10 @@ end
497499
@test isapprox(∂ΨFθ(F(∇u), E(∇φ), θt), ∂2Ψ_∂2Fθ(F(∇u), E(∇φ), θt); rtol=1e-14)
498500
@test isapprox(∂ΨEF(F(∇u), E(∇φ), θt), ∂2Ψ_∂EF(F(∇u), E(∇φ), θt); rtol=1e-14)
499501

502+
F0 = I3
503+
E0 = VectorValue(0.,0.,0.)
504+
cv(F,E,θ,x...) = -θ*∂2Ψ∂2θ(F,E,θ,x...)
505+
@test isapprox(Cv, cv(F0, E0, θr); rtol=1e-14)
500506
end
501507

502508

0 commit comments

Comments
 (0)