Skip to content

CONM2: correct mass matrix with offsets and products of inertia; accept CID = -1 - #314

Open
Valladarex wants to merge 2 commits into
MystranSolver:devfrom
Valladarex:pr/conm2-v2
Open

Valladarex wants to merge 2 commits into
MystranSolver:devfrom
Valladarex:pr/conm2-v2

Conversation

@Valladarex

Copy link
Copy Markdown

Fixes #ISSUE (fill in the issue number after you open the issue).

Two commits, one per problem. Only Source/LK1/L1C/CONM2_PROCESSING.f03 and Source/LK1/L1C/GRID_POINT_WEIGHT.f03 change.

  1. CONM2: products of inertia and offsets give the right mass matrix.
    • RCONM2 holds I21, I31, I32 as products of inertia, as on the entry. They are now moved to the grid with the products' parallel-axis rule.
    • They are converted to the tensor before and after each rotation (POI_TO_TENSOR), in CONM2_PROC_1 and CONM2_PROC_2.
    • The weight generator now adds them with the products' sign.
  2. CONM2 with CID = -1: the c.g. coordinates and the inertias are in basic.
    • The offset is the c.g. minus the grid position, and the inertias are used as given.

Tests: MYSTRAN_Validation MystranSolver/MYSTRAN_Validation#33, three decks in cases_new.txt:

  • conm2_offset_eigen.bdf: offset (-3, 0, -2), inertias 1, 1, 1.
  • conm2_cid_products_eigen.bdf: offset and products of inertia in a rotated CID, on a grid with rotated CP and CD.
  • conm2_cidm1_eigen.bdf: the same mass entered with CID = -1.

How the tests check it:

  • In each deck the CONM2 sits on one grid, held by six springs (k = 1000 ... 6000) to a fixed grid.
  • The six eigenvalues are checked to 1e-4% against the exact ones from M = m T'T + J, rotated to the grid's CD.
  • On dev, the first two stop with ERROR 989 (MLL not positive definite), and the third with ERROR 1822.
  • With commit 1 the first two pass. With commit 2 the third passes too.

Validation suite, with both PRs: 1 failure of 3,273 checks, the same one current dev has without them ("mitc4 thermal strain free rectangle cylinder": stresses near zero in a strain-free thermal case, about 5e-3 against a 1e-2 tolerance on 4 of 18,336 values). The 18 new checks pass.

RCONM2 holds I21, I31, I32 as on the CONM2 entry: products of inertia,
whose negatives are the inertia tensor terms, as the mass assembly uses
them. Three places treated them as tensor terms instead:

- CONM2_PROC_2 moved them from the c.g. to the grid with -m*dx*dy (the
  tensor rule). An offset with two nonzero components then gave a mass
  matrix with the wrong sign on that product. It is indefinite: offset
  (-3, 0, -2) on mass 10 gives eigenvalue -29.2.
- CONM2_PROC_1 (CID to basic) and CONM2_PROC_2 (basic to the grid's CD)
  rotated the matrix of products. Only the tensor rotates that way: it is
  now converted before and after each rotation (POI_TO_TENSOR).
- The grid point weight generator added the products with the tensor sign.

Tests (MYSTRAN_Validation): conm2_offset_eigen.bdf and
conm2_cid_products_eigen.bdf hold the CONM2 on six springs; their six
eigenvalues are checked against the exact ones from the rigid-mass matrix.
Before the fix both stop with ERROR 989 (MLL not positive definite).
CONM2_PROC_1 looked CID = -1 up as a coordinate system and stopped with
ERROR 1822. With CID = -1, X1-X3 are the c.g. location in basic and the
inertias are in basic, so the offset is the c.g. minus the grid position
and the inertias are used as given.

Test (MYSTRAN_Validation): conm2_cidm1_eigen.bdf, the mass of
conm2_cid_products_eigen.bdf entered with CID = -1; its eigenvalues must
be the same. Before the fix it stops with ERROR 1822.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant