XC Open source finite element analysis program
BeamIntegration.h
1 //----------------------------------------------------------------------------
2 // XC program; finite element analysis code
3 // for structural analysis and design.
4 //
5 // Copyright (C) Luis Claudio Pérez Tato
6 //
7 // This program derives from OpenSees <http://opensees.berkeley.edu>
8 // developed by the «Pacific earthquake engineering research center».
9 //
10 // Except for the restrictions that may arise from the copyright
11 // of the original program (see copyright_opensees.txt)
12 // XC is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This software is distributed in the hope that it will be useful, but
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program.
25 // If not, see <http://www.gnu.org/licenses/>.
26 //----------------------------------------------------------------------------
27 /* ****************************************************************** **
28 ** OpenSees - Open System for Earthquake Engineering Simulation **
29 ** Pacific Earthquake Engineering Research Center **
30 ** **
31 ** **
32 ** (C) Copyright 1999, The Regents of the University of California **
33 ** All Rights Reserved. **
34 ** **
35 ** Commercial use of this program without express permission of the **
36 ** University of California, Berkeley, is strictly prohibited. See **
37 ** file 'COPYRIGHT' in main directory for information on usage and **
38 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
39 ** **
40 ** Developed by: **
41 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
42 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
43 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
44 ** **
45 ** ****************************************************************** */
46 
47 // $Revision: 1.6 $
48 // $Date: 2006/01/17 21:24:00 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/element/forceBeamColumn/BeamIntegration.h,v $
50 
51 #ifndef BeamIntegration_h
52 #define BeamIntegration_h
53 
54 #include <utility/actor/actor/MovableObject.h>
55 #include "xc_utils/src/nucleo/EntCmd.h"
56 
57 class ExprAlgebra;
58 
59 namespace XC {
60 class Matrix;
61 class ElementalLoad;
62 class Information;
63 class FVector;
64 class CrdTransf;
65 class Vector;
66 
68 //
70 //
73 class BeamIntegration: public MovableObject, public EntCmd
74  {
75  public:
76  BeamIntegration(int classTag);
77  inline virtual ~BeamIntegration(void) {}
78 
79  virtual void getSectionLocations(int nIP, double L, double *xi) const= 0;
80  virtual void getSectionWeights(int nIP, double L, double *wt) const= 0;
81  const Matrix &getIntegrPointCoords(int nIP, double L) const;
82  const Matrix &getIntegrPointNaturalCoords(int nIP, double L) const;
83  const Matrix &getIntegrPointLocalCoords(int nIP, double L) const;
84 
85  const Matrix &getIntegrPointNaturalCoords(int nIP,const CrdTransf &trf) const;
86  const Matrix &getIntegrPointNormalizedCoords(int nIP,const CrdTransf &trf) const;
87  const Matrix &getIntegrPointLocalCoords(int nIP,const CrdTransf &trf) const;
88  const Matrix &getIntegrPointGlobalCoords(int nIP,const CrdTransf &trf) const;
89 
90  const Vector &evalInIntegrPoints(const ExprAlgebra &expr,int nIP,const CrdTransf &trf) const;
91  double getIntegral(const ExprAlgebra &expr,int nIP,const CrdTransf &trf) const;
92 
93  virtual void addElasticDeformations(ElementalLoad *theLoad,double loadFactor,double L,FVector &v0) {return;}
94  // Return 0 if there is no elastic interior, -1 otherwise
95  virtual int addElasticFlexibility(double L, Matrix &fe) {return 0;}
96 
97  virtual double getTangentDriftI(double L, double LI, double q2,double q3, bool yAxis = false) {return 0.0;}
98  virtual double getTangentDriftJ(double L, double LI, double q2,double q3, bool yAxis = false) {return 0.0;}
99 
100  virtual BeamIntegration *getCopy(void) const= 0;
101 
102  virtual int setParameter(const std::vector<std::string> &argv, Parameter &param);
103  virtual int updateParameter(int parameterID, Information &info);
104  virtual int activateParameter(int parameterID);
105 
106  virtual void getLocationsDeriv(int nIP, double L, double dLdh,double *dptsdh);
107  virtual void getWeightsDeriv(int nIP, double L, double dLdh,double *dwtsdh);
108  // Return 0 if there is no elastic interior, -1 otherwise
109  virtual int addElasticFlexDeriv(double L, Matrix &dfedh,double dLdh = 0.0) {return 0;}
110 
111  virtual void Print(std::ostream &s, int flag = 0) = 0;
112 
113  };
114 
115 int sendBeamIntegrationPtr(BeamIntegration *,int posClassTag, int posDbTag,DbTagData &,CommParameters &);
116 BeamIntegration *receiveBeamIntegrationPtr(BeamIntegration *,int posClassTag, int posDbTag,DbTagData &,const CommParameters &);
117 
118 } // end of XC namespace
119 
120 #endif
CrdTransf provides the abstraction of a frame coordinate transformation. It is an abstract base class...
Definition: CrdTransf.h:87
Element internal forces.
Definition: FVector.h:44
const Vector & evalInIntegrPoints(const ExprAlgebra &expr, int nIP, const CrdTransf &trf) const
Returns the values of the expresion being pased as parameter on each integration point.
Definition: BeamIntegration.cpp:138
Definition: Vector.h:82
Vector que almacena los dbTags de los miembros de la clase.
Definition: DbTagData.h:43
int sendBeamIntegrationPtr(BeamIntegration *, int posClassTag, int posDbTag, DbTagData &, CommParameters &)
Envía a pointer a material through the channel being passed as parameter.
Definition: BeamIntegration.cpp:161
const Matrix & getIntegrPointNormalizedCoords(int nIP, const CrdTransf &trf) const
Returns a matrix with the normalized coordinates for each integration point.
Definition: BeamIntegration.cpp:118
BeamIntegration * receiveBeamIntegrationPtr(BeamIntegration *, int posClassTag, int posDbTag, DbTagData &, const CommParameters &)
Recibe a pointer a material through the channel being passed as parameter.
Definition: BeamIntegration.cpp:178
Information about an element.
Definition: Information.h:80
double getIntegral(const ExprAlgebra &expr, int nIP, const CrdTransf &trf) const
Returns the integral of the expresion.
Definition: BeamIntegration.cpp:145
const Matrix & getIntegrPointGlobalCoords(int nIP, const CrdTransf &trf) const
Returns a matrix with the global coordinates for each integration point.
Definition: BeamIntegration.cpp:134
Base class for loads over elements.
Definition: ElementalLoad.h:73
Object that can move between processes.
Definition: MovableObject.h:91
const Matrix & getIntegrPointLocalCoords(int nIP, double L) const
Returns the coordenadas locales (entre 0 y L) a partir de las normalizadas.
Definition: BeamIntegration.cpp:104
Definition: Matrix.h:82
const Matrix & getIntegrPointCoords(int nIP, double L) const
Returns the coordenadas normalizadas (entre 0 y 1).
Definition: BeamIntegration.cpp:84
const Matrix & getIntegrPointNaturalCoords(int nIP, double L) const
Returns the coordenadas naturales (entre -1 y 1) a partir de las normalizadas.
Definition: BeamIntegration.cpp:94
Definition: Parameter.h:65
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Base class for integration on beam elements.
Definition: BeamIntegration.h:73