Code_Aster Structural Analysis
Theory: three analysis types and the solutions to check against
Overview
I know the basics of Code_Aster now. Beyond static analysis, what structural analyses can it do?
The three you will use most are static, modal and linear buckling. Static analysis (MECA_STATIQUE) gives deformation and stress under load. Modal analysis (CALC_MODES) finds the frequencies at which the structure readily vibrates. Linear buckling is also solved with CALC_MODES, but instead of mass it uses the change in stiffness caused by stress (geometric stiffness) to find how many times the load the structure can take before buckling. A convenience of Code_Aster is that all three reuse the same mesh and model assignment (AFFE_MODELE). But each needs different material data and has its own typical mistakes. This page works through three examples with theoretical answers to show those differences.
How the three analyses differ
| Analysis | Main commands | Material data needed | Output |
|---|---|---|---|
| Static | MECA_STATIQUE | E, NU | Displacement, stress |
| Modal | ASSEMBLAGE, CALC_MODES | E, NU, RHO | Natural frequencies, mode shapes |
| Linear buckling | MECA_STATIQUE → RIGI_GEOM → CALC_MODES (MODE_FLAMB) | E, NU | Buckling multiplier on the reference load |
Theoretical solutions for comparison
Plate with a hole in tension (stress concentration in a finite-width plate, Heywood's approximation):
Bending vibration of a cantilever (Euler-Bernoulli beam):
Column buckling (Euler's formula, K is the effective length factor):
P is load; W, d and t are plate width, hole diameter and thickness; E is Young's modulus, I second moment of area, ρ density, A area and L length.
The paper that showed stress triples around a hole
That a small circular hole in an infinitely wide plate raises the stress at its edge to three times the remote stress was derived from elasticity by the German engineer Kirsch in 1898. This factor of three became design common sense long before the finite element method existed and is now a standard verification case for finite element solvers. In a finite-width plate, the factor based on the net-section stress drops below 3: about 2.51 when the hole is 20% of the plate width.
Worked examples
All units are N, mm, MPa and t (tonnes). Steel is E = 210,000 MPa, Poisson's ratio 0.3 and density 7.85×10⁻⁹ t/mm³.
Example 1: plate with a hole in tension (static)
A plate 100 mm wide and 10 mm thick has a 20 mm central hole and is pulled with 20 kN.
| Quantity | Value |
|---|---|
| Remote stress P/(W t) | 20.0 MPa |
| Net-section stress P/((W−d) t) | 25.0 MPa |
| Stress concentration factor Kt,net | 2.512 |
| Peak stress at the hole edge | 62.8 MPa |
| For reference: infinite plate (Kirsch), 3× | 60.0 MPa |
In Code_Aster, use symmetry to model a quarter, set normal displacement to zero on the symmetry planes with DDL_IMPO and apply the load on the end face with FORCE_FACE or PRES_REP. Compute nodal stresses (SIGM_NOEU) with CALC_CHAMP and read the value at the hole edge. Refine until the value approaches 62.8 MPa and stops changing; the verification is then complete.
Example 2: natural frequencies of a cantilever (modal)
A steel cantilever 50 mm wide, 100 mm high and 1,000 mm long. It can bend in two directions, so compute the bending frequencies for each.
| Bending direction | Mode 1 | Mode 2 | Mode 3 |
|---|---|---|---|
| Thin direction (across the 50 mm width) | 41.8 Hz | 261.8 Hz | 733.1 Hz |
| Thick direction (across the 100 mm height) | 83.6 Hz | 523.6 Hz | 1,466.1 Hz |
CALC_MODES lists results in ascending order, so the two directions interleave: 41.8 Hz (thin-direction mode 1), 83.6 Hz (thick-direction mode 1), 261.8 Hz and so on. With 3D elements, torsional and axial modes appear too. Look at each mode shape to identify direction and order before comparing with theory.
My modal analysis gave mode 1 as 0.0000418 Hz. The static deflection was right, so why?
Suspect the density unit. In the N-mm-MPa system, force = mass × acceleration makes the mass unit the tonne. So steel density must be entered as 7.85×10⁻⁹ (t/mm³), not 7850 (the kg/m³ number). Entering 7850 makes the mass 10¹² times too large, and frequency scales with the inverse square root — a millionth. That is why 41.8 Hz became 0.0000418 Hz. Static analysis does not use density, so it cannot reveal this error. When you start modal work, first check that the cantilever's mode 1 comes out at 41.8 Hz; unit mistakes show up immediately.
Example 3: column buckling load (linear buckling)
A 20 mm square steel column, 1,000 mm long, fixed at the base with a 1 kN compressive reference load at the top.
| Quantity | Value |
|---|---|
| Second moment of area | 13,333 mm⁴ |
| Buckling load (fixed-free) | 6,909 N |
| Code_Aster eigenvalue (buckling multiplier) | about 6.91 |
| Compressive stress at buckling | 17.3 MPa |
| For reference: pinned-pinned buckling load | 27,635 N |
| For reference: yield load (235 MPa) | 94,000 N |
The buckling stress of 17.3 MPa is far below the 235 MPa yield stress, so this column fails by elastic buckling before yielding. In Code_Aster, run a static analysis (MECA_STATIQUE) at 1 kN, build the geometric stiffness from its stresses with CALC_MATR_ELEM, OPTION='RIGI_GEOM', and solve with CALC_MODES, TYPE_RESU='MODE_FLAMB'. The eigenvalue (CHAR_CRIT) times the reference load is the buckling load.
My buckling eigenvalue came out negative. Did the calculation fail?
It did not fail; it means the load direction is reversed. The buckling eigenvalue is the multiplier on the reference load at which buckling occurs, so a negative value says the structure buckles at that multiple if the load is reversed. Check the load sign and direction — you may have applied tension instead of compression. Also, linear buckling is an ideal value that ignores geometric imperfections and yielding, so in real design use a nonlinear analysis (STAT_NON_LINE) with an initial imperfection to see how much the buckling load drops. Especially for stocky columns whose buckling stress approaches yield, using the linear value directly is unconservative.
Practical workflow
- Choose a unit system and state it in a comment at the top of the input (N, mm, MPa, t, etc.).
- In static analysis, check deflection and reactions against hand calculations, including that total reaction equals the applied load.
- For modal analysis, add density and check frequency magnitudes on something like a cantilever before moving to the real model.
- For buckling, use a unit reference load so the eigenvalue reads directly as the multiplier.
- Confirm results stop changing with refinement, and consult official verification cases that use the same features.
“Mode 1 is not in the direction you expected”
If you only think about the loading direction (the 100 mm height), you may assume the beam in Example 2 has its first mode at 83.6 Hz. Its actual mode 1 sways in the thin direction at 41.8 Hz. If a machine runs at 45 Hz and you only check the thick direction, you would conclude it is well below the 83.6 Hz first mode — yet vibration grows near 41.8 Hz. Modal analysis is done precisely to find modes in directions you did not anticipate, so always review mode shapes along with the frequencies.
Common mistakes
Mistakes and fixes
| Mistake | Effect | Fix |
|---|---|---|
| Density 7850 in mm units | Frequencies a millionth of true | 7.85×10⁻⁹ t/mm³ |
| RHO omitted | Mass matrix cannot be built | Add RHO to ELAS |
| Ignoring mode shapes | Miss mode 1 in an unexpected direction | Check shape and frequency together |
| Buckling load reversed | Negative eigenvalue | Confirm it is compressive |
| Using linear buckling directly | Unconservative | Nonlinear analysis with imperfections |
I'd like to learn related topics.
Related Topics
Experience the theory firsthand with the interactive simulator for this field
All Simulators