-
Notifications
You must be signed in to change notification settings - Fork 248
Local axes orientation
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 Kratos core, and shall be used in naming the axis of choice.
LOCAL_AXIS_1
LOCAL_AXIS_2
LOCAL_AXIS_3
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.
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()
.
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.
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.
- Getting Kratos (Last compiled Release)
- Compiling Kratos
- Running an example from GiD
- Kratos input files and I/O
- Data management
- Solving strategies
- Manipulating solution values
- Multiphysics
- Video tutorials
- Style Guide
- Authorship of Kratos files
- Configure .gitignore
- How to configure clang-format
- How to use smart pointer in Kratos
- How to define adjoint elements and response functions
- Visibility and Exposure
- Namespaces and Static Classes
Kratos structure
Conventions
Solvers
Debugging, profiling and testing
- Compiling Kratos in debug mode
- Debugging Kratos using GDB
- Cross-debugging Kratos under Windows
- Debugging Kratos C++ under Windows
- Checking memory usage with Valgind
- Profiling Kratos with MAQAO
- Creating unitary tests
- Using ThreadSanitizer to detect OMP data race bugs
- Debugging Memory with ASAN
HOW TOs
- How to create applications
- Python Tutorials
- Kratos For Dummies (I)
- List of classes and variables accessible via python
- How to use Logger
- How to Create a New Application using cmake
- How to write a JSON configuration file
- How to Access DataBase
- How to use quaternions in Kratos
- How to do Mapping between nonmatching meshes
- How to use Clang-Tidy to automatically correct code
- How to use the Constitutive Law class
- How to use Serialization
- How to use GlobalPointerCommunicator
- How to use PointerMapCommunicator
- How to use the Geometry
- How to use processes for BCs
- How to use Parallel Utilities in futureproofing the code
- Porting to Pybind11 (LEGACY CODE)
- Porting to AMatrix
- How to use Cotire
- Applications: Python-modules
- How to run multiple cases using PyCOMPSs
- How to apply a function to a list of variables
- How to use Kratos Native sparse linear algebra
Utilities
Kratos API
Kratos Structural Mechanics API