55 for(
int i = 0; i < n; i++ ){
56 CopyVector( inclRec[i]->globEigStrainTotal, ( auxVect + i * 6 ), 6 );
76 for (
int i=0; i<problem->
noIncl; i++) {
78 if (inclRec[i] == NULL)
_errorr(
"");
82 if (problem->
verbose > 0) printf(
"Transformation strain update in progress, please wait ... \n" );
85 double * auxStrains = NULL;
91 for( i = 0; i < problem->
noIncl; i++ ){
93 CopyVector( inclRec[i]->origin, point[i].x, 3 );
97 auxStrains =
new double[problem->
noIncl * 6];
98 long noActIncls, indx;
113 for (i = 0; i < problem->
noIncl; i++)
116 for (i = 0; i < problem->
noIncl; i++) {
121 for (j=0; j<noActIncls; j++) {
133 for (i=0; i<problem->
noIncl; i++)
134 inclRec[i]->addtot();
141 printf(
"self-balance norm[%d] = %.6e\n", ( step ), norm );
146 printf(
"steps: %d\n", step );
159 delete [] auxStrains;
166 else _errorr(
"Unknown SBAmode");
222 for (
int i=0; i<n; i++)
223 inclRec[i]->rotateStrain_G2L(inclRec[i]->globEigStrainTotal, inclRec[i]->locEigStrain);
237 printf(
"%s", notice );
239 for(
int i = 0; i < n; i++ ){
240 sprintf( auxName,
"Inclusion %d:\n", ( i + 1 ) );
Class eshelbySoluUniformField.
int get_SBA_maxiters(void)
static double giveQuadNormMultEigstrain(InclusionRecord3D **inclRec, double *oldStrain, int n)
Function gives the quadratic norm of multiple eigenstrain vectors calculated from total global eigens...
double give_quadNormTwoVectors(const double *v1, const double *v2, int n)
Function returns the quadratic norm of two vectors of length 'n'.
int get_SBA_reqiters(void)
#define _SELF_BALANCE_NORM_LIMIT_
void set_nlc(const Problem *p, int nlc)
Original Honza Novak's balancing.
static void copyGlobTotalEigStrainsToAuxVector(InclusionRecord3D **inclRec, double *auxVect, int n)
Function copies total global eigenstrains from InclRecord to an auxiliary vector: auxVect = 'n x 6' ...
eshelbySoluUniformField * esuf
static void totalEigStrainInInclCentroidsUpdate(Problem *p)
Function gives the total transformation strain field in inclusion centroids regarding the presence of...
Namespace MatrixOperations.
int verbose
0 - no printing, 1 - basic printing, 3 - debug printing
void CopyVector(const double *src, double *dest, long n)
Function copy given number of components from vector, 'a' to vector 'b'.
void SBA_updateGlobAndLocStrains(Point *point)
Function modifies/updates the actuall local and global eigenstrains in inclusion centroids due to the...
void printVectorRowForm(double *vect, int n, const char *notice)
Function prints the vector of double values as row.
Class eshelbySoluEllipticIntegrals.
The header file of usefull macros.
Collection of the functions of basic manipulations, some of them can be used instead of their counter...
bool SBA_optimized
SBA optimized (FULL/_OPTIMIZED_)
SBAtype SBA_type
type of Self balancing algorithm (SBA)
Single Point data structure - contribution from Single inclusion.
int give_verbose(void) const
Give verbose level.
Inclusion ** inclusions
inclusion records - 1d array of pointers to InclusionRecord
static void localEigStrainUpdateTotal(mumech::InclusionRecord3D **inclRec, int n)
int noActingIncls
Number of acting inclusions.
static void printTotEigenStrains(InclusionRecord3D **inclRec, int n, const char *notice)
The set of the functions returning the Eshelby solution of multiple inclusion task using the self-bal...
int noIncl
number of inclusions
int * actingIncls
Set of inclusions which act to the "this" one.
void CleanVector(double *a, long n)
Functin cleans a 'double' vector, initialize each value being 0-zero.