35#ifndef quasicontinuum_h
36#define quasicontinuum_h
63 void setupInterpolationMesh(
Domain *d,
int generateInterpolationElements,
int interpolationElementsMaterialNumber, std::vector<IntArray> &newMeshNodes);
void createInterpolationElements(Domain *d)
void applyApproach1(Domain *d)
void createGlobalStiffnesMatrix(FloatMatrix &Diso, double &S0, Domain *d, int homMtrxType, double volumeOfInterpolationMesh)
void applyApproach3(Domain *d, int homMtrxType)
IntArray interpolationElementNumbers
bool intersectionTestSegmentTrianglePlucker3D(FloatArray &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &X1, const FloatArray &X2)
bool stiffnessAssignment(std::vector< FloatMatrix > &individualStiffnessTensors, FloatArray &individialS0, Domain *d, Element *e, qcNode *qn1, qcNode *qn2)
bool intersectionTestSegmentSegment2D(FloatArray &intersectCoords, const FloatArray &A1, const FloatArray &A2, const FloatArray &B1, const FloatArray &B2)
bool computeIntersectionsOfLinkWith3DTetrahedraElements(IntArray &intersected, std::vector< double > &lengths, Domain *d, Element *e, qcNode *qn1, qcNode *qn2)
bool computeIntersectionsOfLinkWith2DTringleElements(IntArray &intersected, std::vector< double > &lengths, Domain *d, Element *e, qcNode *qn1, qcNode *qn2)
void setNoDimensions(Domain *d)
std::vector< IntArray > connectivityTable
virtual ~Quasicontinuum()
void homogenizationOfStiffMatrix(double &homogenizedE, double &homogenizedNu, const FloatMatrix &Diso)
void setupInterpolationMesh(Domain *d, int generateInterpolationElements, int interpolationElementsMaterialNumber, std::vector< IntArray > &newMeshNodes)
void computeStiffnessTensorOf1Link(FloatMatrix &D1, double &S0, Element *e, Domain *d)
IntArray interpolationElementIndices
void transformStiffnessTensorToMatrix(FloatMatrix &matrix, const FloatMatrix &tensor)
int intersectionTestSegmentTetrahedra3D(std::vector< FloatArray > &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &D, const FloatArray &X1, const FloatArray &X2)
void initializeConnectivityTableForInterpolationElements(Domain *d)
void computeIntersectionsOfLinkWithInterpElements(IntArray &intersected, std::vector< double > &lengths, Domain *d, Element *e, qcNode *qn1, qcNode *qn2)
std::vector< IntArray > interpolationMeshNodes
void applyApproach2(Domain *d, int homMtrxType, double volumeOfInterpolationMesh)
void addCrosssectionToInterpolationElements(Domain *d)
int intersectionTestSegmentTriangle2D(std::vector< FloatArray > &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &U1, const FloatArray &U2)