OOFEM 3.0
Loading...
Searching...
No Matches
oofem::Quasicontinuum Class Reference

#include <quasicontinuum.h>

Collaboration diagram for oofem::Quasicontinuum:

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< IntArrayinterpolationMeshNodes
IntArray interpolationElementNumbers
IntArray interpolationElementIndices
std::vector< IntArrayconnectivityTable
int nDimensions
IntArray elemList
IntArray nodeList

Detailed Description

General simplification for Quasicontinuum simulation.

Definition at line 47 of file quasicontinuum.h.

Constructor & Destructor Documentation

◆ Quasicontinuum()

oofem::Quasicontinuum::Quasicontinuum ( )

Definition at line 53 of file quasicontinuum.C.

◆ ~Quasicontinuum()

oofem::Quasicontinuum::~Quasicontinuum ( )
virtual

Definition at line 57 of file quasicontinuum.C.

Member Function Documentation

◆ addCrosssectionToInterpolationElements()

◆ applyApproach1()

◆ applyApproach2()

◆ applyApproach3()

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().

◆ computeIntersectionsOfLinkWith2DTringleElements()

◆ computeIntersectionsOfLinkWith3DTetrahedraElements()

◆ computeIntersectionsOfLinkWithInterpElements()

void oofem::Quasicontinuum::computeIntersectionsOfLinkWithInterpElements ( IntArray & intersected,
std::vector< double > & lengths,
Domain * d,
Element * e,
qcNode * qn1,
qcNode * qn2 )

◆ computeStiffnessTensorOf1Link()

◆ createGlobalStiffnesMatrix()

◆ createInterpolationElements()

◆ homogenizationOfStiffMatrix()

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().

◆ initializeConnectivityTableForInterpolationElements()

◆ intersectionTestSegmentSegment2D()

bool oofem::Quasicontinuum::intersectionTestSegmentSegment2D ( FloatArray & intersectCoords,
const FloatArray & A1,
const FloatArray & A2,
const FloatArray & B1,
const FloatArray & B2 )

◆ intersectionTestSegmentTetrahedra3D()

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 )

◆ intersectionTestSegmentTriangle2D()

int oofem::Quasicontinuum::intersectionTestSegmentTriangle2D ( std::vector< FloatArray > & intersectCoords,
const FloatArray & A,
const FloatArray & B,
const FloatArray & C,
const FloatArray & U1,
const FloatArray & U2 )

◆ intersectionTestSegmentTrianglePlucker3D()

bool oofem::Quasicontinuum::intersectionTestSegmentTrianglePlucker3D ( FloatArray & intersectCoords,
const FloatArray & A,
const FloatArray & B,
const FloatArray & C,
const FloatArray & X1,
const FloatArray & X2 )

◆ setNoDimensions()

void oofem::Quasicontinuum::setNoDimensions ( Domain * d)

◆ setupInterpolationMesh()

void oofem::Quasicontinuum::setupInterpolationMesh ( Domain * d,
int generateInterpolationElements,
int interpolationElementsMaterialNumber,
std::vector< IntArray > & newMeshNodes )

◆ stiffnessAssignment()

◆ transformStiffnessTensorToMatrix()

void oofem::Quasicontinuum::transformStiffnessTensorToMatrix ( FloatMatrix & matrix,
const FloatMatrix & tensor )

Member Data Documentation

◆ connectivityTable

std::vector<IntArray> oofem::Quasicontinuum::connectivityTable
protected

◆ elemList

IntArray oofem::Quasicontinuum::elemList
protected

Definition at line 55 of file quasicontinuum.h.

Referenced by applyApproach2(), and applyApproach3().

◆ interpolationElementIndices

◆ interpolationElementNumbers

◆ interpolationMeshNodes

std::vector<IntArray> oofem::Quasicontinuum::interpolationMeshNodes
protected

Definition at line 50 of file quasicontinuum.h.

Referenced by createInterpolationElements(), and setupInterpolationMesh().

◆ nDimensions

int oofem::Quasicontinuum::nDimensions
protected

◆ nodeList

IntArray oofem::Quasicontinuum::nodeList
protected

Definition at line 56 of file quasicontinuum.h.

Referenced by applyApproach2(), and applyApproach3().


The documentation for this class was generated from the following files:

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011