-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPhysicalModels.jl
More file actions
160 lines (129 loc) · 3.66 KB
/
Copy pathPhysicalModels.jl
File metadata and controls
160 lines (129 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
module PhysicalModels
using Gridap
using Gridap.CellData
using Gridap.Helpers
using DrWatson
using ForwardDiff
using LinearAlgebra
using ..TensorAlgebra
using ..TensorAlgebra: _∂H∂F_2D
using ..TensorAlgebra: trAA
using StaticArrays
import Base: +
export Yeoh3D
export NeoHookean3D
export IncompressibleNeoHookean3D
export IncompressibleNeoHookean2D
export IncompressibleNeoHookean2D_CV
export IncompressibleNeoHookean3D_2dP
export ARAP2D
export ARAP2D_regularized
export VolumetricEnergy
export MooneyRivlin3D
export MooneyRivlin2D
export NonlinearMooneyRivlin3D
export NonlinearMooneyRivlin2D
export NonlinearMooneyRivlin2D_CV
export NonlinearNeoHookean_CV
export NonlinearMooneyRivlin_CV
export NonlinearIncompressibleMooneyRivlin2D_CV
export EightChain
export TransverseIsotropy3D
export TransverseIsotropy2D
export LinearElasticity3D
export LinearElasticity2D
export Magnetic
export IdealDielectric
export IdealMagnetic
export IdealMagnetic2D
export HardMagnetic
export HardMagnetic2D
export ThermalModel
export ElectroMechModel
export ThermoElectroMechModel
export ThermoMechModel
export ThermoMech_EntropicPolyconvex
export FlexoElectroModel
export ThermoElectroMech_Govindjee
export ThermoElectroMech_PINNs
export ThermoElectroMech_Bonet
export MagnetoMechModel
export GeneralizedMaxwell
export ViscousIncompressible
export HGO_4Fibers
export HGO_1Fiber
export PhysicalModel
export Mechano
export Elasto
export AnisoElastic
export Visco
export ViscoElastic
export Electro
export Magneto
export Thermo
export ElectroMechano
export MagnetoMechano
export ThermoElectroMechano
export ThermoMechano
export ThermoElectro
export FlexoElectro
export EnergyInterpolationScheme
export SecondPiola
export DerivativeStrategy
export initializeStateVariables
export updateStateVariables!
export update_state!
export Kinematics
export KinematicDescription
export Solid
export KinematicModel
export EvolutiveKinematics
export get_Kinematics
export getIsoInvariants
export HessianRegularization
export Hessian∇JRegularization
struct DerivativeStrategy{Kind} end
abstract type PhysicalModel end
abstract type Mechano <: PhysicalModel end
abstract type Electro <: PhysicalModel end
abstract type Magneto <: PhysicalModel end
abstract type Thermo <: PhysicalModel end
abstract type Elasto <: Mechano end
abstract type IsoElastic <: Elasto end
abstract type AnisoElastic <: Elasto end
abstract type Visco <: Mechano end
abstract type ViscoElastic <: Mechano end
abstract type MultiPhysicalModel <: PhysicalModel end
abstract type ElectroMechano <: MultiPhysicalModel end
abstract type ThermoElectroMechano <: MultiPhysicalModel end
abstract type ThermoMechano <: MultiPhysicalModel end
abstract type ThermoElectro <: MultiPhysicalModel end
abstract type FlexoElectro <: MultiPhysicalModel end
abstract type MagnetoMechano <: MultiPhysicalModel end
abstract type InternalFibers end
include("KinematicModels.jl")
include("MechanicalModels.jl")
include("ViscousModels.jl")
include("MagneticModels.jl")
include("ElectricalModels.jl")
include("ThermalModels.jl")
include("ThermoMechanicalModels.jl")
include("ElectroMechanicalModels.jl")
include("MagnetoMechanicalModels.jl")
include("ThermoElectroMechanicalModels.jl")
include("PINNs.jl")
# ============================================
# Physical models interface
# ============================================
function initializeStateVariables(::PhysicalModel, points::Measure)
return nothing
end
function updateStateVariables!(::Any, ::PhysicalModel, vars...)
end
function Dissipation(::PhysicalModel, args...)
D(::Any...) = 0.0
end
function SecondPiola(::T, args...) where {T<:PhysicalModel}
throw("The function 'SecondPiola' has not been implemented for $T.")
end
end