muMECH  1.0
Public Member Functions | Public Attributes | Private Member Functions | List of all members
mumech::InclusionRecord3D Class Reference

3D inclusion record. More...

#include <inclusion.h>

Inheritance diagram for mumech::InclusionRecord3D:
mumech::Inclusion

Public Member Functions

 InclusionRecord3D (long i, const Problem *p)
 Constructor. More...
 
virtual ~InclusionRecord3D ()
 Destructor. More...
 
bool scan_locEigStrain_LC (Stream *stream, int lc)
 
bool scan_globEigStrain_LC (Stream *stream, int lc)
 
void allocate_nlc_fields (void)
 
InclusionGeometry giveInclusionGeometry (InclusionGeometry shp_o) const
 Function detects the inclusion geometry according the mutual aspect ratio among the semiaxes. More...
 
void input_data_initialize_and_check_consistency (void)
 Initialize input data readed form vtk file. More...
 
void initialize (const Inclusion *prevInclRec)
 Initialization of this inclusion. Computes characteristic matrices: Eshelby tensor, ... More...
 
void SBA_computeInitialStrains (int lc)
 Function computes basic/own eigen strains (not influenced by other inclusions) of lc-th load case. More...
 
bool point_is_affected (const double *point) const
 Returns true, if the given point is inside of the action radius of the receiver. More...
 
void SBA_updateGlobAndLocStrains (Point *point)
 Function modifies/updates the actuall local and global eigenstrains in inclusion centroids due to the presence of an adjacent inclusion. More...
 
void addtot ()
 Function add locEigTot to globEigTot. More...
 
void init_EigStrain_LC (int lc)
 
- Public Member Functions inherited from mumech::Inclusion
 Inclusion (long i, const Problem *p)
 Constructor. More...
 
virtual ~Inclusion ()
 Destructor. More...
 
bool scan_eAngles_RAD (Stream *stream)
 
bool scan_eAngles_DEG (Stream *stream)
 
bool point_is_inside (const double *coords, double epsilon=0.0) const
 Function returns the position of a given point related to an inclusion. More...
 
void transformCoords_G2L (const double *glob, double *loc) const
 Function transforms (shift according to origin and rotate) global coordinates to local. More...
 
void transformCoords_L2G (const double *loc, double *glob) const
 Function transforms (shift according to origin and rotate) local coordinates to global. More...
 
void rotateStrain_G2L (const double *glob, double *loc) const
 
void rotateStrain_L2G (const double *loc, double *glob) const
 Function rotate local strain to global. More...
 
void rotateDisplc_L2G (const double *loc, double *glob) const
 
void ActingIncls_allocate (void)
 
int find_overlap (const Inclusion *incl) const
 Check overlap of the receiver and 'incl' inclusion. More...
 
bool is_inside_of_BB (const double *bb1, const double *bb2) const
 check the receiver is inside of the bounding box defined by lower left bb1 and upper right bb2 corners. More...
 
void set_centroids (double x, double y)
 
void set_centroids (double x, double y, double z)
 
void set_Inclusion_shape (InclusionGeometry val)
 
void set_Youngs_modulus (double val)
 
void set_Poissons_ratio (double val)
 
void set_Semiaxes_dimensions (double x, double y)
 
void set_Semiaxes_dimensions (double x, double y, double z)
 
void set_Euller_angles_deg (double x)
 
void set_Euller_angles_deg (double x, double y, double z)
 
void set_all_2d (double x, double y, double e, double n, double a1, double a2, double e1)
 
void set_all_3d (double x, double y, double z, double e, double n, double a1, double a2, double a3, double e1, double e2, double e3)
 
double give_volume (void)
 
void update_approximations (int lc)
 
void Eps02EpsTau (double *e_tau, const double *e_0)
 
void give_StiffnessMatrixFull (double *answer) const
 Copy stiffness tensor into full matrix answer. More...
 
void give_StiffnessMatrixReduced (double *answer) const
 Copy stiffness tensor into reduced vector answer. More...
 
const double ** give_EshelbyPertDisplc_internal (int lc, int nlc, const double *coords)
 
const double ** give_EshelbyPertStrain_internal (int lc, int nlc)
 
const double ** give_EshelbyPertStress_internal (int lc, int nlc)
 
void add_EshelbyPertStrain_internal_SIFCM (double **strain, int lc, int nlc, double **e_t_SIFCM)
 
void add_EshelbyPertStress_internal_SIFCM (double **stress, int lc, int nlc, double **e_t_SIFCM, double **e_s_ext_add)
 
void give_EshelbyPertFields_external (Point *point, int lc, int nlc, bool disp, bool strn)
 Function gives the 'Eshelby' STRAIN and DISPLACEMENT field in an arbitrary EXTERNAL point for given load cases. More...
 
double compute_supplement_energy (int lc)
 

Public Attributes

eshelbySoluEllipticIntegralsellInt
 
eshelbySoluUniformFieldesuf
 
double eInt [13]
 elliptic potentials of an internal point (position independent) More...
 
double locEigStrain [6]
 actual local eigenstrain used during 'self_balance' algorithm More...
 
double locEigStrainTot [6]
 actual local eigenstrain used during 'self_balance' algorithm More...
 
double globEigStrainTotal [6]
 total global eigenstrain field evaluated by 'self_balance' algorithm More...
 
double ** locEigStrain_LC
 predchazejici arrays slouzi vsude v balancingu pro vypocet v danem lc, tyto pole schovavaji vysledky pro vsechny lc More...
 
double ** globEigStrain_LC
 
- Public Attributes inherited from mumech::Inclusion
long id
 identification number More...
 
const ProblemP
 problem description More...
 
InclusionGeometry shape
 inclusion shape More...
 
double E
 Young's modulus. More...
 
double nu
 Poisson's ratio. More...
 
double * origin
 coordinates of the inclusions' centorids More...
 
double * a
 Inclusion semiaxes' dimensions in global arrangement. More...
 
double * eAngles
 Euller angles. More...
 
bool rotated
 
double volume
 
double * C
 Isotropic elastic stiffness tensor of an inclusion stored in reduced form (from the total 9/36 matrix componets - only 5/12 non-zero components are stored for 2d/3d). More...
 
double * S
 Eshelby tensor. More...
 
double * SInv
 Inverse of Eshelby tensor. More...
 
double * T
 GLOBAL->LOCAL displacement vector transfrmation matrix; 3x3 or 2x2 for 3d or 2d. More...
 
double * TInv
 LOCAL->GLOBAL displacement vector transfrmation matrix; TInv = T^-1 (inversion) = T^T (transposed) More...
 
double * Te
 GLOBAL->LOCAL strain/stress tensor transfrmation matrix; full matrix 6x6 or 3x3 for 3d or 2d. More...
 
double * TeInv
 LOCAL->GLOBAL strain/stress tensor transfrmation matrix; full matrix 6x6 or 3x3 for 3d or 2d. More...
 
double actionRadius
 Action radius of the inclusion. More...
 
double SQRactionRadius
 Action radius of the inclusion ^2. More...
 
double ndiff_1
 derivative step for the first derivations More...
 
double ndiff_2
 derivative step for the second derivations More...
 
int noActingIncls
 Number of acting inclusions. More...
 
int * actingIncls
 Set of inclusions which act to the "this" one. More...
 
double ** Epsilon_Tau
 field of epsilon tau, set by SBalgorithm for every load More...
 
int n_approx_points
 
double ** approx_points
 
double ** approx_points_eps_tau
 
double *** approx_coef
 
double ** globPert_displc
 u star - Global perturbation displacement. Toto muze byt alokovany v problemu a odtud jen ukazovatko, pac u neni pro celou incl. stejny jako strain a stress. Usetrim na kezde inkluci toto pole. More...
 
double ** globPert_strain
 epsilon star - Global perturbation strain. More...
 
double ** globPert_stress
 sigma star - Global perturbation stress. More...
 

Private Member Functions

virtual void computeVolume ()
 

Additional Inherited Members

- Protected Member Functions inherited from mumech::Inclusion
void EAdeg2rad (void)
 Euller angles conversion from degrees to radians. More...
 
void giveTransformationStrainOperator (double oper[12], const double C[12], const double C1[12], const double S[12])
 Function gives the operator converting remote field to transformation eigenstrain of an inclusion. More...
 
void give_EshelbyMatrixFull (double **answer) const
 Copy Eshelby tensor into full matrix answer. More...
 
void give_EshelbyMatrixReduced (double *answer) const
 Copy Eshelby tensor into reduced vector answer. More...
 
void give_TeMatrix_G2L (double *answer) const
 Copy Te (G2L strain transformation matrix) tensor into full matrix answer. More...
 
void give_TeMatrix_L2G (double *answer) const
 Copy TeInv (L2G strain transformation matrix) tensor into full matrix answer. More...
 

Detailed Description

3D inclusion record.

Definition at line 278 of file inclusion.h.

Constructor & Destructor Documentation

mumech::InclusionRecord3D::InclusionRecord3D ( long  i,
const Problem p 
)

Constructor.

Definition at line 1094 of file inclusion.cpp.

References ellInt, esuf, globEigStrain_LC, and locEigStrain_LC.

mumech::InclusionRecord3D::~InclusionRecord3D ( )
virtual

Member Function Documentation

void mumech::InclusionRecord3D::addtot ( )

Function add locEigTot to globEigTot.

Definition at line 1477 of file inclusion.cpp.

References mumech::CopyVector(), globEigStrainTotal, locEigStrain, locEigStrainTot, mumech::Inclusion::rotateStrain_L2G(), and mumech::SumTwoVectors().

void mumech::InclusionRecord3D::allocate_nlc_fields ( void  )
virtual
void mumech::InclusionRecord3D::computeVolume ( void  )
privatevirtual
InclusionGeometry mumech::InclusionRecord3D::giveInclusionGeometry ( InclusionGeometry  shp_o) const
virtual
void mumech::InclusionRecord3D::init_EigStrain_LC ( int  lc)
void mumech::InclusionRecord3D::initialize ( const Inclusion prevInclRec)
virtual
void mumech::InclusionRecord3D::input_data_initialize_and_check_consistency ( void  )
virtual
bool mumech::InclusionRecord3D::point_is_affected ( const double *  point) const
virtual

Returns true, if the given point is inside of the action radius of the receiver.

Implements mumech::Inclusion.

Definition at line 1490 of file inclusion.cpp.

References ABS, mumech::Inclusion::actionRadius, mumech::Inclusion::origin, mumech::Inclusion::SQRactionRadius, and VEC_SQR_NORM_3D.

void mumech::InclusionRecord3D::SBA_computeInitialStrains ( int  lc)
virtual

Function computes basic/own eigen strains (not influenced by other inclusions) of lc-th load case.

Function updates the initial strains for balancing algorithm of the lc-th load case.

For example reinitialize remote strains and all related strain fields.

Parameters
lcLoad case number.

< local remote strain field acting around the boundary at infinity

< Suplement of the isotropic elastic stiffness tensor of an inclusion stored in reduced form.

< Operator transforming remote strainf field into transformation eigenstrain, i.e. = : .

Implements mumech::Inclusion.

Definition at line 1426 of file inclusion.cpp.

References mumech::MatrixRecord::C, mumech::Inclusion::C, mumech::Inclusion::giveTransformationStrainOperator(), mumech::MatrixOperations::giveTVproduct_6is6x6to12and6(), globEigStrainTotal, locEigStrain, mumech::Problem::matrix, mumech::Inclusion::P, mumech::MatrixRecord::Remote_strain, mumech::Inclusion::rotateStrain_G2L(), mumech::Inclusion::rotateStrain_L2G(), and mumech::SubtractTwoVectors().

void mumech::InclusionRecord3D::SBA_updateGlobAndLocStrains ( Point point)

Function modifies/updates the actuall local and global eigenstrains in inclusion centroids due to the presence of an adjacent inclusion.

Parameters
pointPoint data record in inclusion centroids.

Definition at line 1461 of file inclusion.cpp.

References mumech::AddVector(), mumech::MatrixOperations::giveTVproduct_6is6x6to12and6(), locEigStrainTot, mumech::Inclusion::rotateStrain_G2L(), mumech::Inclusion::SInv, and mumech::Point::strain.

Referenced by mumech::selfBalanceAlgorithm::totalEigStrainInInclCentroidsUpdate().

bool mumech::InclusionRecord3D::scan_globEigStrain_LC ( Stream stream,
int  lc 
)
bool mumech::InclusionRecord3D::scan_locEigStrain_LC ( Stream stream,
int  lc 
)
virtual

Member Data Documentation

double mumech::InclusionRecord3D::eInt[13]

elliptic potentials of an internal point (position independent)

Definition at line 290 of file inclusion.h.

Referenced by mumech::eshelbySoluUniformField::giveDisplacementPerturbTensor_INTpoint(), and initialize().

eshelbySoluEllipticIntegrals* mumech::InclusionRecord3D::ellInt
eshelbySoluUniformField* mumech::InclusionRecord3D::esuf
double** mumech::InclusionRecord3D::globEigStrain_LC
double mumech::InclusionRecord3D::globEigStrainTotal[6]

total global eigenstrain field evaluated by 'self_balance' algorithm

Definition at line 297 of file inclusion.h.

Referenced by addtot(), init_EigStrain_LC(), and SBA_computeInitialStrains().

double mumech::InclusionRecord3D::locEigStrain[6]

actual local eigenstrain used during 'self_balance' algorithm

Definition at line 295 of file inclusion.h.

Referenced by addtot(), mumech::eshelbySoluUniformField::giveEshelbyStrainOfOnePoint(), init_EigStrain_LC(), initialize(), and SBA_computeInitialStrains().

double** mumech::InclusionRecord3D::locEigStrain_LC

predchazejici arrays slouzi vsude v balancingu pro vypocet v danem lc, tyto pole schovavaji vysledky pro vsechny lc

Definition at line 299 of file inclusion.h.

Referenced by allocate_nlc_fields(), mumech::eshelbySoluUniformField::giveEshelbyDisplacementOfOnePoint(), mumech::eshelbySoluUniformField::giveEshelbyFieldsOfOnePoint(), InclusionRecord3D(), init_EigStrain_LC(), scan_locEigStrain_LC(), and ~InclusionRecord3D().

double mumech::InclusionRecord3D::locEigStrainTot[6]

actual local eigenstrain used during 'self_balance' algorithm

Definition at line 296 of file inclusion.h.

Referenced by addtot(), and SBA_updateGlobAndLocStrains().


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