@geotechcli/core 0.4.105 → 0.4.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/fem/demo.d.ts +2 -0
  2. package/dist/fem/demo.d.ts.map +1 -1
  3. package/dist/fem/demo.js +414 -0
  4. package/dist/fem/demo.js.map +1 -1
  5. package/dist/fem/engineering-evidence.d.ts.map +1 -1
  6. package/dist/fem/engineering-evidence.js +9 -7
  7. package/dist/fem/engineering-evidence.js.map +1 -1
  8. package/dist/fem/index.d.ts +2 -2
  9. package/dist/fem/index.d.ts.map +1 -1
  10. package/dist/fem/index.js +1 -1
  11. package/dist/fem/index.js.map +1 -1
  12. package/dist/fem/nonlinear-column-solver.d.ts.map +1 -1
  13. package/dist/fem/nonlinear-column-solver.js +137 -6
  14. package/dist/fem/nonlinear-column-solver.js.map +1 -1
  15. package/dist/fem/plane-strain-assembly.d.ts +35 -0
  16. package/dist/fem/plane-strain-assembly.d.ts.map +1 -1
  17. package/dist/fem/plane-strain-assembly.js +110 -14
  18. package/dist/fem/plane-strain-assembly.js.map +1 -1
  19. package/dist/fem/production-readiness.d.ts.map +1 -1
  20. package/dist/fem/production-readiness.js +7 -6
  21. package/dist/fem/production-readiness.js.map +1 -1
  22. package/dist/fem/routing.d.ts +15 -0
  23. package/dist/fem/routing.d.ts.map +1 -1
  24. package/dist/fem/routing.js +147 -14
  25. package/dist/fem/routing.js.map +1 -1
  26. package/dist/fem/types.d.ts +98 -6
  27. package/dist/fem/types.d.ts.map +1 -1
  28. package/dist/fem/validation.d.ts.map +1 -1
  29. package/dist/fem/validation.js +438 -22
  30. package/dist/fem/validation.js.map +1 -1
  31. package/dist/ingest/job-store.js +1 -1
  32. package/dist/ingest/job-store.js.map +1 -1
  33. package/dist/meta/metadata.json +1 -1
  34. package/dist/verifier/findings.js +6 -7
  35. package/dist/verifier/findings.js.map +1 -1
  36. package/package.json +1 -1
@@ -87,6 +87,25 @@ export interface FemPlaneStrainDruckerPragerGaussPointResult extends FemPlaneStr
87
87
  equivalentPlasticStrain: number;
88
88
  state: 'elastic' | 'plastic';
89
89
  }
90
+ export type FemPlaneStrainDruckerPragerTerminationReason = 'converged' | 'max_iterations' | 'force_residual_exceeded' | 'yield_residual_exceeded';
91
+ export interface FemPlaneStrainDruckerPragerResidualHistoryEntry {
92
+ iteration: number;
93
+ maxFreeResidualKn: number;
94
+ residualNormRatio: number;
95
+ forceBalanceTolerance: number;
96
+ reactionBalanceRatio: number;
97
+ maxYieldResidualRatio: number;
98
+ yieldResidualTolerance: number;
99
+ converged: boolean;
100
+ }
101
+ export interface FemPlaneStrainDruckerPragerFailure {
102
+ step: number;
103
+ loadFactor: number;
104
+ terminationReason: FemPlaneStrainDruckerPragerTerminationReason;
105
+ residualNormRatio: number;
106
+ maxYieldResidualRatio: number;
107
+ message: string;
108
+ }
90
109
  export interface FemPlaneStrainDruckerPragerStepResult {
91
110
  step: number;
92
111
  loadFactor: number;
@@ -98,6 +117,8 @@ export interface FemPlaneStrainDruckerPragerStepResult {
98
117
  maxEquivalentPlasticStrain: number;
99
118
  plasticGaussPointCount: number;
100
119
  converged: boolean;
120
+ terminationReason: FemPlaneStrainDruckerPragerTerminationReason;
121
+ residualHistory: FemPlaneStrainDruckerPragerResidualHistoryEntry[];
101
122
  }
102
123
  export interface FemPlaneStrainDruckerPragerResult {
103
124
  schemaVersion: 'fem-plane-strain-drucker-prager-result.v1';
@@ -125,6 +146,8 @@ export interface FemPlaneStrainDruckerPragerResult {
125
146
  maxEquivalentPlasticStrain: number;
126
147
  plasticGaussPointCount: number;
127
148
  converged: boolean;
149
+ status: 'converged' | 'nonconverged';
150
+ failure?: FemPlaneStrainDruckerPragerFailure;
128
151
  policy: FemConvergencePolicy;
129
152
  limitations: string[];
130
153
  }
@@ -238,6 +261,7 @@ export interface FemPlaneStrainBiotStepResult {
238
261
  freePorePressureResidualL1M3PerS: number;
239
262
  massBalanceErrorRatio: number;
240
263
  pressureAudit: FemPlaneStrainBiotPressureAudit;
264
+ pressureDiagnostics: FemPlaneStrainBiotPressureDiagnostics;
241
265
  minPorePressureKpa: number;
242
266
  maxPorePressureKpa: number;
243
267
  maxVerticalSettlementM: number;
@@ -252,6 +276,8 @@ export interface FemPlaneStrainBiotNumericalContract {
252
276
  totalStressRelation: 'sigma_total_xx_yy = sigma_effective_xx_yy - alpha_B * p; shear unchanged';
253
277
  darcyFluxRelation: 'q = -k/gamma_water * grad(p)';
254
278
  storageConvention: 'specificStorage1PerM is head-based; pressure storage uses Ss / gamma_water';
279
+ transientStepPolicy: 'fixed backward-Euler grid requires minAcceptedSteps and bounded step-growth ratio';
280
+ maxTimeStepGrowthRatio: number;
255
281
  gammaWaterKpaPerM: number;
256
282
  }
257
283
  export interface FemPlaneStrainBiotPressureAudit {
@@ -263,6 +289,14 @@ export interface FemPlaneStrainBiotPressureAudit {
263
289
  couplingRateSumM3PerS: number;
264
290
  darcyFlowRateSumM3PerS: number;
265
291
  }
292
+ export interface FemPlaneStrainBiotPressureDiagnostics {
293
+ averagePorePressureKpa: number;
294
+ averageFreePorePressureKpa: number;
295
+ porePressureDissipationRatio: number;
296
+ maxPorePressureChangeKpa: number;
297
+ maxPorePressureChangeRateKpaPerS: number;
298
+ pressureOvershootKpa: number;
299
+ }
266
300
  export interface FemPlaneStrainBiotConsolidationResult {
267
301
  schemaVersion: 'fem-plane-strain-biot-consolidation-result.v1';
268
302
  method: 'quad4-plane-strain-biot-u-p-backward-euler-evidence';
@@ -295,6 +329,7 @@ export interface FemPlaneStrainBiotConsolidationResult {
295
329
  maxFreePorePressureResidualM3PerS: number;
296
330
  freePorePressureResidualL1M3PerS: number;
297
331
  pressureAudit: FemPlaneStrainBiotPressureAudit;
332
+ pressureDiagnostics: FemPlaneStrainBiotPressureDiagnostics;
298
333
  massBalanceErrorRatio: number;
299
334
  minPorePressureKpa: number;
300
335
  maxPorePressureKpa: number;
@@ -1 +1 @@
1
- {"version":3,"file":"plane-strain-assembly.d.ts","sourceRoot":"","sources":["../../src/fem/plane-strain-assembly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plane-strain-assembly.d.ts","sourceRoot":"","sources":["../../src/fem/plane-strain-assembly.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ const GAUSS_POINTS = [
6
6
  [-1 / Math.sqrt(3), 1 / Math.sqrt(3), 1],
7
7
  ];
8
8
  const MAX_DENSE_DOF_COUNT = 800;
9
+ const MAX_BIOT_TIME_STEP_GROWTH_RATIO = 8;
9
10
  function assertFinite(value, label) {
10
11
  if (!Number.isFinite(value))
11
12
  throw new Error(`${label} must be finite.`);
@@ -62,6 +63,26 @@ function validateConvergencePolicy(policy) {
62
63
  throw new Error('policy.minAcceptedSteps must be less than or equal to policy.maxIterations.');
63
64
  }
64
65
  }
66
+ function validateBiotTransientStepPolicy(timeStepsSeconds, policy) {
67
+ if (timeStepsSeconds.length < policy.minAcceptedSteps) {
68
+ throw new Error(`timeStepsSeconds must include at least ${policy.minAcceptedSteps} accepted transient steps for the Biot consolidation preview.`);
69
+ }
70
+ let previousTimeSeconds = 0;
71
+ let previousDeltaTimeSeconds;
72
+ for (const [index, timeSeconds] of timeStepsSeconds.entries()) {
73
+ assertFinitePositive(timeSeconds, `timeStepsSeconds.${index}`);
74
+ if (timeSeconds <= previousTimeSeconds) {
75
+ throw new Error(`timeStepsSeconds.${index} must be strictly increasing.`);
76
+ }
77
+ const deltaTimeSeconds = timeSeconds - previousTimeSeconds;
78
+ if (previousDeltaTimeSeconds != null &&
79
+ deltaTimeSeconds / previousDeltaTimeSeconds > MAX_BIOT_TIME_STEP_GROWTH_RATIO) {
80
+ throw new Error(`timeStepsSeconds.${index} step growth ratio must not exceed ${MAX_BIOT_TIME_STEP_GROWTH_RATIO} for the Biot consolidation preview.`);
81
+ }
82
+ previousTimeSeconds = timeSeconds;
83
+ previousDeltaTimeSeconds = deltaTimeSeconds;
84
+ }
85
+ }
65
86
  function round(value, digits = 10) {
66
87
  const factor = 10 ** digits;
67
88
  return Math.round(value * factor) / factor;
@@ -654,6 +675,7 @@ export function runPlaneStrainBiotConsolidation(model) {
654
675
  assertUniqueIds(model.elements, 'element');
655
676
  const policy = model.policy ?? DEFAULT_FEM_CONVERGENCE_POLICY;
656
677
  validateConvergencePolicy(policy);
678
+ validateBiotTransientStepPolicy(model.timeStepsSeconds, policy);
657
679
  const nodeIndexById = new Map(model.nodes.map((node, index) => [node.id, index]));
658
680
  const materialById = new Map(model.materials.map((material) => [material.id, material]));
659
681
  const displacementDofCount = model.nodes.length * 2;
@@ -661,14 +683,6 @@ export function runPlaneStrainBiotConsolidation(model) {
661
683
  if (displacementDofCount + porePressureDofCount > MAX_DENSE_DOF_COUNT) {
662
684
  throw new Error(`Plane-strain Biot consolidation dense assembly is capped at ${MAX_DENSE_DOF_COUNT} coupled DOFs for benchmark-scale evidence runs.`);
663
685
  }
664
- let previousTimeSeconds = 0;
665
- for (const [index, timeSeconds] of model.timeStepsSeconds.entries()) {
666
- assertFinitePositive(timeSeconds, `timeStepsSeconds.${index}`);
667
- if (timeSeconds <= previousTimeSeconds) {
668
- throw new Error(`timeStepsSeconds.${index} must be strictly increasing.`);
669
- }
670
- previousTimeSeconds = timeSeconds;
671
- }
672
686
  for (const node of model.nodes) {
673
687
  assertFinite(node.xM, `node ${node.id} xM`);
674
688
  assertFinite(node.yM, `node ${node.id} yM`);
@@ -703,6 +717,9 @@ export function runPlaneStrainBiotConsolidation(model) {
703
717
  throw new Error(`Unknown Biot nodal flux node: ${flux.nodeId}.`);
704
718
  const flowM3PerS = flux.flowM3PerS ?? 0;
705
719
  assertFinite(flowM3PerS, `nodal flux ${flux.nodeId}.flowM3PerS`);
720
+ if (flowM3PerS < 0) {
721
+ throw new Error(`nodal flux ${flux.nodeId}.flowM3PerS must be non-negative; extraction-driven suction is unsupported by this saturated excess-pressure Biot evidence kernel.`);
722
+ }
706
723
  fluxes[nodeIndex] += flowM3PerS;
707
724
  }
708
725
  const elementGaussCache = [];
@@ -828,6 +845,11 @@ export function runPlaneStrainBiotConsolidation(model) {
828
845
  displacement[index] = value;
829
846
  for (const [index, value] of prescribedPressures)
830
847
  porePressure[index] = value;
848
+ const pressureUpperBoundKpa = Math.max(initialPorePressureKpa, ...Array.from(prescribedPressures.values()));
849
+ const averagePressure = (dofs) => dofs.length > 0
850
+ ? dofs.reduce((sum, index) => sum + porePressure[index], 0) / dofs.length
851
+ : 0;
852
+ const initialAverageFreePorePressureKpa = averagePressure(freePressureDofs);
831
853
  let previousDisplacement = [...displacement];
832
854
  let previousPorePressure = [...porePressure];
833
855
  let lastMechanicalResidual = new Array(displacementDofCount).fill(0);
@@ -846,6 +868,14 @@ export function runPlaneStrainBiotConsolidation(model) {
846
868
  couplingRateSumM3PerS: 0,
847
869
  darcyFlowRateSumM3PerS: 0,
848
870
  };
871
+ let lastPressureDiagnostics = {
872
+ averagePorePressureKpa: round(porePressure.reduce((sum, value) => sum + value, 0) / porePressure.length, 8),
873
+ averageFreePorePressureKpa: round(initialAverageFreePorePressureKpa, 8),
874
+ porePressureDissipationRatio: 0,
875
+ maxPorePressureChangeKpa: 0,
876
+ maxPorePressureChangeRateKpaPerS: 0,
877
+ pressureOvershootKpa: 0,
878
+ };
849
879
  let lastMinPorePressureKpa = Math.min(...porePressure);
850
880
  let lastMaxPorePressureKpa = Math.max(...porePressure);
851
881
  const timeSteps = [];
@@ -966,6 +996,23 @@ export function runPlaneStrainBiotConsolidation(model) {
966
996
  const massBalanceErrorRatio = freePressureResidualSum / pressureScale;
967
997
  const minPorePressureKpa = Math.min(...porePressure);
968
998
  const maxPorePressureKpa = Math.max(...porePressure);
999
+ const pressureOvershootKpa = Math.max(0, maxPorePressureKpa - pressureUpperBoundKpa);
1000
+ if (pressureOvershootKpa > 1e-6) {
1001
+ throw new Error(`Plane-strain Biot step ${stepIndex + 1} pore pressure exceeded the initial/prescribed pressure envelope by ${pressureOvershootKpa} kPa.`);
1002
+ }
1003
+ const averagePorePressureKpa = porePressure.reduce((sum, value) => sum + value, 0) / porePressure.length;
1004
+ const averageFreePorePressureKpa = averagePressure(freePressureDofs);
1005
+ const dissipationReferenceKpa = Math.max(initialAverageFreePorePressureKpa, 1e-12);
1006
+ const porePressureDissipationRatio = Math.min(1, Math.max(0, (initialAverageFreePorePressureKpa - averageFreePorePressureKpa) / dissipationReferenceKpa));
1007
+ const maxPorePressureChangeKpa = Math.max(...porePressure.map((value, index) => Math.abs(value - previousPorePressure[index])));
1008
+ const pressureDiagnostics = {
1009
+ averagePorePressureKpa: round(averagePorePressureKpa, 8),
1010
+ averageFreePorePressureKpa: round(averageFreePorePressureKpa, 8),
1011
+ porePressureDissipationRatio: round(porePressureDissipationRatio, 12),
1012
+ maxPorePressureChangeKpa: round(maxPorePressureChangeKpa, 8),
1013
+ maxPorePressureChangeRateKpaPerS: Number((maxPorePressureChangeKpa / deltaTimeSeconds).toExponential(12)),
1014
+ pressureOvershootKpa: round(pressureOvershootKpa, 8),
1015
+ };
969
1016
  const maxVerticalSettlementM = Math.max(0, -Math.min(...model.nodes.map((_, index) => displacement[dofIndex(index, 'uy')])));
970
1017
  const converged = residualNormRatio <= policy.forceBalanceTolerance &&
971
1018
  massBalanceErrorRatio <= policy.porePressureMassBalanceTolerance;
@@ -979,6 +1026,7 @@ export function runPlaneStrainBiotConsolidation(model) {
979
1026
  freePorePressureResidualL1M3PerS: Number(freePressureResidualSum.toExponential(12)),
980
1027
  massBalanceErrorRatio: round(massBalanceErrorRatio, 12),
981
1028
  pressureAudit,
1029
+ pressureDiagnostics,
982
1030
  minPorePressureKpa: round(minPorePressureKpa, 8),
983
1031
  maxPorePressureKpa: round(maxPorePressureKpa, 8),
984
1032
  maxVerticalSettlementM: round(maxVerticalSettlementM, 12),
@@ -994,6 +1042,7 @@ export function runPlaneStrainBiotConsolidation(model) {
994
1042
  lastMaxFreePorePressureResidualM3PerS = maxFreePorePressureResidualM3PerS;
995
1043
  lastFreePorePressureResidualL1M3PerS = freePressureResidualSum;
996
1044
  lastPressureAudit = pressureAudit;
1045
+ lastPressureDiagnostics = pressureDiagnostics;
997
1046
  lastMinPorePressureKpa = minPorePressureKpa;
998
1047
  lastMaxPorePressureKpa = maxPorePressureKpa;
999
1048
  }
@@ -1063,6 +1112,8 @@ export function runPlaneStrainBiotConsolidation(model) {
1063
1112
  totalStressRelation: 'sigma_total_xx_yy = sigma_effective_xx_yy - alpha_B * p; shear unchanged',
1064
1113
  darcyFluxRelation: 'q = -k/gamma_water * grad(p)',
1065
1114
  storageConvention: 'specificStorage1PerM is head-based; pressure storage uses Ss / gamma_water',
1115
+ transientStepPolicy: 'fixed backward-Euler grid requires minAcceptedSteps and bounded step-growth ratio',
1116
+ maxTimeStepGrowthRatio: MAX_BIOT_TIME_STEP_GROWTH_RATIO,
1066
1117
  gammaWaterKpaPerM: round(gammaWaterKpaPerM, 8),
1067
1118
  },
1068
1119
  nodes: model.nodes.map((node, index) => ({
@@ -1089,6 +1140,7 @@ export function runPlaneStrainBiotConsolidation(model) {
1089
1140
  maxFreePorePressureResidualM3PerS: Number(lastMaxFreePorePressureResidualM3PerS.toExponential(12)),
1090
1141
  freePorePressureResidualL1M3PerS: Number(lastFreePorePressureResidualL1M3PerS.toExponential(12)),
1091
1142
  pressureAudit: lastPressureAudit,
1143
+ pressureDiagnostics: lastPressureDiagnostics,
1092
1144
  massBalanceErrorRatio: round(lastMassBalanceErrorRatio, 12),
1093
1145
  minPorePressureKpa: round(lastMinPorePressureKpa, 8),
1094
1146
  maxPorePressureKpa: round(lastMaxPorePressureKpa, 8),
@@ -1097,7 +1149,7 @@ export function runPlaneStrainBiotConsolidation(model) {
1097
1149
  policy,
1098
1150
  limitations: [
1099
1151
  'Benchmark-scale saturated linear-elastic Quad4 Biot u-p evidence kernel only.',
1100
- 'Uses dense backward-Euler displacement/pore-pressure coupling with a coupled DOF cap; it is not a production sparse solver or route-backed result manifest.',
1152
+ 'Uses dense backward-Euler displacement/pore-pressure coupling with a coupled DOF cap; route-backed previews may wrap it in a manifest, but it is not a production sparse solver.',
1101
1153
  'Pore pressure is treated as excess pressure in kPa for deterministic evidence; groundwater elevation routing, unsaturated flow, uplift/piping design, nonlinear plasticity coupling, staged activation, and cross-solver validation are not provided.',
1102
1154
  ],
1103
1155
  };
@@ -1528,6 +1580,31 @@ function normalizeLoadStepFractions(loadStepFractions) {
1528
1580
  }
1529
1581
  return fractions;
1530
1582
  }
1583
+ function isDruckerPragerStepConverged(evaluation, policy) {
1584
+ return evaluation.residualNormRatio <= policy.forceBalanceTolerance &&
1585
+ evaluation.maxYieldResidualRatio <= policy.residualTolerance;
1586
+ }
1587
+ function druckerPragerResidualHistoryEntry(iteration, evaluation, policy) {
1588
+ return {
1589
+ iteration,
1590
+ maxFreeResidualKn: round(evaluation.maxFreeResidualKn, 12),
1591
+ residualNormRatio: round(evaluation.residualNormRatio, 12),
1592
+ forceBalanceTolerance: policy.forceBalanceTolerance,
1593
+ reactionBalanceRatio: round(evaluation.reactionBalanceRatio, 12),
1594
+ maxYieldResidualRatio: round(evaluation.maxYieldResidualRatio, 12),
1595
+ yieldResidualTolerance: policy.residualTolerance,
1596
+ converged: isDruckerPragerStepConverged(evaluation, policy),
1597
+ };
1598
+ }
1599
+ function druckerPragerTerminationReason(evaluation, policy, converged, iterations) {
1600
+ if (converged)
1601
+ return 'converged';
1602
+ if (iterations >= policy.maxIterations)
1603
+ return 'max_iterations';
1604
+ if (evaluation.residualNormRatio > policy.forceBalanceTolerance)
1605
+ return 'force_residual_exceeded';
1606
+ return 'yield_residual_exceeded';
1607
+ }
1531
1608
  export function runPlaneStrainDruckerPragerLoadSteps(model, options = {}) {
1532
1609
  const system = assemblePlaneStrainSystem(model);
1533
1610
  const loadStepFractions = normalizeLoadStepFractions(options.loadStepFractions);
@@ -1540,8 +1617,10 @@ export function runPlaneStrainDruckerPragerLoadSteps(model, options = {}) {
1540
1617
  displacement[index] = value * loadFactor;
1541
1618
  let evaluation = evaluatePlaneStrainDruckerPragerState({ system, displacement, loadFactor });
1542
1619
  let iterations = 0;
1543
- let converged = evaluation.residualNormRatio <= system.policy.forceBalanceTolerance &&
1544
- evaluation.maxYieldResidualRatio <= system.policy.residualTolerance;
1620
+ let converged = isDruckerPragerStepConverged(evaluation, system.policy);
1621
+ const residualHistory = [
1622
+ druckerPragerResidualHistoryEntry(iterations, evaluation, system.policy),
1623
+ ];
1545
1624
  while (!converged && iterations < system.policy.maxIterations) {
1546
1625
  iterations += 1;
1547
1626
  if (system.freeDofs.length === 0)
@@ -1554,10 +1633,11 @@ export function runPlaneStrainDruckerPragerLoadSteps(model, options = {}) {
1554
1633
  for (const [index, value] of system.prescribed)
1555
1634
  displacement[index] = value * loadFactor;
1556
1635
  evaluation = evaluatePlaneStrainDruckerPragerState({ system, displacement, loadFactor });
1557
- converged = evaluation.residualNormRatio <= system.policy.forceBalanceTolerance &&
1558
- evaluation.maxYieldResidualRatio <= system.policy.residualTolerance;
1636
+ converged = isDruckerPragerStepConverged(evaluation, system.policy);
1637
+ residualHistory.push(druckerPragerResidualHistoryEntry(iterations, evaluation, system.policy));
1559
1638
  }
1560
1639
  finalEvaluation = evaluation;
1640
+ const terminationReason = druckerPragerTerminationReason(evaluation, system.policy, converged, iterations);
1561
1641
  loadSteps.push({
1562
1642
  step: stepIndex + 1,
1563
1643
  loadFactor: round(loadFactor, 8),
@@ -1569,11 +1649,15 @@ export function runPlaneStrainDruckerPragerLoadSteps(model, options = {}) {
1569
1649
  maxEquivalentPlasticStrain: round(evaluation.maxEquivalentPlasticStrain, 12),
1570
1650
  plasticGaussPointCount: evaluation.plasticGaussPointCount,
1571
1651
  converged,
1652
+ terminationReason,
1653
+ residualHistory,
1572
1654
  });
1573
1655
  }
1574
1656
  if (!finalEvaluation) {
1575
1657
  throw new Error('Plane-strain nonlinear load-step solver requires at least one load step.');
1576
1658
  }
1659
+ const failedStep = loadSteps.find((step) => !step.converged);
1660
+ const status = failedStep ? 'nonconverged' : 'converged';
1577
1661
  return {
1578
1662
  schemaVersion: 'fem-plane-strain-drucker-prager-result.v1',
1579
1663
  method: 'quad4-plane-strain-drucker-prager-modified-newton',
@@ -1595,10 +1679,22 @@ export function runPlaneStrainDruckerPragerLoadSteps(model, options = {}) {
1595
1679
  maxYieldResidualRatio: round(finalEvaluation.maxYieldResidualRatio, 12),
1596
1680
  maxEquivalentPlasticStrain: round(finalEvaluation.maxEquivalentPlasticStrain, 12),
1597
1681
  plasticGaussPointCount: finalEvaluation.plasticGaussPointCount,
1598
- converged: loadSteps.every((step) => step.converged),
1682
+ converged: status === 'converged',
1683
+ status,
1684
+ ...(failedStep ? {
1685
+ failure: {
1686
+ step: failedStep.step,
1687
+ loadFactor: failedStep.loadFactor,
1688
+ terminationReason: failedStep.terminationReason,
1689
+ residualNormRatio: failedStep.residualNormRatio,
1690
+ maxYieldResidualRatio: failedStep.maxYieldResidualRatio,
1691
+ message: `Plane-strain Drucker-Prager load step ${failedStep.step} did not satisfy the configured convergence policy.`,
1692
+ },
1693
+ } : {}),
1599
1694
  policy: system.policy,
1600
1695
  limitations: [
1601
1696
  'Benchmark-scale modified-Newton plane-strain plasticity evidence kernel only.',
1697
+ ...(failedStep ? ['Nonconverged load-step result is reported fail-closed and must not be treated as an accepted engineering solve.'] : []),
1602
1698
  'Uses elastic global tangent with Gauss-point Drucker-Prager stress projection; no production consistent tangent, sparse solver, hardening calibration, staged activation, pore-pressure DOF, or route-backed result manifest is provided.',
1603
1699
  'Use for deterministic evidence and regression tests only until independent published/commercial benchmark comparison and licensed production approval gates are complete.',
1604
1700
  ],