|
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) |
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 | |
| 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 |
Public Attributes inherited from mumech::Inclusion | |
| 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 | |
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... | |
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().