Triangle class
Coordinate-free formulation for a finite deformation bi-linear triangle.
Linear Theory (small displacements)
The element uses an iso-parametric mapping for both the reference and the spatial configuration. In the reference configuration,
where \(\xi^I\) are standard triangle coordinates. Alternatively, the mapping may be expressed using just two coordinates, \(\xi^1\equiv\xi^s\) and \(\xi^2\equiv\xi^t\), as
The covariant base vectors follow from (1) and (2) as
We can express differential \(d\xi^i\) in terms of \(d\mathbf{X}\) by means of the dual base as
The displacement field is represented as
Using (3) we obtain the displacement gradient as
where \(d\xi^0+d\xi^1+d\xi^2=0\) and \(\mathbf{G}^0=-\mathbf{G}^1-\mathbf{G}^2\) were used.
The strain tensors follows as
The variation of strain is needed for the principle of virtual displacements. It follows as
Application of virtual work
The principle of virtual displacements (PVD) takes the form
where \(\symbf{\sigma}=\mathbb{C}:d\symbf{\varepsilon}\) is the Cauchy stress tensor, and \(\mathbb{C}\) is the material stiffness tensor.
The left hand term in the PVD yields
where \(\mathbf{T}^I= \symbf{\sigma} \cdot \mathbf{G}^I\) is the traction on the edge opposing node I.
Expressing the stress as \(\symbf{\sigma}=\mathbb{C}:\symbf{\varepsilon}\) yields under consideration of symmetries in \(\mathbb{C}\)
leading to the stiffness matrix as
Implementation notes
Writing the kinematic equation in cartesian component form, we obtain
leading to
Finite deformation theory
The element uses an iso-parametric mapping for both the reference and the spatial configuration. In the reference configuration,
where \(\xi^I\) are standard triangle coordinates. Alternatively, the mapping may be expressed using just two coordinates, \(\xi^1\equiv\xi^s\) and \(\xi^2\equiv\xi^t\), as
The covariant base vectors follow from (4) and (5) as
We can express differential \(d\xi^i\) in terms of \(d\mathbf{X}\) by means of the dual base as
Similar to the above, we map the spatial configuration as
Using (6) we obtain the deformation gradient as
Various strain tensors can be computed from it. We use the right Cauchy-Green deformation tensor,
or the Green-Lagrange strain tensor
Variation/linearization as needed for the principle of virtual displacements follows as
where \(\mathbf{G}^0=-\mathbf{G}^1-\mathbf{G}^2\) and
Application of virtual work
The incremental form of the principle of virtual displacements (PVD) takes the form
where \(\mathbf{S}\) is the \(2^{nd}\) Piola-Kirchhoff stress tensor, \(\mathbb{C}=\partial\mathbf{S}/\partial\mathbf{E}\) is the material stiffness tensor, and
The left hand term in the PVD yields
and
leading to the tangent stiffness matrix as
Implementation notes
Parent class
See also
Class doc
- class femedu.elements.linear.Triangle.Triangle(node0, node1, node2, material, label=None)
class: representing a 3-noded plane triangle
- computeSurfaceLoads()
compute surface loads using faces
This method should be called during
updateState()
by every element supporting surface loads
- mapGaussPoints(var)
Initiate mapping of Gauss-point values to nodes. This method is an internal method and should not be called by the user. Calling that method explicitly will cause faulty nodal values.
- Parameters:
var – variable code for a variable to be mapped from Gauss-points to nodes
- resetLoads()
default implementation for resetting element loads.
- setSurfaceLoad(face, pn, ps=0)
face ID
nodes defining that face
0
node 0
tonode 1
1
node 1
tonode 2
2
node 2
tonode 0
- Parameters:
face – face ID for the laoded face
pn – magnitude of distributed normal load per area. Tension on a surface is positive.
ps – magnitude of distributed shear load per area. Positive direction is defined as shown in the above table.
- updateState()