Fiber Section Mesh

Section mesh class

This is a main class for creating fiber section triangular mesh.

opstool.pre.section.FiberSecMesh([sec_name])

A class to mesh the cross-section with triangular fibers.

opstool.pre.section.SecMesh

alias of FiberSecMesh

Utility functions for creating geometry and materials

opstool.pre.section.create_material([name, ...])

Create a meterial object of sectionproperties material.

opstool.pre.section.create_polygon_patch(outline)

Add a polygon plane geom object.

opstool.pre.section.create_circle_patch(xo, ...)

Add the circle geom obj.

opstool.pre.section.create_patch_from_dxf(...)

An interface for the creation of Geometry objects from CAD .dxf files.

opstool.pre.section.create_polygon_points([...])

Create a polygon points.

opstool.pre.section.create_circle_points(xo, ...)

Add the circle geom obj.

opstool.pre.section.offset(points, d)

Offsets closed polygons.

opstool.pre.section.line_offset(points, d)

Offset a distance from a non-closed line ring on its right or its left side.

opstool.pre.section.poly_offset(points, d)

Offsets closed polygons, same as opstool.pre.section.offset()

opstool.pre.section.set_patch_material(geom)

Assign material to a geom patch.

opstool.pre.section.vis_fiber_sec_real(ele_tag)

Visualizing the actual fiber section data, where only the fiber center coordinates and areas are demonstrated, represents the data used in analysis.

Wrapper for OpenSeesPy section commands

The following commands wrap the fiber section-related commands in OpenSeesPy. These commands retain the same functionality as the original commands but additionally save the user-provided input data for purposes such as visualization.

Example

import numpy as np
import openseespy.opensees as ops
import opstool as opst

ops.wipe()
ops.model("basic", "-ndm", 3, "-ndf", 6)
ops.uniaxialMaterial("Elastic", 1, 1000)

The following commands, like those in OpenSeesPy, create objects in the domain.

sectag = 1
opst.pre.section.section("Fiber", sectag, "-GJ", 1.0e6)
opst.pre.section.patch("circ", 1, 40, 1, 0, 0, 1.9, 2, 0, 360, color="blue", opacity=0.75)
opst.pre.section.patch("circ", 1, 40, 5, 0, 0, 1, 1.9, 0, 360, color="green", opacity=0.35)
opst.pre.section.layer("circ", 1, 40, np.pi * 0.016**2, 0, 0, 1.9 - 0.016, 0.0, 360.0, color="red")
# plot
opst.pre.section.plot_fiber_sec_cmds(sec_tag=1)
../../_images/pre.section_1_0.png

Let’s look at another example.

sectag = 2
opst.pre.section.section("Fiber", sectag, "-GJ", 1.0e6)
opst.pre.section.patch("quad", 1, 20, 20, -1, -1, 1, -1, 2, 3, -2, 3, color="blue", opacity=0.25)
opst.pre.section.layer(
    "straight", 1, 20, np.pi * 0.02**2, *[-0.9, -0.9], *[1.9, 2.9], color="black"
)
opst.pre.section.fiber(0, 1, np.pi * 0.05**2, 1, color="red")
# plot
opst.pre.section.plot_fiber_sec_cmds(sec_tag=2)
../../_images/pre.section_2_0.png