Edit me

The purpose of the current page is to describe the convention employed in the definition of local axes within Kratos. This is designed in particular for the “structural” case, consisting in Beams, Shells and Solid elements, however the same conventions shall be employed in other fields when applicable.

The following variables, of type array_1d<double,3> are defined within the KratosCore, and shall be used in naming the axis of choice.

  • LOCAL_AXIS_1
  • LOCAL_AXIS_2
  • LOCAL_AXIS_3

BEAM case

For the case of a Beam, the axis LOCAL_AXIS_1 is chosen as the unit vector tangent to the beam axis, oriented following the beam natural numbering (for a 2 node beam, from node 0 towards node 1).

LOCAL_AXIS_2 is expected to be orthogonal to the direction identified by LOCAL_AXIS_1. This axis can either be provided by the user or computed automatically. LOCAL_AXIS_3 is then computed to form an orthonormal basis with the first 2.

CASE 1 - Axis is user prescribed

In this case, LOCAL_AXIS_2 is assumed to be approximately orthogonal to the beam axis. It will be made orthogonal and normalized as a very first step. It shall be assigned to the element employing the GetValue/SetValue method, so that it is possible to query whether it was prescribed or not by employing the function Has().

CASE 2 - Axis not prescribed

By default, LOCAL_AXIS_2 is initialized to the global y-axis when abs(LOCAL_AXIS_1[2]) > cos(10), otherwise it is initialized to the global z-axis. It will be made orthogonal and normalized as a very first step.

Orthonormalization of LOCAL_AXIS_2

After LOCAL_AXIS_2 has been initialized by either case 1 or case 2, it is projected onto the plane defined by LOCAL_AXIS_1 and then normalized.