Skip to content

RBE3: judge the rank of the retained REFC system with a relative tolerance - #340

Open
Valladarex wants to merge 1 commit into
MystranSolver:devfrom
Valladarex:pr/rbe3-rank
Open

Valladarex wants to merge 1 commit into
MystranSolver:devfrom
Valladarex:pr/rbe3-rank

Conversation

@Valladarex

Copy link
Copy Markdown

Fixes #339.

One commit, in Source/LK1/L1D/RIGID_ELEMENT_PROCESSING.f03.

  • The change: the final rank check of the retained REFC system uses RANK_RCOND = 1.0E-10 instead of machine precision. The elimination of the discarded components keeps EPS1.

Behaviour change, stated plainly: some models that ran on dev now stop.

  • They are only those with an RBE3 whose reference grid is not determined by its weighting grids. On dev such an RBE3 was rejected or accepted depending on its orientation, and when accepted it gave an arbitrary reference-grid motion.
  • Now it is rejected (ERROR 1957) in every orientation.
  • Well-posed RBE3s are accepted in every orientation, as before: the reference grid on the line with REFC 123, or three non-collinear weighting grids with REFC 123456.

Test: MYSTRAN_Validation MystranSolver/MYSTRAN_Validation#46, rbe3_rank_singular_orient2.bdf: the undetermined element in an orientation dev accepts.

  • The run must stop and write no displacements.
  • On dev it solves. With this PR it stops with ERROR 1957.

Also checked on this commit alone:

  • all 24 orientations of the undetermined element are rejected (dev: 10 of 24);
  • the 24 orientations of the two well-posed elements run with no RBE3 error, as on dev;
  • the suite's existing RBE3 cases are unchanged (see below).

Validation suite: with both PRs, 1 failure of 3,256 checks, the same one current dev has without them ("mitc4 thermal strain free rectangle cylinder"). Every existing RBE3 case passes, and the new check passes.

…rance

RBE3_PROC (RIGID_ELEMENT_PROCESSING) checked the reduced system of the retained REFC components with DGELSY at
RCOND = EPS1 (machine precision). A system that is singular in exact arithmetic comes out with sigma_min/sigma_max
of 1e-16 to 1e-12 from round-off, so identical elements were accepted or rejected (ERROR 1957) depending on their
orientation. Example: two weighting grids with 123, REFC 123, the reference grid off the line through them: rotation
about that line is not determined by the weighting grids, so the reference grid's motion is not either. Of 24
orientations of that element, current dev rejects 10 and solves 14 with an arbitrary reference-grid motion.

The final rank check now uses RANK_RCOND = 1.0E-10; the elimination of the discarded components keeps EPS1. Such
an element is now rejected (ERROR 1957) in every orientation. Well-posed RBE3s (the reference grid on the line with
REFC 123, or three non-collinear weighting grids with REFC 123456) are accepted in every orientation, as before.

Test (MYSTRAN_Validation): rbe3_rank_singular_orient2.bdf, that element in an orientation current dev accepts: the
run must stop and write no displacements.
@victorkemp

Copy link
Copy Markdown
Collaborator

Looks like this just loosens the tolerance. Wouldn't that move the threshold for orientation dependent failure somewhere else? Or is the point of it that the tolerance was too tight before and allowing bad RBE3s to solve?

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.

2 participants