Use of Finite Elements#
The studies with the Ritz Method presented in module
compmech.conecyl have shown the main disadvantages regarding
the numerical integration of the non-linear stiffness matrices:
since the approximation functions are complex, the evaluation of each integration point is expensive
there is no quadrature rule available for such complex functions
Moreover, the use of very especialized models makes it difficult to extend their applicability for different cases where different load and boundary conditions are desired.
The use of finite elements will allow the use of simpler approximation functions significantly reducing the computational cost to evaluate each integration point, and allowing the application of quadrature rules, minimizing the number of integration points required.
Building the Spine#
Before implementing the new finite elements a very well defined process must be stablished in order to define:
integration with pynastran to read NASTRAN input files
define node class
define element class
node-element connectivity schemes:
minimize band-width of the stiffness matrices by working with a proper internal node identification. The user will use the conventional node ID, but the analysis could use an internal ID that is calculated to minimize the band-width of the sparse matrices
use of C++, C or Cython?
use Cython or Python classes?
possible sparse solvers:
Intel MKL PARDISO
scipy.sparsesolver, at least to build the
ARPACK (used in
Use the rainflow algorithm?
Use SIMD programming for common array operations?
rely on NumPy, with a group working on these optimizations
use Eigen3 wrappers such as minieigen
Developing New Elements#
The element types should include some of those available in NASTRAN plus some additional options:
The priority order should be:
CQUAD4 - plate element like in NASTRAN
ZQUAD4 - cylindrical (Zylinder) shell element
KQUAD4 - conical (Konus) shell element
The element’s formulation should allow: - Initial Imperfection (how?!) - CLPT - FSDT - TSDT
The new tools will create a high potential for new studies concerning advanced procedures to calculate shear correction factors, new non-linear methods and so on…
How to use GPU-based programming?
Some preliminary studies show that it is promising to apply such programming
strategies to largely parallelize operations like the numerical integration of
each element’s stiffness matrix… each thread could be one element being
integrated for example and this should be benchmarked against a CPU-based
integration using Shared-Memory Parallel programming through OpenMP, which has
already been applied in