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" 44 template <
class PhysProp>
52 TriBase3N(
int tag,
int classTag,
const PhysProp &);
53 TriBase3N(
int tag,
int classTag,
int node1,
int node2,
int node3,
const PhysProp &pp);
67 template <
class PhysProp>
72 template <
class PhysProp>
77 template <
class PhysProp>
81 this->theNodes.set_id_nodes(node1,node2,node3);
85 template <
class PhysProp>
88 std::cerr <<
"ElemPtrArray3d XC::TriBase3N<PhysProp>::put_on_mesh not implemented" << std::endl;
94 template <
class PhysProp>
99 const size_t sz= nodes.size();
104 retval[1]= nodes(i+1);
113 template <
class PhysProp>
118 const int i1= nodes.
find(n1);
119 const int i2= nodes.
find(n2);
120 if((i1>=0) && (i2>=0))
122 const int dif= i2-i1;
127 else if((i1==3) && (i2==0))
129 else if((i1==0) && (i2==3))
136 template <
class PhysProp>
141 const size_t sz= nodes.size();
154 template <
class PhysProp>
158 this->physicalProperties.getMaterialsVector().zeroInitialGeneralizedStrains();
163 template <
class PhysProp>
167 std::cerr << this->getClassName()
168 <<
"; load over inactive element: " 169 << this->getTag() << std::endl;
172 if(
const BidimStrainLoad *strainLoad= dynamic_cast<const BidimStrainLoad *>(theLoad))
174 static std::vector<Vector> initStrains;
175 initStrains= strainLoad->getStrains();
176 for(std::vector<Vector>::iterator i= initStrains.begin();i!=initStrains.end();i++)
178 this->physicalProperties.getMaterialsVector().addInitialGeneralizedStrains(initStrains);
182 std::cerr <<
"TriBase3N::addLoad -- load type unknown for element with tag: " <<
183 this->getTag() << std::endl;
191 template <
class PhysProp>
193 {
return VTK_TRIANGLE; }
std::vector< const Node * > NodesEdge
Nodes on an element edge.
Definition: Element.h:113
TriBase3N(int classTag, const PhysProp &)
Constructor.
Definition: TriBase3N.h:68
Element::NodesEdge getNodesEdge(const size_t &i) const
Returns the nodes de un lado of the element.
Definition: TriBase3N.h:95
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
int getVtkCellType(void) const
Interfaz con VTK.
Definition: TriBase3N.h:192
Base class for 3 node triangles.
Definition: TriBase3N.h:45
void zeroLoad(void)
Zeroes loads on element.
Definition: TriBase3N.h:155
ID getLocalIndexNodesEdge(const size_t &i) const
Returns the local indexes of the nodes that lies on the i-th edge.
Definition: TriBase3N.h:137
int addLoad(ElementalLoad *theLoad, double loadFactor)
Adds to the element the load being passed as parameter.
Definition: TriBase3N.h:164
Node pointer container for elements.
Definition: NodePtrsWithIDs.h:45
Three-dimensional array of pointers to nodes.
Definition: NodePtrArray3d.h:50
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
int getEdgeNodes(const Node *, const Node *) const
Returns the edge of the element that ends in the nodes being passed as parameters.
Definition: TriBase3N.h:114
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
ElemPtrArray3d put_on_mesh(const NodePtrArray3d &, meshing_dir dm) const
Put the element on the mesh being passed as parameter.
Definition: TriBase3N.h:86
Base class for plane elements.
Definition: PlaneElement.h:48