From 3bbabe1fc5865f06366065f6efc2bed132d0dacf Mon Sep 17 00:00:00 2001 From: claudio perez <50180406+claudioperez@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:20:05 -0700 Subject: [PATCH 1/3] cmp - clean up --- src/opensees/openseespy.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/opensees/openseespy.py b/src/opensees/openseespy.py index ba443eafcc..f498334149 100644 --- a/src/opensees/openseespy.py +++ b/src/opensees/openseespy.py @@ -338,7 +338,7 @@ def _mesh_line(self, tag, numnodes, ndtags, id, ndf:int, meshsize, eleType='', e elem_tag = next(new_elem) - if i < nn: + if i < nn and eleType != '' and eleArgs: add_element(eleType,elem_tag,nodes[i],nodes[i+1],*eleArgs) self._mesh["line"][tag] = nodes @@ -449,6 +449,8 @@ def surface(self, split, element: str=None, args=None, points=None, name=None, k m_elems = {tag for tag in m_elems} m_nodes = self._openseespy._str_call("getNodeTags") + if isinstance(m_nodes, int): + m_nodes = {m_nodes} if m_nodes is not None: m_nodes = { int(tag): self._openseespy._str_call("nodeCoord", f"{tag}") From 36136029e2f3181588b6f98e37f245092455cabb Mon Sep 17 00:00:00 2001 From: claudio perez <50180406+claudioperez@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:20:51 -0700 Subject: [PATCH 2/3] cmp --- docs/.user/analysis/MomentCurvature.md | 0 docs/.user/ast.md | 1 - docs/.user/cookbook.md | 22 -- docs/.user/modeling/section/index.md | 75 ------ docs/.user/modeling/section/layer.md | 88 ------- docs/.user/modeling/section/patch.md | 225 ------------------ docs/.user/modeling/section/torsion.md | 0 docs/.user/pattern/Plain.md | 4 - docs/.user/pattern/UniformExcitation.md | 21 -- .../analysis/Eigen_Analysis/ArpackSolver.md | 18 -- .../Eigen_Analysis/EigenAlgorithm.cpp | 85 ------- .../analysis/Eigen_Analysis/EigenAlgorithm.md | 78 ------ .../analysis/Eigen_Analysis/FrequencyAlgo.cpp | 124 ---------- .../analysis/Eigen_Analysis/FrequencyAlgo.md | 44 ---- .../Eigen_Analysis/StandardEigenAlgo.cpp | 106 --------- .../Eigen_Analysis/StandardEigenAlgo.md | 37 --- docs/library/analysis/Eigen_Analysis/index.md | 12 - .../StaticAnalysis/StagedLoadControl.md | 2 - 18 files changed, 942 deletions(-) delete mode 100644 docs/.user/analysis/MomentCurvature.md delete mode 100644 docs/.user/ast.md delete mode 100644 docs/.user/cookbook.md delete mode 100644 docs/.user/modeling/section/index.md delete mode 100644 docs/.user/modeling/section/layer.md delete mode 100644 docs/.user/modeling/section/patch.md delete mode 100644 docs/.user/modeling/section/torsion.md delete mode 100644 docs/.user/pattern/Plain.md delete mode 100644 docs/.user/pattern/UniformExcitation.md delete mode 100644 docs/library/analysis/Eigen_Analysis/ArpackSolver.md delete mode 100644 docs/library/analysis/Eigen_Analysis/EigenAlgorithm.cpp delete mode 100644 docs/library/analysis/Eigen_Analysis/EigenAlgorithm.md delete mode 100644 docs/library/analysis/Eigen_Analysis/FrequencyAlgo.cpp delete mode 100644 docs/library/analysis/Eigen_Analysis/FrequencyAlgo.md delete mode 100644 docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.cpp delete mode 100644 docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.md delete mode 100644 docs/library/analysis/Eigen_Analysis/index.md delete mode 100644 docs/library/analysis/StaticAnalysis/StagedLoadControl.md diff --git a/docs/.user/analysis/MomentCurvature.md b/docs/.user/analysis/MomentCurvature.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/.user/ast.md b/docs/.user/ast.md deleted file mode 100644 index c56cd1e98a..0000000000 --- a/docs/.user/ast.md +++ /dev/null @@ -1 +0,0 @@ -# AST Reference diff --git a/docs/.user/cookbook.md b/docs/.user/cookbook.md deleted file mode 100644 index ae9b607d59..0000000000 --- a/docs/.user/cookbook.md +++ /dev/null @@ -1,22 +0,0 @@ -# Cookbook - -## Modeling - -- [Section Building](figures/) - -## Analysis Procedures - -### Static - -- Load -- Displacement - -### Dynamic - -- time history - -- response spectrum - -- modal analysis - - diff --git a/docs/.user/modeling/section/index.md b/docs/.user/modeling/section/index.md deleted file mode 100644 index 547be033f3..0000000000 --- a/docs/.user/modeling/section/index.md +++ /dev/null @@ -1,75 +0,0 @@ - ---- -title: section -... - - - -# section - - - -This module provides constructors for `SectionForceDeformation` objects -which represent force-deformation (or resultant stress-strain) -relationships at beam-column and plate sample points. - - -
- - - - FiberSection(name, torsional_stiffness, areas, **kwds) - - - - - -- - - - - - - - - -
nameTag
GJNumlinear-elastic torsional stiffness assigned to the section (optional, default = no torsional stiffness)
areas[] -
-
- - - - - - SectionAggregator(name, materials, section, **kwds) - - - -![](/figures/SectionAggregator.gif) - - -- - - - - - - - - -
nameTag
materials{dof : material ...}the force-deformation quantity to be modeled by this section object. - - -
dofFlg
materialRef(uniaxial)tags of previously-defined `UniaxialMaterial` objects
-
sectionRef(section)tag of previously-defined Section object to which the UniaxialMaterial objects are aggregated as additional force-deformation relationships
- - -
diff --git a/docs/.user/modeling/section/layer.md b/docs/.user/modeling/section/layer.md deleted file mode 100644 index 824cdbbc0c..0000000000 --- a/docs/.user/modeling/section/layer.md +++ /dev/null @@ -1,88 +0,0 @@ - ---- -title: layer -... - - - -# layer - - - -
- - - - circ(material, divs, fiber_area, center, radius, arc, **kwds) - - - - - -- - - - - - - - - - - - -
materialRef(Material)material tag of previously created material (UniaxialMaterial tag for a FiberSection or NDMaterial tag for use in an NDFiberSection)
divsIntnumber of fibers along arc
areaNumarea of each fiber
center[y,z]$y$ and $z$-coordinates of center of circular arc - - -
yNum
zNum
-
radiusNumradius of circular arc
arc = [0.0, 6.283185307179586][startAng,endAng] - - -
startAngNumstarting angle
endAngNumending angle
-
- - - - - - line(material, divs, fiber_area, vertices, **kwds) - - - -![](/figures/straightLayer.svg) - - -- - - - - - - - - - -
materialRef(Material)Reference to previously created material (`UniaxialMaterial` for a `FiberSection` or `NDMaterial` for use in an `NDFiberSection`)
divsIntnumber of fibers along line
areaNumarea of each fiber
vertices[[x,y],[x,y]] - - -
start[x,y]$x$ and $y$-coordinates of first fiber in line (local coordinate system) - - -
xNum
yNum
-
end[x,y]$x$ and $y$-coordinates of last fiber in line (local coordinate system) - - -
xNum
yNum
-
-
- - -
diff --git a/docs/.user/modeling/section/patch.md b/docs/.user/modeling/section/patch.md deleted file mode 100644 index 38aa8d939f..0000000000 --- a/docs/.user/modeling/section/patch.md +++ /dev/null @@ -1,225 +0,0 @@ - ---- -title: patch -... - - - -# patch - - - -A patch is used to generate a number of fibers over a cross-sectional area. -Currently there are three types of patches that fibers can be generated over: -quadrilateral, rectangular and circular. - -All patches have the following attributes: - -
-
area
-
Total area of the patch.
- -
moic
-
Second moment of area matrix of the patch about its centroidal axis
- -
ixc
-
Second moment of inertia of the patch about its $x$ axis
- -
iyc
-
Second moment of inertia of the patch about its $y$ axis
- -
- - -
- - - - Fiber(coord, area, material, **kwds) - - - - - -- - - - - - - - - -
coord[x,y]$x$ and $y$ coordinate of the fiber in the section (local coordinate system) - - -
xNum
yNum
-
areaNumarea of the fiber.
materialRef(Material)material tag associated with this fiber (UniaxialMaterial tagfor a FiberSection and NDMaterial tag for use in an NDFiberSection).
- - - - - - rect(material, divs, corners, **kwds) - - - - - -- - - - - - - - - -
materialRef(Material)tag of previously defined material (`UniaxialMaterial`tag for a `FiberSection` or `NDMaterial` tag for use in an `NDFiberSection`)
divs[ij,jk] - - -
ijIntnumber of subdivisions (fibers) in the IJ direction.
jkIntnumber of subdivisions (fibers) in the JK direction.
-
corners[[yI,zI],[yK,zK]] - - -
[yI,zI]Grp$y$ & $z$-coordinates of vertex I (local coordinate system) - - -
yINum
zINum
-
[yK,zK]Grp$y$ & $z$-coordinates of vertex K (local coordinate system) - - -
yKNum
zKNum
-
-
- - - - - - quad(material, divs, vertices, **kwds) - - - -![](/figures/quadPatch.svg) - - -- - - - - - - - - -
materialRef(Material)tag of previously defined material (`UniaxialMaterial` tag for a `FiberSection` or `NDMaterial` tag for use in an `NDFiberSection`)
divs[ij,jk] - - -
ijIntnumber of subdivisions (fibers) in the IJ direction.
jkIntnumber of subdivisions (fibers) in the JK direction.
-
vertices[[x,y],[x,y],[x,y],[x,y]] - - - - -
i[x,y]$x$ & $y$-coordinates of vertex I (local coordinate system) - - -
xNum
yNum
-
j[x,y]$x$ & $y$-coordinates of vertex J (local coordinate system) - - -
xNum
yNum
-
k[x,y]$x$ & $y$-coordinates of vertex K (local coordinate system) - - -
xNum
yNum
-
l[x,y]$x$ & $y$-coordinates of vertex L (local coordinate system) - - -
xNum
yNum
-
-
- - - - - - circ(material,
   divs,
   center,
   intRad,
   extRad,
   startAng,
   endAng,
   **kwds) -
- - -![](/figures/circPatch.svg) - - -- - - - - - - - - - - - - -
materialRef(Material)tag of previously defined material (`UniaxialMaterial` tag for a `FiberSection` or `NDMaterial` tag for use in an `NDFiberSection`)
divs[circ,rad] - - -
circIntnumber of subdivisions (fibers) in the circumferential direction (number of wedges)
radIntnumber of subdivisions (fibers) in the radial direction (number of rings)
-
center = [0.0, 0.0][y,z]$y$ & $z$-coordinates of the center of the circle - - -
yNum
zNum
-
intRadNuminternal radius
extRadNumexternal radius
startAngNumstarting angle
endAng = 6.283185307179586Numending angle
- - - - - - line(material, divs, fiber_area, vertices, **kwds) - - - -![](/figures/straightLayer.svg) - - -- - - - - - - - - - -
materialRef(Material)Reference to previously created material (`UniaxialMaterial` for a `FiberSection` or `NDMaterial` for use in an `NDFiberSection`)
divsIntnumber of fibers along line
areaNumarea of each fiber
vertices[[x,y],[x,y]] - - -
start[x,y]$x$ and $y$-coordinates of first fiber in line (local coordinate system) - - -
xNum
yNum
-
end[x,y]$x$ and $y$-coordinates of last fiber in line (local coordinate system) - - -
xNum
yNum
-
-
- - -
diff --git a/docs/.user/modeling/section/torsion.md b/docs/.user/modeling/section/torsion.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/.user/pattern/Plain.md b/docs/.user/pattern/Plain.md deleted file mode 100644 index 5cf0bf9b83..0000000000 --- a/docs/.user/pattern/Plain.md +++ /dev/null @@ -1,4 +0,0 @@ -# Plain Pattern - - - diff --git a/docs/.user/pattern/UniformExcitation.md b/docs/.user/pattern/UniformExcitation.md deleted file mode 100644 index bcb2d469df..0000000000 --- a/docs/.user/pattern/UniformExcitation.md +++ /dev/null @@ -1,21 +0,0 @@ -# UniformExcitation - -```cpp -#include - -class UniformExcitation: public EarthquakeLoad -``` - - TaggedObject\ - MovableObject\ - DomainComponent\ - LoadPattern\ - EarthquakePattern\ - - -A UniformExcitation is an object which adds the loads imposed by a -single ground excitation to the model. For a UniformExcitation this -means that the *R* matrix at each node will have $1$ column and all -entries but those corresponding to the degree of freedom direction will -be set to $0$, the value for the degree of freedom direction will be set -to $1$. diff --git a/docs/library/analysis/Eigen_Analysis/ArpackSolver.md b/docs/library/analysis/Eigen_Analysis/ArpackSolver.md deleted file mode 100644 index d9e0876441..0000000000 --- a/docs/library/analysis/Eigen_Analysis/ArpackSolver.md +++ /dev/null @@ -1,18 +0,0 @@ -# ArpackSolver - -This is the solver that works on the ArpackSOE. It uses the LinearSOE -in the SOE to perform the solve() operation if required. -It uses the ARPACK library to perform the eigenvalue analysis. -ARPACK is an eigen analysis package which was developed by -R.B.Lehoucq, D.C.Sorensen and C.Yang at Rice University. ARPACK is a -collection of FORTRAN77 subroutines designed to solve large scale eigen -problems. ARPACK is capable of solving large scale non-Hermitian standard -and generalized eigen problems. When the matrix K is symmetric, -the method is a variant of the Lanczos process called Implicitly Restarted -Lanczos Method (IRLM). - - -It is based on previous work of Jun Peng(Stanford) - - Written: fmk - Created: 05.09 diff --git a/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.cpp b/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.cpp deleted file mode 100644 index e1b08c2866..0000000000 --- a/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* ****************************************************************** ** -** OpenSees - Open System for Earthquake Engineering Simulation ** -** Pacific Earthquake Engineering Research Center ** -** ** -** ** -** (C) Copyright 1999, The Regents of the University of California ** -** All Rights Reserved. ** -** ** -** Commercial use of this program without express permission of the ** -** University of California, Berkeley, is strictly prohibited. See ** -** file 'COPYRIGHT' in main directory for information on usage and ** -** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** -** ** -** Developed by: ** -** Frank McKenna (fmckenna@ce.berkeley.edu) ** -** Gregory L. Fenves (fenves@ce.berkeley.edu) ** -** Filip C. Filippou (filippou@ce.berkeley.edu) ** -** ** -** ****************************************************************** */ - -// $Revision: 1.1.1.1 $ -// $Date: 2000-09-15 08:23:16 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/EigenAlgorithm.cpp,v $ - - -// File: ~/analysis/algorithm/eigenAlgo/EigenAlgorithm.C -// -// Written: Jun Peng -// Created: Wed Jan 27, 1999 -// Revision: A -// -// Description: This file contains the class definition of EigenAlgorithm. -// EigenAlgorithm is a class which performs a eigen solution algorithm -// to solve the equations. -// -// This class is inheritanted from the base class of SolutionAlgorithm -// which was created by fmk (Frank). - - -#include -#include -#include -#include - -EigenAlgorithm::EigenAlgorithm(int classTag) - :SolutionAlgorithm(classTag), - theModel(0), theIntegrator(0), theSOE(0) -{ - // need do nothing here. -} - - -EigenAlgorithm::~EigenAlgorithm() -{ - // do nothing here. -} - -void -EigenAlgorithm::setLinks(AnalysisModel &theNewModel, - EigenIntegrator &theNewIntegrator, - EigenSOE &theNewSOE) -{ - theModel = &theNewModel; - theIntegrator = &theNewIntegrator; - theSOE = &theNewSOE; -} - -AnalysisModel * -EigenAlgorithm::getAnalysisModelPtr() const -{ - return theModel; -} - -EigenIntegrator * -EigenAlgorithm::getEigenIntegratorPtr() const -{ - return theIntegrator; -} - -EigenSOE * -EigenAlgorithm::getEigenSOEptr() const -{ - return theSOE; -} - diff --git a/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.md b/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.md deleted file mode 100644 index 68284aa0ff..0000000000 --- a/docs/library/analysis/Eigen_Analysis/EigenAlgorithm.md +++ /dev/null @@ -1,78 +0,0 @@ -/* ****************************************************************** ** -** OpenSees - Open System for Earthquake Engineering Simulation ** -** Pacific Earthquake Engineering Research Center ** -** ** -** ** -** (C) Copyright 1999, The Regents of the University of California ** -** All Rights Reserved. ** -** ** -** Commercial use of this program without express permission of the ** -** University of California, Berkeley, is strictly prohibited. See ** -** file 'COPYRIGHT' in main directory for information on usage and ** -** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** -** ** -** Developed by: ** -** Frank McKenna (fmckenna@ce.berkeley.edu) ** -** Gregory L. Fenves (fenves@ce.berkeley.edu) ** -** Filip C. Filippou (filippou@ce.berkeley.edu) ** -** ** -** ****************************************************************** */ - -// $Revision: 1.2 $ -// $Date: 2003-02-14 23:00:41 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/EigenAlgorithm.h,v $ - - -// File: ~/analysis/algorithm/eigenAlgo/EigenAlgorithm.h -// -// Written: Jun Peng -// Created: Wed Jan 27, 1999 -// Revision: A -// -// Description: This file contains the class definition of EigenAlgorithm. -// EigenAlgorithm is a class which performs a eigen solution algorithm -// to solve the equations. -// -// This class is inheritanted from the base class of SolutionAlgorithm -// which was created by fmk (Frank). - - -#ifndef EigenAlgorithm_h -#define EigenAlgorithm_h - -#include -#include - -class AnalysisModel; -class EigenSOE; -class EigenIntegrator; - -class EigenAlgorithm : public SolutionAlgorithm -{ - public: - EigenAlgorithm(int classTag); - virtual ~EigenAlgorithm(); - - // public functions defined for subclasses - virtual void setLinks(AnalysisModel &theModel, - EigenIntegrator &theIntegrator, - EigenSOE &theSOE); - - // pure virtual functions - virtual int solveCurrentStep(int numModes) = 0; - virtual void Print(OPS_Stream &s, int flag=0) = 0; - - virtual AnalysisModel *getAnalysisModelPtr() const; - virtual EigenIntegrator *getEigenIntegratorPtr() const; - virtual EigenSOE *getEigenSOEptr() const; - - protected: - - private: - AnalysisModel *theModel; - EigenIntegrator *theIntegrator; - EigenSOE *theSOE; - -}; - -#endif diff --git a/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.cpp b/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.cpp deleted file mode 100644 index 2282494f05..0000000000 --- a/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* ****************************************************************** ** -** OpenSees - Open System for Earthquake Engineering Simulation ** -** Pacific Earthquake Engineering Research Center ** -** ** -** ** -** (C) Copyright 1999, The Regents of the University of California ** -** All Rights Reserved. ** -** ** -** Commercial use of this program without express permission of the ** -** University of California, Berkeley, is strictly prohibited. See ** -** file 'COPYRIGHT' in main directory for information on usage and ** -** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** -** ** -** Developed by: ** -** Frank McKenna (fmckenna@ce.berkeley.edu) ** -** Gregory L. Fenves (fenves@ce.berkeley.edu) ** -** Filip C. Filippou (filippou@ce.berkeley.edu) ** -** ** -** ****************************************************************** */ - -// $Revision: 1.3 $ -// $Date: 2009-07-29 21:57:42 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/FrequencyAlgo.cpp,v $ - - -// File: ~/analysis/algorithm/eigenAlgo/FrequencyAlgo.C -// -// Written: Jun Peng -// Created: Mon Feb. 8, 1999 -// Revision: A -// -// Description: This file contains the class definition of FrequencyAlgo. -// FrequencyAlgo is a class which performs a eigen solution algorithm -// to solve the Generalized eigen equations. It is not expected that -// this class will have subclasses. -// -// This class is inheritanted from the base class of SolutionAlgorithm -// which was created by fmk (Frank). - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -FrequencyAlgo::FrequencyAlgo() - :EigenAlgorithm(EigenALGORITHM_TAGS_Frequency) -{ - // do nothing here. -} - -FrequencyAlgo::~FrequencyAlgo() -{ - // do nothing here. -} - -int -FrequencyAlgo::solveCurrentStep(int numModes) -{ - AnalysisModel *theModel = this->getAnalysisModelPtr(); - EigenSOE *theSOE = this->getEigenSOEptr(); - EigenIntegrator *theIntegrator = this->getEigenIntegratorPtr(); - - if ((theModel == 0) || (theIntegrator == 0) || (theSOE == 0)) { - opserr << "WARNING FrequencyAlgo::solverCurrentStep() - "; - opserr << "setLinks() has not been called. \n"; - return -1; - } - - if (theIntegrator->formK() < 0) { - opserr << "WARNING FrequencyAlgo::solverCurrentStep() - "; - opserr << "the Integrator failed in formK().\n"; - return -2; - } - - if (theIntegrator->formM() < 0) { - opserr << "WARNING FrequencyAlgo::solverCurrentStep() - "; - opserr << "the Integrator failed in formK().\n"; - return -3; - } - - if (theSOE->solve(numModes, true) < 0) { - opserr << "Warning FrequencyAlgo::solveCurrentStep() - "; - opserr << "the EigenSOE failed in solve().\n"; - return -4; - } - - // now set the eigenvalues and eigenvectors in the model - theModel->setNumEigenvectors(numModes); - Vector theEigenvalues(numModes); - for (int i=1; i<=numModes; i++) { - theEigenvalues[i-1] = theSOE->getEigenvalue(i); - theModel->setEigenvector(i, theSOE->getEigenvector(i)); - } - theModel->setEigenvalues(theEigenvalues); - - return 0; -} - -int -FrequencyAlgo::sendSelf(int cTag, Channel &theChannel) -{ - return 0; -} - -int -FrequencyAlgo::recvSelf(int cTag, Channel &theChannel, - FEM_ObjectBroker &theBroker) -{ - return 0; -} - -void -FrequencyAlgo::Print(OPS_Stream &s, int flag) -{ - s << "\t Eigen Algorithm \n"; -} - - diff --git a/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.md b/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.md deleted file mode 100644 index e0b36dfbc8..0000000000 --- a/docs/library/analysis/Eigen_Analysis/FrequencyAlgo.md +++ /dev/null @@ -1,44 +0,0 @@ -# FrequencyAlgo -// $Revision: 1.2 $ -// $Date: 2003-02-14 23:00:41 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/FrequencyAlgo.h,v $ - - -// File: ~/analysis/algorithm/eigenAlgo/FrequencyAlgo.h -// -// Written: Jun Peng -// Created: Wed Feb. 8, 1999 -// Revision: A - -FrequencyAlgo is a class which performs a eigen solution algorithm -to solve the Generalized eigen equations. It is not expected that -this class will have subclasses. - -This class is inheritanted from the base class of SolutionAlgorithm -which was created by fmk (Frank). - - -```cpp -#include - -class FrequencyAlgo : public EigenAlgorithm -{ - public: - FrequencyAlgo(); - virtual ~FrequencyAlgo(); - - virtual int solveCurrentStep(int numModes); - - virtual int sendSelf(int commitTag, Channel &theChannel); - virtual int recvSelf(int commitTag, Channel &theChannel, - FEM_ObjectBroker &theBroker); - - virtual void Print(OPS_Stream &s, int flag = 0); - - protected: - - private: - -}; -``` - diff --git a/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.cpp b/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.cpp deleted file mode 100644 index 3f71ecede9..0000000000 --- a/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* ****************************************************************** ** -** OpenSees - Open System for Earthquake Engineering Simulation ** -** Pacific Earthquake Engineering Research Center ** -** ** -** ** -** (C) Copyright 1999, The Regents of the University of California ** -** All Rights Reserved. ** -** ** -** Commercial use of this program without express permission of the ** -** University of California, Berkeley, is strictly prohibited. See ** -** file 'COPYRIGHT' in main directory for information on usage and ** -** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** -** ** -** Developed by: ** -** Frank McKenna (fmckenna@ce.berkeley.edu) ** -** Gregory L. Fenves (fenves@ce.berkeley.edu) ** -** Filip C. Filippou (filippou@ce.berkeley.edu) ** -** ** -** ****************************************************************** */ - -// $Revision: 1.3 $ -// $Date: 2009-07-29 21:57:42 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/StandardEigenAlgo.cpp,v $ - -// Written: MHS -// Created: Oct 2001 -// -// Description: This file contains the class definition of StandardEigenAlgo. -// StandardEigenAlgo is a class which performs a eigen solution algorithm -// to solve standard eigenvalue equations. It is not expected that -// this class will have subclasses. - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -StandardEigenAlgo::StandardEigenAlgo() - :EigenAlgorithm(EigenALGORITHM_TAGS_Standard) -{ - // do nothing here. -} - -StandardEigenAlgo::~StandardEigenAlgo() -{ - // do nothing here. -} - -int -StandardEigenAlgo::solveCurrentStep(int numModes) -{ - AnalysisModel *theModel = this->getAnalysisModelPtr(); - EigenSOE *theSOE = this->getEigenSOEptr(); - EigenIntegrator *theIntegrator = this->getEigenIntegratorPtr(); - - if ((theModel == 0) || (theIntegrator == 0) || (theSOE == 0)) { - - opserr << "StandardEigenAlgo::solverCurrentStep() -- setLinks() has not been called\n"; - return -1; - } - - if (theIntegrator->formK() < 0) { - opserr << "StandardEigenAlgo::solverCurrentStep() -- the Integrator failed in formK()\n"; - return -2; - } - - if (theSOE->solve(numModes, false) < 0) { - opserr << "StandardEigenAlgo::solverCurrentStep() -- the EigenSOE failed in solve()\n"; - return -4; - } - - // now set the eigenvalues and eigenvectors in the model - theModel->setNumEigenvectors(numModes); - Vector theEigenvalues(numModes); - for (int i = 1; i <= numModes; i++) { - theEigenvalues[i-1] = theSOE->getEigenvalue(i); - theModel->setEigenvector(i, theSOE->getEigenvector(i)); - } - theModel->setEigenvalues(theEigenvalues); - - return 0; -} - -int -StandardEigenAlgo::sendSelf(int cTag, Channel &theChannel) -{ - return 0; -} - -int -StandardEigenAlgo::recvSelf(int cTag, Channel &theChannel, - FEM_ObjectBroker &theBroker) -{ - return 0; -} - -void -StandardEigenAlgo::Print(OPS_Stream &s, int flag) -{ - s << "\tStandardEigenAlgo\n"; -} diff --git a/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.md b/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.md deleted file mode 100644 index f2ae839e97..0000000000 --- a/docs/library/analysis/Eigen_Analysis/StandardEigenAlgo.md +++ /dev/null @@ -1,37 +0,0 @@ -# StandardEigenAlgo - -// $Revision: 1.2 $ -// $Date: 2003-02-14 23:00:41 $ -// $Source: /usr/local/cvs/OpenSees/SRC/analysis/algorithm/eigenAlgo/StandardEigenAlgo.h,v $ - -// Written: MHS -// Created: Oct 2001 -// -StandardEigenAlgo is a class which performs a eigen solution algorithm -to solve standard eigenvalue equations. It is not expected that -this class will have subclasses. - -```cpp -#include - -class StandardEigenAlgo : public EigenAlgorithm -{ - public: - StandardEigenAlgo(); - virtual ~StandardEigenAlgo(); - - virtual int solveCurrentStep(int numModes); - - virtual int sendSelf(int commitTag, Channel &theChannel); - virtual int recvSelf(int commitTag, Channel &theChannel, - FEM_ObjectBroker &theBroker); - - virtual void Print(OPS_Stream &s, int flag = 0); - - protected: - - private: - -}; -``` - diff --git a/docs/library/analysis/Eigen_Analysis/index.md b/docs/library/analysis/Eigen_Analysis/index.md deleted file mode 100644 index f3b4aad1c1..0000000000 --- a/docs/library/analysis/Eigen_Analysis/index.md +++ /dev/null @@ -1,12 +0,0 @@ -# Eigen Analysis - - eigen numEigenvalues? - -To perform a generalized eigenvalue problem to determine the first -numEigenvalues eigenvalues and eigenvectors. The eigenvectors are stored -at the nodes and can be printed out. Currently each invocation of this -command constructs a new EigenvalueAnalysis object, each with new -component objects: a ConstraintHandler of type Plain, an EigenvalueSOE -and solver of type BandArpackSOE and BandArpackSolver and an algorithm -of type FrequencyAlgo. These objects are destroyed when the command has -finished. This will change. diff --git a/docs/library/analysis/StaticAnalysis/StagedLoadControl.md b/docs/library/analysis/StaticAnalysis/StagedLoadControl.md deleted file mode 100644 index 6387e7ee96..0000000000 --- a/docs/library/analysis/StaticAnalysis/StagedLoadControl.md +++ /dev/null @@ -1,2 +0,0 @@ -# StagedLoadControl - From b143c74d8fa66e6494b61528db7a4c9854018100 Mon Sep 17 00:00:00 2001 From: claudio perez <50180406+claudioperez@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:21:35 -0700 Subject: [PATCH 3/3] cmp --- ...Concrete3D_Ex_CyclicUniaxialCompression.py | 125 ------------------ tests/openseespy/ASDConcrete3D_Ex_Surface.py | 113 ---------------- tests/openseespy/ASDConcrete3D_MakeLaws.py | 120 ----------------- 3 files changed, 358 deletions(-) delete mode 100644 tests/openseespy/ASDConcrete3D_Ex_CyclicUniaxialCompression.py delete mode 100644 tests/openseespy/ASDConcrete3D_Ex_Surface.py delete mode 100644 tests/openseespy/ASDConcrete3D_MakeLaws.py diff --git a/tests/openseespy/ASDConcrete3D_Ex_CyclicUniaxialCompression.py b/tests/openseespy/ASDConcrete3D_Ex_CyclicUniaxialCompression.py deleted file mode 100644 index 7807d2a656..0000000000 --- a/tests/openseespy/ASDConcrete3D_Ex_CyclicUniaxialCompression.py +++ /dev/null @@ -1,125 +0,0 @@ -from opensees import openseespy as ops -from ASDConcrete3D_MakeLaws import make as make_concrete -from matplotlib import pyplot as plt -import numpy as np - -# the 2D model -ops.wipe() -ops.model('basic', '-ndm', 2, '-ndf', 2) - -# the material (units = N, mm) -E = 30000.0 -v = 0.2 -fc = 30.0 -ft = fc/10.0 -ec = 2.0*fc/E -Gt = 0.073*fc**0.18 -Gc = 2.0*Gt*(fc/ft)**2 -Te, Ts, Td, Ce, Cs, Cd, lch_ref = make_concrete(E, ft, fc, ec, Gt, Gc) -ops.nDMaterial('ASDConcrete3D', 1, - E, v, # elasticity - '-Te', *Te, '-Ts', *Ts, '-Td', *Td, # tensile law - '-Ce', *Ce, '-Cs', *Cs, '-Cd', *Cd, # compressive law - '-autoRegularization', lch_ref # use auto regularization: the input Gt and Gc are NOT specific fracture energies - ) - -# the plane stress -ops.nDMaterial('PlaneStress', 2, 1) - -# a triangle with lch = 250 -lch = 250.0 -ops.node(1, 0, 0) -ops.node(2, lch, 0) -ops.node(3, 0, lch) -ops.element('tri31', 1, 1, 2, 3, 1.0, 'PlaneStress', 2) - -# fixity -ops.fix(1, 1, 1) -ops.fix(2, 0, 1) -ops.fix(3, 1, 0) - -# a simple ramp -ops.timeSeries('Linear', 1) - -# imposed strain -emax = 0.01 -cycles = np.linspace(0.0, emax, 10) - -# begin plot -SX = [0.0] -SY = [0.0] -PX = [0.0] -PY = [0.0] -plt.ion() -fig, ax = plt.subplots(1,1) -ax.grid(linestyle=':') -ax.set(xlim=[-emax*1.1, emax*0.1],ylim=[-fc*1.2, fc*0.1]) -ax.set_title('Cyclic uniaxial compression') -ax.set_xlabel('\N{GREEK SMALL LETTER EPSILON}\N{SUBSCRIPT ONE}\N{SUBSCRIPT ONE}') -ax.set_ylabel('\N{GREEK SMALL LETTER SIGMA}\N{SUBSCRIPT ONE}\N{SUBSCRIPT ONE}') -the_line, = ax.plot(SX, SY, '-k', linewidth=2.0) -the_tip, = ax.plot(PX, PY, 'or', fillstyle='full', markersize=8) - -# some default analysis settings -ops.constraints('Transformation') -ops.numberer('Plain') -ops.system('FullGeneral') -ops.test('NormDispIncr', 1.0e-8, 10, 0) -ops.algorithm('Newton') - -for icycle in range(1, len(cycles)): - # get current plastic strain (if any) - ep = -ops.nodeDisp(2)[0]/lch - # impose strain - current_strain = cycles[icycle] - ops.pattern('Plain', 1, 1) - ops.sp(2, 1, -current_strain*lch) - # load - # start from a percentage = ep/current_strain - time_start = ep/current_strain - ops.setTime(time_start) - num_incr = max(1, int((current_strain-ep)/emax*100.0)) - time_incr = (1.0-time_start)/float(num_incr) - ops.integrator('LoadControl', time_incr) - ops.analysis('Static') - for i in range(num_incr): - ok = ops.analyze(1) - if ok == 0: - strain = ops.eleResponse(1, 'material', 1, 'strain') - stress = ops.eleResponse(1, 'material', 1, 'stress') - SX.append(strain[0]) - SY.append(stress[0]) - the_line.set_xdata(SX) - the_line.set_ydata(SY) - PX = [SX[-1]] - PY = [SY[-1]] - the_tip.set_xdata(PX) - the_tip.set_ydata(PY) - fig.canvas.draw() - fig.canvas.flush_events() - else: - break - if ok != 0: - break - # unload - ops.remove('pattern', 1) - ops.setTime(0.0) - ops.integrator('LoadControl', 1.0) - ops.analysis('Static') - ok = ops.analyze(1) - # plot the unload point - strain = ops.eleResponse(1, 'material', 1, 'strain') - stress = ops.eleResponse(1, 'material', 1, 'stress') - SX.append(strain[0]) - SY.append(stress[0]) - the_line.set_xdata(SX) - the_line.set_ydata(SY) - PX = [SX[-1]] - PY = [SY[-1]] - the_tip.set_xdata(PX) - the_tip.set_ydata(PY) - fig.canvas.draw() - fig.canvas.flush_events() - -plt.ioff() -plt.show() diff --git a/tests/openseespy/ASDConcrete3D_Ex_Surface.py b/tests/openseespy/ASDConcrete3D_Ex_Surface.py deleted file mode 100644 index d8e839db64..0000000000 --- a/tests/openseespy/ASDConcrete3D_Ex_Surface.py +++ /dev/null @@ -1,113 +0,0 @@ -from opensees import openseespy as ops -from math import pi, sin, cos -from matplotlib import pyplot as plt - -def analyze_dir (dX, dY): - - # info - print("Analyze direction ({:8.3g}, {:8.3g})".format(dX, dY)) - - # the 2D model - ops.wipe() - ops.model('basic', '-ndm', 2, '-ndf', 2) - - # the isotropic material - E = 30000.0 - v = 0.2 - sig0 = 30.0 - # define a perfect bilinear behavior in tension and compression to record the failure surface - fc = sig0 - ec = fc/E - ft = fc/10.0 - et = ft/E - ops.nDMaterial('ASDConcrete3D', 1, E, v, - '-Ce', 0.0, ec, ec+1, - '-Cs', 0.0, fc, fc, - '-Cd', 0.0, 0.0, 0.0, - '-Te', 0.0, et, et+1, - '-Ts', 0.0, ft, ft, - '-Td', 0.0, 0.0, 0.0) - - # the plane stress - ops.nDMaterial('PlaneStress', 2, 1) - - # a triangle - ops.node(1, 0, 0) - ops.node(2, 1, 0) - ops.node(3, 0, 1) - ops.element('tri31', 1, 1, 2, 3, 1.0, 'PlaneStress', 2) - - # fixity - ops.fix(1, 1, 1) - ops.fix(2, 0, 1) - ops.fix(3, 1, 0) - - # a simple ramp - ops.timeSeries('Linear', 1, '-factor', 2.0*sig0) - - # imposed stresses in the current direction - ops.pattern('Plain', 1, 1) - ops.load(2, dX, 0.0) - ops.load(3, 0.0, dY) - - # analyze - ops.constraints('Transformation') - ops.numberer('Plain') - ops.system('FullGeneral') - ops.test('NormDispIncr', 1.0e-6, 10, 0) - ops.algorithm('Newton') - - dLambda = 0.1 - dLambdaMin = 0.0001 - Lambda = 0.0 - sX = 0.0 - sY = 0.0 - while True: - ops.integrator('LoadControl', dLambda) - ops.analysis('Static') - ok = ops.analyze(1) - if ok == 0: - stress = ops.eleResponse(1, 'material', 1, 'stress') - sX = stress[0] - sY = stress[1] - Lambda += dLambda - if Lambda > 0.9999: - break - else: - dLambda /= 2.0 - if dLambda < dLambdaMin: - break - - # done - return (sX, sY) - -# number of subdivisions -NDiv = 80 -NP = NDiv+1 -dAngle = 2.0*pi/NDiv -SX = [0.0]*NP -SY = [0.0]*NP - -plt.ion() -fig, ax = plt.subplots(1,1) -ax.set(xlim=[-45, 10],ylim=[-45, 10]) -ax.plot([-1000,1000],[0,0],color='black',linewidth=0.5) # S1 -ax.plot([0,0],[-1000,1000],color='black',linewidth=0.5) # S2 -ax.grid(linestyle=':') -ax.set_aspect('equal', 'box') - -the_line, = ax.plot(SX, SY, '-k', linewidth=2.0) -for i in range(NP): - angle = float(i)*dAngle - dX = cos(angle) - dY = sin(angle) - a,b = analyze_dir(dX, dY) - SX[i] = a - SY[i] = b - the_line.set_xdata(SX) - the_line.set_ydata(SY) - fig.canvas.draw() - fig.canvas.flush_events() - -plt.ioff() -plt.show() diff --git a/tests/openseespy/ASDConcrete3D_MakeLaws.py b/tests/openseespy/ASDConcrete3D_MakeLaws.py deleted file mode 100644 index 26cc9ed79f..0000000000 --- a/tests/openseespy/ASDConcrete3D_MakeLaws.py +++ /dev/null @@ -1,120 +0,0 @@ -import math - -def _bezier3(xi, x0, x1, x2, y0, y1, y2): - ''' - a quadratic bezier curve. gives the yi at xi, from 3 control points - ''' - A = x0 - 2.0 * x1 + x2 - B = 2.0 * (x1 - x0) - C = x0 - xi - if abs(A) < 1.0e-12: - x1 = x1 + 1.0E-6 * (x2 - x0) - A = x0 - 2.0 * x1 + x2 - B = 2.0 * (x1 - x0) - C = x0 - xi - if A == 0.0: - return 0.0 - D = B * B - 4.0 * A * C - t = (math.sqrt(D) - B) / (2.0 * A) - return (y0 - 2.0 * y1 + y2) * t * t + 2.0 * (y1 - y0) * t + y0 - -def _get_lch_ref(E,ft,Gt,fc,ec,Gc): - ''' - automatically computes a dummy reference characteristic length - when Gt and Gc are computed from equations - ''' - - # min lch for tension - et_el = ft/E # no damage at peak - Gt_min = ft*et_el/2.0 - hmin_t = Gt/Gt_min/100.0 - - # min lch for compression - ec1 = fc/E - ec_pl = (ec-ec1)*0.4 + ec1 - Gc_min = fc*(ec-ec_pl)/2.0 - hmin_c = Gc/Gc_min/100.0 - - # return the minimum - return min(hmin_t, hmin_c) - -def _make_tension(E, ft, Gt): - ''' - a trilinar hardening-softening law for tensile response - ''' - f0 = ft*0.9 - f1 = ft - e0 = f0/E - e1 = f1/E*1.5 - ep = e1-f1/E - f2 = ft/5.0 - f3 = 1.0e-3*ft - w2 = Gt/ft - w3 = 5.0*w2 - e2 = w2 + f2/E + ep - if e2 <= e1: e2 = e1*1.001 - e3 = w3 + f3/E + ep - if e3 <= e2: e3 = e2*1.001 - e4 = e3*10.0 - Te = [0.0, e0, e1, e2, e3, e4] # total strain points - Ts = [0.0, f0, f1, f2, f3, f3] # nominal stress points - Td = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # initialize damage list - Tpl = [0.0, 0.0, ep, e2*0.9, e3*0.8, e3*0.8] # desired values of equivalent plastic strains - for i in range(2, len(Te)): - xi = Te[i] - si = Ts[i] - xipl = Tpl[i] - xipl_max = xi-si/E - xipl = min(xipl, xipl_max) - qi = (xi-xipl)*E - Td[i] = 1.0-si/qi # compute damage - return (Te, Ts, Td) - -def _make_compression(E, fc, ec, Gc): - ''' - a quadratic hardening followed by linear softening for compressive response - ''' - fc0 = fc/2.0 - ec0 = fc0/E - ec1 = fc/E - fcr = fc*1.0e-1 - ec_pl = (ec-ec1)*0.4 + ec1 - Gc1 = fc*(ec-ec_pl)/2.0 - Gc2 = max(Gc1*1.0e-2, Gc-Gc1) - ecr = ec + 2.0*Gc2/(fc+fcr) - Ce = [0.0, ec0] # total strain points - Cs = [0.0, fc0] # nominal stress points - Cpl = [0.0, 0.0] # desired values of equivalent plastic strains - nc = 10 - dec = (ec-ec0)/(nc-1) - for i in range(nc-1): - iec = ec0+(i+1.0)*dec - Ce.append(iec) - Cs.append(_bezier3(iec, ec0, ec1, ec, fc0, fc, fc)) - Cpl.append(Cpl[-1]+(iec-Cpl[-1])*0.7) - # end of linear softening - begin residual plateau - Ce.append(ecr) - Cs.append(fcr) - Cpl.append(Cpl[-1] + (ecr-Cpl[-1])*0.7) - # extend to make a plateau - Ce.append(ecr+ec0) - Cs.append(fcr) - Cpl.append(Cpl[-1]) - # compute damage now - Cd = [0.0]*len(Ce) - for i in range(2, len(Ce)): - xi = Ce[i] - si = Cs[i] - xipl = Cpl[i] - xipl_max = xi-si/E - xipl = min(xipl, xipl_max) - qi = (xi-xipl)*E - Cd[i] = 1.0-si/qi # compute damage - # Done - return (Ce, Cs, Cd) - -def make(E, ft, fc, ec, Gt, Gc): - lch_ref = _get_lch_ref(E, ft, Gt, fc, ec, Gc) - Te, Ts, Td = _make_tension(E, ft, Gt/lch_ref) - Ce, Cs, Cd = _make_compression(E, fc, ec, Gc/lch_ref) - return (Te, Ts, Td, Ce, Cs, Cd, lch_ref) \ No newline at end of file