"description":"Core half-thickness. Stiffness scales ~quadratically via sandwich effect (lever arm). Also adds core mass linearly."
},
{
"id":"dv_002",
"name":"beam_face_thickness",
"expression_name":"beam_face_thickness",
"type":"continuous",
"bounds":{
"min":10,
"max":40
},
"baseline":20,
"units":"mm",
"enabled":true,
"description":"Face sheet thickness. Primary bending stiffness contributor AND primary mass contributor. Key trade-off variable."
},
{
"id":"dv_003",
"name":"holes_diameter",
"expression_name":"holes_diameter",
"type":"continuous",
"bounds":{
"min":150,
"max":450
},
"baseline":300,
"units":"mm",
"enabled":true,
"description":"Lightening hole diameter. Mass reduction scales with d². Stress concentration scales with hole size. Geometric feasibility depends on beam web length."
},
{
"id":"dv_004",
"name":"hole_count",
"expression_name":"hole_count",
"type":"integer",
"bounds":{
"min":5,
"max":15
},
"baseline":10,
"units":"",
"enabled":true,
"description":"Number of lightening holes in the web. Integer variable (11 levels). Interacts strongly with holes_diameter for geometric feasibility."
}
],
"extractors":[
{
"id":"ext_001",
"name":"Mass Extractor",
"type":"expression",
"config":{
"expression_name":"p173",
"description":"Total beam mass from NX expression"
},
"outputs":[
{
"name":"mass",
"metric":"total",
"units":"kg"
}
]
},
{
"id":"ext_002",
"name":"Displacement Extractor",
"type":"displacement",
"config":{
"method":"result_sensor_or_op2",
"component":"magnitude",
"location":"beam_tip",
"description":"Tip displacement magnitude from SOL 101. Preferred: NX result sensor. Fallback: parse .op2 at tip node ID.",
"TODO":"Confirm displacement sensor exists in Beam_sim1.sim OR identify tip node ID"
},
"outputs":[
{
"name":"tip_displacement",
"metric":"max_magnitude",
"units":"mm"
}
]
},
{
"id":"ext_003",
"name":"Stress Extractor",
"type":"stress",
"config":{
"method":"op2_elemental_nodal",
"stress_type":"von_mises",
"scope":"all_elements",
"unit_conversion":"kPa_to_MPa",
"description":"Max von Mises stress (elemental nodal) from SOL 101. pyNastran returns kPa for NX kg-mm-s units — divide by 1000 for MPa.",
"TODO":"Verify element types in model (CQUAD4? CTETRA? CHEXA?) and confirm stress scope"