Skip to content

Commit 7fcaca2

Browse files
committed
initial commit
1 parent b6022a4 commit 7fcaca2

File tree

2 files changed

+37
-19
lines changed

2 files changed

+37
-19
lines changed

src/PhysicalModels/ThermoElectroMechanicalModels.jl

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectro
107107
thermo::T
108108
electro::E
109109
mechano::M
110-
110+
111111
function ThermoElectroMech_Bonet(thermo::T, electro::E, mechano::M) where {T<:Thermo,E<:Electro,M<:Mechano}
112112
new{T,E,M}(thermo, electro, mechano)
113113
end
@@ -116,9 +116,11 @@ struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectro
116116
new{T,E,M}(thermo, electro, mechano)
117117
end
118118

119-
function (obj::ThermoElectroMech_Bonet)(Λ::Float64=1.0)
119+
function (obj::ThermoElectroMech_Bonet)(Λ::Float64=1.0; kwargs...)
120120
@unpack Cv,θr, α, κ, γv, γd = obj.thermo
121-
Ψem, ∂Ψem∂F, ∂Ψem∂E, ∂Ψem∂FF, ∂Ψem∂EF, ∂Ψem∂EE = _getCoupling(obj.electro, obj.mechano, Λ)
121+
# Ψem, ∂Ψem∂F, ∂Ψem∂E, ∂Ψem∂FF, ∂Ψem∂EF, ∂Ψem∂EE = _getCoupling(obj.electro, obj.mechano, Λ)
122+
em = ElectroMechModel(electro, mechano)
123+
Ψem, ∂Ψem∂F, ∂Ψem∂E, ∂Ψem∂FF, ∂Ψem∂EF, ∂Ψem∂EE = em(;kwargs...)
122124
gd(δθ) = 1/(γd+1) * (((δθ+θr)/θr)^(γd+1) -1)
123125
∂gd(δθ) = (δθ+θr)^γd / θr^(γd+1)
124126
∂∂gd(δθ) = γd*(δθ+θr)^(γd-1) / θr^(γd+1)
@@ -134,21 +136,21 @@ struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectro
134136
∂η∂F(F)=∂η∂J(F)*H(F)
135137
∂2η∂FF(F)=×ᵢ⁴(∂η∂J(F) * F)
136138

137-
Ψ(F,E,δθ) = Ψem(F,E)*(1.0+gd(δθ))+gv(δθ)*η(F)
139+
Ψ(F, E, δθ, X...) = Ψem(F, E, X...)*(1.0+gd(δθ))+gv(δθ)*η(F)
138140

139-
∂Ψ_∂F(F, E, δθ) = (1.0+gd(δθ)) *∂Ψem∂F(F, E) + gv(δθ)*∂η∂F(F)
140-
∂Ψ_∂E(F, E, δθ) = (1.0+gd(δθ)) *∂Ψem∂E(F, E)
141-
∂Ψ_∂δθ(F, E, δθ) = ∂gd(δθ) *Ψem(F, E) + ∂gv(δθ)*η(F)
141+
∂Ψ_∂F(F, E, δθ, X...) = (1.0+gd(δθ)) *∂Ψem∂F(F, E, X...) + gv(δθ)*∂η∂F(F)
142+
∂Ψ_∂E(F, E, δθ, X...) = (1.0+gd(δθ)) *∂Ψem∂E(F, E, X...)
143+
∂Ψ_∂δθ(F, E, δθ, X...) = ∂gd(δθ) *Ψem(F, E, X...) + ∂gv(δθ)*η(F)
142144

143-
∂2Ψ_∂2F(F, E, δθ) = (1.0+gd(δθ)) *∂Ψem∂FF(F, E) + gv(δθ)*∂2η∂FF(F)
144-
∂2Ψ_∂2E(F, E, δθ) = (1.0+gd(δθ)) *∂Ψem∂EE(F, E)
145-
∂2Ψ_∂2δθ(F, E, δθ) = ∂∂gd(δθ) *Ψem(F, E) + ∂∂gv(δθ)*η(F)
145+
∂2Ψ_∂2F(F, E, δθ, X...) = (1.0+gd(δθ)) *∂Ψem∂FF(F, E, X...) + gv(δθ)*∂2η∂FF(F)
146+
∂2Ψ_∂2E(F, E, δθ, X...) = (1.0+gd(δθ)) *∂Ψem∂EE(F, E, X...)
147+
∂2Ψ_∂2δθ(F, E, δθ, X...) = ∂∂gd(δθ) *Ψem(F, E, X...) + ∂∂gv(δθ)*η(F)
146148

147-
∂ΨEF(F, E, δθ) = (1.0+gd(δθ)) *∂Ψem∂EF(F, E)
148-
∂ΨFδθ(F, E, δθ) = ∂gd(δθ) *∂Ψem∂F(F, E) + ∂gv(δθ)*∂η∂F(F)
149-
∂ΨEδθ(F, E, δθ) = ∂gd(δθ) *∂Ψem∂E(F, E)
149+
∂ΨEF(F, E, δθ, X...) = (1.0+gd(δθ)) *∂Ψem∂EF(F, E, X...)
150+
∂ΨFδθ(F, E, δθ, X...) = ∂gd(δθ) *∂Ψem∂F(F, E, X...) + ∂gv(δθ)*∂η∂F(F)
151+
∂ΨEδθ(F, E, δθ, X...) = ∂gd(δθ) *∂Ψem∂E(F, E, X...)
150152

151-
η(F, E, δθ) = -∂Ψ_∂δθ(F, E, δθ)
153+
η(F, E, δθ, X...) = -∂Ψ_∂δθ(F, E, δθ, X...)
152154

153155
return (Ψ, ∂Ψ_∂F, ∂Ψ_∂E, ∂Ψ_∂δθ, ∂2Ψ_∂2F, ∂2Ψ_∂2E, ∂2Ψ_∂2δθ, ∂ΨEF, ∂ΨFδθ, ∂ΨEδθ, η)
154156
end
@@ -159,7 +161,7 @@ function Dissipation(obj::ThermoElectroMech_Bonet, Δt)
159161
Dvis = Dissipation(obj.mechano, Δt)
160162
gd(δθ) = 1/(γd+1) * (((δθ+θr)/θr)^(γd+1) -1)
161163
∂gd(δθ) = (δθ+θr)^γd / θr^(γd+1)
162-
D(F, E, δθ, A...) = (1 + gd(δθ)) * Dvis(F, A...)
163-
∂D∂θ(F, E, δθ, A...) = ∂gd(δθ) * Dvis(F, A...)
164+
D(F, E, δθ, X...) = (1 + gd(δθ)) * Dvis(F, X...)
165+
∂D∂θ(F, E, δθ, X...) = ∂gd(δθ) * Dvis(F, X...)
164166
return(D, ∂D∂θ)
165167
end

src/WeakForms/WeakForms.jl

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,16 @@ function residual(physicalmodel::ThermoElectroMechano, ::Type{Electro}, kine::NT
8585
return -1.0*((vφ)' (∂Ψφ (F((u)'), E((φ)), θ)))dΩ
8686
end
8787

88-
function residual(physicalmodel::ThermoElectroMechano, ::Type{Thermo}, kine::NTuple{3,KinematicModel}, (u, φ, θ), vθ, dΩ, Λ=1.0)
89-
κ=physicalmodel.thermo.κ
90-
return * (θ) (vθ))dΩ
88+
function residual(physicalmodel::ThermoElectroMechano, ::Type{Thermo}, kine::NTuple{3,KinematicModel}, (u, φ, θ), vθ, dΩ, Λ=1.0, Δt=0.0, vars...)
89+
κ = physicalmodel.thermo.κ
90+
D, ∂D = Dissipation(Δt)
91+
return * (θ) (vθ) -D(u, φ, θ, vars...))dΩ
92+
end
93+
94+
function transient_residual(physicalmodel::ThermoElectroMechano, ::Type{Thermo}, kine::NTuple{3,KinematicModel}, (u, φ, θ), (un, φn, θn), vθ, dΩ, Λ=1.0, Δt=0.0, vars...)
95+
= physicalmodel(Δt=Δt)
96+
η = -DΨ[4]
97+
return ((1/Δt)**η(F,E,θ,vars...) - θn*η(Fn,En,θn,vars...) + η(F,E,θ)*- θn)))dΩ
9198
end
9299

93100

@@ -410,4 +417,13 @@ function jacobian(physicalmodel::ThermoElectroMech_PINNs, kine::NTuple{2,Kinemat
410417
end
411418

412419

420+
421+
422+
function transient_residual(physicalmodel::ThermoElectroMech_Bonet, ::Type{Thermo}, kine::NTuple{3,KinematicModel}, (u, φ, θ), vθ, dΩ, Λ=1.0)
423+
κ = physicalmodel.thermo.κ
424+
425+
return * (θ) (vθ))dΩ
426+
end
427+
428+
413429
end

0 commit comments

Comments
 (0)