@geotechcli/core 0.4.109 → 0.4.111
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.
- package/dist/agents/brain.d.ts.map +1 -1
- package/dist/agents/brain.js +31 -2
- package/dist/agents/brain.js.map +1 -1
- package/dist/agents/fem-tools.js +5 -0
- package/dist/agents/fem-tools.js.map +1 -1
- package/dist/agents/safety.d.ts +1 -0
- package/dist/agents/safety.d.ts.map +1 -1
- package/dist/agents/safety.js +62 -0
- package/dist/agents/safety.js.map +1 -1
- package/dist/fem/demo.d.ts.map +1 -1
- package/dist/fem/demo.js +4 -0
- package/dist/fem/demo.js.map +1 -1
- package/dist/fem/engineering-evidence.d.ts +21 -2
- package/dist/fem/engineering-evidence.d.ts.map +1 -1
- package/dist/fem/engineering-evidence.js +354 -6
- package/dist/fem/engineering-evidence.js.map +1 -1
- package/dist/fem/index.d.ts +4 -2
- package/dist/fem/index.d.ts.map +1 -1
- package/dist/fem/index.js +2 -0
- package/dist/fem/index.js.map +1 -1
- package/dist/fem/nonlinear-plane-strain-solver.d.ts +10 -0
- package/dist/fem/nonlinear-plane-strain-solver.d.ts.map +1 -0
- package/dist/fem/nonlinear-plane-strain-solver.js +358 -0
- package/dist/fem/nonlinear-plane-strain-solver.js.map +1 -0
- package/dist/fem/plane-strain-assembly.d.ts +54 -0
- package/dist/fem/plane-strain-assembly.d.ts.map +1 -1
- package/dist/fem/plane-strain-assembly.js +277 -46
- package/dist/fem/plane-strain-assembly.js.map +1 -1
- package/dist/fem/production-readiness.js +5 -5
- package/dist/fem/production-readiness.js.map +1 -1
- package/dist/fem/support-design.d.ts +124 -0
- package/dist/fem/support-design.d.ts.map +1 -0
- package/dist/fem/support-design.js +380 -0
- package/dist/fem/support-design.js.map +1 -0
- package/dist/fem/types.d.ts +68 -3
- package/dist/fem/types.d.ts.map +1 -1
- package/dist/fem/validation.d.ts.map +1 -1
- package/dist/fem/validation.js +346 -13
- package/dist/fem/validation.js.map +1 -1
- package/dist/ingest/document-evidence-packet.d.ts +30 -30
- package/dist/ingest/job-worker.d.ts.map +1 -1
- package/dist/ingest/job-worker.js +4 -0
- package/dist/ingest/job-worker.js.map +1 -1
- package/dist/meta/metadata.json +1 -1
- package/package.json +1 -1
package/dist/fem/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fem/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fem/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/fem/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/fem/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAooBpB,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,oBAAoB,CAslBvF;AA63BD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CA8K3F"}
|
package/dist/fem/validation.js
CHANGED
|
@@ -21,6 +21,8 @@ const FEM_WEBGL_UINT16_INDEX_LIMIT = 65_535;
|
|
|
21
21
|
const FEM_MAX_PREVIEW_MESH_NODES = FEM_WEBGL_UINT16_INDEX_LIMIT + 1;
|
|
22
22
|
const FEM_MIN_BIOT_TRANSIENT_STEPS = 3;
|
|
23
23
|
const FEM_MAX_BIOT_TIME_STEP_GROWTH_RATIO = 8;
|
|
24
|
+
const FEM_PLANE_STRAIN_DP_ADAPTIVE_BACKEND_ID = 'builtin-plane-strain-dp-adaptive-v0';
|
|
25
|
+
const FEM_PLANE_STRAIN_DP_ANALYSIS_TYPE = 'static_2d_plane_strain_drucker_prager';
|
|
24
26
|
function expectedMeshCounts(mesh) {
|
|
25
27
|
if (mesh.elementType === 'quad4_plane_strain') {
|
|
26
28
|
return {
|
|
@@ -223,6 +225,22 @@ function validateOptionalResultMetadata(findings, manifest, nodeCount, outlineNo
|
|
|
223
225
|
['max_mobilized_strength_ratio', manifest.envelope.maxMobilizedStrengthRatio],
|
|
224
226
|
['drainage_path', manifest.envelope.drainagePathM],
|
|
225
227
|
['consolidation_duration', manifest.envelope.consolidationDurationYears],
|
|
228
|
+
['solver_load_steps', manifest.envelope.solverLoadSteps],
|
|
229
|
+
['solver_iterations', manifest.envelope.solverIterations],
|
|
230
|
+
['max_solver_residual_ratio', manifest.envelope.maxSolverResidualRatio],
|
|
231
|
+
['max_yield_residual_ratio', manifest.envelope.maxYieldResidualRatio],
|
|
232
|
+
['nonlinear_plastic_strain', manifest.envelope.nonlinearPlasticStrain],
|
|
233
|
+
['plane_strain_dof_count', manifest.envelope.planeStrainDofCount],
|
|
234
|
+
['plane_strain_free_dof_count', manifest.envelope.planeStrainFreeDofCount],
|
|
235
|
+
['plane_strain_constrained_dof_count', manifest.envelope.planeStrainConstrainedDofCount],
|
|
236
|
+
['plastic_gauss_point_count', manifest.envelope.plasticGaussPointCount],
|
|
237
|
+
['max_equivalent_plastic_strain', manifest.envelope.maxEquivalentPlasticStrain],
|
|
238
|
+
['max_equivalent_plastic_strain_increment', manifest.envelope.maxEquivalentPlasticStrainIncrement],
|
|
239
|
+
['adaptive_attempt_count', manifest.envelope.adaptiveAttemptCount],
|
|
240
|
+
['adaptive_accepted_step_count', manifest.envelope.adaptiveAcceptedStepCount],
|
|
241
|
+
['adaptive_rejected_attempt_count', manifest.envelope.adaptiveRejectedAttemptCount],
|
|
242
|
+
['adaptive_cutback_count', manifest.envelope.adaptiveCutbackCount],
|
|
243
|
+
['adaptive_max_cutback_depth', manifest.envelope.adaptiveMaxCutbackDepth],
|
|
226
244
|
['time_step_count', manifest.envelope.timeStepCount],
|
|
227
245
|
['min_pore_pressure', manifest.envelope.minPorePressureKpa],
|
|
228
246
|
['max_pore_pressure', manifest.envelope.maxPorePressureKpa],
|
|
@@ -562,6 +580,7 @@ export function validateFemAnalysisCase(caseFile) {
|
|
|
562
580
|
]);
|
|
563
581
|
}
|
|
564
582
|
const { domain, raft, excavation, tunnel, consolidation, biot } = caseFile.geometry;
|
|
583
|
+
const isPlaneStrainDruckerPragerAnalysis = caseFile.analysisType === FEM_PLANE_STRAIN_DP_ANALYSIS_TYPE;
|
|
565
584
|
if (caseFile.schemaVersion !== 'fem-analysis-case.v0') {
|
|
566
585
|
findings.push(finding('blocker', 'schema.unsupported', 'Only fem-analysis-case.v0 is supported.'));
|
|
567
586
|
}
|
|
@@ -586,7 +605,9 @@ export function validateFemAnalysisCase(caseFile) {
|
|
|
586
605
|
if (caseFile.objective === 'foundation_settlement' && caseFile.analysisType !== 'static_3d_small_strain') {
|
|
587
606
|
findings.push(finding('blocker', 'analysis.unsupported', `Unsupported analysis type: ${caseFile.analysisType}.`));
|
|
588
607
|
}
|
|
589
|
-
if (caseFile.objective === 'excavation_deformation' &&
|
|
608
|
+
if (caseFile.objective === 'excavation_deformation' &&
|
|
609
|
+
caseFile.analysisType !== 'static_3d_staged_elastic' &&
|
|
610
|
+
!isPlaneStrainDruckerPragerAnalysis) {
|
|
590
611
|
findings.push(finding('blocker', 'analysis.unsupported', `Unsupported analysis type: ${caseFile.analysisType}.`));
|
|
591
612
|
}
|
|
592
613
|
if (caseFile.objective === 'tunnel_volume_loss_settlement' && caseFile.analysisType !== 'empirical_3d_settlement_surface') {
|
|
@@ -696,7 +717,9 @@ export function validateFemAnalysisCase(caseFile) {
|
|
|
696
717
|
if (previousDepth !== excavation.finalDepthM) {
|
|
697
718
|
findings.push(finding('review', 'stages.final-depth-review', 'Last excavation stage does not exactly match the final depth; staging requires review.'));
|
|
698
719
|
}
|
|
699
|
-
findings.push(
|
|
720
|
+
findings.push(isPlaneStrainDruckerPragerAnalysis
|
|
721
|
+
? finding('review', 'excavation.plane-strain-dp-preview', 'Excavation preview uses experimental plane-strain Drucker-Prager plasticity and still excludes retaining wall design, basal heave, seepage, consolidation, and production design acceptance.')
|
|
722
|
+
: finding('review', 'excavation.design-excluded', 'Excavation preview excludes retaining wall design, basal heave, seepage, consolidation, and nonlinear soil response.'));
|
|
700
723
|
}
|
|
701
724
|
}
|
|
702
725
|
if (caseFile.objective === 'tunnel_volume_loss_settlement') {
|
|
@@ -886,6 +909,16 @@ export function validateFemAnalysisCase(caseFile) {
|
|
|
886
909
|
pushFiniteNumberFinding(findings, material.hydraulicConductivityMPerS, `${prefix}.hydraulic-conductivity`, 'Hydraulic conductivity', { positive: true });
|
|
887
910
|
}
|
|
888
911
|
}
|
|
912
|
+
if (isPlaneStrainDruckerPragerAnalysis) {
|
|
913
|
+
if (material.model !== 'mohr_coulomb') {
|
|
914
|
+
findings.push(finding('blocker', `${prefix}.plane-strain-dp-model-required`, 'Plane-strain Drucker-Prager previews require mohr_coulomb material strength parameters for Drucker-Prager mapping.'));
|
|
915
|
+
}
|
|
916
|
+
const frictionAngleDeg = material.frictionAngleDeg;
|
|
917
|
+
if (!isFiniteNumber(frictionAngleDeg) || frictionAngleDeg <= 0 || frictionAngleDeg >= 50) {
|
|
918
|
+
findings.push(finding('blocker', `${prefix}.plane-strain-dp-friction-angle-invalid`, 'Plane-strain Drucker-Prager previews require a finite Mohr-Coulomb friction angle between 0 and 50 degrees.'));
|
|
919
|
+
}
|
|
920
|
+
pushFiniteNumberFinding(findings, material.cohesionKpa, `${prefix}.plane-strain-dp-cohesion`, 'Plane-strain Drucker-Prager cohesion', { nonNegative: true });
|
|
921
|
+
}
|
|
889
922
|
if (caseFile.objective === 'seepage_groundwater_coupling') {
|
|
890
923
|
if (material.model !== 'linear_elastic') {
|
|
891
924
|
findings.push(finding('blocker', `${prefix}.biot-model-required`, 'Biot u-p preview requires a linear_elastic material with hydraulic coupling parameters.'));
|
|
@@ -973,10 +1006,13 @@ export function validateFemAnalysisCase(caseFile) {
|
|
|
973
1006
|
if (caseFile.mesh.elementType !== 'hex8' && caseFile.mesh.elementType !== 'quad4_plane_strain') {
|
|
974
1007
|
findings.push(finding('blocker', 'mesh.element-type-invalid', `Unsupported mesh element type: ${String(caseFile.mesh.elementType)}.`));
|
|
975
1008
|
}
|
|
976
|
-
|
|
977
|
-
|
|
1009
|
+
const requiresQuad4PlaneStrainMesh = caseFile.objective === 'seepage_groundwater_coupling' || isPlaneStrainDruckerPragerAnalysis;
|
|
1010
|
+
if (requiresQuad4PlaneStrainMesh && caseFile.mesh.elementType !== 'quad4_plane_strain') {
|
|
1011
|
+
findings.push(finding('blocker', isPlaneStrainDruckerPragerAnalysis ? 'mesh.element-type-plane-strain-dp-required' : 'mesh.element-type-biot-required', isPlaneStrainDruckerPragerAnalysis
|
|
1012
|
+
? 'Plane-strain Drucker-Prager previews require quad4_plane_strain mesh elements.'
|
|
1013
|
+
: 'Biot u-p seepage previews require quad4_plane_strain mesh elements.'));
|
|
978
1014
|
}
|
|
979
|
-
if (
|
|
1015
|
+
if (!requiresQuad4PlaneStrainMesh && caseFile.mesh.elementType !== 'hex8') {
|
|
980
1016
|
findings.push(finding('blocker', 'mesh.element-type-hex8-required', 'Non-Biot FEM preview cases require hex8 mesh elements.'));
|
|
981
1017
|
}
|
|
982
1018
|
if (!Number.isInteger(divisionsX) ||
|
|
@@ -1141,7 +1177,7 @@ function validateNonlinearSolverConvergenceReport(findings, manifest, expectedLo
|
|
|
1141
1177
|
const fallback = { forceBalanceTolerance: 1e-3, residualTolerance: 1e-6 };
|
|
1142
1178
|
const report = manifest.solverConvergence;
|
|
1143
1179
|
if (!isRecord(report)) {
|
|
1144
|
-
findings.push(finding('blocker', 'result.solver-convergence.missing', 'Nonlinear
|
|
1180
|
+
findings.push(finding('blocker', 'result.solver-convergence.missing', 'Nonlinear solver manifests must include explicit convergence policy and load-step residual history.'));
|
|
1145
1181
|
return fallback;
|
|
1146
1182
|
}
|
|
1147
1183
|
if (report.schemaVersion !== 'fem-solver-convergence-report.v1') {
|
|
@@ -1151,7 +1187,7 @@ function validateNonlinearSolverConvergenceReport(findings, manifest, expectedLo
|
|
|
1151
1187
|
findings.push(finding('blocker', 'result.solver-convergence.status-invalid', 'Solver convergence status must be converged or nonconverged.'));
|
|
1152
1188
|
}
|
|
1153
1189
|
if (report.status === 'nonconverged') {
|
|
1154
|
-
findings.push(finding('blocker', 'result.solver-convergence.nonconverged', 'Nonlinear
|
|
1190
|
+
findings.push(finding('blocker', 'result.solver-convergence.nonconverged', 'Nonlinear solver did not satisfy its configured convergence policy.'));
|
|
1155
1191
|
}
|
|
1156
1192
|
const policy = report.policy;
|
|
1157
1193
|
let forceBalanceTolerance = fallback.forceBalanceTolerance;
|
|
@@ -1181,12 +1217,13 @@ function validateNonlinearSolverConvergenceReport(findings, manifest, expectedLo
|
|
|
1181
1217
|
findings.push(finding('blocker', 'result.solver-convergence.load-steps.invalid', 'Solver convergence loadSteps must be an array.'));
|
|
1182
1218
|
return { forceBalanceTolerance, residualTolerance };
|
|
1183
1219
|
}
|
|
1184
|
-
if (report.loadSteps.length !== expectedLoadSteps) {
|
|
1185
|
-
findings.push(finding('blocker', 'result.solver-convergence.load-steps.count-mismatch', 'Solver convergence load steps must match
|
|
1220
|
+
if (expectedLoadSteps != null && report.loadSteps.length !== expectedLoadSteps) {
|
|
1221
|
+
findings.push(finding('blocker', 'result.solver-convergence.load-steps.count-mismatch', 'Solver convergence load steps must match the expected accepted load-step count.'));
|
|
1186
1222
|
}
|
|
1187
1223
|
const validTerminationReasons = new Set([
|
|
1188
1224
|
'converged',
|
|
1189
1225
|
'max_iterations',
|
|
1226
|
+
'linear_solver_nonconverged',
|
|
1190
1227
|
'force_residual_exceeded',
|
|
1191
1228
|
'yield_residual_exceeded',
|
|
1192
1229
|
'material_nonconvergence',
|
|
@@ -1205,6 +1242,24 @@ function validateNonlinearSolverConvergenceReport(findings, manifest, expectedLo
|
|
|
1205
1242
|
if (step.stageId != null && !isNonEmptyString(step.stageId)) {
|
|
1206
1243
|
findings.push(finding('blocker', `${prefix}.stage-id.invalid`, 'Solver convergence stageId must be a non-empty string when present.'));
|
|
1207
1244
|
}
|
|
1245
|
+
if (step.loadFactor != null) {
|
|
1246
|
+
const loadFactorOk = pushFiniteNumberFinding(findings, step.loadFactor, `${prefix}.load-factor`, 'Solver convergence load factor', { positive: true });
|
|
1247
|
+
if (loadFactorOk && step.loadFactor > 1 + 1e-9) {
|
|
1248
|
+
findings.push(finding('blocker', `${prefix}.load-factor.range-invalid`, 'Solver convergence load factor must not exceed 1.0.'));
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
if (step.requestedLoadFactor != null) {
|
|
1252
|
+
const requestedOk = pushFiniteNumberFinding(findings, step.requestedLoadFactor, `${prefix}.requested-load-factor`, 'Solver convergence requested load factor', { positive: true });
|
|
1253
|
+
if (requestedOk && step.requestedLoadFactor > 1 + 1e-9) {
|
|
1254
|
+
findings.push(finding('blocker', `${prefix}.requested-load-factor.range-invalid`, 'Solver convergence requested load factor must not exceed 1.0.'));
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
if (step.cutbackDepth != null && (!Number.isInteger(step.cutbackDepth) || step.cutbackDepth < 0)) {
|
|
1258
|
+
findings.push(finding('blocker', `${prefix}.cutback-depth.invalid`, 'Solver convergence cutback depth must be a non-negative integer when present.'));
|
|
1259
|
+
}
|
|
1260
|
+
if (step.adaptiveCutback != null && typeof step.adaptiveCutback !== 'boolean') {
|
|
1261
|
+
findings.push(finding('blocker', `${prefix}.adaptive-cutback.invalid`, 'Solver convergence adaptiveCutback must be boolean when present.'));
|
|
1262
|
+
}
|
|
1208
1263
|
if (!Number.isInteger(step.iterations) || step.iterations < 0) {
|
|
1209
1264
|
findings.push(finding('blocker', `${prefix}.iterations.invalid`, 'Solver convergence iterations must be a non-negative integer.'));
|
|
1210
1265
|
}
|
|
@@ -1266,6 +1321,196 @@ function validateNonlinearSolverConvergenceReport(findings, manifest, expectedLo
|
|
|
1266
1321
|
}
|
|
1267
1322
|
return { forceBalanceTolerance, residualTolerance };
|
|
1268
1323
|
}
|
|
1324
|
+
function validatePlaneStrainDpAdaptiveAcceptance(findings, manifest, solverTolerances) {
|
|
1325
|
+
const { envelope } = manifest;
|
|
1326
|
+
const adaptive = manifest.adaptiveLoadStepping;
|
|
1327
|
+
if (!isRecord(adaptive)) {
|
|
1328
|
+
findings.push(finding('blocker', 'result.dp-adaptive.missing', 'Plane-strain Drucker-Prager manifests must include adaptive load-stepping metadata.'));
|
|
1329
|
+
return;
|
|
1330
|
+
}
|
|
1331
|
+
if (adaptive.schemaVersion !== 'fem-plane-strain-dp-adaptive-load-stepping.v1') {
|
|
1332
|
+
findings.push(finding('blocker', 'result.dp-adaptive.schema.unsupported', 'Unsupported plane-strain Drucker-Prager adaptive load-stepping schema.'));
|
|
1333
|
+
}
|
|
1334
|
+
if (adaptive.enabled !== true) {
|
|
1335
|
+
findings.push(finding('blocker', 'result.dp-adaptive.enabled-required', 'Plane-strain Drucker-Prager adaptive load stepping must be enabled for this backend.'));
|
|
1336
|
+
}
|
|
1337
|
+
if (adaptive.strategy !== 'cutback-bisection') {
|
|
1338
|
+
findings.push(finding('blocker', 'result.dp-adaptive.strategy.invalid', 'Plane-strain Drucker-Prager adaptive load stepping must use cutback-bisection strategy.'));
|
|
1339
|
+
}
|
|
1340
|
+
const requestedStepCountOk = pushFiniteNumberFinding(findings, adaptive.requestedStepCount, 'result.dp-adaptive.requested-step-count', 'DP adaptive requested step count', { positive: true });
|
|
1341
|
+
const attemptedStepCountOk = pushFiniteNumberFinding(findings, adaptive.attemptedStepCount, 'result.dp-adaptive.attempted-step-count', 'DP adaptive attempted step count', { positive: true });
|
|
1342
|
+
const acceptedStepCountOk = pushFiniteNumberFinding(findings, adaptive.acceptedStepCount, 'result.dp-adaptive.accepted-step-count', 'DP adaptive accepted step count', { positive: true });
|
|
1343
|
+
const cutbackCountOk = pushFiniteNumberFinding(findings, adaptive.cutbackCount, 'result.dp-adaptive.cutback-count', 'DP adaptive cutback count', { nonNegative: true });
|
|
1344
|
+
const maxCutbackDepthOk = pushFiniteNumberFinding(findings, adaptive.maxCutbackDepth, 'result.dp-adaptive.max-cutback-depth', 'DP adaptive max cutback depth', { nonNegative: true });
|
|
1345
|
+
pushFiniteNumberFinding(findings, adaptive.minLoadFactorIncrement, 'result.dp-adaptive.min-load-factor-increment', 'DP adaptive minimum load-factor increment', { positive: true });
|
|
1346
|
+
for (const [ok, value, code, label] of [
|
|
1347
|
+
[requestedStepCountOk, adaptive.requestedStepCount, 'requested-step-count', 'requested step count'],
|
|
1348
|
+
[attemptedStepCountOk, adaptive.attemptedStepCount, 'attempted-step-count', 'attempted step count'],
|
|
1349
|
+
[acceptedStepCountOk, adaptive.acceptedStepCount, 'accepted-step-count', 'accepted step count'],
|
|
1350
|
+
[cutbackCountOk, adaptive.cutbackCount, 'cutback-count', 'cutback count'],
|
|
1351
|
+
[maxCutbackDepthOk, adaptive.maxCutbackDepth, 'max-cutback-depth', 'max cutback depth'],
|
|
1352
|
+
]) {
|
|
1353
|
+
if (ok && !Number.isInteger(value)) {
|
|
1354
|
+
findings.push(finding('blocker', `result.dp-adaptive.${code}.integer`, `DP adaptive ${label} must be an integer.`));
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
if (!Array.isArray(adaptive.requestedLoadFactors) || adaptive.requestedLoadFactors.length === 0) {
|
|
1358
|
+
findings.push(finding('blocker', 'result.dp-adaptive.requested-load-factors.invalid', 'DP adaptive requestedLoadFactors must be a non-empty array.'));
|
|
1359
|
+
}
|
|
1360
|
+
else {
|
|
1361
|
+
if (requestedStepCountOk && adaptive.requestedLoadFactors.length !== adaptive.requestedStepCount) {
|
|
1362
|
+
findings.push(finding('blocker', 'result.dp-adaptive.requested-load-factors.count-mismatch', 'DP adaptive requested load factors must match requestedStepCount.'));
|
|
1363
|
+
}
|
|
1364
|
+
for (const [index, loadFactor] of adaptive.requestedLoadFactors.entries()) {
|
|
1365
|
+
const ok = pushFiniteNumberFinding(findings, loadFactor, `result.dp-adaptive.requestedLoadFactors.${index}`, 'DP adaptive requested load factor', { positive: true });
|
|
1366
|
+
if (ok && loadFactor > 1 + 1e-9) {
|
|
1367
|
+
findings.push(finding('blocker', `result.dp-adaptive.requestedLoadFactors.${index}.range-invalid`, 'DP adaptive requested load factors must not exceed 1.0.'));
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
if (!Array.isArray(adaptive.acceptedLoadFactors) || adaptive.acceptedLoadFactors.length === 0) {
|
|
1372
|
+
findings.push(finding('blocker', 'result.dp-adaptive.accepted-load-factors.invalid', 'DP adaptive acceptedLoadFactors must be a non-empty array.'));
|
|
1373
|
+
}
|
|
1374
|
+
else {
|
|
1375
|
+
if (acceptedStepCountOk && adaptive.acceptedLoadFactors.length !== adaptive.acceptedStepCount) {
|
|
1376
|
+
findings.push(finding('blocker', 'result.dp-adaptive.accepted-load-factors.count-mismatch', 'DP adaptive accepted load factors must match acceptedStepCount.'));
|
|
1377
|
+
}
|
|
1378
|
+
let previous = 0;
|
|
1379
|
+
for (const [index, loadFactor] of adaptive.acceptedLoadFactors.entries()) {
|
|
1380
|
+
const ok = pushFiniteNumberFinding(findings, loadFactor, `result.dp-adaptive.acceptedLoadFactors.${index}`, 'DP adaptive accepted load factor', { positive: true });
|
|
1381
|
+
if (ok) {
|
|
1382
|
+
if (loadFactor <= previous + 1e-12) {
|
|
1383
|
+
findings.push(finding('blocker', `result.dp-adaptive.acceptedLoadFactors.${index}.not-increasing`, 'DP adaptive accepted load factors must be strictly increasing.'));
|
|
1384
|
+
}
|
|
1385
|
+
if (loadFactor > 1 + 1e-9) {
|
|
1386
|
+
findings.push(finding('blocker', `result.dp-adaptive.acceptedLoadFactors.${index}.range-invalid`, 'DP adaptive accepted load factors must not exceed 1.0.'));
|
|
1387
|
+
}
|
|
1388
|
+
previous = loadFactor;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
const finalLoadFactor = adaptive.acceptedLoadFactors.at(-1);
|
|
1392
|
+
if (isFiniteNumber(finalLoadFactor) && Math.abs(finalLoadFactor - 1) > 1e-9) {
|
|
1393
|
+
findings.push(finding('blocker', 'result.dp-adaptive.accepted-load-factors.final-load-mismatch', 'DP adaptive accepted load factors must reach full load factor 1.0.'));
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
if (!Array.isArray(adaptive.attempts) || adaptive.attempts.length === 0) {
|
|
1397
|
+
findings.push(finding('blocker', 'result.dp-adaptive.attempts.invalid', 'DP adaptive attempts must be a non-empty array.'));
|
|
1398
|
+
}
|
|
1399
|
+
else {
|
|
1400
|
+
if (attemptedStepCountOk && adaptive.attempts.length !== adaptive.attemptedStepCount) {
|
|
1401
|
+
findings.push(finding('blocker', 'result.dp-adaptive.attempts.count-mismatch', 'DP adaptive attempts must match attemptedStepCount.'));
|
|
1402
|
+
}
|
|
1403
|
+
const acceptedAttempts = adaptive.attempts.filter((attempt) => isRecord(attempt) && attempt.accepted === true);
|
|
1404
|
+
const rejectedAttempts = adaptive.attempts.filter((attempt) => isRecord(attempt) && attempt.accepted === false);
|
|
1405
|
+
if (acceptedStepCountOk && acceptedAttempts.length !== adaptive.acceptedStepCount) {
|
|
1406
|
+
findings.push(finding('blocker', 'result.dp-adaptive.attempts.accepted-count-mismatch', 'DP adaptive accepted attempt count must match acceptedStepCount.'));
|
|
1407
|
+
}
|
|
1408
|
+
if (isFiniteNumber(envelope.adaptiveRejectedAttemptCount) && rejectedAttempts.length !== envelope.adaptiveRejectedAttemptCount) {
|
|
1409
|
+
findings.push(finding('blocker', 'result.dp-adaptive.attempts.rejected-count-mismatch', 'DP adaptive rejected attempt count must match the envelope.'));
|
|
1410
|
+
}
|
|
1411
|
+
for (const [index, attempt] of adaptive.attempts.entries()) {
|
|
1412
|
+
const prefix = `result.dp-adaptive.attempts.${index}`;
|
|
1413
|
+
if (!isRecord(attempt)) {
|
|
1414
|
+
findings.push(finding('blocker', `${prefix}.shape-invalid`, 'DP adaptive attempt must be an object.'));
|
|
1415
|
+
continue;
|
|
1416
|
+
}
|
|
1417
|
+
if (!Number.isInteger(attempt.attempt) || attempt.attempt !== index + 1) {
|
|
1418
|
+
findings.push(finding('blocker', `${prefix}.attempt.sequence-invalid`, 'DP adaptive attempts must be sequentially numbered.'));
|
|
1419
|
+
}
|
|
1420
|
+
pushFiniteNumberFinding(findings, attempt.startLoadFactor, `${prefix}.start-load-factor`, 'DP adaptive attempt start load factor', { nonNegative: true });
|
|
1421
|
+
pushFiniteNumberFinding(findings, attempt.targetLoadFactor, `${prefix}.target-load-factor`, 'DP adaptive attempt target load factor', { positive: true });
|
|
1422
|
+
pushFiniteNumberFinding(findings, attempt.requestedLoadFactor, `${prefix}.requested-load-factor`, 'DP adaptive attempt requested load factor', { positive: true });
|
|
1423
|
+
if (!Number.isInteger(attempt.cutbackDepth) || attempt.cutbackDepth < 0) {
|
|
1424
|
+
findings.push(finding('blocker', `${prefix}.cutback-depth.invalid`, 'DP adaptive attempt cutbackDepth must be a non-negative integer.'));
|
|
1425
|
+
}
|
|
1426
|
+
if (typeof attempt.accepted !== 'boolean') {
|
|
1427
|
+
findings.push(finding('blocker', `${prefix}.accepted.invalid`, 'DP adaptive attempt accepted must be boolean.'));
|
|
1428
|
+
}
|
|
1429
|
+
if (typeof attempt.rollbackApplied !== 'boolean') {
|
|
1430
|
+
findings.push(finding('blocker', `${prefix}.rollback-applied.invalid`, 'DP adaptive attempt rollbackApplied must be boolean.'));
|
|
1431
|
+
}
|
|
1432
|
+
if (!isNonEmptyString(attempt.committedStateSignatureBefore) || !isNonEmptyString(attempt.committedStateSignatureAfter)) {
|
|
1433
|
+
findings.push(finding('blocker', `${prefix}.state-signature.missing`, 'DP adaptive attempts must include committed state signatures before and after.'));
|
|
1434
|
+
}
|
|
1435
|
+
if (attempt.accepted === false) {
|
|
1436
|
+
if (attempt.rollbackApplied !== true) {
|
|
1437
|
+
findings.push(finding('blocker', `${prefix}.rollback-required`, 'Rejected DP adaptive attempts must apply rollback.'));
|
|
1438
|
+
}
|
|
1439
|
+
if (isNonEmptyString(attempt.committedStateSignatureBefore) &&
|
|
1440
|
+
isNonEmptyString(attempt.committedStateSignatureAfter) &&
|
|
1441
|
+
attempt.committedStateSignatureAfter !== attempt.committedStateSignatureBefore) {
|
|
1442
|
+
findings.push(finding('blocker', `${prefix}.rollback-state-mutated`, 'Rejected DP adaptive attempts must preserve the committed state signature.'));
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
if (attempt.accepted === true && attempt.terminationReason !== 'converged') {
|
|
1446
|
+
findings.push(finding('blocker', `${prefix}.accepted-not-converged`, 'Accepted DP adaptive attempts must terminate with converged.'));
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
if (!Array.isArray(adaptive.blockerCodes)) {
|
|
1451
|
+
findings.push(finding('blocker', 'result.dp-adaptive.blocker-codes.invalid', 'DP adaptive blockerCodes must be an array.'));
|
|
1452
|
+
}
|
|
1453
|
+
else if (adaptive.blockerCodes.length > 0) {
|
|
1454
|
+
findings.push(finding('blocker', 'result.dp-adaptive.blocker-codes-not-empty', 'Accepted DP adaptive metadata must not include blocker codes.'));
|
|
1455
|
+
}
|
|
1456
|
+
const solverLoadStepsOk = pushFiniteNumberFinding(findings, envelope.solverLoadSteps, 'result.envelope.dp.solver-load-steps', 'DP envelope solver load steps', { positive: true });
|
|
1457
|
+
const solverIterationsOk = pushFiniteNumberFinding(findings, envelope.solverIterations, 'result.envelope.dp.solver-iterations', 'DP envelope solver iterations', { nonNegative: true });
|
|
1458
|
+
const solverResidualOk = pushFiniteNumberFinding(findings, envelope.maxSolverResidualRatio, 'result.envelope.dp.max-solver-residual-ratio', 'DP envelope max solver residual ratio', { nonNegative: true });
|
|
1459
|
+
const yieldResidualOk = pushFiniteNumberFinding(findings, envelope.maxYieldResidualRatio, 'result.envelope.dp.max-yield-residual-ratio', 'DP envelope max yield residual ratio', { nonNegative: true });
|
|
1460
|
+
pushFiniteNumberFinding(findings, envelope.nonlinearPlasticStrain, 'result.envelope.dp.nonlinear-plastic-strain', 'DP envelope nonlinear plastic strain', { nonNegative: true });
|
|
1461
|
+
const dofCountOk = pushFiniteNumberFinding(findings, envelope.planeStrainDofCount, 'result.envelope.dp.dof-count', 'DP envelope DOF count', { positive: true });
|
|
1462
|
+
const freeDofCountOk = pushFiniteNumberFinding(findings, envelope.planeStrainFreeDofCount, 'result.envelope.dp.free-dof-count', 'DP envelope free DOF count', { positive: true });
|
|
1463
|
+
const constrainedDofCountOk = pushFiniteNumberFinding(findings, envelope.planeStrainConstrainedDofCount, 'result.envelope.dp.constrained-dof-count', 'DP envelope constrained DOF count', { positive: true });
|
|
1464
|
+
const plasticGaussPointCountOk = pushFiniteNumberFinding(findings, envelope.plasticGaussPointCount, 'result.envelope.dp.plastic-gauss-point-count', 'DP envelope plastic Gauss-point count', { nonNegative: true });
|
|
1465
|
+
pushFiniteNumberFinding(findings, envelope.maxEquivalentPlasticStrain, 'result.envelope.dp.max-equivalent-plastic-strain', 'DP envelope max equivalent plastic strain', { nonNegative: true });
|
|
1466
|
+
pushFiniteNumberFinding(findings, envelope.maxEquivalentPlasticStrainIncrement, 'result.envelope.dp.max-equivalent-plastic-strain-increment', 'DP envelope max equivalent plastic strain increment', { nonNegative: true });
|
|
1467
|
+
const adaptiveAttemptCountOk = pushFiniteNumberFinding(findings, envelope.adaptiveAttemptCount, 'result.envelope.dp.adaptive-attempt-count', 'DP envelope adaptive attempt count', { positive: true });
|
|
1468
|
+
const adaptiveAcceptedStepCountOk = pushFiniteNumberFinding(findings, envelope.adaptiveAcceptedStepCount, 'result.envelope.dp.adaptive-accepted-step-count', 'DP envelope adaptive accepted step count', { positive: true });
|
|
1469
|
+
const adaptiveRejectedAttemptCountOk = pushFiniteNumberFinding(findings, envelope.adaptiveRejectedAttemptCount, 'result.envelope.dp.adaptive-rejected-attempt-count', 'DP envelope adaptive rejected attempt count', { nonNegative: true });
|
|
1470
|
+
const adaptiveCutbackCountOk = pushFiniteNumberFinding(findings, envelope.adaptiveCutbackCount, 'result.envelope.dp.adaptive-cutback-count', 'DP envelope adaptive cutback count', { nonNegative: true });
|
|
1471
|
+
const adaptiveMaxCutbackDepthOk = pushFiniteNumberFinding(findings, envelope.adaptiveMaxCutbackDepth, 'result.envelope.dp.adaptive-max-cutback-depth', 'DP envelope adaptive max cutback depth', { nonNegative: true });
|
|
1472
|
+
for (const [ok, value, code, label] of [
|
|
1473
|
+
[solverLoadStepsOk, envelope.solverLoadSteps, 'solver-load-steps', 'solver load steps'],
|
|
1474
|
+
[solverIterationsOk, envelope.solverIterations, 'solver-iterations', 'solver iterations'],
|
|
1475
|
+
[dofCountOk, envelope.planeStrainDofCount, 'dof-count', 'DOF count'],
|
|
1476
|
+
[freeDofCountOk, envelope.planeStrainFreeDofCount, 'free-dof-count', 'free DOF count'],
|
|
1477
|
+
[constrainedDofCountOk, envelope.planeStrainConstrainedDofCount, 'constrained-dof-count', 'constrained DOF count'],
|
|
1478
|
+
[plasticGaussPointCountOk, envelope.plasticGaussPointCount, 'plastic-gauss-point-count', 'plastic Gauss-point count'],
|
|
1479
|
+
[adaptiveAttemptCountOk, envelope.adaptiveAttemptCount, 'adaptive-attempt-count', 'adaptive attempt count'],
|
|
1480
|
+
[adaptiveAcceptedStepCountOk, envelope.adaptiveAcceptedStepCount, 'adaptive-accepted-step-count', 'adaptive accepted step count'],
|
|
1481
|
+
[adaptiveRejectedAttemptCountOk, envelope.adaptiveRejectedAttemptCount, 'adaptive-rejected-attempt-count', 'adaptive rejected attempt count'],
|
|
1482
|
+
[adaptiveCutbackCountOk, envelope.adaptiveCutbackCount, 'adaptive-cutback-count', 'adaptive cutback count'],
|
|
1483
|
+
[adaptiveMaxCutbackDepthOk, envelope.adaptiveMaxCutbackDepth, 'adaptive-max-cutback-depth', 'adaptive max cutback depth'],
|
|
1484
|
+
]) {
|
|
1485
|
+
if (ok && !Number.isInteger(value)) {
|
|
1486
|
+
findings.push(finding('blocker', `result.envelope.dp.${code}.integer`, `DP envelope ${label} must be an integer.`));
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
if (solverLoadStepsOk && acceptedStepCountOk && envelope.solverLoadSteps !== adaptive.acceptedStepCount) {
|
|
1490
|
+
findings.push(finding('blocker', 'result.envelope.dp.solver-load-steps-adaptive-mismatch', 'DP envelope solver load steps must match adaptive acceptedStepCount.'));
|
|
1491
|
+
}
|
|
1492
|
+
if (adaptiveAttemptCountOk && attemptedStepCountOk && envelope.adaptiveAttemptCount !== adaptive.attemptedStepCount) {
|
|
1493
|
+
findings.push(finding('blocker', 'result.envelope.dp.adaptive-attempt-count-mismatch', 'DP envelope adaptive attempt count must match adaptive metadata.'));
|
|
1494
|
+
}
|
|
1495
|
+
if (adaptiveAcceptedStepCountOk && acceptedStepCountOk && envelope.adaptiveAcceptedStepCount !== adaptive.acceptedStepCount) {
|
|
1496
|
+
findings.push(finding('blocker', 'result.envelope.dp.adaptive-accepted-step-count-mismatch', 'DP envelope adaptive accepted step count must match adaptive metadata.'));
|
|
1497
|
+
}
|
|
1498
|
+
if (adaptiveCutbackCountOk && cutbackCountOk && envelope.adaptiveCutbackCount !== adaptive.cutbackCount) {
|
|
1499
|
+
findings.push(finding('blocker', 'result.envelope.dp.adaptive-cutback-count-mismatch', 'DP envelope adaptive cutback count must match adaptive metadata.'));
|
|
1500
|
+
}
|
|
1501
|
+
if (adaptiveMaxCutbackDepthOk && maxCutbackDepthOk && envelope.adaptiveMaxCutbackDepth !== adaptive.maxCutbackDepth) {
|
|
1502
|
+
findings.push(finding('blocker', 'result.envelope.dp.adaptive-max-cutback-depth-mismatch', 'DP envelope adaptive max cutback depth must match adaptive metadata.'));
|
|
1503
|
+
}
|
|
1504
|
+
if (dofCountOk && freeDofCountOk && constrainedDofCountOk && envelope.planeStrainFreeDofCount + envelope.planeStrainConstrainedDofCount !== envelope.planeStrainDofCount) {
|
|
1505
|
+
findings.push(finding('blocker', 'result.envelope.dp.dof-count-mismatch', 'DP free and constrained DOF counts must sum to the total DOF count.'));
|
|
1506
|
+
}
|
|
1507
|
+
if (solverResidualOk && envelope.maxSolverResidualRatio > solverTolerances.forceBalanceTolerance) {
|
|
1508
|
+
findings.push(finding('blocker', 'result.envelope.dp.solver-residual-too-large', 'DP solver residual exceeds the force-balance tolerance.'));
|
|
1509
|
+
}
|
|
1510
|
+
if (yieldResidualOk && envelope.maxYieldResidualRatio > solverTolerances.residualTolerance) {
|
|
1511
|
+
findings.push(finding('blocker', 'result.envelope.dp.yield-residual-too-large', 'DP yield residual exceeds the material return-map tolerance.'));
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1269
1514
|
function validateResultEnvelopeSemantics(findings, manifest) {
|
|
1270
1515
|
const { envelope, analysisCase } = manifest;
|
|
1271
1516
|
const maxSettlementOk = pushFiniteNumberFinding(findings, envelope.maxSettlementMm, 'result.envelope.max-settlement', 'Envelope max settlement', { nonNegative: true });
|
|
@@ -1278,7 +1523,7 @@ function validateResultEnvelopeSemantics(findings, manifest) {
|
|
|
1278
1523
|
}
|
|
1279
1524
|
const expectedBackendByObjective = new Map([
|
|
1280
1525
|
['foundation_settlement', ['builtin-elastic3d-demo']],
|
|
1281
|
-
['excavation_deformation', ['builtin-staged-excavation-demo']],
|
|
1526
|
+
['excavation_deformation', ['builtin-staged-excavation-demo', FEM_PLANE_STRAIN_DP_ADAPTIVE_BACKEND_ID]],
|
|
1282
1527
|
['tunnel_volume_loss_settlement', ['builtin-tunnel-volume-loss-demo']],
|
|
1283
1528
|
['staged_settlement_consolidation', ['builtin-staged-consolidation-1d', 'builtin-nonlinear-column-v0']],
|
|
1284
1529
|
['seepage_groundwater_coupling', ['builtin-biot-up-plane-strain-v0']],
|
|
@@ -1287,6 +1532,26 @@ function validateResultEnvelopeSemantics(findings, manifest) {
|
|
|
1287
1532
|
if (expectedBackends && !expectedBackends.includes(manifest.backend.id)) {
|
|
1288
1533
|
findings.push(finding('blocker', 'result.backend.objective-mismatch', 'Result backend must match the embedded FEM objective.'));
|
|
1289
1534
|
}
|
|
1535
|
+
if (analysisCase.objective !== 'seepage_groundwater_coupling') {
|
|
1536
|
+
if (manifest.pressureAudit != null) {
|
|
1537
|
+
findings.push(finding('blocker', 'result.pressure-audit.unexpected', 'Pressure audit is only valid for Biot u-p seepage result manifests.'));
|
|
1538
|
+
}
|
|
1539
|
+
if (manifest.biotTransientAcceptance != null) {
|
|
1540
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.unexpected', 'Biot transient acceptance metadata is only valid for Biot u-p seepage result manifests.'));
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
const isPlaneStrainDpAdaptiveManifest = manifest.backend.id === FEM_PLANE_STRAIN_DP_ADAPTIVE_BACKEND_ID;
|
|
1544
|
+
if (!isPlaneStrainDpAdaptiveManifest && manifest.adaptiveLoadStepping != null) {
|
|
1545
|
+
findings.push(finding('blocker', 'result.dp-adaptive.unexpected', 'Drucker-Prager adaptive metadata is only valid for plane-strain DP adaptive result manifests.'));
|
|
1546
|
+
}
|
|
1547
|
+
if (isPlaneStrainDpAdaptiveManifest) {
|
|
1548
|
+
if (analysisCase.analysisType !== FEM_PLANE_STRAIN_DP_ANALYSIS_TYPE) {
|
|
1549
|
+
findings.push(finding('blocker', 'result.dp-adaptive.analysis-type-mismatch', 'Plane-strain DP adaptive manifests require static_2d_plane_strain_drucker_prager analysis cases.'));
|
|
1550
|
+
}
|
|
1551
|
+
if (analysisCase.mesh.elementType !== 'quad4_plane_strain') {
|
|
1552
|
+
findings.push(finding('blocker', 'result.dp-adaptive.mesh-type-mismatch', 'Plane-strain DP adaptive manifests require quad4_plane_strain mesh cases.'));
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1290
1555
|
if (analysisCase.objective === 'foundation_settlement') {
|
|
1291
1556
|
const raft = analysisCase.geometry.raft;
|
|
1292
1557
|
if (!raft)
|
|
@@ -1336,6 +1601,13 @@ function validateResultEnvelopeSemantics(findings, manifest) {
|
|
|
1336
1601
|
if (maxSettlementOk && maxSurfaceOk) {
|
|
1337
1602
|
pushApproximateMatchFinding(findings, envelope.maxSettlementMm, maxSurfaceSettlementMm, 'result.envelope.excavation-max-settlement-mismatch', 'Excavation max settlement', 0.001);
|
|
1338
1603
|
}
|
|
1604
|
+
if (isPlaneStrainDpAdaptiveManifest) {
|
|
1605
|
+
const expectedDpLoadSteps = Number.isInteger(envelope.solverLoadSteps) && envelope.solverLoadSteps > 0
|
|
1606
|
+
? envelope.solverLoadSteps
|
|
1607
|
+
: undefined;
|
|
1608
|
+
const solverTolerances = validateNonlinearSolverConvergenceReport(findings, manifest, expectedDpLoadSteps);
|
|
1609
|
+
validatePlaneStrainDpAdaptiveAcceptance(findings, manifest, solverTolerances);
|
|
1610
|
+
}
|
|
1339
1611
|
return;
|
|
1340
1612
|
}
|
|
1341
1613
|
if (analysisCase.objective === 'tunnel_volume_loss_settlement') {
|
|
@@ -1506,9 +1778,63 @@ function validateResultEnvelopeSemantics(findings, manifest) {
|
|
|
1506
1778
|
pushApproximateMatchFinding(findings, pressureAudit.freePorePressureResidualL1M3PerS, envelope.freePorePressureResidualL1M3PerS, 'result.pressure-audit.free-residual-envelope-mismatch', 'Pressure-audit free residual', 1e-12);
|
|
1507
1779
|
pushApproximateMatchFinding(findings, pressureAudit.prescribedPorePressureResidualL1M3PerS, envelope.prescribedPorePressureResidualL1M3PerS, 'result.pressure-audit.prescribed-residual-envelope-mismatch', 'Pressure-audit prescribed residual', 1e-12);
|
|
1508
1780
|
}
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1781
|
+
const transientAcceptance = manifest.biotTransientAcceptance;
|
|
1782
|
+
if (!transientAcceptance) {
|
|
1783
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.missing', 'Biot result manifests must include transient acceptance metadata.'));
|
|
1784
|
+
}
|
|
1785
|
+
else {
|
|
1786
|
+
if (transientAcceptance.schemaVersion !== 'fem-plane-strain-biot-transient-acceptance.v1') {
|
|
1787
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.schema.unsupported', 'Unsupported Biot transient acceptance schema.'));
|
|
1788
|
+
}
|
|
1789
|
+
if (transientAcceptance.accepted !== true) {
|
|
1790
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.not-accepted', 'Biot transient acceptance must be accepted before publishing a preview manifest.'));
|
|
1791
|
+
}
|
|
1792
|
+
if (transientAcceptance.dissipationCheckMode !== 'drained-dissipation' &&
|
|
1793
|
+
transientAcceptance.dissipationCheckMode !== 'prescribed-gradient-relaxation') {
|
|
1794
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.mode.invalid', 'Biot transient acceptance mode is invalid.'));
|
|
1795
|
+
}
|
|
1796
|
+
const acceptedStepCountOk = pushFiniteNumberFinding(findings, transientAcceptance.acceptedStepCount, 'result.biot-transient-acceptance.accepted-step-count', 'Biot transient accepted step count', { positive: true });
|
|
1797
|
+
const requiredStepCountOk = pushFiniteNumberFinding(findings, transientAcceptance.requiredStepCount, 'result.biot-transient-acceptance.required-step-count', 'Biot transient required step count', { positive: true });
|
|
1798
|
+
const maxResidualOk = pushFiniteNumberFinding(findings, transientAcceptance.maxResidualNormRatio, 'result.biot-transient-acceptance.max-residual-ratio', 'Biot transient maximum residual ratio', { nonNegative: true });
|
|
1799
|
+
const maxMassBalanceOk = pushFiniteNumberFinding(findings, transientAcceptance.maxMassBalanceErrorRatio, 'result.biot-transient-acceptance.max-mass-balance-ratio', 'Biot transient maximum mass-balance ratio', { nonNegative: true });
|
|
1800
|
+
pushFiniteNumberFinding(findings, transientAcceptance.maxPressureOvershootKpa, 'result.biot-transient-acceptance.max-pressure-overshoot', 'Biot transient maximum pressure overshoot', { nonNegative: true });
|
|
1801
|
+
const finalDissipationOk = pushFiniteNumberFinding(findings, transientAcceptance.finalPorePressureDissipationRatio, 'result.biot-transient-acceptance.final-dissipation-ratio', 'Biot transient final pore-pressure dissipation ratio', { nonNegative: true });
|
|
1802
|
+
if (acceptedStepCountOk && timeStepCountOk && transientAcceptance.acceptedStepCount !== envelope.timeStepCount) {
|
|
1803
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.accepted-step-count-mismatch', 'Biot accepted step count must match the envelope time-step count.'));
|
|
1804
|
+
}
|
|
1805
|
+
if (requiredStepCountOk && transientAcceptance.requiredStepCount < FEM_MIN_BIOT_TRANSIENT_STEPS) {
|
|
1806
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.required-step-count-too-small', 'Biot required transient step count is below the preview policy.'));
|
|
1807
|
+
}
|
|
1808
|
+
if (acceptedStepCountOk && requiredStepCountOk && transientAcceptance.acceptedStepCount < transientAcceptance.requiredStepCount) {
|
|
1809
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.accepted-step-count-too-small', 'Biot accepted step count is below the required transient step count.'));
|
|
1810
|
+
}
|
|
1811
|
+
if (maxResidualOk && transientAcceptance.maxResidualNormRatio > 1e-3) {
|
|
1812
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.max-residual-too-large', 'Biot transient maximum residual ratio exceeds the preview tolerance.'));
|
|
1813
|
+
}
|
|
1814
|
+
if (maxMassBalanceOk && transientAcceptance.maxMassBalanceErrorRatio > 1e-3) {
|
|
1815
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.max-mass-balance-too-large', 'Biot transient maximum mass-balance ratio exceeds the preview tolerance.'));
|
|
1816
|
+
}
|
|
1817
|
+
if (finalDissipationOk && dissipationRatioOk) {
|
|
1818
|
+
pushApproximateMatchFinding(findings, transientAcceptance.finalPorePressureDissipationRatio, envelope.porePressureDissipationRatio, 'result.biot-transient-acceptance.final-dissipation-envelope-mismatch', 'Biot transient final dissipation ratio', 1e-12);
|
|
1819
|
+
}
|
|
1820
|
+
if (transientAcceptance.dissipationCheckMode === 'drained-dissipation' &&
|
|
1821
|
+
transientAcceptance.monotonicAverageFreePressureDissipationRequired !== true) {
|
|
1822
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.drained-monotonic-required', 'Drained-dissipation Biot acceptance must require monotonic average free pore-pressure dissipation.'));
|
|
1823
|
+
}
|
|
1824
|
+
if (transientAcceptance.monotonicAverageFreePressureDissipationRequired &&
|
|
1825
|
+
transientAcceptance.monotonicAverageFreePressureDissipation !== true) {
|
|
1826
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.average-free-pressure-not-monotonic', 'Required average free pore-pressure dissipation was not monotonic.'));
|
|
1827
|
+
}
|
|
1828
|
+
if (transientAcceptance.monotonicMaxPressureEnvelope !== true) {
|
|
1829
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.max-pressure-not-monotonic', 'Biot maximum pore-pressure envelope must be monotonic non-increasing.'));
|
|
1830
|
+
}
|
|
1831
|
+
if (!Array.isArray(transientAcceptance.blockerCodes)) {
|
|
1832
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.blocker-codes.invalid', 'Biot transient acceptance blocker codes must be an array.'));
|
|
1833
|
+
}
|
|
1834
|
+
else if (transientAcceptance.accepted && transientAcceptance.blockerCodes.length > 0) {
|
|
1835
|
+
findings.push(finding('blocker', 'result.biot-transient-acceptance.blocker-codes-not-empty', 'Accepted Biot transient metadata must not include blocker codes.'));
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1512
1838
|
}
|
|
1513
1839
|
}
|
|
1514
1840
|
export function validateFemResultManifest(manifest) {
|
|
@@ -1545,6 +1871,7 @@ export function validateFemResultManifest(manifest) {
|
|
|
1545
1871
|
'builtin-staged-consolidation-1d',
|
|
1546
1872
|
'builtin-nonlinear-column-v0',
|
|
1547
1873
|
'builtin-biot-up-plane-strain-v0',
|
|
1874
|
+
FEM_PLANE_STRAIN_DP_ADAPTIVE_BACKEND_ID,
|
|
1548
1875
|
]);
|
|
1549
1876
|
if (!validBackendIds.has(manifest.backend.id)) {
|
|
1550
1877
|
findings.push(finding('blocker', 'result.backend.id-invalid', `Unsupported FEM result backend: ${String(manifest.backend.id)}.`));
|
|
@@ -1558,6 +1885,12 @@ export function validateFemResultManifest(manifest) {
|
|
|
1558
1885
|
if (!isNonEmptyString(manifest.backend.version)) {
|
|
1559
1886
|
findings.push(finding('blocker', 'result.backend.version.missing', 'Result backend version must be a non-empty string.'));
|
|
1560
1887
|
}
|
|
1888
|
+
if (manifest.productionReady === true) {
|
|
1889
|
+
findings.push(finding('blocker', 'result.production-ready.overclaim', 'FEM result manifests must not claim productionReady true in strong-beta preview mode.'));
|
|
1890
|
+
}
|
|
1891
|
+
if (manifest.backend.productionReady === true) {
|
|
1892
|
+
findings.push(finding('blocker', 'result.backend.production-ready.overclaim', 'FEM result backends must not claim productionReady true in strong-beta preview mode.'));
|
|
1893
|
+
}
|
|
1561
1894
|
for (const [key, value] of Object.entries(manifest.envelope)) {
|
|
1562
1895
|
if (!Number.isFinite(value)) {
|
|
1563
1896
|
findings.push(finding('blocker', `result.envelope.${key}.non-finite`, `Envelope value ${key} must be finite.`));
|