48 if (
I->
a[1] !=
I->
a[2])
50 _warningg(
"Values of semiaxes do not fit the condition for circular cylinder (a2 = a3, a1 = infinity is ignored). " );
51 std::cout <<
"a1, a2, a3 = " <<
I->
a[0] <<
", " <<
I->
a[1] <<
", " <<
I->
a[2];
60 J[2] = this->
I2(a2, lambda);
69 J[8] = this->
I22(a2, lambda);
79 std::cout <<
"J integrals" << std::endl;
80 for (
int i = 0; i < 13; i++)
81 std::cout <<
"J[" << i <<
"] = " << J[i] << std::endl;
82 std::cout << std::endl;
109 const int NUM_ELLIP_INT = 13;
118 for (
int i = 0; i < 3; i++)
123 point->
dJi[3*i+1] = (J_pert[
_Yp_][i+1] - J_pert[
_Ym_][i+1]) / (2.0 * ndiff);
124 point->
dJi[3*i+2] = (J_pert[
_Zp_][i+1] - J_pert[
_Zm_][i+1]) / (2.0 * ndiff);
133 point->
ddJi[9*i+4] = (J_pert[
_Yp_][i+1] - 2.0 * J_pert[
_CENTER_][i+1] + J_pert[
_Ym_][i+1]) / (ndiff * ndiff);
137 point->
ddJi[9*i+7] = point->
ddJi[9*i+5];
138 point->
ddJi[9*i+8] = (J_pert[
_Zp_][i+1] - 2.0 * J_pert[
_CENTER_][i+1] + J_pert[
_Zm_][i+1]) / (ndiff * ndiff);
142 for (
int i = 0; i < 9; i++)
147 point->
dJij[i+9] = (J_pert[
_Yp_][i+4] - J_pert[
_Ym_][i+4]) / (2.0 * ndiff);
148 point->
dJij[i+18] = (J_pert[
_Zp_][i+4] - J_pert[
_Zm_][i+4]) / (2.0 * ndiff);
157 point->
ddJij[9*i+4] = (J_pert[
_Yp_][i+4] - 2.0 * J_pert[
_CENTER_][i+4] + J_pert[
_Ym_][i+4]) / (ndiff * ndiff);
162 point->
ddJij[9*i+8] = (J_pert[
_Zp_][i+4] - 2.0 * J_pert[
_CENTER_][i+4] + J_pert[
_Zm_][i+4]) / (ndiff * ndiff);
168 std::cout <<
"dJi integrals" << std::endl;
169 for (
int i = 0; i < 9; i++)
170 std::cout <<
"dJi[" << i <<
"] = " << point->
dJi[i] << std::endl;
171 std::cout << std::endl;
172 std::cout <<
"dJij integrals" << std::endl;
173 for (
int i = 0; i < 27; i++)
174 std::cout <<
"dJij[" << i <<
"] = " << point->
dJij[i] << std::endl;
175 std::cout << std::endl;
176 std::cout <<
"ddJi integrals" << std::endl;
177 for (
int i = 0; i < 27; i++)
178 std::cout <<
"ddJi[" << i <<
"] = " << point->
ddJi[i] << std::endl;
179 std::cout << std::endl;
180 std::cout <<
"ddJij integrals" << std::endl;
181 for (
int i = 0; i < 81; i++)
182 std::cout <<
"ddJij[" << i <<
"] = " << point->
ddJij[i] << std::endl;
183 std::cout << std::endl;
189 return 2.0 *
PI *
SQR(a2) / (
SQR(a2) + lambda);
194 return PI *
SQR(a2) / (
SQR(a2) + lambda) / (
SQR(a2) + lambda) ;
double getLambda(const double a[3], double x1, double x2, double x3)
Returns lambda for a given point (x1, x2, x3)
double loc_x[3]
Local coordinates of a point.
const InclusionRecord3D * I
void giveEllipticIntegrals(double J[13], double lambda, bool intpoint)
Function gives the values of Ferers-Dyson's elliptic integrals of the inclusion this->I.
Class eshelbySoluEllipticIntegralsCylinder.
The header file of usefull macros.
void getPerturbatedLambdas(double *lambdas, const double loc_x[3])
Helper function.
Collection of the functions of basic manipulations, some of them can be used instead of their counter...
double ddJij[81]
Second derivatives of elliptic integral Iij.
Single Point data structure - contribution from Single inclusion.
double ndiff_1
derivative step for the first derivations
Class inclusion contains and handles all inclusion data.
double dJi[9]
First derivatives of elliptic integral Ii.
double * a
Inclusion semiaxes' dimensions in global arrangement.
double ddJi[27]
Second derivatives of elliptic integral Ii.
double dJij[27]
First derivatives of elliptic integral Iij.
double I2(double a2, double lambda)
void CleanVector(double *a, long n)
Functin cleans a 'double' vector, initialize each value being 0-zero.
void giveDerivativesOfEllipticIntegrals(Point *point, bool intpoint)
Function gives the values of Ferers-Dyson's elliptic integral derivatives of the inclusion this->I...
double I22(double a1, double lambda)