diff --git a/src/PhysicalModels/ElectroMechanicalModels.jl b/src/PhysicalModels/ElectroMechanicalModels.jl index ad1b1ed..930df47 100644 --- a/src/PhysicalModels/ElectroMechanicalModels.jl +++ b/src/PhysicalModels/ElectroMechanicalModels.jl @@ -1,5 +1,5 @@ -struct ElectroMechModel{E<:Electro,M<:Mechano} <: ElectroMechano +struct ElectroMechModel{E<:Electro,M<:Mechano} <: ElectroMechano{E,M} electro::E mechano::M @@ -117,7 +117,7 @@ function (+)(Model1::Mechano, Model2::Electro) ElectroMechModel(Model2, Model1) end -struct FlexoElectroModel{EM<:ElectroMechano} <: FlexoElectro +struct FlexoElectroModel{EM<:ElectroMechano} <: FlexoElectro{EM} electromechano::EM κ::Float64 diff --git a/src/PhysicalModels/MagnetoMechanicalModels.jl b/src/PhysicalModels/MagnetoMechanicalModels.jl index f066b1c..faea413 100644 --- a/src/PhysicalModels/MagnetoMechanicalModels.jl +++ b/src/PhysicalModels/MagnetoMechanicalModels.jl @@ -3,16 +3,16 @@ # Magneto mechanical models # =============================== -struct MagnetoMechModel{MG<:Magneto,MC<:Mechano} <: MagnetoMechano - magneto::MG - mechano::MC +struct MagnetoMechModel{G<:Magneto,M<:Mechano} <: MagnetoMechano{G,M} + magneto::G + mechano::M - function MagnetoMechModel(magneto::MG, mechano::MC) where {MG <: Magneto, MC <: Mechano} - new{MG,MC}(magneto, mechano) + function MagnetoMechModel(magneto::G, mechano::M) where {G <: Magneto, M <: Mechano} + new{G,M}(magneto, mechano) end - function MagnetoMechModel(; magneto::MG, mechano::MC) where {MG <: Magneto, MC <: Mechano} - new{MG,MC}(magneto, mechano) + function MagnetoMechModel(; magneto::G, mechano::M) where {G <: Magneto, M <: Mechano} + new{G,M}(magneto, mechano) end function (obj::MagnetoMechModel{<:Magneto,<:IsoElastic})(Λ::Float64=1.0) diff --git a/src/PhysicalModels/PINNs.jl b/src/PhysicalModels/PINNs.jl index 2564d5f..54b076f 100644 --- a/src/PhysicalModels/PINNs.jl +++ b/src/PhysicalModels/PINNs.jl @@ -29,7 +29,7 @@ end -struct ThermoElectroMech_PINNs{A,B,C,D} <: ThermoElectroMechano +struct ThermoElectroMech_PINNs{A,B,C,D} <: ThermoElectroMechano{Thermo,Electro,Mechano} W::A b::B ϵ::C @@ -42,9 +42,6 @@ struct ThermoElectroMech_PINNs{A,B,C,D} <: ThermoElectroMechano new{A,B,C,D}(W, b, ϵ, β, nLayer, κ) end - - - function (obj::ThermoElectroMech_PINNs)(Λ::Float64=1.0) function Ψ(F, E, δθ) @@ -86,6 +83,5 @@ struct ThermoElectroMech_PINNs{A,B,C,D} <: ThermoElectroMechano η(F, E, θ) = -∂Ψθ(F, E, θ) return (Ψ, ∂ΨF, ∂ΨE, ∂Ψθ, ∂ΨFF, ∂ΨEE, ∂Ψθθ, ∂ΨEF, ∂ΨFθ, ∂ΨEθ, η) - end -end \ No newline at end of file +end diff --git a/src/PhysicalModels/PhysicalModels.jl b/src/PhysicalModels/PhysicalModels.jl index a5d71d5..6803026 100644 --- a/src/PhysicalModels/PhysicalModels.jl +++ b/src/PhysicalModels/PhysicalModels.jl @@ -110,16 +110,16 @@ abstract type AnisoElastic <: Elasto end abstract type Visco <: Mechano end abstract type ViscoElastic{E<:Elasto} <: Mechano end +abstract type InternalFibers end abstract type ThermalLaw end abstract type MultiPhysicalModel <: PhysicalModel end -abstract type ElectroMechano <: MultiPhysicalModel end -abstract type ThermoElectroMechano <: MultiPhysicalModel end +abstract type ElectroMechano{E,M} <: MultiPhysicalModel end +abstract type ThermoElectroMechano{T,E,M} <: MultiPhysicalModel end abstract type ThermoMechano{T,M} <: MultiPhysicalModel end -abstract type ThermoElectro <: MultiPhysicalModel end -abstract type FlexoElectro <: MultiPhysicalModel end -abstract type MagnetoMechano <: MultiPhysicalModel end -abstract type InternalFibers end +abstract type ThermoElectro{E,M} <: MultiPhysicalModel end +abstract type FlexoElectro{EM} <: MultiPhysicalModel end +abstract type MagnetoMechano{G,M} <: MultiPhysicalModel end include("KinematicModels.jl") diff --git a/src/PhysicalModels/ThermoElectroMechanicalModels.jl b/src/PhysicalModels/ThermoElectroMechanicalModels.jl index c91ab40..1fdcd34 100644 --- a/src/PhysicalModels/ThermoElectroMechanicalModels.jl +++ b/src/PhysicalModels/ThermoElectroMechanicalModels.jl @@ -1,19 +1,19 @@ -function initialize_state(obj::TEM, points::Measure) where {TEM<:ThermoElectroMechano} +function initialize_state(obj::ThermoElectroMechano, points::Measure) initialize_state(obj.mechano, points) end -function update_state!(obj::TEM, state, F, E, θ, args...) where {TEM<:ThermoElectroMechano} +function update_state!(obj::ThermoElectroMechano, state, F, E, θ, args...) update_state!(obj.mechano, state, F, args...) end -function update_time_step!(obj::TEM, Δt::Float64) where {TEM<:ThermoElectroMechano} +function update_time_step!(obj::ThermoElectroMechano, Δt::Float64) update_time_step!(obj.thermo, Δt) update_time_step!(obj.electro, Δt) update_time_step!(obj.mechano, Δt) end -struct ThermoElectroMechModel{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano +struct ThermoElectroMechModel{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano{T,E,M} thermo::T electro::E mechano::M @@ -53,7 +53,7 @@ struct ThermoElectroMechModel{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroM end -struct ThermoElectroMech_Govindjee{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano +struct ThermoElectroMech_Govindjee{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano{T,E,M} thermo::T electro::E mechano::M @@ -117,7 +117,7 @@ struct ThermoElectroMech_Govindjee{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoEle end -struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano +struct ThermoElectroMech_Bonet{T<:Thermo,E<:Electro,M<:Mechano} <: ThermoElectroMechano{T,E,M} thermo::T electro::E mechano::M @@ -166,11 +166,3 @@ function Dissipation(obj::ThermoElectroMech_Bonet) tm = ThermoMech_Bonet(obj.thermo, obj.mechano, obj.gv, obj.gd, obj.gvis) Dissipation(tm) end - -# function Dissipation(obj::ThermoElectroMech_Bonet) -# gd, ∂gd, ∂∂gd = isochoric_law(obj.thermo) -# Dvis = Dissipation(obj.mechano) -# D(F, E, θ, X...) = gd(θ) * Dvis(F, X...) -# ∂D∂θ(F, E, θ, X...) = ∂gd(θ) * Dvis(F, X...) -# return(D, ∂D∂θ) -# end