porepy.params.tensor module

The tensor module contains classes for second and fourth order tensors, intended e.g. for representation of permeability and stiffness, respectively.

class FourthOrderTensor(mu, lmbda, phi=None)[source]

Bases: object

Cell-wise representation of fourth order tensor, represented by (3^2, 3^2 ,Nc)-array, where Nc denotes the number of cells, i.e. the tensor values are stored discretely.

For each cell, there are dim^4 degrees of freedom, stored in a 3^2 * 3^2 matrix (exactly how to convert between 2D and 4D matrix is not clear to me a the moment, but in practise there is sufficient symmetry in the tensors for the question to be irrelevant).

The only constructor available for the moment is based on the Lame parameters, e.g. using two degrees of freedom. A third parameter phi is also present, but this has never been used.

Primary usage for the class is for mpsa discretizations. Other applications have not been tested.

Parameters
  • mu (np.ndarray) –

  • lmbda (np.ndarray) –

  • phi (Optional[np.ndarray]) –

values

dimensions (3^2, 3^2, nc), cell-wise representation of the stiffness matrix.

Type

numpy.ndarray

lmbda

Nc array of first Lame parameter

Type

np.ndarray

mu

Nc array of second Lame parameter

Type

np.ndarray

copy()[source]

` Define a deep copy of the tensor.

Returns

New tensor with identical fields, but separate

arrays (in the memory sense).

Return type

FourthOrderTensor

class SecondOrderTensor(kxx, kyy=None, kzz=None, kxy=None, kxz=None, kyz=None)[source]

Bases: object

Cell-wise permeability represented by (3, 3, Nc)-array, where Nc denotes the number of cells, i.e. the tensor values are stored discretely.

The permeability is always 3-dimensional (since the geometry is always 3D), however, 1D and 2D problems are accommodated by assigning unit values to kzz and kyy, and no cross terms.

Parameters
  • kxx (np.ndarray) –

  • kyy (Optional[np.ndarray]) –

  • kzz (Optional[np.ndarray]) –

  • kxy (Optional[np.ndarray]) –

  • kxz (Optional[np.ndarray]) –

  • kyz (Optional[np.ndarray]) –

copy()[source]

` Define a deep copy of the tensor.

Returns

New tensor with identical fields, but separate

arrays (in the memory sense).

Return type

SecondOrderTensor

rotate(R)[source]

Rotate the permeability given a rotation matrix.

Parameter:

R: a rotation matrix 3x3

Parameters

R (ndarray) –

Return type

None