442 lines
18 KiB
Markdown
442 lines
18 KiB
Markdown
# MITC4 Formulation
|
|
|
|
## Purpose
|
|
This document is the formulation contract for FESA's Phase 1 four-node MITC4 shell element.
|
|
|
|
It supersedes the earlier simplified Phase 1 baseline that used an averaged-edge shell basis, analytic thickness integration, and `drilling_stiffness_scale = 1.0e-6`. The next Phase 1 implementation pass must treat this document as the MITC4 gate before coding or evaluating shell stiffness.
|
|
|
|
The goal is not to reproduce Abaqus internals. The goal is to implement a documented, testable Dvorkin-Bathe-style MITC4 element that can be compared against stored Abaqus `S4` reference artifacts without running Abaqus locally.
|
|
|
|
## Local Source Basis
|
|
The formulation below is based on the local papers in `docs/Paper/`:
|
|
|
|
- `docs/Paper/AContinuumMechanicsBasedFourNodeShellElementforGeneralNonlinearAnalysis/`
|
|
- Dvorkin and Bathe's original four-node non-flat shell element.
|
|
- Defines the degenerated-continuum geometry, displacement interpolation, convected transverse shear interpolation, constitutive transformation, and benchmark expectations.
|
|
- `docs/Paper/FourNodeQuadrilateralShellElementMITC4/`
|
|
- Restates the MITC4 geometry and displacement interpolation, gives explicit midside shear tying relations, and reports patch-test and Scordelis-Lo verification behavior.
|
|
- `docs/Paper/유한요소해석법을이용한쉘구조물의동적좌굴해석/`
|
|
- Provides the Korean thesis derivation for covariant strain, plane-stress material matrix with shear correction, 6-DOF shell transformation, drilling stabilization, and nonlinear extension notes.
|
|
- `docs/Paper/2007쉘구조물의유한요소해석에대하여/`
|
|
- Provides shell-model background, locking behavior, asymptotic behavior, and benchmark/test interpretation.
|
|
- `docs/Paper/mitc공부/`
|
|
- Treated as supporting study notes only. Use the papers above for binding formulas.
|
|
|
|
## Phase 1 Scope
|
|
Phase 1 implements:
|
|
|
|
- Abaqus `TYPE=S4` mapped to FESA `MITC4`.
|
|
- Four-node quadrilateral shell in Abaqus S4 node order.
|
|
- Linear static, small-strain, linear isotropic elastic analysis.
|
|
- Homogeneous shell section with one thickness value per element for the initial implementation.
|
|
- Six global DOFs per node: `UX`, `UY`, `UZ`, `RX`, `RY`, `RZ`.
|
|
- MITC transverse shear interpolation in a convected coordinate system.
|
|
- Constrained DOF elimination, full-vector reaction recovery, and minimum output fields `U` and `RF`.
|
|
|
|
Phase 1 does not implement:
|
|
|
|
- Abaqus `S4R`, reduced integration, or hourglass control.
|
|
- Geometric nonlinearity, material nonlinearity, dynamics, pressure loads, thermal-stress coupling, composite sections, or mesh quality diagnostics.
|
|
- Abaqus `*Orientation`, user-defined nodal normals, or shell offset behavior unless added by a later ADR.
|
|
|
|
## Natural Coordinates and Node Order
|
|
FESA uses the standard bilinear quadrilateral natural coordinates:
|
|
|
|
```text
|
|
node 1: (xi, eta) = (-1, -1)
|
|
node 2: (xi, eta) = (+1, -1)
|
|
node 3: (xi, eta) = (+1, +1)
|
|
node 4: (xi, eta) = (-1, +1)
|
|
zeta in [-1, +1] through the thickness
|
|
```
|
|
|
|
Shape functions:
|
|
|
|
```text
|
|
N1 = 0.25 * (1 - xi) * (1 - eta)
|
|
N2 = 0.25 * (1 + xi) * (1 - eta)
|
|
N3 = 0.25 * (1 + xi) * (1 + eta)
|
|
N4 = 0.25 * (1 - xi) * (1 + eta)
|
|
```
|
|
|
|
Midside MITC tying points in the FESA convention:
|
|
|
|
```text
|
|
A = ( 0, -1) edge 1-2
|
|
B = (-1, 0) edge 1-4
|
|
C = ( 0, +1) edge 4-3
|
|
D = (+1, 0) edge 2-3
|
|
```
|
|
|
|
Dvorkin-Bathe papers may use a natural-coordinate orientation where the signs on the `A/C` interpolation are reversed relative to the FESA convention above. FESA implementation must preserve the edge definitions above and use the FESA interpolation formulas in the MITC shear section.
|
|
|
|
## Degenerated-Continuum Geometry
|
|
The shell is represented as a 3D continuum degenerated through the thickness:
|
|
|
|
```text
|
|
X(xi, eta, zeta) =
|
|
sum_k N_k(xi, eta) X_k
|
|
+ zeta / 2 * sum_k t_k N_k(xi, eta) Vn_k
|
|
```
|
|
|
|
where:
|
|
|
|
- `X_k` is the midsurface coordinate of node `k`.
|
|
- `t_k` is the nodal thickness. Phase 1 uses `t_k = t` for all four nodes.
|
|
- `Vn_k` is the nodal director. The papers allow the director to be non-normal to the midsurface; Phase 1 derives it from geometry because Abaqus nodal normals are not in the parser subset.
|
|
|
|
Phase 1 director policy:
|
|
|
|
- If no parsed nodal directors exist, use the element-center midsurface normal for all four nodal directors:
|
|
|
|
```text
|
|
G1_c = dX_mid / dxi at (0, 0)
|
|
G2_c = dX_mid / deta at (0, 0)
|
|
Vn_k = normalize(G1_c x G2_c), k = 1..4
|
|
```
|
|
|
|
- If `G1_c x G2_c` is near zero, reject the element with an invalid/singular element diagnostic.
|
|
- This flat-or-mildly-warped policy is sufficient for the Phase 1 S4 baseline. A true non-flat nodal-director policy requires a later ADR and benchmark update.
|
|
|
|
The nodal local director axes are:
|
|
|
|
```text
|
|
V1_k = normalize(EY x Vn_k)
|
|
V2_k = Vn_k x V1_k
|
|
```
|
|
|
|
If `EY x Vn_k` is near zero, use a deterministic fallback axis before normalization:
|
|
|
|
```text
|
|
V1_k = normalize(EZ x Vn_k)
|
|
if still near zero, V1_k = normalize(EX x Vn_k)
|
|
V2_k = Vn_k x V1_k
|
|
```
|
|
|
|
The implementation must keep `V1_k`, `V2_k`, and `Vn_k` orthonormal and right-handed.
|
|
|
|
## Displacement and Rotation Interpolation
|
|
The local five-DOF MITC4 displacement field is:
|
|
|
|
```text
|
|
u(xi, eta, zeta) =
|
|
sum_k N_k u_k
|
|
+ zeta / 2 * sum_k t_k N_k q_k
|
|
|
|
q_k = -V2_k * alpha_k + V1_k * beta_k
|
|
```
|
|
|
|
where:
|
|
|
|
- `u_k` is the nodal translation vector.
|
|
- `alpha_k` is the rotation about `V1_k`.
|
|
- `beta_k` is the rotation about `V2_k`.
|
|
- Drilling rotation `gamma_k` about `Vn_k` does not enter the continuum strain field.
|
|
|
|
FESA stores six global DOFs per node. Global nodal rotations are mapped to local director rotations by:
|
|
|
|
```text
|
|
theta_k = [RX_k, RY_k, RZ_k]^T
|
|
|
|
[alpha_k, beta_k, gamma_k]^T = L_k theta_k
|
|
|
|
L_k =
|
|
[ EX dot V1_k EY dot V1_k EZ dot V1_k
|
|
EX dot V2_k EY dot V2_k EZ dot V2_k
|
|
EX dot Vn_k EY dot Vn_k EZ dot Vn_k ]
|
|
```
|
|
|
|
The element-level local-to-global transformation is block diagonal:
|
|
|
|
```text
|
|
u_local_e = T_e u_global_e
|
|
K_global_e = T_e^T K_local_e T_e
|
|
f_global_e = T_e^T f_local_e
|
|
```
|
|
|
|
Each node block maps `[UX, UY, UZ, RX, RY, RZ]` to `[u_x, u_y, u_z, alpha, beta, gamma]`.
|
|
|
|
## Covariant Strain Definition
|
|
Use convected covariant components for the MITC4 strain construction:
|
|
|
|
```text
|
|
g_i = dX / dr_i, where r_i = xi, eta, zeta
|
|
|
|
eps_ij =
|
|
0.5 * (du/dr_i dot g_j + du/dr_j dot g_i)
|
|
```
|
|
|
|
For the Phase 1 small-strain implementation:
|
|
|
|
- Membrane and bending terms are derived directly from the degenerated-continuum displacement field.
|
|
- `eps_33 = 0` is enforced by the shell assumption.
|
|
- The transverse shear rows `eps_13` and `eps_23` are not taken directly at the Gauss point. They are replaced by the MITC assumed transverse shear interpolation below.
|
|
|
|
Use the internal strain vector order:
|
|
|
|
```text
|
|
[ eps_11, eps_22, eps_33, gamma_23, gamma_13, gamma_12 ]^T
|
|
```
|
|
|
|
where engineering shear strains are:
|
|
|
|
```text
|
|
gamma_ij = 2 * eps_ij
|
|
```
|
|
|
|
If an implementation uses another row order internally, it must include an explicit permutation test against this documented order.
|
|
|
|
## MITC Transverse Shear Interpolation
|
|
The key MITC4 assumption is that the transverse shear tensor components are interpolated from midside tying points, instead of being evaluated directly at every Gauss point from the displacement field.
|
|
|
|
The original paper form is:
|
|
|
|
```text
|
|
eps_13 = 0.5 * (1 + r2) * eps_13^A + 0.5 * (1 - r2) * eps_13^C
|
|
eps_23 = 0.5 * (1 + r1) * eps_23^D + 0.5 * (1 - r1) * eps_23^B
|
|
```
|
|
|
|
With FESA's Abaqus-style natural coordinate convention and tying-point labels, use:
|
|
|
|
```text
|
|
eps_13_MITC(xi, eta) =
|
|
0.5 * (1 - eta) * eps_13^A
|
|
+ 0.5 * (1 + eta) * eps_13^C
|
|
|
|
eps_23_MITC(xi, eta) =
|
|
0.5 * (1 - xi) * eps_23^B
|
|
+ 0.5 * (1 + xi) * eps_23^D
|
|
```
|
|
|
|
The tying values are the direct covariant shear strains evaluated at midside points:
|
|
|
|
```text
|
|
eps_13^A = eps_13_DIRECT( 0, -1)
|
|
eps_13^C = eps_13_DIRECT( 0, +1)
|
|
eps_23^B = eps_23_DIRECT(-1, 0)
|
|
eps_23^D = eps_23_DIRECT(+1, 0)
|
|
```
|
|
|
|
Implementation rule:
|
|
|
|
- Build the direct covariant strain-displacement rows from the geometry and displacement interpolation.
|
|
- Evaluate only the needed direct transverse shear rows at `A`, `B`, `C`, and `D`.
|
|
- Interpolate those rows to the integration point using the formulas above.
|
|
- Do not compute MITC shear from local Cartesian `gamma_xz`/`gamma_yz` first; the tying is on convected tensor components.
|
|
|
|
For sign and regression checks, define:
|
|
|
|
```text
|
|
q_k = -V2_k * alpha_k + V1_k * beta_k
|
|
```
|
|
|
|
The paper edge formulas can be used as a diagnostic check for the direct tying rows:
|
|
|
|
```text
|
|
eps_13^A ~ 1/8 * [
|
|
(u1 - u2) dot 0.5 * (t1 Vn1 + t2 Vn2)
|
|
+ (X1 - X2) dot 0.5 * (t1 q1 + t2 q2)
|
|
]
|
|
|
|
eps_13^C ~ 1/8 * [
|
|
(u4 - u3) dot 0.5 * (t4 Vn4 + t3 Vn3)
|
|
+ (X4 - X3) dot 0.5 * (t4 q4 + t3 q3)
|
|
]
|
|
|
|
eps_23^B ~ 1/8 * [
|
|
(u1 - u4) dot 0.5 * (t1 Vn1 + t4 Vn4)
|
|
+ (X1 - X4) dot 0.5 * (t1 q1 + t4 q4)
|
|
]
|
|
|
|
eps_23^D ~ 1/8 * [
|
|
(u2 - u3) dot 0.5 * (t2 Vn2 + t3 Vn3)
|
|
+ (X2 - X3) dot 0.5 * (t2 q2 + t3 q3)
|
|
]
|
|
```
|
|
|
|
These compact formulas are not a license to skip the general direct-row evaluation. They are a sign/orientation cross-check derived from the same midside strain definitions.
|
|
|
|
## Local Cartesian Frame and Material Law
|
|
The constitutive law is defined in a local orthonormal Cartesian frame at each integration point with `sigma_33 = 0`.
|
|
|
|
Build the integration-point local basis from the covariant basis:
|
|
|
|
```text
|
|
e3_hat = normalize(g_3)
|
|
e1_hat = normalize(g_2 x e3_hat)
|
|
e2_hat = e3_hat x e1_hat
|
|
```
|
|
|
|
If `g_2 x e3_hat` is near zero, use a deterministic fallback that still creates a right-handed orthonormal basis and emits a diagnostic if no valid basis exists.
|
|
|
|
For isotropic linear elasticity, use the local plane-stress shell material matrix with transverse shear correction `kappa = 5/6`:
|
|
|
|
```text
|
|
D_hat = E / (1 - nu^2) *
|
|
[ 1 nu 0 0 0 0
|
|
nu 1 0 0 0 0
|
|
0 0 0 0 0 0
|
|
0 0 0 kappa*(1-nu)/2 0 0
|
|
0 0 0 0 kappa*(1-nu)/2 0
|
|
0 0 0 0 0 (1-nu)/2 ]
|
|
```
|
|
|
|
This matrix uses the documented strain order:
|
|
|
|
```text
|
|
[ eps_11, eps_22, eps_33, gamma_23, gamma_13, gamma_12 ]^T
|
|
```
|
|
|
|
For a general non-flat element, transform the local Cartesian material relation to the convected coordinate strain vector:
|
|
|
|
```text
|
|
E_hat = T_xi_to_x E_convected
|
|
D_convected = T_xi_to_x^T D_hat T_xi_to_x
|
|
```
|
|
|
|
The transformation matrix must be constructed from direction cosines between the local orthonormal basis and contravariant/covariant convected bases. For Phase 1, a flat-element implementation may compute the B-matrix directly in the local Cartesian frame only if tests prove it is equivalent to the convected formulation for the accepted reference cases.
|
|
|
|
## Element Stiffness and Numerical Integration
|
|
The baseline stiffness is:
|
|
|
|
```text
|
|
K_e = integral_V B^T D B dV
|
|
```
|
|
|
|
Phase 1 baseline integration:
|
|
|
|
- Use `2 x 2 x 2` Gauss integration in `(xi, eta, zeta)` for the first rebuilt MITC4 implementation.
|
|
- This follows the thesis derivation's `2 x 2 x 2` natural-coordinate integration and the Dvorkin-Bathe elastic recommendation of `2 x 2` in the midsurface with two through-thickness points.
|
|
- Do not introduce reduced integration or hourglass control.
|
|
- Analytic through-thickness integration may be introduced later only after equivalence tests preserve the MITC shear, drilling, and reference displacement behavior.
|
|
|
|
At every integration point:
|
|
|
|
1. Compute `g_i`, the metric/Jacobian, local Cartesian basis, and material transform.
|
|
2. Build direct membrane/bending strain rows.
|
|
3. Replace transverse shear rows with MITC interpolated rows.
|
|
4. Accumulate `B^T D B |J| w_xi w_eta w_zeta`.
|
|
|
|
Detect near-zero Jacobian, invalid basis, missing property/material, or non-positive thickness as invalid/singular element diagnostics. Do not report these as mesh quality diagnostics in Phase 1.
|
|
|
|
## Drilling DOF Stabilization
|
|
The continuum MITC4 formulation has five physical DOFs per node. FESA keeps six global DOFs, so the local drilling rotation `gamma` has no physical strain contribution and must be weakly stabilized.
|
|
|
|
Baseline decision:
|
|
|
|
```text
|
|
drilling_stiffness_scale = 1.0e-3
|
|
k_ref = min_positive_diagonal(K_local_without_drilling)
|
|
k_drill = drilling_stiffness_scale * k_ref
|
|
```
|
|
|
|
Rules:
|
|
|
|
- `K_local_without_drilling` is the element local stiffness after MITC integration and before artificial drilling stabilization.
|
|
- Use the minimum positive diagonal entry over the physical local DOFs. Ignore zero, negative, NaN, or non-finite entries.
|
|
- Add `k_drill` to each nodal local `gamma` diagonal before transforming to global coordinates.
|
|
- If no positive reference diagonal exists, emit a singular/invalid element diagnostic.
|
|
- The scale must be configurable and written to result metadata or analysis diagnostics.
|
|
- Reference comparisons must include a drilling sensitivity check if displacement results change materially with the scale.
|
|
|
|
This replaces the earlier arbitrary `1.0e-6 * E * thickness` rule. The `1.0e-3` scale follows the local thesis derivation's six-DOF stabilization note and is still an artificial numerical parameter, not a physical stiffness.
|
|
|
|
## Internal Force and Reaction Recovery
|
|
For Phase 1 linear static analysis:
|
|
|
|
```text
|
|
f_int_e = K_e u_e
|
|
R_full = K_full U_full - F_full
|
|
```
|
|
|
|
Rules:
|
|
|
|
- Reactions must be recovered from the full global vector, not only from the reduced free-DOF system.
|
|
- `RF` output follows the Abaqus-style component convention documented in `docs/NUMERICAL_CONVENTIONS.md`.
|
|
- Element stress/strain/resultant outputs are not mandatory until displacement and reaction reference behavior is stable.
|
|
|
|
## Required Tests Before Reimplementation
|
|
The rebuilt MITC4 element must be protected by tests before implementation code is accepted.
|
|
|
|
Element-level tests:
|
|
|
|
- Shape functions sum to one and have correct derivatives at center, corners, and tying points.
|
|
- Center normal, local director axes, and integration local Cartesian axes are orthonormal and right-handed.
|
|
- The local-to-global rotation transform maps global rotations to `alpha`, `beta`, `gamma` as documented.
|
|
- Direct tying rows at `A`, `B`, `C`, `D` agree with finite-difference strain perturbations.
|
|
- MITC shear rows at Gauss points are interpolated from tying rows, not evaluated directly at the Gauss points.
|
|
- Stiffness is symmetric for linear elastic Phase 1.
|
|
- Rigid-body translations and rotations produce near-zero physical strain energy, with only documented drilling stabilization effects.
|
|
- The element has no spurious zero-energy modes beyond expected rigid-body behavior after drilling stabilization is accounted for.
|
|
|
|
Patch and benchmark tests:
|
|
|
|
- Constant membrane states.
|
|
- Pure bending.
|
|
- Pure shear.
|
|
- Pure twist.
|
|
- Thin cantilever or plate strip to expose shear locking.
|
|
- Scordelis-Lo roof after the basic flat tests pass.
|
|
- Pinched cylinder or twisted beam as later Phase 1/Phase 2 benchmark expansion.
|
|
|
|
Reference regression tests:
|
|
|
|
- Compare FESA `U` against stored Abaqus displacement CSV files using absolute and relative tolerances.
|
|
- Keep `RF` verified by full-vector equilibrium until matching Abaqus reaction CSV files are provided or explicitly deferred.
|
|
|
|
## Current Reference Artifacts
|
|
Stored artifacts currently known:
|
|
|
|
- `references/quad_01.inp`
|
|
- `references/quad_01_displacements.csv`
|
|
- `references/quad_02.inp`
|
|
- `references/quad_02_displacements.csv`
|
|
|
|
Compatibility notes:
|
|
|
|
- `quad_01.inp` contains `S4R`, `Part/Assembly/Instance`, `*Density`, and `NLGEOM=YES`; it remains future compatibility provenance, not a Phase 1 parser acceptance case.
|
|
- `quad_02.inp` contains `TYPE=S4`, which is the correct element target for Phase 1, but it also uses `Part/Assembly/Instance`. The next Phase 1 planning pass must either normalize this input into the Phase 1 flat keyword subset or explicitly add a parser sprint for this Abaqus/CAE structure. Do not silently expand parser support while implementing the element.
|
|
|
|
## Implementation Checklist
|
|
The next MITC4 implementation pass should proceed in this order:
|
|
|
|
1. Lock the shape-function, natural-coordinate, node-order, and tying-point tests.
|
|
2. Implement geometry/director/local-axis construction with diagnostics.
|
|
3. Implement the five-DOF degenerated-continuum displacement interpolation.
|
|
4. Implement global six-DOF to local `[alpha, beta, gamma]` transformation.
|
|
5. Implement direct covariant strain rows and finite-difference tests.
|
|
6. Replace transverse shear rows with MITC tying interpolation.
|
|
7. Implement material transform and `2 x 2 x 2` stiffness integration.
|
|
8. Add drilling stabilization in local coordinates.
|
|
9. Transform element stiffness and internal force to global coordinates.
|
|
10. Run element patch tests before assembly/reference regression work.
|
|
|
|
## Future Extensions
|
|
Geometric nonlinearity:
|
|
|
|
- Update current geometry and nodal directors in `AnalysisState`.
|
|
- Add finite-rotation updates for `V1`, `V2`, and `Vn`.
|
|
- Add tangent stiffness, geometric stiffness, and Newton-Raphson convergence checks.
|
|
|
|
Thermal-stress coupling:
|
|
|
|
- Add temperature field state and thermal strain contribution.
|
|
- Add material expansion data and thermal output fields.
|
|
|
|
S4R:
|
|
|
|
- Add only after a separate ADR and formulation update.
|
|
- Requires reduced integration, hourglass control, and separate reference artifacts.
|
|
|
|
Stress/resultant output:
|
|
|
|
- Define section point locations, component labels, local coordinate convention, and Abaqus CSV comparison format before making `S`, `E`, or `SF` mandatory.
|
|
|
|
## Remaining Open Decisions
|
|
The MITC4 stiffness formulation is now defined for the Phase 1 rebuild. Remaining decisions are outside the first stiffness pass:
|
|
|
|
- Exact stress/strain/resultant recovery locations and component labels.
|
|
- Whether to parse Abaqus `*Orientation` or nodal shell normals.
|
|
- Whether `quad_02.inp` should be normalized into the existing Phase 1 parser subset or used to justify a dedicated `Part/Assembly/Instance` parser sprint.
|
|
- Reference tolerances for `quad_02` after the input compatibility path is chosen.
|