XC Open source finite element analysis program
QuadSurface.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 //QuadSurface.h
28 
29 #ifndef QUADSURFACE_H
30 #define QUADSURFACE_H
31 
32 #include "Face.h"
33 #include "preprocessor/cad/matrices/MatrizPtrPnt.h"
34 
35 namespace XC {
36 
40 class QuadSurface: public Face
41  {
42  protected:
43  MatrizPos3d get_posiciones(void) const;
44  const Edge *get_lado_homologo(const Edge *l) const;
45  public:
46  QuadSurface(Preprocessor *m,const size_t &ndivI= 4, const size_t &ndivJ= 4);
47  virtual SetEstruct *getCopy(void) const;
49  inline virtual size_t NumVertices(void) const
50  { return 4; }
51 
52  void setPuntos(const ID &);
53  void setPuntos(const MatrizPtrPnt &pntPtrs);
54  void setPuntos(const m_int &);
55  void defGridPoints(const boost::python::list &);
56 
57  Vector3d getIVector(void) const;
58  Vector3d getJVector(void) const;
59  Vector3d getKVector(void) const;
60 
61  void SetNDiv(const Edge *l,const size_t &nd);
62  virtual void ConciliaNDivIJ(void);
63  virtual void SetNDivI(const size_t &ndi);
64  virtual void SetNDivJ(const size_t &ndi);
65  void SetElemSizeI(const double &sz);
66  void SetElemSizeJ(const double &sz);
67  void SetElemSizeIJ(const double &,const double &);
68 
69  bool checkNDivs(const size_t &i,const size_t &j) const;
70  bool checkNDivs(void) const;
71  void create_nodes(void);
72  void genMesh(meshing_dir dm);
73  };
74 
75 } //end of XC namespace
76 #endif
Base class for one-dimensional geometry objects.
Definition: Edge.h:46
Surface.
Definition: Face.h:41
virtual void SetNDivJ(const size_t &ndi)
Asigna el number of divisions en el eje j.
Definition: QuadSurface.cc:134
void SetElemSizeIJ(const double &, const double &)
Computes the number of divisions on the i and j axis for an element edges sizes equal or lesser than ...
Definition: QuadSurface.cc:215
QuadSurface(Preprocessor *m, const size_t &ndivI=4, const size_t &ndivJ=4)
Constructor.
Definition: QuadSurface.cc:39
void genMesh(meshing_dir dm)
Triggers mesh creation.
Definition: QuadSurface.cc:449
void setPuntos(const ID &)
Creates and inserts the lines from the points identified by the indexes being passed as parameter...
Definition: QuadSurface.cc:223
virtual size_t NumVertices(void) const
Returns the number of vertices.
Definition: QuadSurface.h:49
virtual void ConciliaNDivIJ(void)
Conciliate lines division numbers with those of the surface.
Definition: QuadSurface.cc:155
Finite element model generation tools.
Definition: Preprocessor.h:58
void create_nodes(void)
Creates surface nodes.
Definition: QuadSurface.cc:402
Definition: ID.h:77
structured set, i. e. a set that can return a pointer a to a node or an element from its indices i...
Definition: SetEstruct.h:45
const Edge * get_lado_homologo(const Edge *l) const
Returns the lado homólogo al being passed as parameter.
Definition: QuadSurface.cc:89
Quadrangle defined by its four vertices.
Definition: QuadSurface.h:40
bool checkNDivs(void) const
Verifies that the number of divisions of the lines are compatible.
Definition: QuadSurface.cc:186
virtual void SetNDivI(const size_t &ndi)
Asigna el number of divisions en el eje i.
Definition: QuadSurface.cc:114
Matriz de pointers to puntos.
Definition: MatrizPtrPnt.h:49
void SetElemSizeJ(const double &sz)
Computes the number of divisions on the j axis for an element edge size equal or lesser than the size...
Definition: QuadSurface.cc:203
================================================================================
Definition: ContinuaReprComponent.h:34
virtual SetEstruct * getCopy(void) const
Virtual constructor.
Definition: QuadSurface.cc:43
MatrizPos3d get_posiciones(void) const
Returns (ndivI+1)*(ndivJ+1) positions to place the nodes.
Definition: QuadSurface.cc:354
void SetElemSizeI(const double &sz)
Computes the number of divisions on the i axis for an element edge size equal or lesser than the size...
Definition: QuadSurface.cc:192