OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
General simplification for Quasicontinuum simulation. More...
#include <quasicontinuum.h>
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 49 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 167 of file quasicontinuum.C.
References _IFT_SimpleCrossSection_thick, _IFT_SimpleCrossSection_width, oofem::IntArray::at(), oofem::classFactory, oofem::ClassFactory::createCrossSection(), oofem::Domain::giveElement(), oofem::Domain::giveNumberOfCrossSectionModels(), oofem::IntArray::giveSize(), oofem::CrossSection::initializeFrom(), 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 190 of file quasicontinuum.C.
References _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::IntArray::at(), oofem::classFactory, oofem::ClassFactory::createMaterial(), oofem::Domain::giveElement(), oofem::Domain::giveNumberOfMaterialModels(), oofem::IntArray::giveSize(), oofem::Material::initializeFrom(), 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 219 of file quasicontinuum.C.
References _IFT_AnisotropicLinearElasticMaterial_stiff, _IFT_AnisotropicLinearElasticMaterial_talpha, _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::IntArray::at(), oofem::FloatMatrix::at(), oofem::classFactory, oofem::IntArray::contains(), createGlobalStiffnesMatrix(), oofem::ClassFactory::createMaterial(), 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(), oofem::IntArray::giveSize(), homogenizationOfStiffMatrix(), oofem::Material::initializeFrom(), interpolationElementNumbers, nDimensions, nodeList, OOFEM_ERROR, OOFEM_WARNING, oofem::IntArray::resize(), oofem::Domain::resizeMaterials(), oofem::QClinearStatic::setActivatedElementList(), oofem::QClinearStatic::setActivatedNodeList(), oofem::DynamicInputRecord::setField(), oofem::Domain::setMaterial(), oofem::Element::setMaterial(), oofem::FloatArray::zero(), and oofem::IntArray::zero().
Referenced by oofem::QClinearStatic::postInitialize().
void oofem::Quasicontinuum::applyApproach3 | ( | Domain * | d, |
int | homMtrxType | ||
) |
d->giveNode(i)->deactivateYourself();
d->giveElement(i)->deactivateYourself();
Definition at line 388 of file quasicontinuum.C.
References _IFT_AnisotropicLinearElasticMaterial_stiff, _IFT_AnisotropicLinearElasticMaterial_talpha, _IFT_IsotropicLinearElasticMaterial_e, _IFT_IsotropicLinearElasticMaterial_n, _IFT_IsotropicLinearElasticMaterial_talpha, _IFT_Material_density, oofem::IntArray::at(), oofem::FloatMatrix::at(), oofem::classFactory, computeStiffnessTensorOf1Link(), connectivityTable, oofem::IntArray::contains(), oofem::ClassFactory::createMaterial(), oofem::CS_Thickness, 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::Domain::giveNumberOfSpatialDimensions(), oofem::Node::giveQcNodeType(), oofem::IntArray::giveSize(), homogenizationOfStiffMatrix(), initializeConnectivityTableForInterpolationElements(), oofem::Material::initializeFrom(), interpolationElementIndices, interpolationElementNumbers, nDimensions, nodeList, OOFEM_ERROR, OOFEM_WARNING, oofem::IntArray::resize(), oofem::FloatArray::resize(), oofem::Domain::resizeMaterials(), oofem::QClinearStatic::setActivatedElementList(), oofem::QClinearStatic::setActivatedNodeList(), oofem::DynamicInputRecord::setField(), oofem::Domain::setMaterial(), oofem::Element::setMaterial(), stiffnessAssignment(), transformStiffnessTensorToMatrix(), oofem::FloatArray::zero(), and oofem::IntArray::zero().
Referenced by oofem::QClinearStatic::postInitialize().
bool oofem::Quasicontinuum::computeIntersectionsOfLinkWith2DTringleElements | ( | IntArray & | intersected, |
FloatArray & | lengths, | ||
Domain * | d, | ||
Element * | e, | ||
qcNode * | qn1, | ||
qcNode * | qn2 | ||
) |
Definition at line 928 of file quasicontinuum.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::IntArray::clear(), oofem::FloatArray::clear(), oofem::FloatArray::computeNorm(), connectivityTable, oofem::IntArray::erase(), oofem::IntArray::findFirstIndexOf(), oofem::IntArray::followedBy(), oofem::Node::giveCoordinates(), oofem::Domain::giveElement(), oofem::FloatArray::giveIndexMaxElem(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::IntArray::giveSize(), oofem::FloatArray::giveSize(), interpolationElementIndices, interpolationElementNumbers, intersectionTestSegmentTriangle2D(), oofem::FloatArray::push_back(), oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by computeIntersectionsOfLinkWithInterpElements().
bool oofem::Quasicontinuum::computeIntersectionsOfLinkWith3DTetrahedraElements | ( | IntArray & | intersected, |
FloatArray & | lengths, | ||
Domain * | d, | ||
Element * | e, | ||
qcNode * | qn1, | ||
qcNode * | qn2 | ||
) |
Definition at line 1151 of file quasicontinuum.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::IntArray::clear(), oofem::FloatArray::clear(), oofem::FloatArray::computeNorm(), connectivityTable, oofem::IntArray::erase(), oofem::IntArray::findFirstIndexOf(), oofem::IntArray::followedBy(), oofem::Node::giveCoordinates(), oofem::Domain::giveElement(), oofem::FloatArray::giveIndexMaxElem(), oofem::qcNode::giveMasterElementNumber(), oofem::Element::giveNode(), oofem::IntArray::giveSize(), oofem::FloatArray::giveSize(), interpolationElementIndices, interpolationElementNumbers, intersectionTestSegmentTetrahedra3D(), oofem::FloatArray::push_back(), oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by computeIntersectionsOfLinkWithInterpElements().
void oofem::Quasicontinuum::computeIntersectionsOfLinkWithInterpElements | ( | IntArray & | intersected, |
FloatArray & | lengths, | ||
Domain * | d, | ||
Element * | e, | ||
qcNode * | qn1, | ||
qcNode * | qn2 | ||
) |
Definition at line 915 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 692 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::CS_Area, oofem::SimpleCrossSection::give(), oofem::DofManager::giveCoordinates(), oofem::Element::giveCrossSection(), oofem::Element::giveDofManager(), oofem::Element::giveGlobalNumber(), oofem::FEMComponent::giveInterface(), 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 749 of file quasicontinuum.C.
References oofem::FloatMatrix::add(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::CS_Area, oofem::SimpleCrossSection::give(), oofem::DofManager::giveCoordinates(), oofem::Element::giveCrossSection(), oofem::Element::giveDofManager(), oofem::Domain::giveElement(), oofem::Element::giveGlobalNumber(), oofem::FEMComponent::giveInterface(), oofem::Element::giveMaterial(), oofem::Element::giveNumberOfDofManagers(), oofem::Domain::giveNumberOfElements(), oofem::QCMaterialExtensionInterface::giveQcElasticParamneter(), oofem::QCMaterialExtensionInterface::giveQcPlasticParamneter(), OOFEM_ERROR, oofem::QCMaterialExtensionInterfaceType, oofem::FloatMatrix::resize(), oofem::FloatMatrix::times(), transformStiffnessTensorToMatrix(), and oofem::FloatMatrix::zero().
Referenced by applyApproach2().
void oofem::Quasicontinuum::createInterpolationElements | ( | Domain * | d | ) |
Definition at line 109 of file quasicontinuum.C.
References _IFT_Element_nodes, oofem::classFactory, oofem::ClassFactory::createElement(), oofem::Domain::giveNumberOfElements(), oofem::Element::initializeFrom(), interpolationMeshNodes, nDimensions, oofem::Domain::resizeElements(), oofem::Domain::setElement(), oofem::DynamicInputRecord::setField(), and oofem::Element::setGlobalNumber().
Referenced by oofem::QClinearStatic::postInitialize().
void oofem::Quasicontinuum::homogenizationOfStiffMatrix | ( | double & | homogenizedE, |
double & | homogenizedNu, | ||
FloatMatrix * | Diso | ||
) |
Definition at line 641 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 1383 of file quasicontinuum.C.
References oofem::IntArray::at(), connectivityTable, oofem::IntArray::contains(), oofem::Domain::giveElement(), oofem::Element::giveNode(), oofem::FEMComponent::giveNumber(), oofem::Element::giveNumberOfNodes(), oofem::IntArray::giveSize(), interpolationElementNumbers, and oofem::IntArray::resize().
Referenced by applyApproach3().
bool oofem::Quasicontinuum::intersectionTestSegmentSegment2D | ( | FloatArray & | intersectCoords, |
FloatArray * | A1, | ||
FloatArray * | A2, | ||
FloatArray * | B1, | ||
FloatArray * | B2 | ||
) |
Definition at line 1637 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), EPS, and oofem::FloatArray::resize().
Referenced by intersectionTestSegmentTriangle2D().
int oofem::Quasicontinuum::intersectionTestSegmentTetrahedra3D | ( | FloatArray & | intersectCoordsX, |
FloatArray & | intersectCoordsY, | ||
FloatArray & | intersectCoordsZ, | ||
FloatArray * | A, | ||
FloatArray * | B, | ||
FloatArray * | C, | ||
FloatArray * | D, | ||
FloatArray * | X1, | ||
FloatArray * | X2 | ||
) |
Definition at line 1548 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), intersectionTestSegmentTrianglePlucker3D(), and oofem::FloatArray::push_back().
Referenced by computeIntersectionsOfLinkWith3DTetrahedraElements().
int oofem::Quasicontinuum::intersectionTestSegmentTriangle2D | ( | FloatArray & | intersectCoordsX, |
FloatArray & | intersectCoordsY, | ||
FloatArray * | A, | ||
FloatArray * | B, | ||
FloatArray * | C, | ||
FloatArray * | U1, | ||
FloatArray * | U2 | ||
) |
Definition at line 1600 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), intersectionTestSegmentSegment2D(), and oofem::FloatArray::push_back().
Referenced by computeIntersectionsOfLinkWith2DTringleElements().
bool oofem::Quasicontinuum::intersectionTestSegmentTrianglePlucker3D | ( | FloatArray & | intersectCoords, |
FloatArray * | A, | ||
FloatArray * | B, | ||
FloatArray * | C, | ||
FloatArray * | X1, | ||
FloatArray * | X2 | ||
) |
Definition at line 1429 of file quasicontinuum.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), EPS, oofem::FloatArray::resize(), and S.
Referenced by intersectionTestSegmentTetrahedra3D().
void oofem::Quasicontinuum::setNoDimensions | ( | Domain * | d | ) |
Definition at line 63 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 76 of file quasicontinuum.C.
References oofem::IntArray::at(), oofem::IntArray::clear(), oofem::Domain::giveElementsWithMaterialNum(), oofem::Domain::giveNumberOfElements(), oofem::IntArray::giveSize(), interpolationElementIndices, interpolationElementNumbers, interpolationMeshNodes, OOFEM_ERROR, and oofem::IntArray::resize().
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 831 of file quasicontinuum.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::IntArray::clear(), oofem::FloatArray::clear(), computeIntersectionsOfLinkWithInterpElements(), oofem::FloatArray::computeNorm(), computeStiffnessTensorOf1Link(), oofem::Node::giveCoordinates(), oofem::qcNode::giveMasterElementNumber(), oofem::FloatArray::giveSize(), interpolationElementIndices, oofem::FloatArray::times(), and oofem::FloatMatrix::times().
Referenced by applyApproach3().
void oofem::Quasicontinuum::transformStiffnessTensorToMatrix | ( | FloatMatrix * | matrix, |
FloatMatrix * | tensor | ||
) |
Definition at line 1730 of file quasicontinuum.C.
References oofem::IntArray::at(), and oofem::FloatMatrix::at().
Referenced by applyApproach3(), and createGlobalStiffnesMatrix().
|
protected |
Definition at line 56 of file quasicontinuum.h.
Referenced by applyApproach3(), computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), and initializeConnectivityTableForInterpolationElements().
|
protected |
Definition at line 58 of file quasicontinuum.h.
Referenced by applyApproach2(), and applyApproach3().
|
protected |
Definition at line 55 of file quasicontinuum.h.
Referenced by applyApproach3(), computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), setupInterpolationMesh(), and stiffnessAssignment().
|
protected |
Definition at line 54 of file quasicontinuum.h.
Referenced by addCrosssectionToInterpolationElements(), applyApproach1(), applyApproach2(), applyApproach3(), computeIntersectionsOfLinkWith2DTringleElements(), computeIntersectionsOfLinkWith3DTetrahedraElements(), initializeConnectivityTableForInterpolationElements(), and setupInterpolationMesh().
|
protected |
Definition at line 53 of file quasicontinuum.h.
Referenced by createInterpolationElements(), and setupInterpolationMesh().
|
protected |
Definition at line 57 of file quasicontinuum.h.
Referenced by applyApproach2(), applyApproach3(), createInterpolationElements(), homogenizationOfStiffMatrix(), and setNoDimensions().
|
protected |
Definition at line 59 of file quasicontinuum.h.
Referenced by applyApproach2(), and applyApproach3().