Skip to content

mm_domain check contained points#317

Draft
talledodiego wants to merge 1 commit intodevfrom
feat/check_combos_strength_domain
Draft

mm_domain check contained points#317
talledodiego wants to merge 1 commit intodevfrom
feat/check_combos_strength_domain

Conversation

@talledodiego
Copy link
Collaborator

@talledodiego talledodiego commented Feb 21, 2026

This PR add methods to results objects to check if points (from load combinations) are contained within the strength domain.

  • MM Interaction domain
  • NM interaction domain
  • 3D NMM interaction domain

The first case is the easiest: we have a given N, we compute the domain (that is a slice in the NMM with a plane orthogonal to N axis).
The second case seems easy. Actually it is trivial for the theta = 0, so with uniaxial bending about y axes (i.e. a longitudinal section of the 3d NMM domain). But in general when theta is different than 0 the plane figure is not longitudinal anymore so we have triplet of points N, My, Mz for defining the plane figure domain.

MM Interaction domain

The method contains has been included into the MM result object. This permit to do in efficient and fast way checks for one or a array of points with coordinates My, Mz.

Example:

contained = res.contains(My, Mz)

# Do the plot
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(res.m_y * 1e-6, res.m_z * 1e-6, "-o", markersize=3)
ax.set_xlabel(r"$M_y$ [kNm]")
ax.set_ylabel(r"$M_z$ [kNm]")
ax.axhline(0, color="k", linestyle="-", lw=0.75)
ax.axvline(0, color="k", linestyle="-", lw=0.75)
ax.scatter(My[contained]*1e-6, Mz[contained]*1e-6, color="g", marker="o", label="Inside point")
ax.scatter(My[~contained]*1e-6, Mz[~contained]*1e-6, color="r", marker="x", label="Outside point")

fig.tight_layout()

This for instance gives:
image

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