deal with non-prismatic beam in xc #72
Replies: 12 comments 6 replies
-
You can model the tapered beams discretizing its length (that's certainly the solution that ETABS uses). All the solutions proposed in your ResearchGate link seem adequate. On the other hand, if you need a very precise solution (for example in the context of a PhD dissertation, it's better to use shell or brick elements). |
Beta Was this translation helpful? Give feedback.
-
Thanks, you mean we don't have an element for non-prismatic at all (in theoretical and thus in none of FEM software). Thanks. |
Beta Was this translation helpful? Give feedback.
-
Well, as Mr. Balduzzi says, there are more accurate elements like the one in this article. I you want to implement those elements in XC (or OpenSees of both), I'll be happy to help. On the other hand, for practical purposes, I would use the discretization mentioned before for the model of the whole structure, and make a more precise analysis when designing the connections by means of a CBFEM model. |
Beta Was this translation helpful? Give feedback.
-
Is it possible to share some of these models? |
Beta Was this translation helpful? Give feedback.
-
Hi @lcpt, How can I model general Steel I/Wide Flange sections, I mean without manually calculate the properties of sections like A, Iz or Ix? |
Beta Was this translation helpful? Give feedback.
-
You don't need to manually calculate the section properties you can use the steel shape database (at present AISC and Arcelor). You can also compute automatically the mass properties of any polygon using the geom module. Furthermore, you can also model the steel shape using fiber sections if you want to reproduce the nonlinear behavior of the material. |
Beta Was this translation helpful? Give feedback.
-
Thanks @lcpt. I don't want to model standard I/Wide Flange. I wanted to model general, I mean whatever BF, TF, H and TW. is it possible? |
Beta Was this translation helpful? Give feedback.
-
Thanks, @lcpt. I don't want to perform a nonlinear analyzing, can you write it on one line? For example this is in examples:
but I wanted to set (BF, TF, D, TW), not general polygon:
|
Beta Was this translation helpful? Give feedback.
-
I created two functions for creating lines and section for nonprismatic section: import xc_base
import geom
import xc
from materials.sections import section_properties
from materials import typical_materials as tm creating lines giving 2 points def create_lines(
p1,
p2,
n: int,
points,
lines,
point_id,
)-> list:
x1, y1, z1 = p1.getPos.x, p1.getPos.y, p1.getPos.z
x2, y2, z2 = p2.getPos.x, p2.getPos.y, p2.getPos.z
dx = (x2 - x1) / n
dy = (y2 - y1) / n
dz = (z2 - z1) / n
first_point = p1
new_lines = []
for i in range(n):
point_id += 1
x = first_point.getPos.x + dx
y = first_point.getPos.y + dy
z = first_point.getPos.z + dz
if all((x == x2, y == y2, z == z2)):
last_point = p2
else:
last_point = points.newPntIDPos3d(point_id, geom.Pos3d(x, y, z))
l = lines.newLine(first_point.tag, last_point.tag)
new_lines.append(l)
first_point = last_point
return new_lines, point_id creating sections, but I don't know how can I apply section on one line, not on Set: def apply_nonPrismatic_section(sets, bf, tf, tw, hw_min, hw_max, \
coordTransf, modelSpace, material, prep):
tag = 'isection'
isection = section_properties.ISection(tag,bf,tf,tw,hw_min,bf,tf)
linel_mat= tm.BeamMaterialData(name=tag, section=isection, material=material)
linel_mat.setupElasticShear3DSection(preprocessor=prep)
for Set in sets:
tag = Set.getLines[0].tag
# n = Set.lines.size
# dhw = hw_max - hw_min
# for line in Set.lines:
# z = line.getCentroid().z
# average_hw = hw_min + z / h_col * dhw
# isection = section_properties.ISection(f"isection{line.tag}",bf,tf,tw,average_hw,bf,tf)
# p1 = line.getP1().tag
# p2 = line.getP2().tag
# seedElemHandler.defaultMaterial = isection.sectionName
# seedElemHandler.newElement('elastic_beam3d', xc.ID([p1, p2]))
modelSpace.createElasticBeams(Set, linel_mat, coordTransf, xc.Vector([0.0,1.0,0.0]), nDiv= 6) creaitng lines: col_frame_a, n = create_lines(pt0, pt3, 10, points,lines, n)
col_frame_c, n = create_lines(pt1, pt7, 10, points,lines, n)
col_frame_e, n = create_lines(pt2, pt11, 10, points,lines, n) assign sections: apply_nonPrismatic_section([col_frame_a_set, col_frame_c_set], bf_col_ae, \
tf_col_ae, tw_col_ae, hw_col_ae_bot, hw_col_ae_top, coordTransf, \
modelSpace, steel_W, preprocessor) Thanks. complete code: |
Beta Was this translation helpful? Give feedback.
-
Thanks, @lcpt. I wrote the function (assume developing line in z direction, sufficient for my case now!): def apply_nonPrismatic_section(sets, bf, tf, tw, hw_min, hw_max, \
material, prep, element_handler):
# dia_bounds = {
# 'x': ['dia_bound.x', 'l_center.x', 'bnd.getZMin'],
# 'y': ['dia_bound.y', 'l_center.y', 'bnd.getZMin'],
# 'z': ['dia_bound.z', 'l_center.z', 'bnd.getZMin'],
# }
dhw = hw_max - hw_min
for Set in sets:
bnd = Set.lines.getBnd()
dz = bnd.diagonal.z
zmin = bnd.getZMin
for line in Set.getLines:
z_line = line.getCentroid().z
percent = abs(z_line - zmin) / dz
average_hw = hw_min + percent * dhw
assert average_hw > 0
# lines_len += l
isection = section_properties.ISection(f"isection{line.tag}",bf,tf,tw,average_hw,bf,tf)
xc_material= isection.defElasticShearSection3d(prep, material)
element_handler.defaultMaterial = xc_material.name
element_handler.newElement('ElasticBeam3d', xc.ID([0,0]))
line.genMesh(xc.meshDir.I)
for e in line.getElements:
e.setProp('crossSection',isection)
Set.fillDownwards() But when I want to create a report, It gives me this error for elements that using ISection shape class:
But for other elements works fine. allMemberSet = modelSpace.setSum('allMemberSet', [
# beam1Set,
beam2Set,
# col_frame_a_set,
# col_frame_e_set,
col_frame_c_set,
]) The commented sets are sets that created with ISection shape. |
Beta Was this translation helpful? Give feedback.
-
Thanks @lcpt. Maybe inheritance and then write special method for built-up I-shaped sections? Thanks. Is it better to open an issue? |
Beta Was this translation helpful? Give feedback.
-
Implemented as per commit #88 and here is an example: |
Beta Was this translation helpful? Give feedback.
-
Hi All. I wanted to work with xc and for starting i want to model an industrial structure with XC, my question:
can I model non-prismatic beam in xc. I saw this discution that seems it is not directly possible in opensees:
How_to_deal_with_non-prismatic_beam_in_Opensees
I have been modeled it in ETABS v19 and wanted to model it with xc and compare both of them:
Beta Was this translation helpful? Give feedback.
All reactions