Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 10d07a89 authored by Martin Genet's avatar Martin Genet
Browse files

Clarify interface to material laws

parent 0f22ee34
No related branches found
No related tags found
No related merge requests found
......@@ -29,7 +29,7 @@ class RegularizationEnergy(Energy):
name="reg",
w=1.,
type="equilibrated",
model="mooneyrivlin",
model="ciarletgeymonatneohookeanmooneyrivlin",
young=1.,
poisson=0.,
quadrature_degree=None):
......@@ -79,36 +79,36 @@ class RegularizationEnergy(Energy):
self.Psi_m, self.S_m = self.material.get_free_energy(
U=self.problem.U)
self.P_m = self.S_m
elif (self.model in ("kirchhoff", "ciarletgeymonat", "neohookean", "neohookeandev", "mooneyrivlin", "puremooneyrivlindev", "mooneyrivlindev")):
self.dim = self.problem.U.ufl_shape[0]
self.I = dolfin.Identity(self.dim)
self.F = self.I + dolfin.grad(self.problem.U)
elif (self.model in ("kirchhoff", "neohookean", "mooneyrivlin", "neohookeanmooneyrivlin", "ciarletgeymonat", "ciarletgeymonatneohookean", "ciarletgeymonatneohookeanmooneyrivlin")):
if (self.model == "kirchhoff"): # <- pretty bad too
self.material = dcm.KirchhoffElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "ciarletgeymonat"):
self.material = dcm.CiarletGeymonatBulkElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "neohookean"):
self.material = dcm.CiarletGeymonatNeoHookeanElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "neohookeandev"):
self.material = dcm.NeoHookeanDevElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "mooneyrivlin"):
self.material = dcm.CiarletGeymonatMooneyRivlinElasticMaterial(
self.material = dcm.MooneyRivlinDevElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "puremooneyrivlindev"):
self.material = dcm.PureMooneyRivlinDevElasticMaterial(
elif (self.model == "neohookeanmooneyrivlin"):
self.material = dcm.NeoHookeanMooneyRivlinDevElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "mooneyrivlindev"):
self.material = dcm.MooneyRivlinDevElasticMaterial(
elif (self.model == "ciarletgeymonat"):
self.material = dcm.CiarletGeymonatBulkElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "ciarletgeymonatneohookean"):
self.material = dcm.CiarletGeymonatNeoHookeanElasticMaterial(
parameters=self.material_parameters)
elif (self.model == "ciarletgeymonatneohookeanmooneyrivlin"):
self.material = dcm.CiarletGeymonatNeoHookeanMooneyRivlinElasticMaterial(
parameters=self.material_parameters)
self.Psi_m, self.S_m = self.material.get_free_energy(
U=self.problem.U)
self.dim = self.problem.U.ufl_shape[0]
self.I = dolfin.Identity(self.dim)
self.F = self.I + dolfin.grad(self.problem.U)
self.P_m = self.F * self.S_m
else:
assert (0), "\"model\" ("+str(self.model)+") must be \"hooke\", \"kirchhoff\", \"ciarletgeymonat\", \"neohookean\" or \"mooneyrivlin\". Aborting."
assert (0), "\"model\" ("+str(self.model)+") must be \"hooke\", \"kirchhoff\", \"neohookean\", \"mooneyrivlin\" or \"ciarletgeymonat\". Aborting."
self.printer.print_str("Defining regularization energy…")
......
......@@ -36,8 +36,8 @@ def fedic2(
mesh_basename=None,
mesh_degree=1,
regul_type="equilibrated", # equilibrated, hyperelastic
regul_model="mooneyrivlin", # hooke, kirchhoff, neohookean, mooneyrivlin
regul_models=None, # hooke, kirchhoff, neohookean, mooneyrivlin
regul_model="ciarletgeymonatneohookeanmooneyrivlin", # hooke, kirchhoff, ciarletgeymonatneohookean, ciarletgeymonatneohookeanmooneyrivlin
regul_models=None,
regul_quadrature=None,
regul_level=0.1,
regul_poisson=0.0,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment