Substepping method for LoadControl and Displacement Control Analysis
Project description
OpenSeesPy Sub-Stepping Methods
Project and Purpose
OpenSeesPy Sub-Stepping is a helpful package when your system is huge.
There are 4 sequential divisions(/2, /4, /8, /16). From v0.1.2.0 user can define the substepping factors.
DispControlSubStep(Nsteps:int , IDctrlNode:int, IDctrlDOF:int, Dmax:float, fac1=2, fac2=4, fac3=8, fac4=16, LoadConstandTimeZero=False) LoadControlSubStep(Nsteps:int, Lincr:float, fac1=2, fac2=4, fac3=8, fac4=16, LoadConstandTimeZero=False)
How to use
Download via pip. The only requirement is OpenSeesPy library.
pip install OpenSeesPySubStepping
Find the project release @Pypi.org
Versions
v0.1.2.0
- Substepping factors can be modified be the user.
Note: Default substepping factors are 1/2, 1/4, 1/8, 1/16
v0.1.1.2
- Add description to pypi.org
- Update REAME.md with example
- Example folder
- Add github workflow in order to publish library to pypi.org
Example
import openseespy.opensees as ops from OpenSeesPySubStepping import DispControlSubStep from OpenSeesPySubStepping import LoadControlSubStep def main(): """ Create a Cantilever Problem """ ops.wipe() ops.model('basic', '-ndm', 2, '-ndf', 3) height = 5.0 nElem = 20 ElemLength = height / nElem nodeID = [] Ycoord = 0 for i in range(nElem + 1): nodeID.append(i) ops.node(i, 0.0, Ycoord) Ycoord += ElemLength IDctrlNode = i ops.fix(0, 1, 1, 1) ops.geomTransf('Linear', 1) concrete = 'Concrete04' steel = 'Steel02' matTAGConc = 319 matTAGSteel = 312 fcc = -20000 ec2c = -0.002 ecu2c = -0.0035 Ec = 30000000 fct = 2200 et = 0.001 fy = 500000 E0 = 200000000 b = 0.01 ops.uniaxialMaterial(concrete, matTAGConc, fcc, ec2c, ecu2c, Ec, fct, et) ops.uniaxialMaterial(steel, matTAGSteel, fy, E0, b, 20, 0.925, 0.15, 0, 1, 0, 1, 0) # Core Fibers ops.section('Fiber', 105) ops.patch('rect', 319, 11, 11, -0.20, -0.20, 0.20, 0.20) # Cover Fibers ops.patch('rect', 319, 15, 2, 0.250000, 0.200000, -0.250000, 0.250000) ops.patch('rect', 319, 15, 2, 0.250000, -0.250000, -0.250000, -0.200000) ops.patch('rect', 319, 2, 11, -0.250000, -0.200000, -0.200000, 0.200000) ops.patch('rect', 319, 2, 11, 0.200000, -0.200000, 0.250000, 0.200000) # create corner bars ops.layer('straight', 312, 4, 0.00025450, 0.200000, 0.200000, -0.200000, 0.200000) ops.layer('straight', 312, 4, 0.00025450, 0.200000, -0.200000, -0.200000, -0.200000) ops.beamIntegration('Lobatto', 100, 105, 3) for i in range(len(nodeID) - 1): ops.element('forceBeamColumn', i, nodeID[i], nodeID[i + 1], 1, 100, '-iter', 10, 1e-6) # Add Vertical Load at Top ops.timeSeries('Linear', 101) ops.pattern('Plain', 100, 101) ops.load(IDctrlNode, 0, -500, 0) # Solve Gravity First ops.system('UmfPack') ops.numberer('Plain') ops.constraints('Transformation') ops.integrator('LoadControl', 0.1) ops.test('RelativeTotalNormDispIncr', 0.001, 100, 2) ops.algorithm('Newton') ops.analysis('Static') LoadControlSubStep(10, 0.1, True) # Displacement Control Analysis(Pushover) ops.pattern('Plain', 200, 101) ops.load(IDctrlNode, 1, 0, 0) ops.system('UmfPack') ops.numberer('Plain') ops.constraints('Transformation') ops.test('RelativeTotalNormDispIncr', 1e-2, 500, 2) ops.algorithm('Newton') ops.analysis('Static') DispControlSubStep(100, IDctrlNode, 1, 1.0) if __name__ == '__main__': main()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for OpenSeesPySubStepping-0.1.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | eae1f16f3275e8fa59846815ee334479b8fd46a9ef16cbb64e48e26f02037b9a |
|
MD5 | 218e824a97b1378382a1fbfd84ed8ed4 |
|
BLAKE2-256 | d793ed249df9eb032e7fb3c851c3f3bdd46664695f2840bb2f266b1e7393bf03 |
Close
Hashes for OpenSeesPySubStepping-0.1.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11012e4eabc5bbdc139641688c307518b454c06e662c5433f83d34755a6dfb37 |
|
MD5 | 8278a25a37bdcf77990cdf3e0b57324f |
|
BLAKE2-256 | 871c34f6ca8530346939c36ea95aeae436face6ed3a027b0f73f5643b423acd4 |