ops.uniaxialMaterial("Steel01", 3, fy, E, 0.01) # Define cross-section for nonlinear columns # ------------------------------------------ # set some parameters colWidth = 15.0 colDepth = 24.0 cover = 1.5 As = 0.60 # area of no. 7 bars # some variables derived from the parameters y1 = colDepth / 2.0 z1 = colWidth / 2.0 ops.section("Fiber", 1) # Create the concrete core fibers ops.patch("rect", 1, 10, 1, cover - y1, cover - z1, y1 - cover, z1 - cover) # Create the concrete cover fibers (top, bottom, left, right) ops.patch("rect", 2, 10, 1, -y1, z1 - cover, y1, z1) ops.patch("rect", 2, 10, 1, -y1, -z1, y1, cover - z1) ops.patch("rect", 2, 2, 1, -y1, cover - z1, cover - y1, z1 - cover) ops.patch("rect", 2, 2, 1, y1 - cover, cover - z1, y1, z1 - cover) # Create the reinforcing fibers (left, middle, right) ops.layer("straight", 3, 3, As, y1 - cover, z1 - cover, y1 - cover, cover - z1) ops.layer("straight", 3, 2, As, 0.0, z1 - cover, 0.0, cover - z1) ops.layer("straight", 3, 3, As, cover - y1, z1 - cover, cover - y1, cover - z1) # Estimate yield curvature # (Assuming no axial load and only top and bottom steel) d = colDepth - cover
# tag fy E0 b ops.uniaxialMaterial("Steel01", 3, fy, E, 0.01) # Define cross-section for nonlinear columns # ------------------------------------------ # set some parameters colWidth = 15.0 colDepth = 24.0 cover = 1.5 As = 0.60; # area of no. 7 bars # some variables derived from the parameters y1 = colDepth/2.0 z1 = colWidth/2.0 ops.section("Fiber", 1) # Create the concrete core fibers ops.patch("rect", 1, 10, 1, cover-y1, cover-z1, y1-cover, z1-cover) # Create the concrete cover fibers (top, bottom, left, right) ops.patch("rect", 2, 10, 1, -y1, z1-cover, y1, z1) ops.patch("rect", 2, 10, 1, -y1, -z1, y1, cover-z1) ops.patch("rect", 2, 2, 1, -y1, cover-z1, cover-y1, z1-cover) ops.patch("rect", 2, 2, 1, y1-cover, cover-z1, y1, z1-cover) # Create the reinforcing fibers (left, middle, right) ops.layer("straight", 3, 3, As, y1-cover, z1-cover, y1-cover, cover-z1) ops.layer("straight", 3, 2, As, 0.0, z1-cover, 0.0, cover-z1) ops.layer("straight", 3, 3, As, cover-y1, z1-cover, cover-y1, cover-z1) # define beam integration np = 5; # number of integration points along length of element ops.beamIntegration("Lobatto", 1, 1, np)
# ---------------------------- # Start of model generation # ---------------------------- # remove existing model ops.wipe() # create ModelBuilder (with three-dimensions and 6 DOF/node) ops.model("BasicBuilder", "-ndm",3, "-ndf",6) # set default units ops.defaultUnits("-force", "kip", "-length", "in", "-time", "sec", "-temp", "F") # Define the section # ------------------ # secTag E nu h rho ops.section("ElasticMembranePlateSection", 1, 3.0E3, 0.25, 1.175, 1.27) # Define geometry # --------------- # these should both be even nx = 8 ny = 2 # loaded nodes mid = int(((nx+1)*(ny+1) + 1)/2) side1 = int((nx+2)/2) side2 = int((nx+1)*(ny+1) - side1 + 1) # generate the nodes and elements # numX numY startNode startEle eleType eleArgs? coords? ops.block2D(nx, ny, 1, 1,
ops.element(eleType, 11, 12, 17, 1, colSec) ops.element(eleType, 12, 13, 18, 1, colSec) # Define beam elements # -------------------- # Define material properties for elastic beams # Using beam depth of 24 and width of 18 Abeam = 18.0*24.0 # "Cracked" second moments of area Ibeamzz = 0.5*1.0/12.0*18.0*pow(24.0,3) Ibeamyy = 0.5*1.0/12.0*24.0*pow(18.0,3) beamSec = 2 # Define elastic section for beams # tag E A Iz Iy G J ops.section("Elastic", beamSec, Ec, Abeam, Ibeamzz, Ibeamyy, GJ, 1.0) # Geometric transformation for beams ops.geomTransf("Linear", 2, 1.0, 1.0, 0.0) # Number of beam integration points (sections) np = 3 ops.beamIntegration("Lobatto", beamSec, beamSec, np) # Create the beam elements eleType = "forceBeamColumn" # tag ndI ndJ transfTag integrationTag ops.element(eleType, 13, 5, 6, 2, beamSec) ops.element(eleType, 14, 6, 7, 2, beamSec) ops.element(eleType, 15, 7, 8, 2, beamSec) ops.element(eleType, 16, 8, 5, 2, beamSec)
ops.node(1, 0, 0) ops.node(2, 0, 144) ops.node(3, 240, 144) ops.node(4, 240, 0) ops.fix(1, 1, 1, 1) ops.fix(4, 1, 1, 1) E = 30000.0 Ag = 25.0 Ig = 1500.0 Ac = 29.0 Ic = 2000.0 gsecTag = 1 ops.section("Elastic", gsecTag, E, Ag, Ig) csecTag = 2 ops.section("Elastic", csecTag, E, Ac, Ic) transfTag = 1 ops.geomTransf("Linear", transfTag) N = 3 gbiTag = 1 ops.beamIntegration("Lobatto", gbiTag, gsecTag, N) cbiTag = 2 ops.beamIntegration("Lobatto", cbiTag, csecTag, N) leftColTag = 1
# Core concrete (confined) ops.uniaxialMaterial("Concrete01", 1, -6.0, -0.004, -5.0, -0.014) # Cover concrete (unconfined) ops.uniaxialMaterial("Concrete01", 2, -5.0, -0.002, -0.0, -0.006) # STEEL # Reinforcing steel fy = 60.0; # Yield stress E = 30000.0; # Young's modulus # tag fy E0 b ops.uniaxialMaterial("Steel01", 3, fy, E, 0.015) # Define cross-section for nonlinear columns # ------------------------------------------ # Interior column section ops.section("Fiber", 1) # mat nfIJ nfJK yI zI yJ zJ yK zK yL zL ops.patch("quad", 2, 1, 12, -11.5, 10.0, -11.5, -10.0, 11.5, -10.0, 11.5, 10.0) ops.patch("quad", 1, 1, 14, -13.5, -10.0, -13.5, -12.0, 13.5, -12.0, 13.5, -10.0) ops.patch("quad", 1, 1, 14, -13.5, 12.0, -13.5, 10.0, 13.5, 10.0, 13.5, 12.0) ops.patch("quad", 1, 1, 2, -13.5, 10.0, -13.5, -10.0, -11.5, -10.0, -11.5, 10.0) ops.patch("quad", 1, 1, 2, 11.5, 10.0, 11.5, -10.0, 13.5, -10.0, 13.5, 10.0) # mat nBars area yI zI yF zF ops.layer("straight", 3, 6, 1.56, -10.5, 9.0, -10.5, -9.0) ops.layer("straight", 3, 6, 1.56, 10.5, 9.0, 10.5, -9.0) # define beam integration np = 4; # number of integration points along length of element ops.beamIntegration("Lobatto", 1, 1, np) # Exterior column section ops.section("Fiber", 2)
######################################################################################################################################################################### #---------------------------------------------------------- # create elastic pile section #---------------------------------------------------------- secTag = 1 E = 25000000.0 A = 0.785 Iz = 0.049 Iy = 0.049 G = 9615385.0 J = 0.098 matTag = 3000 op.section('Elastic', 1, E, A, Iz, Iy, G, J) # elastic torsional material for combined 3D section op.uniaxialMaterial('Elastic', 3000, 1e10) # create combined 3D section secTag3D = 3 op.section('Aggregator', secTag3D, 3000, 'T', '-section', 1) ######################################################################################################################################################################### ########################################################################################################################################################################## # elastic pile section #import elasticPileSection
def CHSSection(secID, matID, D, t, nc, nr, GJ): # create a circular hollow cross-section R = D/2 r = R - t ops.section('Fiber', secID, '-GJ', GJ) ops.patch('circ', matID, nc, nr, 0., 0., r, R, 0., 360.)
# Cover concrete (unconfined) ops.uniaxialMaterial("Concrete01", 2, -5.0, -0.002, -0.0, -0.006) # STEEL # Reinforcing steel fy = 60.0 # Yield stress E = 30000.0 # Young's modulus # tag fy E0 b ops.uniaxialMaterial("Steel01", 3, fy, E, 0.015) # Define cross-section for nonlinear columns # ------------------------------------------ # Interior column section ops.section("Fiber", 1) # mat nfIJ nfJK yI zI yJ zJ yK zK yL zL ops.patch("quad", 2, 1, 12, -11.5, 10.0, -11.5, -10.0, 11.5, -10.0, 11.5, 10.0) ops.patch("quad", 1, 1, 14, -13.5, -10.0, -13.5, -12.0, 13.5, -12.0, 13.5, -10.0) ops.patch("quad", 1, 1, 14, -13.5, 12.0, -13.5, 10.0, 13.5, 10.0, 13.5, 12.0) ops.patch("quad", 1, 1, 2, -13.5, 10.0, -13.5, -10.0, -11.5, -10.0, -11.5, 10.0) ops.patch("quad", 1, 1, 2, 11.5, 10.0, 11.5, -10.0, 13.5, -10.0, 13.5, 10.0) # mat nBars area yI zI yF zF ops.layer("straight", 3, 6, 1.56, -10.5, 9.0, -10.5, -9.0) ops.layer("straight", 3, 6, 1.56, 10.5, 9.0, 10.5, -9.0) # define beam integration np = 4 # number of integration points along length of element ops.beamIntegration("Lobatto", 1, 1, np)
# Start of model generation # ---------------------------- # remove existing model ops.wipe() # create ModelBuilder (with three-dimensions and 6 DOF/node) ops.model("BasicBuilder", "-ndm", 3, "-ndf", 6) # set default units ops.defaultUnits("-force", "kip", "-length", "in", "-time", "sec", "-temp", "F") # Define the section # ------------------ # secTag E nu h rho ops.section("ElasticMembranePlateSection", 1, 3.0E3, 0.25, 1.175, 1.27) # Define geometry # --------------- # these should both be even nx = 8 ny = 2 # loaded nodes mid = int(((nx + 1) * (ny + 1) + 1) / 2) side1 = int((nx + 2) / 2) side2 = int((nx + 1) * (ny + 1) - side1 + 1) # generate the nodes and elements # numX numY startNode startEle eleType eleArgs? coords? ops.block2D(nx, ny, 1, 1, "ShellMITC4", 1, 1, -20.0, 0.0, 0.0, 2, -20.0, 0.0,
ops.element(eleType, 11, 12, 17, 1, colSec) ops.element(eleType, 12, 13, 18, 1, colSec) # Define beam elements # -------------------- # Define material properties for elastic beams # Using beam depth of 24 and width of 18 Abeam = 18.0 * 24.0 # "Cracked" second moments of area Ibeamzz = 0.5 * 1.0 / 12.0 * 18.0 * pow(24.0, 3) Ibeamyy = 0.5 * 1.0 / 12.0 * 24.0 * pow(18.0, 3) beamSec = 2 # Define elastic section for beams # tag E A Iz Iy G J ops.section("Elastic", beamSec, Ec, Abeam, Ibeamzz, Ibeamyy, GJ, 1.0) # Geometric transformation for beams ops.geomTransf("Linear", 2, 1.0, 1.0, 0.0) # Number of beam integration points (sections) np = 3 ops.beamIntegration("Lobatto", beamSec, beamSec, np) # Create the beam elements eleType = "forceBeamColumn" # tag ndI ndJ transfTag integrationTag ops.element(eleType, 13, 5, 6, 2, beamSec) ops.element(eleType, 14, 6, 7, 2, beamSec) ops.element(eleType, 15, 7, 8, 2, beamSec) ops.element(eleType, 16, 8, 5, 2, beamSec)