feat: Add centralized configuration system and Phase 3.2 enhancements
Major Features Added: 1. Centralized Configuration System (config.py) - Single source of truth for all NX and environment paths - Change NX version in ONE place: NX_VERSION = "2412" - Change Python environment in ONE place: PYTHON_ENV_NAME = "atomizer" - Automatic path derivation and validation - Helper functions: get_nx_journal_command() - Future-proof: Easy to upgrade when NX 2506+ released 2. NX Path Corrections (Critical Fix) - Fixed all incorrect Simcenter3D_2412 references to NX2412 - Updated nx_updater.py to use config.NX_RUN_JOURNAL - Updated dashboard/api/app.py to use config.NX_RUN_JOURNAL - Corrected material library path to NX2412/UGII/materials - All files now use correct NX2412 installation 3. NX Expression Import System - Dual-method expression gathering (.exp export + binary parsing) - Robust handling of all NX expression types - Support for formulas, units, and dependencies - Documented in docs/NX_EXPRESSION_IMPORT_SYSTEM.md 4. Study Management & Analysis Tools - StudyCreator: Unified interface for study/substudy creation - BenchmarkingSubstudy: Automated baseline analysis - ComprehensiveResultsAnalyzer: Multi-result extraction from .op2 - Expression extractor generator (LLM-powered) 5. 50-Trial Beam Optimization Complete - Full optimization results documented - Best design: 23.1% improvement over baseline - Comprehensive analysis with plots and insights - Results in studies/simple_beam_optimization/ Documentation Updates: - docs/SYSTEM_CONFIGURATION.md - System paths and validation - docs/QUICK_CONFIG_REFERENCE.md - Quick config change guide - docs/NX_EXPRESSION_IMPORT_SYSTEM.md - Expression import details - docs/OPTIMIZATION_WORKFLOW.md - Complete workflow guide - Updated README.md with NX2412 paths Files Modified: - config.py (NEW) - Central configuration system - optimization_engine/nx_updater.py - Now uses config - dashboard/api/app.py - Now uses config - optimization_engine/study_creator.py - Enhanced features - optimization_engine/benchmarking_substudy.py - New analyzer - optimization_engine/comprehensive_results_analyzer.py - Multi-result extraction - optimization_engine/result_extractors/generated/extract_expression.py - Generated extractor Cleanup: - Removed all temporary test files - Removed migration scripts (no longer needed) - Clean production-ready codebase Strategic Impact: - Configuration maintenance time: reduced from hours to seconds - Path consistency: 100% enforced across codebase - Future NX upgrades: Edit ONE variable in config.py - Foundation for Phase 3.2 Integration completion 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"best_trial_number": 43,
|
||||
"best_params": {
|
||||
"beam_half_core_thickness": 39.835977148950434,
|
||||
"beam_face_thickness": 39.97606330808705,
|
||||
"holes_diameter": 235.73841184921832,
|
||||
"hole_count": 11
|
||||
},
|
||||
"best_value": 842.5871322101043,
|
||||
"timestamp": "2025-11-17T12:56:49.443658"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 0,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 30.889245901635,
|
||||
"beam_face_thickness": 25.734879738683965,
|
||||
"holes_diameter": 196.88120747479843,
|
||||
"hole_count": 8
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 15.094435691833496,
|
||||
"max_stress": 94.004625,
|
||||
"mass": 1579.95831975008
|
||||
},
|
||||
"objective": 573.1885187433323,
|
||||
"penalty": 509.44356918334967,
|
||||
"total_objective": 1082.632087926682,
|
||||
"timestamp": "2025-11-17T12:35:07.090019"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 1,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 11.303198040010104,
|
||||
"beam_face_thickness": 16.282803447622868,
|
||||
"holes_diameter": 429.3010428935242,
|
||||
"hole_count": 6
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 37.07490158081055,
|
||||
"max_stress": 341.66096875,
|
||||
"mass": 645.897660512099
|
||||
},
|
||||
"objective": 344.58804178328114,
|
||||
"penalty": 2707.4901580810547,
|
||||
"total_objective": 3052.078199864336,
|
||||
"timestamp": "2025-11-17T12:35:32.903554"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 2,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 22.13055862881592,
|
||||
"beam_face_thickness": 10.613383555548651,
|
||||
"holes_diameter": 208.51035503920883,
|
||||
"hole_count": 15
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 28.803829193115234,
|
||||
"max_stress": 418.65240625,
|
||||
"mass": 965.750784009661
|
||||
},
|
||||
"objective": 476.0158242595128,
|
||||
"penalty": 1880.3829193115234,
|
||||
"total_objective": 2356.398743571036,
|
||||
"timestamp": "2025-11-17T12:35:59.234414"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 3,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 39.78301412313181,
|
||||
"beam_face_thickness": 30.16401688307248,
|
||||
"holes_diameter": 226.25741233381117,
|
||||
"hole_count": 11
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 12.913118362426758,
|
||||
"max_stress": 79.3666484375,
|
||||
"mass": 1837.45194552324
|
||||
},
|
||||
"objective": 655.1859845218776,
|
||||
"penalty": 291.3118362426758,
|
||||
"total_objective": 946.4978207645534,
|
||||
"timestamp": "2025-11-17T12:36:28.057060"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 4,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 39.70778774581336,
|
||||
"beam_face_thickness": 24.041841898010958,
|
||||
"holes_diameter": 166.95548469781374,
|
||||
"hole_count": 7
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 13.88154411315918,
|
||||
"max_stress": 86.727765625,
|
||||
"mass": 1884.56761364204
|
||||
},
|
||||
"objective": 673.9540608518862,
|
||||
"penalty": 388.15441131591797,
|
||||
"total_objective": 1062.1084721678042,
|
||||
"timestamp": "2025-11-17T12:36:55.243019"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 5,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 24.66688696685749,
|
||||
"beam_face_thickness": 21.365405059488964,
|
||||
"holes_diameter": 286.4471575094528,
|
||||
"hole_count": 12
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 19.82601547241211,
|
||||
"max_stress": 117.1086640625,
|
||||
"mass": 1142.21061932314
|
||||
},
|
||||
"objective": 433.5400548163886,
|
||||
"penalty": 982.6015472412109,
|
||||
"total_objective": 1416.1416020575996,
|
||||
"timestamp": "2025-11-17T12:37:22.635864"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 6,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 39.242879452291646,
|
||||
"beam_face_thickness": 32.18506500188219,
|
||||
"holes_diameter": 436.51250169202365,
|
||||
"hole_count": 13
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 16.844642639160156,
|
||||
"max_stress": 306.56965625,
|
||||
"mass": 1914.99718165845
|
||||
},
|
||||
"objective": 757.8257603972959,
|
||||
"penalty": 684.4642639160156,
|
||||
"total_objective": 1442.2900243133115,
|
||||
"timestamp": "2025-11-17T12:37:50.959376"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 7,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 35.78960605381189,
|
||||
"beam_face_thickness": 16.179345665594845,
|
||||
"holes_diameter": 398.22414702490045,
|
||||
"hole_count": 5
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 21.607704162597656,
|
||||
"max_stress": 178.53709375,
|
||||
"mass": 1348.70132255832
|
||||
},
|
||||
"objective": 524.6062329809861,
|
||||
"penalty": 1160.7704162597656,
|
||||
"total_objective": 1685.3766492407517,
|
||||
"timestamp": "2025-11-17T12:38:18.179861"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 8,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 27.728024240271356,
|
||||
"beam_face_thickness": 11.090089187753673,
|
||||
"holes_diameter": 313.9008672451611,
|
||||
"hole_count": 8
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 26.84396743774414,
|
||||
"max_stress": 381.82384375,
|
||||
"mass": 1034.59413235398
|
||||
},
|
||||
"objective": 486.62238269230886,
|
||||
"penalty": 1684.396743774414,
|
||||
"total_objective": 2171.019126466723,
|
||||
"timestamp": "2025-11-17T12:38:45.087529"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 9,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 18.119343306048837,
|
||||
"beam_face_thickness": 20.16315997344769,
|
||||
"holes_diameter": 173.3969994563894,
|
||||
"hole_count": 8
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 20.827360153198242,
|
||||
"max_stress": 128.911234375,
|
||||
"mass": 1077.93936662489
|
||||
},
|
||||
"objective": 415.9131208467681,
|
||||
"penalty": 1082.7360153198242,
|
||||
"total_objective": 1498.6491361665924,
|
||||
"timestamp": "2025-11-17T12:39:12.237240"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 10,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 33.58715600335504,
|
||||
"beam_face_thickness": 39.75984124814616,
|
||||
"holes_diameter": 255.0476456917857,
|
||||
"hole_count": 11
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 12.266990661621094,
|
||||
"max_stress": 74.4930625,
|
||||
"mass": 1780.55048209652
|
||||
},
|
||||
"objective": 634.0179814561518,
|
||||
"penalty": 226.69906616210938,
|
||||
"total_objective": 860.7170476182612,
|
||||
"timestamp": "2025-11-17T12:39:38.848354"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 11,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 32.27331435131255,
|
||||
"beam_face_thickness": 37.6195284386346,
|
||||
"holes_diameter": 293.3640949555476,
|
||||
"hole_count": 11
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 13.364336967468262,
|
||||
"max_stress": 81.6450546875,
|
||||
"mass": 1624.10229894857
|
||||
},
|
||||
"objective": 583.5478808886534,
|
||||
"penalty": 336.4336967468262,
|
||||
"total_objective": 919.9815776354795,
|
||||
"timestamp": "2025-11-17T12:40:05.309424"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 12,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 32.942924648842,
|
||||
"beam_face_thickness": 39.743362881313274,
|
||||
"holes_diameter": 286.06340726855376,
|
||||
"hole_count": 10
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 12.673440933227539,
|
||||
"max_stress": 77.3124296875,
|
||||
"mass": 1695.73916749434
|
||||
},
|
||||
"objective": 606.2466542529157,
|
||||
"penalty": 267.3440933227539,
|
||||
"total_objective": 873.5907475756696,
|
||||
"timestamp": "2025-11-17T12:40:31.699172"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 13,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 32.97413751120997,
|
||||
"beam_face_thickness": 39.935536143903136,
|
||||
"holes_diameter": 349.6362269742979,
|
||||
"hole_count": 10
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 14.207616806030273,
|
||||
"max_stress": 92.197078125,
|
||||
"mass": 1535.21827734665
|
||||
},
|
||||
"objective": 557.087763625101,
|
||||
"penalty": 420.76168060302734,
|
||||
"total_objective": 977.8494442281284,
|
||||
"timestamp": "2025-11-17T12:40:57.928990"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 14,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 29.540902181947992,
|
||||
"beam_face_thickness": 34.55266304078297,
|
||||
"holes_diameter": 250.72025705358874,
|
||||
"hole_count": 14
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 14.019026756286621,
|
||||
"max_stress": 83.0820703125,
|
||||
"mass": 1588.40507617186
|
||||
},
|
||||
"objective": 572.101087931132,
|
||||
"penalty": 401.9026756286621,
|
||||
"total_objective": 974.0037635597942,
|
||||
"timestamp": "2025-11-17T12:41:24.105123"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 15,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 34.860198550796696,
|
||||
"beam_face_thickness": 35.33928916461123,
|
||||
"holes_diameter": 260.87542051756594,
|
||||
"hole_count": 10
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 12.861929893493652,
|
||||
"max_stress": 77.8935703125,
|
||||
"mass": 1719.35411237566
|
||||
},
|
||||
"objective": 614.5297132757023,
|
||||
"penalty": 286.19298934936523,
|
||||
"total_objective": 900.7227026250675,
|
||||
"timestamp": "2025-11-17T12:41:50.221728"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 16,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 21.50858482334314,
|
||||
"beam_face_thickness": 29.036545941104837,
|
||||
"holes_diameter": 329.2844212138242,
|
||||
"hole_count": 9
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 17.84798240661621,
|
||||
"max_stress": 111.860109375,
|
||||
"mass": 1174.43974312943
|
||||
},
|
||||
"objective": 442.1131829519396,
|
||||
"penalty": 784.7982406616211,
|
||||
"total_objective": 1226.9114236135606,
|
||||
"timestamp": "2025-11-17T12:42:17.268916"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 17,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 27.020615513897393,
|
||||
"beam_face_thickness": 39.66854106341591,
|
||||
"holes_diameter": 347.6137353421101,
|
||||
"hole_count": 12
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 20.929889678955078,
|
||||
"max_stress": 142.83046875,
|
||||
"mass": 1427.85591027083
|
||||
},
|
||||
"objective": 539.5119277736375,
|
||||
"penalty": 1092.9889678955078,
|
||||
"total_objective": 1632.5008956691454,
|
||||
"timestamp": "2025-11-17T12:42:43.230566"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trial_number": 18,
|
||||
"design_variables": {
|
||||
"beam_half_core_thickness": 35.67817961473702,
|
||||
"beam_face_thickness": 35.70524160356021,
|
||||
"holes_diameter": 256.1571734597351,
|
||||
"hole_count": 13
|
||||
},
|
||||
"results": {
|
||||
"max_displacement": 12.883788108825684,
|
||||
"max_stress": 76.9096796875,
|
||||
"mass": 1757.46421023792
|
||||
},
|
||||
"objective": 627.1696758536802,
|
||||
"penalty": 288.37881088256836,
|
||||
"total_objective": 915.5484867362486,
|
||||
"timestamp": "2025-11-17T12:43:09.457316"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user