muMECH
1.0
|
3D inclusion record. More...
#include <inclusion.h>
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) |
![]() | |
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 | |
eshelbySoluEllipticIntegrals * | ellInt |
eshelbySoluUniformField * | esuf |
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 |
![]() | |
long | id |
identification number More... | |
const Problem * | P |
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 | |
![]() | |
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... | |
3D inclusion record.
Definition at line 278 of file inclusion.h.
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.
|
virtual |
Destructor.
Definition at line 1102 of file inclusion.cpp.
References mumech::DeleteArray2D(), ellInt, esuf, mumech::Problem::give_nLC(), globEigStrain_LC, locEigStrain_LC, and mumech::Inclusion::P.
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().
|
virtual |
Reimplemented from mumech::Inclusion.
Definition at line 1148 of file inclusion.cpp.
References _errorr, mumech::Inclusion::allocate_nlc_fields(), mumech::Problem::give_nLC(), mumech::Problems::give_VM_TENS_RANGE(), globEigStrain_LC, locEigStrain_LC, and mumech::Inclusion::P.
Referenced by scan_globEigStrain_LC(), and scan_locEigStrain_LC().
|
privatevirtual |
Implements mumech::Inclusion.
Definition at line 1125 of file inclusion.cpp.
References _errorr, mumech::Inclusion::a, mumech::IS_ELLIPSOID, mumech::IS_OBLATE_SPHEROID, mumech::IS_PROLATE_SPHEROID, mumech::IS_SPHERE, PI, mumech::Inclusion::shape, and mumech::Inclusion::volume.
|
virtual |
Function detects the inclusion geometry according the mutual aspect ratio among the semiaxes.
Implements mumech::Inclusion.
Definition at line 1170 of file inclusion.cpp.
References _errorr, _errorr2, _errorr3, _warningg, _warningg3, mumech::Inclusion::a, errol, mumech::Problem::give_semiaxes_max_difference(), mumech::Problem::give_semiaxes_min_difference(), mumech::Problem::give_semiaxis_min_difference_change(), INFTY, mumech::IS_ELLIPSOID, mumech::IS_OBLATE_SPHEROID, mumech::IS_PROLATE_SPHEROID, mumech::IS_SPHERE, mumech::IS_VOID, mumech::IST_e2s(), and mumech::Inclusion::P.
void mumech::InclusionRecord3D::init_EigStrain_LC | ( | int | lc | ) |
Definition at line 1509 of file inclusion.cpp.
References mumech::CopyVector(), mumech::Problems::give_VM_TENS_RANGE(), globEigStrain_LC, globEigStrainTotal, locEigStrain, locEigStrain_LC, and mumech::Inclusion::P.
|
virtual |
Initialization of this inclusion. Computes characteristic matrices: Eshelby tensor, ...
Implements mumech::Inclusion.
Definition at line 1357 of file inclusion.cpp.
References _ACT_RAD_MULT_3d, _errorr, mumech::_ZXZ_, mumech::Inclusion::a, mumech::Inclusion::actionRadius, mumech::Inclusion::C, mumech::CopyVector(), mumech::Inclusion::E, mumech::Inclusion::eAngles, eInt, ellInt, esuf, mumech::TransformTensors::give_T(), mumech::TransformTensors::give_Te(), mumech::TransformTensors::give_TeInv(), mumech::TransformTensors::give_TInv(), mumech::eshelbySoluEllipticIntegrals::giveEllipticIntegrals(), mumech::eshelbySoluUniformField::giveEshelbyTensor(), mumech::eshelbySoluUniformField::giveEshelbyTensorInverse(), mumech::Stiffness::giveReducedIsoStiffMatrix(), locEigStrain, mumech::Inclusion::nu, mumech::Inclusion::S, mumech::Inclusion::shape, mumech::Inclusion::SInv, SQR, mumech::Inclusion::SQRactionRadius, mumech::Inclusion::T, mumech::Inclusion::Te, mumech::Inclusion::TeInv, and mumech::Inclusion::TInv.
|
virtual |
Initialize input data readed form vtk file.
Reimplemented from mumech::Inclusion.
Definition at line 1316 of file inclusion.cpp.
References _errorr, ellInt, errol, esuf, mumech::Inclusion::input_data_initialize_and_check_consistency(), mumech::Problem::is_converted_to_equivalent(), mumech::IS_ELLIPSOID, mumech::IS_OBLATE_SPHEROID, mumech::IS_PROLATE_SPHEROID, mumech::IS_SPHERE, mumech::Inclusion::P, and mumech::Inclusion::shape.
|
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.
|
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.
lc | Load 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.
point | Point 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 | ||
) |
Definition at line 1118 of file inclusion.cpp.
References allocate_nlc_fields(), mumech::Problems::give_VM_TENS_RANGE(), globEigStrain_LC, mumech::Inclusion::P, and gelibspace::ST_scan_array().
|
virtual |
Implements mumech::Inclusion.
Definition at line 1112 of file inclusion.cpp.
References allocate_nlc_fields(), mumech::Problems::give_VM_TENS_RANGE(), locEigStrain_LC, mumech::Inclusion::P, and gelibspace::ST_scan_array().
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 |
Definition at line 284 of file inclusion.h.
Referenced by mumech::eshelbySoluUniformField::giveEshelbyFieldsOfOnePoint(), mumech::eshelbySoluUniformField::giveEshelbyStrainOfOnePoint(), InclusionRecord3D(), initialize(), input_data_initialize_and_check_consistency(), and ~InclusionRecord3D().
eshelbySoluUniformField* mumech::InclusionRecord3D::esuf |
Definition at line 285 of file inclusion.h.
Referenced by mumech::Dilute::giveFullDiluteConcentrationFactorOfInclusionInLC(), InclusionRecord3D(), initialize(), input_data_initialize_and_check_consistency(), mumech::selfBalanceAlgorithm::totalEigStrainInInclCentroidsUpdate(), and ~InclusionRecord3D().
double** mumech::InclusionRecord3D::globEigStrain_LC |
Definition at line 300 of file inclusion.h.
Referenced by allocate_nlc_fields(), InclusionRecord3D(), init_EigStrain_LC(), scan_globEigStrain_LC(), and ~InclusionRecord3D().
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().