29 #include "PlaneElement.h" 34 #include "preprocessor/multi_block_topology/matrices/ElemPtrArray3d.h" 35 #include "preprocessor/multi_block_topology/aux_meshing.h" 36 #include "preprocessor/prep_handlers/LoadHandler.h" 37 #include "domain/load/plane/BidimStrainLoad.h" 38 #include "vtkCellType.h" 43 template <
class PhysProp>
51 QuadBase4N(
int tag,
int classTag,
const PhysProp &);
52 QuadBase4N(
int tag,
int classTag,
int node1,
int node2,
int node3,
int node4,
const PhysProp &pp);
66 template <
class PhysProp>
71 template <
class PhysProp>
76 template <
class PhysProp>
80 this->theNodes.set_id_nodes(node1,node2,node3,node4);
85 template <
class PhysProp>
90 template <
class PhysProp>
95 const size_t sz= nodes.size();
100 retval[1]= nodes(i+1);
109 template <
class PhysProp>
114 const int i1= nodes.
find(n1);
115 const int i2= nodes.
find(n2);
116 if((i1>=0) && (i2>=0))
118 const int dif= i2-i1;
123 else if((i1==3) && (i2==0))
125 else if((i1==0) && (i2==3))
132 template <
class PhysProp>
137 const size_t sz= nodes.size();
150 template <
class PhysProp>
154 this->physicalProperties.getMaterialsVector().zeroInitialGeneralizedStrains();
159 template <
class PhysProp>
163 std::cerr << this->getClassName()
164 <<
"; load over inactiva element: " 165 << this->getTag() << std::endl;
168 if(
const BidimStrainLoad *strainLoad= dynamic_cast<const BidimStrainLoad *>(theLoad))
170 static std::vector<Vector> initStrains;
171 initStrains= strainLoad->getStrains();
172 for(std::vector<Vector>::iterator i= initStrains.begin();i!=initStrains.end();i++)
174 this->physicalProperties.getMaterialsVector().addInitialGeneralizedStrains(initStrains);
178 std::cerr <<
"QuadBase4N::addLoad -- load type unknown for element with tag: " <<
179 this->getTag() << std::endl;
187 template <
class PhysProp>
ElemPtrArray3d put_on_mesh(const NodePtrArray3d &, meshing_dir dm) const
Put the element on the mesh being passed as parameter.
Definition: QuadBase4N.h:86
std::vector< const Node * > NodesEdge
Nodes on an element edge.
Definition: Element.h:113
QuadBase4N(int classTag, const PhysProp &pp)
Constructor.
Definition: QuadBase4N.h:67
Vector of integers.
Definition: ID.h:93
Three-dimensional array of pointers to elements.
Definition: ElemPtrArray3d.h:43
iterator find(const int &)
Returns an iterator to the node identified by the tag being passed as parameter.
Definition: NodePtrs.cc:148
Base class for 4 node quads.
Definition: QuadBase4N.h:44
int getVtkCellType(void) const
Interfaz con VTK.
Definition: QuadBase4N.h:188
ID getLocalIndexNodesEdge(const size_t &i) const
Returns the local indexes of the nodes that lie on the i-th edge.
Definition: QuadBase4N.h:133
Element::NodesEdge getNodesEdge(const size_t &i) const
Returns the nodes de un lado of the element.
Definition: QuadBase4N.h:91
Node pointer container for elements.
Definition: NodePtrsWithIDs.h:45
int addLoad(ElementalLoad *theLoad, double loadFactor)
Adds to the element the load being passed as parameter.
Definition: QuadBase4N.h:160
Three-dimensional array of pointers to nodes.
Definition: NodePtrArray3d.h:50
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Base class for loads over elements.
Definition: ElementalLoad.h:77
Load due to restricted material expansion or contraction on bidimensional elements.
Definition: BidimStrainLoad.h:38
Mesh node.
Definition: Node.h:110
Base class for plane elements.
Definition: PlaneElement.h:48
void zeroLoad(void)
Zeroes loads on element.
Definition: QuadBase4N.h:151
int getEdgeNodes(const Node *, const Node *) const
Returns the edge of the element that ends in the nodes being passed as parameters.
Definition: QuadBase4N.h:110
ElemPtrArray3d put_quad4N_on_mesh(const Element &e, const NodePtrArray3d &, meshing_dir dm)
Place the elements on the mesh passed as parameter.
Definition: aux_meshing.cc:127