Skip to content

Commit e58b853

Browse files
committed
Merge branch 'main' into evol
2 parents 7aad59c + 0bc8b3b commit e58b853

35 files changed

Lines changed: 782 additions & 528 deletions

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,13 @@ Uφ = TrialFESpace(Vφ, D_bc.BoundaryCondition[2], 1.0)
9292
V = MultiFieldFESpace([Vu, Vφ])
9393
U = MultiFieldFESpace([Uu, Uφ])
9494

95+
# Kinematic Description
96+
km=Kinematics(Mechano,Solid)
97+
ke=Kinematics(Electro,Solid)
98+
9599
# residual and jacobian function of load factor
96-
res(Λ) = ((u, φ), (v, vφ)) -> residual(physmodel, (u, φ), (v, vφ), dΩ)
97-
jac(Λ) = ((u, φ), (du, dφ), (v, vφ)) -> jacobian(physmodel, (u, φ), (du, dφ), (v, vφ), dΩ)
100+
res(Λ) = ((u, φ), (v, vφ)) -> residual(physmodel, (km,ke),(u, φ), (v, vφ), dΩ)
101+
jac(Λ) = ((u, φ), (du, dφ), (v, vφ)) -> jacobian(physmodel, (km,ke), (u, φ), (du, dφ), (v,vφ),dΩ)
98102

99103
# nonlinear solver
100104
ls = LUSolver()

benchmark/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
33
Gridap = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e"
44
GridapGmsh = "3025c34a-b394-11e9-2a55-3fee550c04c8"
55
GridapSolvers = "6d3209ee-5e3c-4db7-a716-942eb12ed534"
6+
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
filename = projdir("test/data/StaticMechanicalDirichletSimulation.jl")
3+
include(filename)
4+
5+
SUITE["Simulations"]["StaticMechanicalDirichlet"] = @benchmarkable static_mechanical_dirichlet_simulation(writevtk=false, verbose=false)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
filename = projdir("test/data/StaticMechanicalNeumannSimulation.jl")
3+
include(filename)
4+
5+
SUITE["Simulations"]["StaticMechanicalNeumann"] = @benchmarkable static_mechanical_neumann_simulation(writevtk=false, verbose=false)
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11

2-
BASE_FOLDER = dirname(dirname(pathof(HyperFEM)))
3-
filename = joinpath(BASE_FOLDER, "test/data/ViscoElasticSimulation.jl")
2+
filename = projdir("test/data/ViscoElasticSimulation.jl")
43
include(filename)
54

6-
SUITE["Simulations"]["ViscoElastic"] = @benchmarkable visco_elastic_simulation(write_vtk=false)
5+
SUITE["Simulations"]["ViscoElastic"] = @benchmarkable visco_elastic_simulation(writevtk=false, verbose=false)

benchmark/SimulationsBenchmarks/benchmarks.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
SUITE["Simulations"] = BenchmarkGroup()
33

44
include("ViscoElasticSimulationBenchmark.jl")
5+
6+
include("StaticMechanicalDirichletBenchmark.jl")
7+
8+
include("StaticMechanicalNeumannBenchmark.jl")

src/ComputationalModels/PostProcessors.jl

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,16 @@ function (obj::PostProcessor{<:DynamicNonlinearModel,<:Any,<:Any})(Λ)
7171
obj.cache[1](obj, obj.cache[2]...)
7272
end
7373

74-
function Jacobian(uh)
75-
F, _, J = Kinematics(Mechano).metrics
74+
function Jacobian(uh,km)
75+
F, _, J = get_Kinematics(km)
7676
J F (uh)
7777
end
7878

79-
function Cauchy(physmodel::ThermoElectroMechano, uh, φh, θh, Ω, dΩ, Λ=1.0)
79+
function Cauchy(physmodel::ThermoElectroMechano,kine::NTuple{3,KinematicModel}, uh, φh, θh, Ω, dΩ, Λ=1.0)
8080
= physmodel(Λ)
81-
Kinematic_mec = Kinematics(Mechano)
82-
Kinematic_elec = Kinematics(Electro)
83-
F, _, _ = get_Kinematics(Kinematic_mec)
84-
E = get_Kinematics(Kinematic_elec)
81+
82+
F, _, _ = get_Kinematics(kine[1])
83+
E = get_Kinematics(kine[2])
8584
∂Ψu = DΨ[2]
8685
refL2 = ReferenceFE(lagrangian, Float64, 0)
8786
ref = ReferenceFE(lagrangian, Float64, 1)
@@ -101,38 +100,36 @@ function Cauchy(physmodel::ThermoElectroMechano, uh, φh, θh, Ω, dΩ, Λ=1.0)
101100
end
102101

103102

104-
function Cauchy(model::Elasto, uh, unh, state_vars, Ω, dΩ, t, Δt)
105-
σh = Cauchy(model, uh)
103+
function Cauchy(model::Elasto,km::KinematicModel,uh, unh, state_vars, Ω, dΩ, t, Δt)
104+
σh = Cauchy(model,km,uh)
106105
interpolate_L2_tensor(σh, Ω, dΩ)
107106
end
108107

109108

110-
function Cauchy(model::ViscoElastic, uh, unh, state_vars, Ω, dΩ, t, Δt)
111-
σh = Cauchy(model, uh, unh, state_vars, Δt)
109+
function Cauchy(model::ViscoElastic, km::KinematicModel, uh, unh, state_vars, Ω, dΩ, t, Δt)
110+
σh = Cauchy(model, km, uh, unh, state_vars, Δt)
112111
interpolate_L2_tensor(σh, Ω, dΩ)
113112
end
114113

115114

116-
function Cauchy(model::Elasto, uh, vars...)
115+
function Cauchy(model::Elasto, km::KinematicModel,uh, vars...)
117116
_, ∂Ψu, _ = model()
118-
F, _, _ = get_Kinematics(model.Kinematic)
117+
F, _, _ = get_Kinematics(km)
119118
∂Ψu (F(uh))
120119
end
121120

122121

123-
function Cauchy(model::ViscoElastic, uh, unh, states, Δt)
122+
function Cauchy(model::ViscoElastic, km::KinematicModel, uh, unh, states, Δt)
124123
_, ∂Ψu, _ = model(Δt=Δt)
125-
F, _, _ = get_Kinematics(model.Kinematic)
124+
F, _, _ = get_Kinematics(km)
126125
∂Ψu (F(uh), F(unh), states...)
127126
end
128127

129128

130-
function Entropy(physmodel::ThermoElectroMechano, uh, φh, θh, Ω, dΩ, Λ=1.0)
129+
function Entropy(physmodel::ThermoElectroMechano, kine::NTuple{3,KinematicModel}, uh, φh, θh, Ω, dΩ, Λ=1.0)
131130
= physmodel(Λ)
132-
Kinematic_mec = Kinematics(Mechano)
133-
Kinematic_elec = Kinematics(Electro)
134-
F, _, _ = get_Kinematics(Kinematic_mec)
135-
E = get_Kinematics(Kinematic_elec)
131+
F,_,_ = get_Kinematics(kine[1]; Λ=Λ)
132+
E = get_Kinematics(kine[2]; Λ=Λ)
136133
η = DΨ[11]
137134
refL2 = ReferenceFE(lagrangian, Float64, 0)
138135
ref = ReferenceFE(lagrangian, Float64, 1)
@@ -142,12 +139,10 @@ function Entropy(physmodel::ThermoElectroMechano, uh, φh, θh, Ω, dΩ, Λ=1.0)
142139
return ηh
143140
end
144141

145-
function D0(physmodel::ThermoElectroMechano, uh, φh, θh, Ω, dΩ, Λ=1.0)
142+
function D0(physmodel::ThermoElectroMechano, kine::NTuple{3,KinematicModel}, uh, φh, θh, Ω, dΩ, Λ=1.0)
146143
= physmodel(Λ)
147-
Kinematic_mec = Kinematics(Mechano)
148-
Kinematic_elec = Kinematics(Electro)
149-
F, _, _ = get_Kinematics(Kinematic_mec)
150-
E = get_Kinematics(Kinematic_elec)
144+
F,_,_ = get_Kinematics(kine[1]; Λ=Λ)
145+
E = get_Kinematics(kine[2]; Λ=Λ)
151146
∂ΨE = DΨ[3]
152147
refL2 = ReferenceFE(lagrangian, Float64, 0)
153148
ref = ReferenceFE(lagrangian, Float64, 1)

src/Exports.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ end
7979
@publish PhysicalModels EnergyInterpolationScheme
8080
@publish PhysicalModels update_state!
8181
@publish PhysicalModels Kinematics
82+
@publish PhysicalModels Solid
8283
@publish PhysicalModels KinematicModel
8384
@publish PhysicalModels EvolutiveKinematics
8485
@publish PhysicalModels get_Kinematics
@@ -135,8 +136,6 @@ end
135136
@publish Solvers Roman_LS
136137
@publish Solvers update_cellstate!
137138

138-
139-
140-
141-
# @publish LinearSolvers solve
142-
# @publish LinearSolvers solve!
139+
export setupfolder
140+
export projdir
141+
export filedir

src/HyperFEM.jl

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
module HyperFEM
22

3-
using TimerOutputs
4-
5-
63
include("TensorAlgebra/TensorAlgebra.jl")
74
include("PhysicalModels/PhysicalModels.jl")
85
include("WeakForms/WeakForms.jl")
96
include("Solvers/Solvers.jl")
107
include("ComputationalModels/ComputationalModels.jl")
118

129
include("Io.jl")
13-
export setupfolder
14-
1510
include("Exports.jl")
11+
1612
end

src/Io.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,15 @@ end
3131

3232
function cleandir(::String, ::Nothing)
3333
end
34+
35+
"""
36+
Return the path to the specified folders relative to the HyperFEM path.
37+
38+
# Examples
39+
folder = projdir("data", "sims")
40+
folder = projdir("test/data/mesh.msh")
41+
"""
42+
function projdir(folders::String...)
43+
base_folder = dirname(dirname(pathof(HyperFEM)))
44+
joinpath(base_folder, folders...)
45+
end

0 commit comments

Comments
 (0)