CiSMA Β· BTH Yield Surface Explorer
Vegter 2017 vs BBC-05 β€” interactive parameter playground
v0.1.0 Β· preview
AGENT CONTRIBUTIONS
πŸ“₯ Download contribution sheet (PDF) View HTML Aggregated from each specialist's contributions/<agent>.json
GUIDE

Quickstart

Get a comparison plot in under a minute:

  1. Open the app root (/). The main page loads with default parameters for both criteria (mild steel AA6014-T4 proxy).
  2. The left panel contains Vegter 2017 sliders (Οƒun, Οƒps, Οƒsh, Οƒeb, rβ‚€, rβ‚„β‚…, r₉₀).
  3. The right panel contains BBC-05 sliders (a, b, L, M, N, P, Q, R, k, Οƒy).
  4. Move any slider β€” the plot iframe updates automatically via a postMessage call to /api/yield-surface.
  5. Check the CONVEX / NON-CONVEX ⚠ badge under each criterion name. A non-convex locus cannot be used as an FE material card.
  6. The Vegter plot also shows the four anchor points (uniaxial, plane-strain, equibiaxial, shear) as scatter markers.
  7. To reset, reload the page β€” all sliders return to defaults.
  8. Visit /manual for full parameter documentation.
GUIDE

How the app works β€” data and request pipeline

Each slider interaction triggers a chain from browser to constitutive math and back to the plot iframe:


%%{init: {
  "theme": "base",
  "themeVariables": {
    "fontFamily": "IBM Plex Sans, system-ui, sans-serif",
    "fontSize": "13px",
    "background": "#fbfaf6",
    "primaryColor": "#fbfaf6",
    "primaryTextColor": "#1d2330",
    "primaryBorderColor": "#c8c1ad",
    "lineColor": "#3a414f",
    "secondaryColor": "#f5f1e8",
    "tertiaryColor": "#fbfaf6",
    "noteBkgColor": "#f5f1e8",
    "noteTextColor": "#1d2330",
    "noteBorderColor": "#c2613a",
    "activationBkgColor": "#c2613a",
    "altBackground": "#f5f1e8"
  }
}}%%
flowchart LR
  A[Browser slider input] -->|postMessage params| B[index.html JS]
  B -->|GET /api/yield-surface?...| C[FastAPI route]
  C -->|vegter2017_locus| D[app.math β€” Vegter 2017]
  C -->|bbc2005_locus| E[app.math β€” BBC-05]
  D -->|normalised s1 s2 + convex flag| F[JSON response]
  E -->|normalised s1 s2 + convex flag| F
  F -->|postMessage locus arrays| G[iplot_comparison iframe]
  G -->|Plotly.restyle| H[Comparison plot SVG]

Normalisation: Vegter locus points are divided by Οƒun; BBC-05 points by Οƒy. Both curves therefore sit in dimensionless stress space anchored near (1, 0) for direct shape comparison regardless of absolute yield stress.

Error handling: if the math module raises CalibrationError or QualityGateError the API returns an empty locus array and the convexity badge turns red β€” the plot clears that criterion without crashing.

Cites: [1], [2]
GUIDE

Interpreting the comparison plot

The plot shows normalised plane-stress yield loci in the (σ₁/Οƒref, Οƒβ‚‚/Οƒref) space:

  • Blue curve β€” Vegter 2017 locus, normalised by Οƒun.
  • Orange curve β€” BBC-05 locus, normalised by Οƒy.
  • Scatter markers β€” Vegter anchor points (uniaxial RD, plane-strain, equibiaxial, shear). They indicate where physical test data constrains the Vegter curve.
  • Convexity badge β€” green CONVEX or red NON-CONVEX. The associated flow rule is only well-defined for convex loci. A non-convex set of sliders produces a physically meaningless curve.

Shape comparisons to watch:

  • Flat plane-strain shoulder (high Οƒps/Οƒun) β†’ increased plane-strain forming force β€” relevant to deep drawing.
  • Equibiaxial bulge in the 1st quadrant (Οƒeb ≫ Οƒun) β†’ FCC aluminium-like locus; equibiaxial yield is harder than uniaxial.
  • High BBC-05 k β†’ sharper corners at uniaxial and equibiaxial points (risk of convexity loss).
Cites: [1], [2], [4]
GUIDE

Worked examples

Example 1 β€” Mild steel (DC04 proxy)

A typical low-carbon steel has rβ‚€ β‰ˆ 1.8, rβ‚„β‚… β‰ˆ 1.0, r₉₀ β‰ˆ 2.2 and equibiaxial stress close to uniaxial. Set:

  • Οƒun = 170 MPa, Οƒps = 200 MPa, Οƒsh = 100 MPa, Οƒeb = 175 MPa
  • rβ‚€ = 1.8, rβ‚„β‚… = 1.0, r₉₀ = 2.2

Expected: a rounded locus with a noticeable shoulder near the plane-strain point. The badge should read CONVEX.

Example 2 β€” Aluminium AA6016 proxy

FCC aluminium has lower r-values and equibiaxial stress slightly above uniaxial. Set BBC-05 with k = 4 (FCC). Default coefficients (a = 0.89, b = 0.92, …) are tuned for an aluminium-like response. Compare to Vegter with Οƒeb/Οƒun β‰ˆ 1.05.

Example 3 β€” Convexity stress-test for BBC-05

Push k = 4 and set N = 2.5. The locus develops very sharp corners; the convexity badge turns NON-CONVEX once the cross-product check (Pilthammar 2020 Β§3) detects a sign reversal. Reduce N or switch to k = 3 to restore convexity.

Cites: [1], [2], [3]
FEATURE

Route: GET / β€” main comparison page

The root route renders webapp/templates/index.html via Jinja2. It serves:

  • Two slider panels (Vegter left, BBC-05 right).
  • A centred Plotly iframe (/plot/comparison) that listens for postMessage events from the parent.
  • Convexity badges updated client-side on each API response.

No authentication required. The page is stateless β€” slider state lives in the DOM only; refreshing resets everything to defaults.

FEATURE

Route: GET /api/yield-surface β€” JSON locus endpoint

Accepts 17 query parameters (7 Vegter + 10 BBC-05) and returns a JSON object with both normalised loci and anchor points:

{
  "vegter": { "s1": [...], "s2": [...], "convex": true, "error": null },
  "bbc05":  { "s1": [...], "s2": [...], "convex": true, "error": null },
  "vegter_anchors": {
    "uniaxial_RD": [1.0, 0.0],
    "plane_strain": [1.2, 0.6],
    "equibiaxial":  [1.05, 1.05],
    "shear":        [-0.6, 0.6]
  }
}

All s1/s2 values are dimensionless (normalised by the respective reference yield stress). On math failure the locus arrays are empty and convex is false.

Cites: [1], [2]
FEATURE

Route: GET /plot/comparison β€” axes-only plot iframe

Renders the axes-only Plotly iframe template (webapp/templates/iplot_comparison.html). The iframe listens for window.addEventListener('message', …) events from the parent and calls Plotly.restyle to update both traces without a full page reload.

The Plotly chart is configured with displayModeBar: false and hovermode: false for a clean engineering-drawing aesthetic β€” controls live outside the iframe, not inside it.

FEATURE

Route: GET /manual β€” this documentation page

Renders all MANUAL_ENTRIES from app/manual_content.py as a scrollable list of panels, with KaTeX math rendered client-side and inline citation superscripts linking to the collapsible reference list at the bottom.

A contributions sheet (/manual/contributions) aggregates the per-agent contributions/*.json files and is downloadable as PDF via /manual/contributions.pdf (headless Chromium).

QUANTITY

Vegter 2017 β€” input parameters

The Vegter locus is anchored on four stress states and three r-values from standard sheet metal tests (Vegter & van den Boogaard 2006, pp. 558–560):

ParameterUnitRange (app)DefaultPhysical meaning
ΟƒunMPa50–2000200Uniaxial yield stress in RD (normalisation reference). Must be > 0.
ΟƒpsMPa50–2500240Plane-strain yield stress in RD (Ξ΅β‚‚ = 0 constraint). Von Mises baseline: $\sigma_{ps} = \frac{2}{\sqrt{3}}\sigma_{un} \approx 1.155\,\sigma_{un}$.
ΟƒshMPa30–1200120Pure-shear yield stress. Von Mises baseline: $\sigma_{sh} = \sigma_{un}/\sqrt{3} \approx 0.577\,\sigma_{un}$.
ΟƒebMPa50–2000210Equibiaxial yield stress from ISO 16808 hydraulic bulge test.
rβ‚€β€”0.30–3.000.80Lankford r-value at 0Β° (RD). Plastic width-to-thickness strain ratio per ISO 10113.
rβ‚„β‚…β€”0.30–3.001.20Lankford r-value at 45Β°. Sets hinge bias in the off-axis quadrant.
r₉₀—0.30–3.001.00Lankford r-value at 90Β° (TD). Mirrors rβ‚€ role for TD uniaxial.
Cites: [1], [5], [6]
QUANTITY

BBC-05 β€” input parameters

BBC-05 uses eight anisotropy coefficients plus an integer exponent k (Banabic et al. 2005, eq. 5, p. 497):

ParameterUnitRangeDefaultRole
aβ€”0.10–3.000.890Weight on Γ±Λ terms; must be > 0 (eq. 8).
bβ€”0.10–3.000.920Weight on 2Ξ¨ term; must be > 0 (eq. 8).
L, Mβ€”0.10–3.001.080, 0.800Coefficients of first linear transformation: Ξ“ = LΟƒxx + MΟƒyy.
N, Pβ€”0.10–3.001.150, 1.050Coefficients computing Ξ› = √[(NΟƒxx βˆ’ PΟƒyy)Β² + ΟƒxyΒ²].
Q, Rβ€”0.10–3.000.920, 1.000Coefficients computing Ξ¨ = √[(QΟƒxx βˆ’ RΟƒyy)Β² + ΟƒxyΒ²].
kinteger3 or 43Crystal-structure exponent: 3 for BCC (steel), 4 for FCC (aluminium). Higher k β†’ sharper locus corners (Pilthammar 2020 Β§2).
ΟƒyMPa50–2000200Reference uniaxial yield stress used for normalisation of the output locus.
Cites: [2], [3]
QUANTITY

Locus normalisation for visual comparison

The two criteria use different absolute yield stresses, so raw MPa values are not directly comparable. The API normalises each locus before returning it:

  • Vegter 2017: every (Οƒxx, Οƒyy) point is divided by Οƒun. The uniaxial RD anchor sits at (1, 0) by construction.
  • BBC-05: every point is divided by Οƒy. The uniaxial RD yield point is therefore also near (1, 0).

With both loci anchored at the same dimensionless point, the plot shows pure shape differences β€” how the two criteria predict anisotropy at plane-strain, equibiaxial, and shear stress states.

Cites: [1], [2]
QUANTITY

Vegter v0.1 lower-half drift

The Vegter 2017 implementation in this v0.1 release covers the upper half of the yield locus (anchors a₁–aβ‚…: uniaxial RD, plane-strain RD, equibiaxial, plane-strain TD, uniaxial TD) with full-fidelity BΓ©zier arcs. The lower half (compression quadrants, anchors a₆–aβ‚ˆ) uses a sparse 3-anchor sketch that drifts up to ~42% from the von Mises reference in the isotropic limit (r = 1, all anchor stresses equal).

Practical implication. For tension-dominated forming (deep drawing, stretch forming, bending under tension) the upper-half locus is what governs the result and v0.1 is faithful. For compression-dominated paths (springback after unloading, reverse loading) prefer the BBC-2005 panel β€” it has a continuous analytic locus across all four quadrants.

v0.2 will mirror anchors a₂–aβ‚„ into the lower half (8 new anchors total) and re-route the BΓ©zier walker to 16 arcs. Tracked in docs/v0_2_backlog.md.

See also: Vegter 2017 yield criterion β€” BΓ©zier interpolation and BBC-05 yield criterion β€” two linear transformations.

Cites: [1]
METHOD

Vegter 2017 yield criterion β€” BΓ©zier interpolation

Vegter & van den Boogaard (2006) represent the plane-stress yield locus as a C0-continuous chain of quadratic BΓ©zier arcs between eight reference (anchor) points in the (Οƒxx, Οƒyy) plane (eq. 4, p. 560):

$$\mathbf{r}(t) = (1-t)^2\,\mathbf{p}_0 + 2(1-t)t\,\mathbf{p}_1 + t^2\,\mathbf{p}_2, \quad t \in [0,1]$$

The four physical anchor points per half-locus are:

  • A₁ uniaxial RD: $(\sigma_{un},\,0)$
  • Aβ‚‚ plane-strain: $(\sigma_{ps},\,\sigma_{ps}/2)$
  • A₃ equibiaxial: $(\sigma_{eb},\,\sigma_{eb})$
  • Aβ‚„ plane-strain TD / Aβ‚… uniaxial TD: mirror by symmetry

The hinge point p₁ between two anchors is the intersection of the locus tangent lines at the endpoints (eq. 6, p. 561). Tangent directions are taken from the von Mises gradient and then rotated by an r-value–dependent angle:

$$\delta\theta = \arctan\!\left(\frac{r - 1}{r + 1}\right)$$

This rotation biases the BΓ©zier arc toward the anchor whose r-value is being honoured: r = 1 (isotropic) gives zero rotation and recovers the von Mises ellipse; r > 1 widens the arc; r < 1 narrows it.

Convexity gate: the signed cross product of consecutive chord vectors must not change sign around the full locus. A sign change triggers QualityGateError('Vegter locus is non-convex').

Cites: [1]
METHOD

BBC-05 yield criterion β€” two linear transformations

Banabic et al. (2005) define the BBC-05 effective stress via two linear transformations of the Cauchy stress (eq. 5, p. 497):

$$\Gamma = L\,\sigma_{xx} + M\,\sigma_{yy}$$

$$\Lambda = \sqrt{(N\sigma_{xx} - P\sigma_{yy})^2 + \sigma_{xy}^2}$$

$$\Psi = \sqrt{(Q\sigma_{xx} - R\sigma_{yy})^2 + \sigma_{xy}^2}$$

$$\bar{\sigma} = \left[ a(\Gamma+\Lambda)^{2k} + a(\Gamma-\Lambda)^{2k} + b(2\Psi)^{2k} \right]^{1/(2k)}$$

where $k \in \{3, 4\}$ (BCC / FCC) and $a, b > 0$ (positivity constraint, eq. 8). The yield locus is the level set $\bar{\sigma}(\sigma_{xx}, \sigma_{yy}, 0) = \bar{\sigma}(\sigma_y, 0, 0)$, traced by bisection along 360 radial directions.

Calibration note (Pilthammar 2020): non-integer k and high N values can produce non-convex loci that fail the cross-product gate. The app enforces k ∈ {3, 4} and raises CalibrationError on illegal values.

Cites: [2], [3], [4]
METHOD

Convexity verification β€” cross-product chord test

Drucker's postulate requires a convex yield surface for the associated flow rule to yield unique plastic strain increments (Banabic 2010, Β§4). The app tests convexity by checking the sign of the cross product of consecutive chord vectors:

$$z_i = (\mathbf{p}_{i+1} - \mathbf{p}_i) \times (\mathbf{p}_{i+2} - \mathbf{p}_{i+1})$$

For a counter-clockwise locus, all $z_i$ must be $\geq -\epsilon$ (convex) or all $\leq +\epsilon$ (convex in the other orientation). A mixed-sign result means the locus has a concave region and triggers QualityGateError.

Pilthammar (2020) Β§3 documents that BBC-05 with large N or high k can develop concavity near the equibiaxial point. Reduce N or switch k = 3 β†’ k = 4 to recover convexity for those parameter sets.

Cites: [4], [3]
REFERENCES (6) β€” click to expand
  1. Vegter, H. and van den Boogaard, A. H. (2006). A plane stress yield function for anisotropic sheet material by interpolation of biaxial stress states. International Journal of Plasticity, vol. 22, no. 3, pp. 557–580. doi:10.1016/j.ijplas.2005.04.009
    Primary reference for the Vegter locus. Eqs. (4)–(11) implement the quadratic BΓ©zier arc framework; eq. (6) places hinge points via r-value compatibility.
  2. Banabic, D., Aretz, H., Comsa, D. S., and Paraianu, L. (2005). An improved analytical description of orthotropy in metallic sheets. International Journal of Plasticity, vol. 21, no. 3, pp. 493–512. doi:10.1016/j.ijplas.2004.04.003
    BBC-05 definition paper. Eq. (5) p. 497 β€” effective-stress formula; eq. (8) β€” positivity constraints on a, b; k=3 BCC / k=4 FCC rule established here.
  3. Pilthammar, J., Banabic, D., and Sigvant, M. (2020). BBC05 with non-integer exponent and ambiguities in Nakajima yield surface calibration. International Journal of Material Forming, vol. 13, no. 6, pp. 903–919. doi:10.1007/s12289-020-01525-4
    Documents pitfalls in BBC-05 parameter fitting (non-integer k, convexity loss at high exponent); used in the convexity-check entry.
  4. Banabic, D. (2010). Sheet Metal Forming Processes: Constitutive Modelling and Numerical Simulation. Springer, Berlin. doi:10.1007/978-3-540-88113-1
    Textbook covering yield criterion families and convexity requirements (Β§4); background for both Vegter and BBC-05.
  5. ISO (2014). Metallic materials β€” Determination of biaxial stress-strain curve by means of bulge test with optical measuring systems. ISO 16808:2014.
    Governs measurement of Οƒ_eb (equibiaxial anchor) used as the Vegter A3 anchor point.
  6. ISO (2020). Metallic materials β€” Sheet and strip β€” Determination of plastic strain ratio. ISO 10113:2020.
    r-value measurement standard; rβ‚€, rβ‚„β‚…, r₉₀ are the direct inputs that set the Vegter BΓ©zier hinge positions.