stress strain plot uniaxial compression of concrete cylinder

13 views
Skip to first unread message

Jubin Adhikari

unread,
Jun 12, 2026, 1:06:19 PM (13 hours ago) Jun 12
to LS-DYNA2
Hi, everyone, is there any specific way to extract strain values for a concrete cylinder or we need to calculate manually by tracking the displacement of selective nodes?

Osama Elshamy

unread,
Jun 12, 2026, 1:20:58 PM (12 hours ago) Jun 12
to Jubin Adhikari, LS-DYNA2
Yes you can
Post—>History—> choose whatever you need. 

On Fri, Jun 12, 2026 at 10:06 AM Jubin Adhikari <jubinadh...@gmail.com> wrote:
Hi, everyone, is there any specific way to extract strain values for a concrete cylinder or we need to calculate manually by tracking the displacement of selective nodes?

--
You received this message because you are subscribed to the Google Groups "LS-DYNA2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ls-dyna2+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/ls-dyna2/eb98c46e-b9f3-4d8a-a754-ee02b7fc5b13n%40googlegroups.com.

l...@schwer.net

unread,
Jun 12, 2026, 1:36:13 PM (12 hours ago) Jun 12
to Jubin Adhikari, LS-DYNA2

The easiest way to measure the average axial strain is to difference the top & bottom displacements and divide the result by the original length of the cylinder.

 

The strain in individual elements may be obtained via a combination of keywords:

 

*DATABASE_ELOUT,  *DATABASE_EXTENT_BINARY (EPSFLG=1) and *Database_History_SOLID

 

                                --len

--

Christopher Chung

unread,
Jun 12, 2026, 2:03:21 PM (12 hours ago) Jun 12
to L...@schwer.net, Jubin Adhikari, LS-DYNA2
Here is a snippet of .py code I use to extract nodal displacements and forces then process them for strain (in this example the ref. config cross-sectional area is 1) and stress. I use the lasso.dyna py library to do this, you also need to flag out for a nodfor file if you want nodal forces. This is a great automated approach for extracting nodal displacements and forces. Here is the documentation: https://open-lasso-python.github.io/lasso-python/ 

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
from scipy import interpolate
from lasso.dyna import D3plot, ArrayType
# Check if d3plot exists
        if not os.path.exists(output_file):
            print(f"  Warning: {output_file} not found (simulation may have failed)")
            return 10000, np.array([]), np.array([]), np.zeros_like(exp_strain)
           
        sim_d = D3plot(output_file)
        sim_strain_raw = sim_d.arrays[ArrayType.node_displacement]
       
        # Read nodfor text file for nodal forces
        nodfor_file = "nodfor"
        if not os.path.exists(nodfor_file):
            print(f"  Warning: {nodfor_file} not found")
            return 10000, np.array([]), np.array([]), np.zeros_like(exp_strain)
       
        # Parse nodfor file for ytotal values
        sim_stress = []
        with open(nodfor_file, 'r') as f:
            for line in f:
                if 'ytotal=' in line:
                    ytotal = float(line.split('ytotal=')[1].split()[0])
                    sim_stress.append(ytotal / 1.0)  # Divide by original area (1.0 mm²) = engineering stress
       
        sim_stress = np.array(sim_stress)
       
        # Extract strain from displacement - match length with stress
        sim_strain = []
        n_steps = min(len(sim_stress), len(sim_strain_raw))
        for i in range(n_steps):
            sim_strain.append(sim_strain_raw[i][1][1] - sim_strain_raw[0][1][1])  # yy displacement

- CJ Chung
Reply all
Reply to author
Forward
0 new messages