XC Open source finite element analysis program
PBowlLoading.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 //# COPYRIGHT (C): Woody's license (by BJ):
29 // ``This source code is Copyrighted in
30 // U.S., for an indefinite period, and anybody
31 // caught using it without our permission, will be
32 // mighty good friends of ourn, cause we don't give
33 // a darn. Hack it. Compile it. Debug it. Run it.
34 // Yodel it. Enjoy it. We wrote it, that's all we
35 // wanted to do.''
36 //
37 //# PROJECT: Object Oriented Finite Element Program
38 //# PURPOSE: Plastic Bowl (aka Domain Reduction) implementation:
39 //# This file contains the class definition for PBowlLoading.
40 //# PBowlLoading is a subclass of loadPattern,
41 //# which implements the plastic bowl loading
42 //# (aka Domain Reduction Method) as described
43 //# by Jacobo Bielak et al.
44 //# CLASS: PBowlLoading
45 //#
46 //# VERSION: 0.61803398874989 (golden section)
47 //# LANGUAGE: C++
48 //# TARGET OS: all...
49 //# DESIGN: Zhaohui Yang, Boris Jeremic
50 //# PROGRAMMER(S): Jinxiu Liao, Zhaohui Yang, Boris Jeremic
51 //#
52 //#
53 //# DATE: 21Oct2002
54 //# UPDATE HISTORY: 31Oct2002 fixed some memory leaks
55 //# 04Nov2002 changed the way plastic bowl elements are
56 //# input.
57 //# 10Nov2002 Zeroing diagonal and out of diagaonal blocks
58 //# for b<->e nodes
59 //# 13Nov2002 changes to split "b" and "e" nodes within
60 //# the plastic bowl elements. Also, simple definition of
61 //# of cubic bowl is now facilitated ...
62 //#
63 //#
64 //#
65 //===============================================================================
66 
67 #ifndef PBowlLoading_h
68 #define PBowlLoading_h
69 
70 // Purpose:
71 #include <domain/load/pattern/LoadPattern.h>
72 
73 namespace XC {
74 class Vector;
75 class Matrix;
76  class ID;
77 
79 //
81 class PBowlLoading : public LoadPattern
82  {
83  private:
84  ID *PBowlElements; // vector containing the plastic bowling elements
85  ID *ExteriorNodes; // vector containing the nodes on plastic bowl except boundary nodes
86  ID *BoundaryNodes; // vector containing the nodes on the boundary of the plastic bowl
87  Matrix *PBowlLoads; // matrix containing the plastic bowling loads
88 
89  Matrix *U; // vector to store input displ. for all nodes and all time steps
90  int UnumDataPoints; // number of data points
91  Matrix *Udd; // vector to store input accel. for all nodes and all time steps
92  int UddnumDataPoints;// number of data points
93 
94  int thetimeSteps;
95 
96 
97  //Coordinates for the plastic box
98  double PBTimeIncr; // specifies the time increment used in load path vector
99  double cFactor; // additional factor on the returned load factor
100  double xPlus; // x-coor for the right surface
101  double xMinus; // x-coor for the left surface
102  double yPlus; // y-coor for the right surface
103  double yMinus; // y-coor for the left surface
104  double zPlus; // z-coor for the up surface
105  double zMinus; // z-coor for the bottom surface
106 
107  bool LoadComputed; // flag to indicate whether the equivalent force has been computed
108  protected:
109  //void addPBElements(const ID &PBEle); //Adding plastic bowl elements
110  //void addPBNodes(const ID &PBNodes); //Adding plastic bowl nodes
111  //void addPBLoads(const Matrix &PBLoads); //Adding plastic bowl loades
112  void CompPBLoads(); //Finding all plastic bowl nodes and compute the equivalent forces from plastic bowl loading
113  const Vector & getNodalLoad(int node, double time); //Getting the nodal load computed from plastic bowl loading corresponding to time
114  public:
115  PBowlLoading(void);
116  PBowlLoading(int tag);
117  PBowlLoading(int tag, const char *PBEfName, const char *DispfName,
118  const char *AccefName, double theTimeIncr=1.0,double theFactor=1.0,
119 // coordinates of "b" nodes for cubic plastic bowl
120  double xplus = 0.0,
121  double xminus = 0.0,
122  double yplus = 0.0,
123  double yminus = 0.0,
124  double zplus = 0.0,
125  double zminus = 0.0);
126  ~PBowlLoading(void);
127 
128  void setDomain(Domain *theDomain);
129  void applyLoad(double time);
130  void Print(std::ostream &s, int flag =0);
131 
132  // methods for o/p
133  int sendSelf(CommParameters &);
134  int recvSelf(const CommParameters &);
135 
136  };
137 } // end of XC namespace
138 
139 #endif
A LoadPattern object is used to to store reference loads and single point constraints and a TimeSerie...
Definition: LoadPattern.h:87
void setDomain(Domain *theDomain)
Set the domain for the pattern loads.
Definition: PBowlLoading.cpp:374
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:98
Definition: Vector.h:82
void Print(std::ostream &s, int flag=0)
Prints load pattern information.
Definition: PBowlLoading.cpp:587
int sendSelf(CommParameters &)
Sends object through the channel being passed as parameter.
Definition: PBowlLoading.cpp:436
Definition: ID.h:77
void applyLoad(double time)
Apply the load for pseudo-time being passed as parameter.
Definition: PBowlLoading.cpp:399
Definition: Matrix.h:82
int recvSelf(const CommParameters &)
Receives object through the channel being passed as parameter.
Definition: PBowlLoading.cpp:443
??.
Definition: PBowlLoading.h:81
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34