zerolength section element - moment curvature analysis

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
ozancemcelik
Posts: 3
Joined: Fri May 13, 2005 3:26 pm
Location: Georgia Tech

zerolength section element - moment curvature analysis

Post by ozancemcelik »

I'm performing moment-curvature analysis for a reinforced concrete T-section. I have used fiber section to define the T-section, with local x-axis defined at the mid-height of the section. However, when I modified the moment-curvature script (that is posted on the website) to get the axial strain (which is the axial displacement at the non-restrained node), I realized that it is the axial strain at the geometric center of the T-section, not at the local x-axis. Any idea why this is the case? Thanks...

Ozan.
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

because the section assumes that the strains (axial, curvature) that it receives
are given for the geometric center .. this defines the beam line in the analysis .. all
fiber strains & resulting section properties are based on these strains and the centroid .. the code is below:

if you want the strain at your local x-axis, record the strain at the fiber level from
a fiber placed at the centroid or a dummy fiber (0 stress and tangent for any strain) placed at the mid height of the section.
------------------------- CODE BELOW -------------------------------------------------------
int FiberSection2d::setTrialSectionDeformation (const Vector &deforms)
{
int res = 0;

e = deforms;

kData[0] = 0.0; kData[1] = 0.0; kData[2] = 0.0; kData[3] = 0.0;
sData[0] = 0.0; sData[1] = 0.0;

int loc = 0;

double d0 = deforms(0);
double d1 = deforms(1);

for (int i = 0; i < numFibers; i++) {
UniaxialMaterial *theMat = theMaterials;
double y = matData[loc++] - yBar;
double A = matData[loc++];

// determine material strain and set it
double strain = d0 + y*d1;
double tangent, stress;
res = theMat->setTrial(strain, stress, tangent);

double ks0 = tangent * A;
double ks1 = ks0 * y;
kData[0] += ks0;
kData[1] += ks1;
kData[3] += ks1 * y;

double fs0 = stress * A;
sData[0] += fs0;
sData[1] += fs0 * y;
}

kData[2] = kData[1];

return res;
}
Post Reply