Read Local States#
After dehomogenization and/or failure analysis, local state fields (strain/stress/displacement/failure index/strength ratio) of the SG can be read using the sgio.readOutputState() function.
Read VABS Element Local Strain and Stress Fields and Visualize in Gmsh#
Consider the following VABS output file (sgio/examples/files/cs_box_t_vabs41.sg.ELE) after dehomogenization.
This file contains the local strains and stresses of each element of the cross-section, in both the global and material coordinate systems.
Strains/stresses for each element for load case # 1
1 6.6548337309E-06 -2.6345993204E-05 7.8560962337E-06 -1.7183610831E-06 -2.6521318074E-07 -2.0114465020E-06 1.0750124132E+02 -1.0312628657E+01 5.3297065333E+00 1.1125186688E-01 -2.2293680617E-02 -1.9763155864E-02 4.5425790932E-06 -2.7331486560E-05 7.8110701245E-06 3.9389355464E-07 -8.8077782347E-07 -2.0114465020E-06 1.0522691629E+02 -1.8585410861E+01 5.3115276847E+00 2.3855769008E+00 -4.4038891173E-01 -1.9763155864E-02
2 -1.4024016611E-07 1.8995431356E-05 5.7329007405E-06 -6.7419457110E-07 -2.4441809558E-07 1.2292066807E-07 2.7978014946E+01 1.5080740468E+01 3.8885789793E+00 -7.2149438297E-02 -4.1765781659E-02 2.0973407179E-02 1.3422429727E-06 1.8678037203E-05 5.6960512980E-06 -2.1566777099E-06 -6.9346284416E-07 1.2292066807E-07 3.0164490479E+01 1.2701065298E+01 3.8733148826E+00 -2.2586249708E+00 -3.4673142208E-01 2.0973407179E-02
3 -1.4422803101E-07 3.3490955634E-05 1.1628523030E-06 -1.0687038767E-06 -2.0138168215E-08 1.3112251832E-07 5.1745575112E+01 2.6765522794E+01 7.8916754100E-01 8.3425533522E-02 6.2805178236E-03 2.8104031875E-02 2.4696509173E-06 3.2934006511E-05 1.1576875950E-06 -3.6825828249E-06 -1.1131242912E-07 1.3112251832E-07 5.5614601957E+01 2.2395124427E+01 7.8722756459E-01 -3.7856013114E+00 -5.5656214562E-02 2.8104031875E-02
4 6.7246332002E-06 -2.8812834172E-05 4.5138491289E-06 -1.6070394459E-06 -1.2859360038E-07 -2.0314926853E-06 1.0507505109E+02 -1.2184032322E+01 3.0626053577E+00 1.9065881653E-01 -8.8834660925E-04 1.2910104904E-02 4.4196846922E-06 -2.9761461124E-05 4.4898451008E-06 6.9790906200E-07 -4.8234971013E-07 -2.0314926853E-06 1.0252339806E+02 -2.0237793565E+01 3.0530946686E+00 2.7423118522E+00 -2.4117485507E-01 1.2910104904E-02
5 -1.2059035458E-07 2.0737716048E-05 3.4017766843E-06 -7.9666955239E-07 -7.8964312052E-08 1.2190946936E-07 3.1244454738E+01 1.6514922433E+01 2.3083270623E+00 -1.4865691327E-01 8.3243080405E-03 -2.4453686697E-03 1.4972945751E-06 2.0376638264E-05 3.3850946735E-06 -2.4145544820E-06 -3.4562121395E-07 1.2190946936E-07 3.3634707145E+01 1.3856114019E+01 2.3018643780E+00 -2.5389093201E+00 -1.7281060697E-01 -2.4453686697E-03
6 -7.6611529969E-08 3.3454676706E-05 2.9844140853E-06 -1.0677426807E-06 -5.8060534702E-08 5.9705432061E-08 5.3206212289E+01 2.6848015414E+01 2.0252772597E+00 1.0021933547E-01 1.2923268591E-02 -3.4745039472E-02 2.5340194622E-06 3.2887747049E-05 2.9706587556E-06 -3.6783736729E-06 -2.9203598386E-07 5.9705432061E-08 5.7079255769E+01 2.2363667994E+01 2.0200479538E+00 -3.7728241444E+00 -1.4601799193E-01 -3.4745039472E-02
7 -2.2992070705E-07 3.7716144026E-05 4.1391582983E-06 -1.1803731130E-06 -1.3781368150E-07 1.5394254279E-07 5.6734134697E+01 3.0031064955E+01 2.8081009583E+00 8.1447333511E-02 -1.0783913839E-02 1.0815287927E-02 2.7142808768E-06 3.7103112193E-05 4.1155859178E-06 -4.1245746968E-06 -4.6214346507E-07 1.5394254279E-07 6.1083283982E+01 2.5230116291E+01 2.7985984241E+00 -4.2677019517E+00 -2.3107173253E-01 1.0815287927E-02
8 6.9325495617E-06 -6.5422656001E-06 6.9052020091E-06 -2.5730456906E-06 -2.5289542865E-07 -2.0105673220E-06 1.4628260870E+02 6.1066899659E+00 4.6843255211E+00 6.6267610687E-02 -2.9508892534E-02 3.2993615006E-03 6.3623168264E-06 -7.9487221625E-06 6.8640736291E-06 -2.0028129553E-06 -7.9389174189E-07 -2.0105673220E-06 1.4633782258E+02 -5.4051310705E+00 4.6675700678E+00 1.1053728183E-02 -3.9694587095E-01 3.2993615006E-03
9 -3.1367237010E-07 4.6424007637E-06 5.0950737363E-06 -6.9804722839E-08 -1.9427763532E-07 1.2022945485E-07 5.0218332952E-01 3.2262029083E+00 3.4562692930E+00 -4.2131468096E-02 -2.5620024782E-02 1.1181040405E-02 5.0944577586E-08 4.6233944116E-06 5.0641244768E-06 -4.3442167053E-07 -5.9343362023E-07 1.2022945485E-07 1.0035219464E+00 3.1439081999E+00 3.4436046442E+00 -5.4347008497E-01 -2.9671681012E-01 1.1181040405E-02
To read the data, we need to first read the cross-sectional data using sgio.read().
Then read the local state fields using sgio.readOutputState().
The returned object is a list of N sgio.model.StateCase objects corresponding to N load cases.
# Step 1: Read the mesh from VABS input file
print("\n[Step 1] Reading mesh from VABS input file...")
sg = sgio.read(
filename=str(input_file),
file_format='vabs',
)
print(f" ✓ Loaded mesh with {len(sg.mesh.points)} nodes and {len(sg.mesh.cells)} elements")
# Step 2: Read the dehomogenization output state
# The .ELE file contains element-level stress/strain data
print("\n[Step 2] Reading dehomogenization output...")
state_cases = sgio.readOutputState(
filename=str(input_file),
file_format='vabs',
analysis='d', # 'd' for dehomogenization
extension='ele', # Element-level data
sg=sg,
tool_version='4.1'
)
print(f" ✓ Loaded {len(state_cases)} load case(s)")
Then, we need to add the local state fields to the cross-sectional data.
# Step 3: Extract stress data and add to mesh
print("\n[Step 3] Adding stress data to mesh...")
state_case = state_cases[0] # Use first load case
# Get the stress tensor in material coordinates (esm)
# esm = element stress in material coordinates
stress_data = state_case.getState('esm').data
# Add the stress components to the mesh as cell data
sgio.addCellDictDataToMesh(
dict_data=stress_data,
name=[
'S11 (M)', # Normal stress in direction 1
'S12 (M)', # Shear stress in 1-2 plane
'S13 (M)', # Shear stress in 1-3 plane
'S22 (M)', # Normal stress in direction 2
'S23 (M)', # Shear stress in 2-3 plane
'S33 (M)' # Normal stress in direction 3
],
mesh=sg.mesh
)
print(f" ✓ Added stress components to mesh")
Finally, we need to write the cross-sectional data to a Gmsh file.
# Step 4: Write the mesh with stress data to Gmsh format
print("\n[Step 4] Writing mesh to Gmsh format...")
sgio.write(
sg=sg,
fn=str(output_file),
file_format='gmsh',
)
print(f" ✓ Saved to: {output_file}")
The following figure shows the visualization of the local stress field of the cross-section in the material coordinate system.