feat: named case-result load combinations with full GUI support

Snapshots the current development tree, headlined by proper load
combinations (user request): a reusable LoadCombination entity of
weighted completed static-case results (e.g. 1.2xDead + 1.6xLive).

- core: LoadCombination/LoadCombinationItem entities, Project
  integration (lookup, unique ids, reference validation)
- services: combinations.py (linear superposition + envelope),
  exported via services __init__
- commands: undoable Add/Delete/Update for combinations
- GUI: Load Combinations manager dialog, Run-dialog evaluation,
  envelope display in Results panel, Combinations tab in Table dock
- tests: unit coverage (validation, math, error paths) + integration
  superposition check vs a single factored run
This commit is contained in:
smill 2026-09-11 13:19:59 -04:00
commit f361fee969
560 changed files with 178701 additions and 0 deletions

View file

@ -0,0 +1,35 @@
# Minimal synthetic .mat fixture for snapshot tests
BOOK: Test_Book
MATERIAL: TestMaterial
COMMENT: A minimal test material.\n
QUESTION: Material:#CB#(TestMat)
VALUE: TestMat
HELP: The material type identifier.
TKWIDGET: TK_UpdateInfoBar
IMAGE: img/test.png
QUESTION: Formulation#CB#(Stress-Strain,Force-Deformation)
VALUE: Stress-Strain
DEPENDENCIES: (Stress-Strain,RESTORE,Elastic_modulus_E,#CURRENT#,HIDE,Stiffness_K,#CURRENT#)
DEPENDENCIES: (Force-Deformation,HIDE,Elastic_modulus_E,#CURRENT#,RESTORE,Stiffness_K,#CURRENT#)
QUESTION: Elastic_modulus_E#UNITS#
VALUE: 30 GPa
HELP: Young modulus of elasticity.
QUESTION: Stiffness_K#UNITS#
VALUE: 4000 kN/m
QUESTION: Gap_size
VALUE: 0.0#WIDTH#(10)
HELP: Gap size value.
QUESTION: Combo_sub(Val_A,Val_B,Val_C)
VALUE: #N# 3 1.0 2.0 3.0
TKWIDGET: TK_MaterialWikiInfo
QUESTION: _#CB#(_)
VALUE:
STATE: HIDDEN
TKWIDGET: TK_MaterialTester
QUESTION: Set_as_variable#CB#(0,1)
VALUE: 0
END MATERIAL

View file

@ -0,0 +1,178 @@
{
"mat_books": [
{
"name": "Test_Book",
"source": "mat",
"entries": [
{
"name": "TestMaterial",
"book": "Test_Book",
"source_type": "MATERIAL",
"comment": "A minimal test material.\\n",
"image": "",
"tkwidgets": [],
"fields": [
{
"name": "Material",
"widget_type": "CB",
"options": [
"TestMat"
],
"default": "TestMat",
"width_hint": null,
"help_text": "The material type identifier.",
"image": "img/test.png",
"state": null,
"tkwidgets": [
"TK_UpdateInfoBar"
],
"dependencies": [],
"section_title": null
},
{
"name": "Formulation",
"widget_type": "CB",
"options": [
"Stress-Strain",
"Force-Deformation"
],
"default": "Stress-Strain",
"width_hint": null,
"help_text": "",
"image": "",
"state": null,
"tkwidgets": [],
"dependencies": [
{
"trigger": "Stress-Strain",
"actions": [
{
"action": "RESTORE",
"field": "Elastic_modulus_E",
"target": "#CURRENT#"
},
{
"action": "HIDE",
"field": "Stiffness_K",
"target": "#CURRENT#"
}
]
},
{
"trigger": "Force-Deformation",
"actions": [
{
"action": "HIDE",
"field": "Elastic_modulus_E",
"target": "#CURRENT#"
},
{
"action": "RESTORE",
"field": "Stiffness_K",
"target": "#CURRENT#"
}
]
}
],
"section_title": null
},
{
"name": "Elastic_modulus_E",
"widget_type": "UNITS",
"options": [],
"default": "30 GPa",
"width_hint": null,
"help_text": "Young modulus of elasticity.",
"image": "",
"state": null,
"tkwidgets": [],
"dependencies": [],
"section_title": null
},
{
"name": "Stiffness_K",
"widget_type": "UNITS",
"options": [],
"default": "4000 kN/m",
"width_hint": null,
"help_text": "",
"image": "",
"state": null,
"tkwidgets": [],
"dependencies": [],
"section_title": null
},
{
"name": "Gap_size",
"widget_type": "SCALAR",
"options": [],
"default": "0.0",
"width_hint": 10,
"help_text": "Gap size value.",
"image": "",
"state": null,
"tkwidgets": [],
"dependencies": [],
"section_title": null
},
{
"name": "Combo_sub",
"widget_type": "TUPLE",
"options": [
"Val_A",
"Val_B",
"Val_C"
],
"default": "#N# 3 1.0 2.0 3.0",
"width_hint": null,
"help_text": "",
"image": "",
"state": null,
"tkwidgets": [
"TK_MaterialWikiInfo"
],
"dependencies": [],
"section_title": null
},
{
"name": "_",
"widget_type": "CB",
"options": [
"_"
],
"default": "",
"width_hint": null,
"help_text": "",
"image": "",
"state": "HIDDEN",
"tkwidgets": [
"TK_MaterialTester"
],
"dependencies": [],
"section_title": null
},
{
"name": "Set_as_variable",
"widget_type": "CB",
"options": [
"0",
"1"
],
"default": "0",
"width_hint": null,
"help_text": "",
"image": "",
"state": null,
"tkwidgets": [],
"dependencies": [],
"section_title": null
}
],
"condtype": "",
"condmeshtype": ""
}
]
}
],
"cnd_books": []
}