pyoomph.equations.solid module

class pyoomph.equations.solid.BaseSolidConstitutiveLaw(use_subexpressions=True)[source]

Bases: object

Base class for solid constitutive laws. The method get_sigma must be implemented in derived classes.

Parameters:

use_subexpressions (bool, optional) – Use subexpressions for the tensor entries. Defaults to True.

get_Gij()[source]

Returns the covariant metric tensor of the deformed configuration.

get_gammaij(dim, isotropic_growth_factor=1)[source]

Returns the Green strain tensor

get_gij(dim, isotropic_growth_factor=1)[source]

Returns the covariant metric tensor of the undeformed configuration. This is the identity matrix in Cartesian coordinates.

get_sigma(dim, isotropic_growth_factor=1, pressure_var=None)[source]

Returns the second Piola-Kirchhoff stress tensor. The method must be implemented in derived classes.

Parameters:
  • dim (int) – Element dimension.

  • isotropic_growth_factor (Union[Expression, int, float, None]) – Expression or numerical value representing the isotropic growth factor. Defaults to 1.

  • pressure_var (Optional[Expression], optional) – Pressure variable for incompressible cases. Defaults to None.

is_incompressible()[source]

If this returns True, the constitutive law is incompressible. This means that the determinant of the deformation gradient is equal to the determinant of the undeformed configuration. The solid equations will then introduce a pressure variable that is used to enforce this condition.

class pyoomph.equations.solid.DeformableSolidEquations(constitutive_law, mass_density=0, bulkforce=0, coordinate_space=None, first_order_time_derivative=False, pressure_space='DL', with_error_estimator=False, isotropic_growth_factor=1, modulus_for_scaling=None, scale_for_FSI=False)[source]

Bases: BaseDeformableSolidEquations

Nonlinear solid elasticity equations for deformable solids. Requires a constitutive law, which gives the particular material properties.

Parameters:
  • constitutive_law (BaseSolidConstitutiveLaw) – Particular solid constitutive law, which must be derived from BaseSolidConstitutiveLaw.

  • mass_density (Union[Expression, int, float]) – Mass density (relevant for the inertia term in temporal dynamics). Defaults to 0.

  • bulkforce (Union[Expression, int, float]) – Bulk force density (in the undeformed frame!). Defaults to 0.

  • coordinate_space – Space to use for the mesh. Defaults to None.

  • first_order_time_derivative – If set, a velocity is explicitly introduced, reducing the maximum time derivative order to unity (good for eigenanalysis). Defaults to False.

  • pressure_space (Literal['C1', 'C1TB', 'C2', 'C2TB', 'D1', 'D1TB', 'D2', 'D2TB', 'DL', 'D0']) – If the constitutive law is incompressible, a pressure field is required. This controls the space of the pressure. Defaults to “DL”.

  • with_error_estimator – If set, error estimators based on the strain are introduced. Defaults to False.

  • isotropic_growth_factor (Union[Expression, int, float]) – Factor of growing with respect to the undeformed configuration. Defaults to 1.

  • modulus_for_scaling (Union[Expression, int, float]) – By default, nondimensionalization is made with respect to the scales mass_density, spatial and temporal. Here, you can set a reference Young’s modulus to nondimensionalize with respect to this instead. Defaults to None.

  • scale_for_FSI (bool) – If set, the scaling of the test function agrees with the scaling of the velocity test function ([X]/[P]). This is important to balance the tractions correctly

class pyoomph.equations.solid.FSIConnection(*, velocity_offset=0)[source]

Bases: InterfaceEquations

Can be added to the fluid side of a fluid-structure interaction interface to couple the mesh deformation and the velocity.

Parameters:

velocity_offset (Union[Expression, int, float]) – An offset to the velocity. You can e.g. add/substract a normal velocity to allow for fluid penetration into the solid.

class pyoomph.equations.solid.GeneralizedHookeanSolidConstitutiveLaw(E=1, nu=0.4, use_subexpressions=True)[source]

Bases: BaseSolidConstitutiveLaw

Generalized Hookean solid constitutive law.

Parameters:
  • E (Union[Expression, int, float]) – Young’s modulus

  • nu (Union[Expression, int, float]) – Poisson’s ratio

  • use_subexpressions (bool, optional) – Use subexpressions for the tensor entries. Defaults to True.

class pyoomph.equations.solid.IncompressibleSolidConstitutiveLaw(use_subexpressions=True)[source]

Bases: BaseSolidConstitutiveLaw

Base class for incompressible solid constitutive laws. The method get_sigma must be implemented in derived classes.

is_incompressible()[source]

Returns True, indicating that this is an incompressible solid constitutive law.

class pyoomph.equations.solid.SolidNormalTraction(P)[source]

Bases: SolidTraction

Imposes a normal traction on the solid interface. This is used to apply pressure loads on the solid surface.

Parameters:

P (Union[Expression, int, float]) – Pressure to apply

class pyoomph.equations.solid.SolidTraction(T)[source]

Bases: InterfaceEquations

Imposes a traction vector on the solid interface.

Parameters:

T (Union[Expression, int, float]) – traction to apply