|
OOFEM 3.0
|
#include <quasicontinuum.h>
Public Member Functions | |
| Quasicontinuum () | |
| virtual | ~Quasicontinuum () |
| void | setNoDimensions (Domain *d) |
| void | setupInterpolationMesh (Domain *d, int generateInterpolationElements, int interpolationElementsMaterialNumber, std::vector< IntArray > &newMeshNodes) |
| void | createInterpolationElements (Domain *d) |
| void | addCrosssectionToInterpolationElements (Domain *d) |
| void | applyApproach1 (Domain *d) |
| void | applyApproach2 (Domain *d, int homMtrxType, double volumeOfInterpolationMesh) |
| void | applyApproach3 (Domain *d, int homMtrxType) |
| void | homogenizationOfStiffMatrix (double &homogenizedE, double &homogenizedNu, const FloatMatrix &Diso) |
| void | createGlobalStiffnesMatrix (FloatMatrix &Diso, double &S0, Domain *d, int homMtrxType, double volumeOfInterpolationMesh) |
| void | computeStiffnessTensorOf1Link (FloatMatrix &D1, double &S0, Element *e, Domain *d) |
| bool | stiffnessAssignment (std::vector< FloatMatrix > &individualStiffnessTensors, FloatArray &individialS0, Domain *d, Element *e, qcNode *qn1, qcNode *qn2) |
| void | computeIntersectionsOfLinkWithInterpElements (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) |
| bool | computeIntersectionsOfLinkWith3DTetrahedraElements (IntArray &intersected, std::vector< double > &lengths, Domain *d, Element *e, qcNode *qn1, qcNode *qn2) |
| void | initializeConnectivityTableForInterpolationElements (Domain *d) |
| bool | intersectionTestSegmentTrianglePlucker3D (FloatArray &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &X1, const FloatArray &X2) |
| int | intersectionTestSegmentTetrahedra3D (std::vector< FloatArray > &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &D, const FloatArray &X1, const FloatArray &X2) |
| bool | intersectionTestSegmentSegment2D (FloatArray &intersectCoords, const FloatArray &A1, const FloatArray &A2, const FloatArray &B1, const FloatArray &B2) |
| int | intersectionTestSegmentTriangle2D (std::vector< FloatArray > &intersectCoords, const FloatArray &A, const FloatArray &B, const FloatArray &C, const FloatArray &U1, const FloatArray &U2) |
| void | transformStiffnessTensorToMatrix (FloatMatrix &matrix, const FloatMatrix &tensor) |
Protected Attributes | |
| std::vector< IntArray > | interpolationMeshNodes |
| IntArray | interpolationElementNumbers |
| IntArray | interpolationElementIndices |
| std::vector< IntArray > | connectivityTable |
| int | nDimensions |
| IntArray | elemList |
| IntArray | nodeList |
General simplification for Quasicontinuum simulation.
Definition at line 47 of file quasicontinuum.h.
| oofem::Quasicontinuum::Quasicontinuum | ( | ) |
Definition at line 53 of file quasicontinuum.C.
|
virtual |
Definition at line 57 of file quasicontinuum.C.
| void oofem::Quasicontinuum::addCrosssectionToInterpolationElements | ( | Domain * | d | ) |
Definition at line 164 of file quasicontinuum.C.
References _IFT_SimpleCrossSection_thick, _IFT_SimpleCrossSection_width, oofem::classFactory, oofem::Domain::giveElement(), oofem::Domain::giveNumberOfCrossSectionModels(), interpolationElementNumbers, oofem::Domain::resizeCrossSectionModels(), oofem::Domain::setCrossSection(), oofem::Element::setCrossSection(), and oofem::DynamicInputRecord::setField().
Referenced by oofem::QClinearStatic::postInitialize().
| void oofem::Quasicontinuum::applyApproach1 | ( | Domain * | d | ) |
Definition at line 184 of file quasicontinuum.C.
References _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::classFactory, oofem::Domain::giveElement(), oofem::Domain::giveNumberOfMaterialModels(), interpolationElementNumbers, oofem::Domain::resizeMaterials(), oofem::DynamicInputRecord::setField(), oofem::Domain::setMaterial(), and oofem::Element::setMaterial().
Referenced by oofem::QClinearStatic::postInitialize().
| void oofem::Quasicontinuum::applyApproach2 | ( | Domain * | d, |
| int | homMtrxType, | ||
| double | volumeOfInterpolationMesh ) |
Definition at line 212 of file quasicontinuum.C.
References _IFT_AnisotropicLinearElasticMaterial_stiff, _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::FloatMatrix::at(), oofem::classFactory, oofem::IntArray::contains(), createGlobalStiffnesMatrix(), elemList, oofem::Element::giveDofManArray(), oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::FEMComponent::giveNumber(), oofem::Domain::giveNumberOfDofManagers(), oofem::Domain::giveNumberOfElements(), oofem::Domain::giveNumberOfMaterialModels(), oofem::Element::giveNumberOfNodes(), oofem::Node::giveQcNodeType(), homogenizationOfStiffMatrix(), interpolationElementNumbers, nDimensions, nodeList, OOFEM_ERROR, OOFEM_WARNING, oofem::Domain::resizeMaterials(), oofem::QClinearStatic::setActivatedElementList(), oofem::QClinearStatic::setActivatedNodeList(), oofem::DynamicInputRecord::setField(), oofem::Domain::setMaterial(), oofem::Element::setMaterial(), and oofem::VecX().
Referenced by oofem::QClinearStatic::postInitialize().
| void oofem::Quasicontinuum::applyApproach3 | ( | Domain * | d, |
| int | homMtrxType ) |
Definition at line 378 of file quasicontinuum.C.
References _IFT_AnisotropicLinearElasticMaterial_stiff, _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::FloatMatrix::at(), oofem::classFactory, computeStiffnessTensorOf1Link(), oofem::Element::computeVolumeAreaOrLength(), oofem::IntArray::contains(), oofem::CS_Thickness, elemList, oofem::CrossSection::give(), oofem::Element::giveCrossSection(), oofem::Element::giveDofManArray(), oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::FEMComponent::giveNumber(), oofem::Domain::giveNumberOfDofManagers(), oofem::Domain::giveNumberOfElements(), oofem::Domain::giveNumberOfMaterialModels(), oofem::Element::giveNumberOfNodes(), oofem::Domain::giveNumberOfSpatialDimensions(), oofem::Node::giveQcNodeType(), homogenizationOfStiffMatrix(), initializeConnectivityTableForInterpolationElements(), interpolationElementIndices, interpolationElementNumbers, nDimensions, nodeList, OOFEM_ERROR, OOFEM_WARNING, oofem::FloatArray::resize(), oofem::Domain::resizeMaterials(), oofem::QClinearStatic::setActivatedElementList(), oofem::QClinearStatic::setActivatedNodeList(), oofem::DynamicInputRecord::setField(), oofem::Domain::setMaterial(), oofem::Element::setMaterial(), stiffnessAssignment(), transformStiffnessTensorToMatrix(), oofem::VecX(), and oofem::FloatArray::zero().
Referenced by oofem::QClinearStatic::postInitialize().
| bool oofem::Quasicontinuum::computeIntersectionsOfLinkWith2DTringleElements | ( | IntArray & | intersected, |
| std::vector< double > & | lengths, | ||
| Domain * | d, | ||
| Element * | e, | ||
| qcNode * | qn1, | ||
| qcNode * | qn2 ) |
Definition at line 862 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::IntArray::clear(), connectivityTable, oofem::distance(), oofem::IntArray::erase(), oofem::IntArray::findFirstIndexOf(), oofem::IntArray::followedBy(), oofem::DofManager::giveCoordinates(), oofem::Domain::giveElement(), oofem::FloatArray::giveIndexMaxElem(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::IntArray::giveSize(), interpolationElementIndices, interpolationElementNumbers, intersectionTestSegmentTriangle2D(), oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by computeIntersectionsOfLinkWithInterpElements().
| bool oofem::Quasicontinuum::computeIntersectionsOfLinkWith3DTetrahedraElements | ( | IntArray & | intersected, |
| std::vector< double > & | lengths, | ||
| Domain * | d, | ||
| Element * | e, | ||
| qcNode * | qn1, | ||
| qcNode * | qn2 ) |
Definition at line 1063 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::IntArray::clear(), connectivityTable, oofem::distance(), oofem::IntArray::erase(), oofem::IntArray::findFirstIndexOf(), oofem::IntArray::followedBy(), oofem::DofManager::giveCoordinates(), oofem::Domain::giveElement(), oofem::FloatArray::giveIndexMaxElem(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::IntArray::giveSize(), interpolationElementIndices, interpolationElementNumbers, intersectionTestSegmentTetrahedra3D(), oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by computeIntersectionsOfLinkWithInterpElements().
| void oofem::Quasicontinuum::computeIntersectionsOfLinkWithInterpElements | ( | IntArray & | intersected, |
| std::vector< double > & | lengths, | ||
| Domain * | d, | ||
| Element * | e, | ||
| qcNode * | qn1, | ||
| qcNode * | qn2 ) |
Definition at line 848 of file quasicontinuum.C.
References computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), oofem::Domain::giveNumberOfSpatialDimensions(), and OOFEM_ERROR.
Referenced by stiffnessAssignment().
| void oofem::Quasicontinuum::computeStiffnessTensorOf1Link | ( | FloatMatrix & | D1, |
| double & | S0, | ||
| Element * | e, | ||
| Domain * | d ) |
Definition at line 657 of file quasicontinuum.C.
References oofem::FloatMatrix::at(), oofem::CS_Area, oofem::SimpleCrossSection::give(), oofem::DofManager::giveCoordinate(), oofem::Element::giveCrossSection(), oofem::Element::giveDofManager(), oofem::Element::giveGlobalNumber(), oofem::Element::giveMaterial(), oofem::QCMaterialExtensionInterface::giveQcElasticParamneter(), oofem::QCMaterialExtensionInterface::giveQcPlasticParamneter(), OOFEM_ERROR, oofem::QCMaterialExtensionInterfaceType, oofem::FloatMatrix::resize(), and oofem::FloatMatrix::zero().
Referenced by applyApproach3(), and stiffnessAssignment().
| void oofem::Quasicontinuum::createGlobalStiffnesMatrix | ( | FloatMatrix & | Diso, |
| double & | S0, | ||
| Domain * | d, | ||
| int | homMtrxType, | ||
| double | volumeOfInterpolationMesh ) |
Definition at line 710 of file quasicontinuum.C.
References oofem::FloatMatrix::add(), oofem::FloatMatrix::at(), oofem::CS_Area, oofem::SimpleCrossSection::give(), oofem::DofManager::giveCoordinate(), oofem::Element::giveDofManager(), oofem::Domain::giveElement(), oofem::Element::giveGlobalNumber(), oofem::Element::giveNumberOfDofManagers(), oofem::Domain::giveNumberOfElements(), oofem::QCMaterialExtensionInterface::giveQcElasticParamneter(), oofem::QCMaterialExtensionInterface::giveQcPlasticParamneter(), OOFEM_ERROR, oofem::QCMaterialExtensionInterfaceType, oofem::FloatMatrix::times(), and transformStiffnessTensorToMatrix().
Referenced by applyApproach2().
| void oofem::Quasicontinuum::createInterpolationElements | ( | Domain * | d | ) |
Definition at line 107 of file quasicontinuum.C.
References oofem::classFactory, oofem::Domain::giveNumberOfElements(), interpolationMeshNodes, oofem::Element::IPK_Element_nodes, nDimensions, oofem::Domain::resizeElements(), oofem::Domain::setElement(), and oofem::DynamicInputRecord::setField().
Referenced by oofem::QClinearStatic::postInitialize().
| void oofem::Quasicontinuum::homogenizationOfStiffMatrix | ( | double & | homogenizedE, |
| double & | homogenizedNu, | ||
| const FloatMatrix & | Diso ) |
Definition at line 606 of file quasicontinuum.C.
References oofem::FloatMatrix::at(), nDimensions, and OOFEM_ERROR.
Referenced by applyApproach2(), and applyApproach3().
| void oofem::Quasicontinuum::initializeConnectivityTableForInterpolationElements | ( | Domain * | d | ) |
Definition at line 1267 of file quasicontinuum.C.
References oofem::IntArray::at(), connectivityTable, oofem::IntArray::contains(), oofem::Domain::giveElement(), oofem::Element::giveNode(), oofem::FEMComponent::giveNumber(), oofem::Element::giveNumberOfNodes(), interpolationElementNumbers, and oofem::IntArray::resize().
Referenced by applyApproach3().
| bool oofem::Quasicontinuum::intersectionTestSegmentSegment2D | ( | FloatArray & | intersectCoords, |
| const FloatArray & | A1, | ||
| const FloatArray & | A2, | ||
| const FloatArray & | B1, | ||
| const FloatArray & | B2 ) |
Definition at line 1482 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), EPS, and oofem::Vec2().
Referenced by intersectionTestSegmentTriangle2D().
| int oofem::Quasicontinuum::intersectionTestSegmentTetrahedra3D | ( | std::vector< FloatArray > & | intersectCoords, |
| const FloatArray & | A, | ||
| const FloatArray & | B, | ||
| const FloatArray & | C, | ||
| const FloatArray & | D, | ||
| const FloatArray & | X1, | ||
| const FloatArray & | X2 ) |
Definition at line 1423 of file quasicontinuum.C.
References intersectionTestSegmentTrianglePlucker3D(), and oofem::FloatArray::size().
Referenced by computeIntersectionsOfLinkWith3DTetrahedraElements().
| int oofem::Quasicontinuum::intersectionTestSegmentTriangle2D | ( | std::vector< FloatArray > & | intersectCoords, |
| const FloatArray & | A, | ||
| const FloatArray & | B, | ||
| const FloatArray & | C, | ||
| const FloatArray & | U1, | ||
| const FloatArray & | U2 ) |
Definition at line 1455 of file quasicontinuum.C.
References intersectionTestSegmentSegment2D(), and oofem::FloatArray::size().
Referenced by computeIntersectionsOfLinkWith2DTringleElements().
| bool oofem::Quasicontinuum::intersectionTestSegmentTrianglePlucker3D | ( | FloatArray & | intersectCoords, |
| const FloatArray & | A, | ||
| const FloatArray & | B, | ||
| const FloatArray & | C, | ||
| const FloatArray & | X1, | ||
| const FloatArray & | X2 ) |
Definition at line 1306 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), oofem::distance(), EPS, oofem::FloatArray::resize(), S, and TOL.
Referenced by intersectionTestSegmentTetrahedra3D().
| void oofem::Quasicontinuum::setNoDimensions | ( | Domain * | d | ) |
Definition at line 62 of file quasicontinuum.C.
References oofem::Domain::giveNumberOfSpatialDimensions(), nDimensions, and OOFEM_ERROR.
Referenced by oofem::QClinearStatic::postInitialize().
| void oofem::Quasicontinuum::setupInterpolationMesh | ( | Domain * | d, |
| int | generateInterpolationElements, | ||
| int | interpolationElementsMaterialNumber, | ||
| std::vector< IntArray > & | newMeshNodes ) |
Definition at line 75 of file quasicontinuum.C.
References oofem::Domain::giveElementsWithMaterialNum(), oofem::Domain::giveNumberOfElements(), interpolationElementIndices, interpolationElementNumbers, interpolationMeshNodes, and OOFEM_ERROR.
Referenced by oofem::QClinearStatic::postInitialize().
| bool oofem::Quasicontinuum::stiffnessAssignment | ( | std::vector< FloatMatrix > & | individualStiffnessTensors, |
| FloatArray & | individialS0, | ||
| Domain * | d, | ||
| Element * | e, | ||
| qcNode * | qn1, | ||
| qcNode * | qn2 ) |
Definition at line 782 of file quasicontinuum.C.
References oofem::FloatArray::at(), computeIntersectionsOfLinkWithInterpElements(), computeStiffnessTensorOf1Link(), oofem::distance(), oofem::FloatArray::fromVector(), oofem::DofManager::giveCoordinates(), oofem::qcNode::giveMasterElementNumber(), oofem::FloatArray::giveSize(), interpolationElementIndices, oofem::FloatArray::sum(), and oofem::FloatArray::times().
Referenced by applyApproach3().
| void oofem::Quasicontinuum::transformStiffnessTensorToMatrix | ( | FloatMatrix & | matrix, |
| const FloatMatrix & | tensor ) |
Definition at line 1572 of file quasicontinuum.C.
References oofem::FloatMatrix::at(), and oofem::IntArray::at().
Referenced by applyApproach3(), and createGlobalStiffnesMatrix().
|
protected |
Definition at line 53 of file quasicontinuum.h.
Referenced by computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), and initializeConnectivityTableForInterpolationElements().
|
protected |
Definition at line 55 of file quasicontinuum.h.
Referenced by applyApproach2(), and applyApproach3().
|
protected |
Definition at line 52 of file quasicontinuum.h.
Referenced by applyApproach3(), computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), setupInterpolationMesh(), and stiffnessAssignment().
|
protected |
Definition at line 51 of file quasicontinuum.h.
Referenced by addCrosssectionToInterpolationElements(), applyApproach1(), applyApproach2(), applyApproach3(), computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), initializeConnectivityTableForInterpolationElements(), and setupInterpolationMesh().
|
protected |
Definition at line 50 of file quasicontinuum.h.
Referenced by createInterpolationElements(), and setupInterpolationMesh().
|
protected |
Definition at line 54 of file quasicontinuum.h.
Referenced by applyApproach2(), applyApproach3(), createInterpolationElements(), homogenizationOfStiffMatrix(), and setNoDimensions().
|
protected |
Definition at line 56 of file quasicontinuum.h.
Referenced by applyApproach2(), and applyApproach3().