45 #define _delta_lambda( lambda ) sqrt( ( SQR(I->a[0])+lambda )*( SQR(I->a[1])+lambda )*( SQR(I->a[2])+lambda ) ) 61 const double *sort_a =
I->
a;
63 double Theta = asin( sqrt( (
SQR( sort_a[0] ) -
SQR( sort_a[2] ) ) / (
SQR( sort_a[0] ) + lambda ) ) );
64 double k = sqrt( (
SQR( sort_a[0] ) -
SQR( sort_a[1] ) )/(
SQR( sort_a[0] ) -
SQR( sort_a[2] ) ) );
65 double mult =
_4PI_ * sort_a[0] * sort_a[1] * sort_a[2];
72 J[1] = this->
I1( sort_a, k, Theta, mult );
73 J[3] = this->
I3( sort_a, k, Theta, lambda, mult, intpoint );
74 J[2] = this->
I2( J[1], J[3], lambda, mult, Dla, intpoint );
76 J[5] = this->
I12( sort_a, J[1], J[2] );
77 J[6] = this->
I13( sort_a, J[1], J[3] );
78 J[4] = this->
I11( sort_a, J[5], J[6], lambda, mult, Dla, intpoint );
81 J[9] = this->
I23( sort_a, J[2], J[3] );
82 J[8] = this->
I22( sort_a, J[7], J[9], lambda, mult, Dla, intpoint );
86 J[12] = this->
I33( sort_a, J[11], J[10], lambda, mult, Dla, intpoint );
89 std::cout <<
"J integrals" << std::endl;
90 for (
int i = 0; i < 13; i++)
91 std::cout <<
"J[" << i <<
"] = " << J[i] << std::endl;
92 std::cout << std::endl;
105 if (intpoint)
_errorr(
"derivatives are 0, this function should not be called");
158 const int NUM_ELLIP_INT = 13;
164 for (
int i = 0; i < 3; i++)
168 point->
dJi[3*i ] = (J_pert[
_Xp_][i+1] - J_pert[
_Xm_][i+1]) / (2.0 * ndiff);
169 point->
dJi[3*i+1] = (J_pert[
_Yp_][i+1] - J_pert[
_Ym_][i+1]) / (2.0 * ndiff);
170 point->
dJi[3*i+2] = (J_pert[
_Zp_][i+1] - J_pert[
_Zm_][i+1]) / (2.0 * ndiff);
174 point->
ddJi[9*i ] = (J_pert[
_Xp_][i+1] - 2.0 * J_pert[
_CENTER_][i+1] + J_pert[
_Xm_][i+1]) / (ndiff * ndiff);
178 point->
ddJi[9*i+3] = point->
ddJi[9*i+1];
179 point->
ddJi[9*i+4] = (J_pert[
_Yp_][i+1] - 2.0 * J_pert[
_CENTER_][i+1] + J_pert[
_Ym_][i+1]) / (ndiff * ndiff);
182 point->
ddJi[9*i+6] = point->
ddJi[9*i+2];
183 point->
ddJi[9*i+7] = point->
ddJi[9*i+5];
184 point->
ddJi[9*i+8] = (J_pert[
_Zp_][i+1] - 2.0 * J_pert[
_CENTER_][i+1] + J_pert[
_Zm_][i+1]) / (ndiff * ndiff);
188 for (
int i = 0; i < 9; i++)
192 point->
dJij[i] = (J_pert[
_Xp_][i+4] - J_pert[
_Xm_][i+4]) / (2.0 * ndiff);
193 point->
dJij[i+9] = (J_pert[
_Yp_][i+4] - J_pert[
_Ym_][i+4]) / (2.0 * ndiff);
194 point->
dJij[i+18] = (J_pert[
_Zp_][i+4] - J_pert[
_Zm_][i+4]) / (2.0 * ndiff);
198 point->
ddJij[9*i] = (J_pert[
_Xp_][i+4] - 2.0 * J_pert[
_CENTER_][i+4] + J_pert[
_Xm_][i+4]) / (ndiff * ndiff);
203 point->
ddJij[9*i+4] = (J_pert[
_Yp_][i+4] - 2.0 * J_pert[
_CENTER_][i+4] + J_pert[
_Ym_][i+4]) / (ndiff * ndiff);
208 point->
ddJij[9*i+8] = (J_pert[
_Zp_][i+4] - 2.0 * J_pert[
_CENTER_][i+4] + J_pert[
_Zm_][i+4]) / (ndiff * ndiff);
247 _errorr(
"Invalid type of differentiation.\n");
251 std::cout <<
"dJi integrals" << std::endl;
252 for (
int i = 0; i < 9; i++)
253 std::cout <<
"dJi[" << i <<
"] = " << point->
dJi[i] << std::endl;
254 std::cout << std::endl;
255 std::cout <<
"dJij integrals" << std::endl;
256 for (
int i = 0; i < 27; i++)
257 std::cout <<
"dJij[" << i <<
"] = " << point->
dJij[i] << std::endl;
258 std::cout << std::endl;
259 std::cout <<
"ddJi integrals" << std::endl;
260 for (
int i = 0; i < 27; i++)
261 std::cout <<
"ddJi[" << i <<
"] = " << point->
ddJi[i] << std::endl;
262 std::cout << std::endl;
263 std::cout <<
"ddJij integrals" << std::endl;
264 for (
int i = 0; i < 81; i++)
265 std::cout <<
"ddJij[" << i <<
"] = " << point->
ddJij[i] << std::endl;
266 std::cout << std::endl;
308 double a1 = a[0], a2 = a[1], a3 = a[2];
312 return( mult * ( ellInt.
ellf( Theta, k ) - ellInt.
elle( Theta, k ) )/
313 ( (
SQR( a1 ) -
SQR( a2 ) ) * sqrt(
SQR( a1 ) -
SQR( a3 ) ) ) );
328 double mult,
double Dla,
bool intpoint)
330 if (intpoint)
return (
_4PI_ - I1 - I3 );
331 else return ( mult / Dla - I1 - I3 );
345 double mult,
bool intpoint)
347 double a1 = a[0], a2 = a[1], a3 = a[2], value = 0.;
351 value = mult / ( (
SQR( a2 ) -
SQR( a3 ) ) * sqrt(
SQR( a1 ) -
SQR( a3 ) ) ) *
352 ( a2 * sqrt(
SQR(a1) -
SQR(a3) )/( a1 * a3 ) - ellInt.
elle( Theta, k ) );
355 value = mult / ( (
SQR( a2 ) -
SQR( a3 ) ) * sqrt(
SQR( a1 ) -
SQR( a3 ) ) ) *
356 ( sqrt(
SQR( a2 ) + lambda ) * sqrt(
SQR( a1 ) -
SQR( a3 ) ) * pow( (
SQR( a3 ) + lambda ), -.5 ) *
357 pow( (
SQR( a1 ) + lambda ), -.5 ) - ellInt.
elle( Theta, k ) );
372 double mult,
double Dla,
bool intpoint)
374 if (intpoint)
return (
_4PI_ /
SQR( a[0] ) - I12 - I13 ) / 3.;
375 else return ( mult / ( (
SQR( a[0] ) + lambda ) * Dla ) - I12 - I13 ) / 3.;
386 return ( ( I2 - I1 )/(
SQR( a[0] ) -
SQR( a[1] ) ) );
397 return( ( I3 - I1 )/(
SQR( a[0] ) -
SQR( a[2] ) ) );
409 double mult,
double Dla,
bool intpoint )
411 if (intpoint)
return (
_4PI_ /
SQR( a[1] ) - I21 - I23 ) / 3.;
412 else return ( mult / ( (
SQR( a[1] ) + lambda ) * Dla ) - I21 - I23 ) / 3.;
423 return( ( I3 - I2 )/(
SQR( a[1] ) -
SQR( a[2] ) ) );
435 double mult,
double Dla,
bool intpoint )
437 if (intpoint)
return (
_4PI_ /
SQR( a[2] ) - I31 - I32 ) / 3.;
438 else return ( mult / ( (
SQR( a[2] ) + lambda ) * Dla ) - I31 - I32 ) / 3.;
463 double derivative = 0.;
465 if( ( direction_1 ==
_x1_ || direction_1 ==
_x2_ || direction_1 ==
_x3_ ) && direction_2 ==
_empty_ ){
468 else if( ( direction_1 ==
_x1_ || direction_1 ==
_x2_ || direction_1 ==
_x3_ ) &&
469 ( direction_2 ==
_x1_ || direction_2 ==
_x2_ || direction_2 ==
_x3_ ) ){
473 _errorr(
"giveEllipticalIntegralDerivative: invalid derivative direction ");
494 double derivative = 0.;
496 if( component ==
_I_ ){
499 else if( component ==
_I1_ || component ==
_I2_ || component ==
_I3_ ){
501 }
else if( component ==
_I11_ || component ==
_I12_ || component ==
_I13_ ||
507 _errorr(
"giveEllipticIntegralFirstDerivative: invalid integral component ");
531 double derivative = 0.;
533 if( component ==
_I1_ || component ==
_I2_ || component ==
_I3_ ){
535 }
else if( component ==
_I11_ || component ==
_I12_ || component ==
_I13_ ||
541 _errorr(
"giveEllipticIntegralSeccondDerivative: invalid integral component ");
578 switch( (
int ) component ){
579 case _I1_ : i = 0;
break;
580 case _I2_ : i = 1;
break;
581 case _I3_ : i = 2;
break;
583 _errorr(
"give_Iip_Derivative: invalid integral component ");
587 return( aLa.
mult * aLa.
dla[p] / ( (
SQR( a[i] ) + aLa.
la ) * aLa.
Dla ) );
607 switch( (
int ) component ){
608 case _I11_ : i = 0; j = 0;
break;
609 case _I12_ : i = 0; j = 1;
break;
610 case _I13_ : i = 0; j = 2;
break;
611 case _I21_ : i = 1; j = 0;
break;
612 case _I22_ : i = 1; j = 1;
break;
613 case _I23_ : i = 1; j = 2;
break;
614 case _I31_ : i = 2; j = 0;
break;
615 case _I32_ : i = 2; j = 1;
break;
616 case _I33_ : i = 2; j = 2;
break;
618 _errorr(
"give_Iijp_Derivative: invalid integral component ");
622 return( aLa.
mult * aLa.
dla[p] / ( (
SQR( a[i] ) + aLa.
la ) * (
SQR( a[j] ) + aLa.
la ) * aLa.
Dla ) );
642 double dLa_p = aLa.
dla[p];
643 double dLa_q = aLa.
dla[q];
644 double dLa_pq = aLa.
ddla[p * q];
645 double a1 = a[0], a2 = a[1], a3 = a[2];
649 case _I11_ : i = 0; j = 0;
break;
650 case _I12_ : i = 0; j = 1;
break;
651 case _I13_ : i = 0; j = 2;
break;
652 case _I21_ : i = 1; j = 0;
break;
653 case _I22_ : i = 1; j = 1;
break;
654 case _I23_ : i = 1; j = 2;
break;
655 case _I31_ : i = 2; j = 0;
break;
656 case _I32_ : i = 2; j = 1;
break;
657 case _I33_ : i = 2; j = 2;
break;
659 _errorr(
"give_Iijp_Derivative: invalid integral component ");
663 dLa_q*dLa_p + 2*(
SQR(a1) + aLa.
la)*(
SQR(a2) + aLa.
la)*(
SQR(a3) + aLa.
la)*
664 (
SQR(a[j]) + aLa.
la)*dLa_q*dLa_p + (
SQR(a[i]) + aLa.
la)*(
SQR(a[j]) + aLa.
la)*
668 (
SQR(a[j]) + aLa.
la)*dLa_pq))/
692 double dLa_p = aLa.
dla[p];
693 double dLa_q = aLa.
dla[q];
694 double dLa_pq = aLa.
ddla[p * q];
695 double a1 = a[0], a2 = a[1], a3 = a[2];
699 case _I1_ : i = 0;
break;
700 case _I2_ : i = 1;
break;
701 case _I3_ : i = 2;
break;
703 _errorr(
"give_Iipq_Derivative: invalid integral component ");
706 value = (a1*a2*a3*
PI*(2*(
SQR(a1) + aLa.
la)*(
SQR(a2) + aLa.
la)*(
SQR(a3) + aLa.
la)*dLa_q*
707 dLa_p + (
SQR(a[i]) + aLa.
la)*
882 ddJij[12] = ddJij[10];
886 ddJij[15] = ddJij[11];
887 ddJij[16] = ddJij[14];
895 ddJij[21] = ddJij[19];
899 ddJij[24] = ddJij[20];
900 ddJij[25] = ddJij[23];
904 ddJij[27] = ddJij[9];
905 ddJij[28] = ddJij[10];
906 ddJij[29] = ddJij[11];
908 ddJij[30] = ddJij[12];
909 ddJij[31] = ddJij[13];
910 ddJij[32] = ddJij[14];
912 ddJij[33] = ddJij[15];
913 ddJij[34] = ddJij[16];
914 ddJij[35] = ddJij[17];
921 ddJij[39] = ddJij[37];
925 ddJij[42] = ddJij[38];
926 ddJij[43] = ddJij[41];
934 ddJij[48] = ddJij[46];
938 ddJij[51] = ddJij[47];
939 ddJij[52] = ddJij[50];
943 ddJij[54] = ddJij[18];
944 ddJij[55] = ddJij[19];
945 ddJij[56] = ddJij[20];
947 ddJij[57] = ddJij[21];
948 ddJij[58] = ddJij[22];
949 ddJij[59] = ddJij[23];
951 ddJij[60] = ddJij[24];
952 ddJij[61] = ddJij[25];
953 ddJij[62] = ddJij[26];
956 ddJij[63] = ddJij[45];
957 ddJij[64] = ddJij[46];
958 ddJij[65] = ddJij[47];
960 ddJij[66] = ddJij[48];
961 ddJij[67] = ddJij[49];
962 ddJij[68] = ddJij[50];
964 ddJij[69] = ddJij[51];
965 ddJij[70] = ddJij[52];
966 ddJij[71] = ddJij[53];
973 ddJij[75] = ddJij[73];
977 ddJij[78] = ddJij[74];
978 ddJij[79] = ddJij[77];
999 std::complex<double> Dla, std::complex<double> cdla_i,
1003 int comp = component - 1;
1005 return( mult * cdla_i / ( (
SQR( a[comp] ) + la ) * Dla ) );
1020 std::complex<double> Dla, std::complex<double> cdla_i,
1026 switch( (
int ) component ){
1055 _errorr(
"cIij_i: invalid integral component ");
1058 return( mult * cdla_i / ( (
SQR( a[i] ) + la ) * (
SQR( a[j] ) + la ) * Dla ) );
1073 const double sort_a[3],
cLambda CLa )
1075 std::complex<double> aux = 0.;
1079 RedJi[0] = real( aux );
1080 ImdJi[0] = imag( aux );
1083 RedJi[3] = real( aux );
1084 ImdJi[9] = imag( aux );
1087 RedJi[6] = real( aux );
1088 ImdJi[18] = imag( aux );
1100 RedJi[1] = real( aux );
1101 ImdJi[4] = imag( aux );
1104 RedJi[4] = real( aux );
1105 ImdJi[13] = imag( aux );
1108 RedJi[7] = real( aux );
1109 ImdJi[22] = imag( aux );
1111 ImdJi[3] = ImdJi[1];
1112 ImdJi[12] = ImdJi[10];
1113 ImdJi[21] = ImdJi[19];
1121 RedJi[2] = real( aux );
1122 ImdJi[8] = imag( aux );
1125 RedJi[5] = real( aux );
1126 ImdJi[17] = imag( aux );
1129 RedJi[8] = real( aux );
1130 ImdJi[26] = imag( aux );
1132 ImdJi[6] = ImdJi[2];
1133 ImdJi[15] = ImdJi[11];
1134 ImdJi[24] = ImdJi[20];
1136 ImdJi[7] = ImdJi[5];
1137 ImdJi[16] = ImdJi[14];
1138 ImdJi[25] = ImdJi[23];
1154 const double sort_a[3],
cLambda CLa )
1156 std::complex<double> aux = 0.;
1160 RedJij[0] = real( aux );
1161 ImdJij[0] = imag( aux );
1164 RedJij[1] = real( aux );
1165 ImdJij[9] = imag( aux );
1168 RedJij[2] = real( aux );
1169 ImdJij[18] = imag( aux );
1179 RedJij[3] = RedJij[1];
1180 ImdJij[27] = ImdJij[9];
1183 RedJij[4] = real( aux );
1184 ImdJij[36] = imag( aux );
1190 RedJij[5] = real( aux );
1191 ImdJij[45] = imag( aux );
1196 RedJij[6] = RedJij[2];
1197 ImdJij[54] = ImdJij[18];
1199 RedJij[7] = RedJij[5];
1200 ImdJij[63] = ImdJij[45];
1203 RedJij[8] = real( aux );
1204 ImdJij[72] = imag( aux );
1211 RedJij[9] = real( aux );
1212 ImdJij[4] = imag( aux );
1215 RedJij[10] = real( aux );
1216 ImdJij[13] = imag( aux );
1219 RedJij[11] = real( aux );
1220 ImdJij[22] = imag( aux );
1230 RedJij[12] = RedJij[10];
1231 ImdJij[31] = ImdJij[13];
1234 RedJij[13] = real( aux );
1235 ImdJij[40] = imag( aux );
1241 RedJij[14] = real( aux );
1242 ImdJij[49] = imag( aux );
1246 RedJij[15] = RedJij[11];
1247 ImdJij[58] = ImdJij[22];
1249 RedJij[16] = RedJij[14];
1250 ImdJij[67] = ImdJij[49];
1253 RedJij[17] = real( aux );
1254 ImdJij[76] = imag( aux );
1260 RedJij[18] = real( aux );
1261 ImdJij[8] = imag( aux );
1264 RedJij[19] = real( aux );
1265 ImdJij[17] = imag( aux );
1268 RedJij[20] = real( aux );
1269 ImdJij[26] = imag( aux );
1271 RedJij[21] = RedJij[19];
1272 ImdJij[35] = ImdJij[17];
1275 RedJij[22] = real( aux );
1276 ImdJij[44] = imag( aux );
1279 RedJij[23] = real( aux );
1280 ImdJij[53] = imag( aux );
1282 RedJij[24] = RedJij[20];
1283 ImdJij[62] = ImdJij[26];
1285 RedJij[25] = RedJij[23];
1286 ImdJij[71] = ImdJij[53];
1289 RedJij[26] = real( aux );
1290 ImdJij[80] = imag( aux );
1296 ImdJij[3] = ImdJij[1];
1297 ImdJij[6] = ImdJij[2];
1298 ImdJij[7] = ImdJij[5];
1299 ImdJij[12] = ImdJij[10];
1300 ImdJij[15] = ImdJij[11];
1301 ImdJij[16] = ImdJij[14];
1302 ImdJij[21] = ImdJij[19];
1303 ImdJij[24] = ImdJij[20];
1304 ImdJij[25] = ImdJij[23];
1305 ImdJij[28] = ImdJij[10];
1306 ImdJij[29] = ImdJij[11];
1307 ImdJij[30] = ImdJij[12];
1308 ImdJij[32] = ImdJij[14];
1309 ImdJij[33] = ImdJij[15];
1310 ImdJij[34] = ImdJij[16];
1311 ImdJij[39] = ImdJij[37];
1312 ImdJij[42] = ImdJij[38];
1313 ImdJij[43] = ImdJij[41];
1314 ImdJij[48] = ImdJij[46];
1315 ImdJij[51] = ImdJij[47];
1316 ImdJij[52] = ImdJij[50];
1317 ImdJij[55] = ImdJij[19];
1318 ImdJij[56] = ImdJij[20];
1319 ImdJij[57] = ImdJij[21];
1320 ImdJij[59] = ImdJij[23];
1321 ImdJij[60] = ImdJij[24];
1322 ImdJij[61] = ImdJij[25];
1323 ImdJij[64] = ImdJij[46];
1324 ImdJij[65] = ImdJij[47];
1325 ImdJij[66] = ImdJij[48];
1326 ImdJij[68] = ImdJij[50];
1327 ImdJij[69] = ImdJij[51];
1328 ImdJij[70] = ImdJij[52];
1329 ImdJij[75] = ImdJij[73];
1330 ImdJij[78] = ImdJij[74];
1331 ImdJij[79] = ImdJij[77];
1347 for(
int i = 0; i < 27; i++ ){
1365 for(
int i = 0; i < 81; i++ ){
1390 int comp = component - 1;
1392 return( mult * dla_i / ( (
SQR( a[comp] ) + la ) * Dla ) );
1411 switch( (
int ) component ){
1440 _errorr(
"nIij_i: invalid integral component ");
1443 return( mult * dla_i / ( (
SQR( a[i] ) + la ) * (
SQR( a[j] ) + la ) * Dla ) );
1458 const double sort_a[3],
nLambda nLa )
1724 double D = a[0]*a[0];
1725 double E = a[1]*a[1];
1726 double F = a[2]*a[2];
1730 double bb = D + E + F - A - B - C;
1731 double cc = D*E + D*F + E*F - A*E - A*F - B*D - B*F - C*D - C*E;
1732 double dd = D*E*F - A*E*F - B*D*F - C*D*E;
1735 double Discriminant = 18.0*aa*bb*cc*dd - 4.0*pow(bb, 3.0)*dd +
SQR(bb)*
SQR(cc) - 4.0*aa*pow(cc, 3.0) - 27.0*
SQR(aa)*
SQR(dd);
1736 if (Discriminant <= 0.0)
1738 _errorr(
"Negative of zero discriminant in getLambda().");
1742 double pp = (3.0 * aa * cc -
SQR(bb)) / 3.0 /
SQR(aa);
1743 double qq = (2.0 * pow(bb, 3.0) - 9.0 * aa * bb * cc + 27.0 *
SQR(aa) * dd) / 27.0 / pow(aa, 3.0);
1747 _errorr(
"Coeficient pp has to be positive in getLambda().");
1751 double t0 = 2.0 * sqrt(-pp / 3.0) * cos(1.0 / 3.0 *acos(3.0 * qq / 2.0 / pp * sqrt(-3.0 / pp)) - 0.0 * 2.0 *
PI / 3.0);
1752 double t1 = 2.0 * sqrt(-pp / 3.0) * cos(1.0 / 3.0 *acos(3.0 * qq / 2.0 / pp * sqrt(-3.0 / pp)) - 1.0 * 2.0 *
PI / 3.0);
1753 double t2 = 2.0 * sqrt(-pp / 3.0) * cos(1.0 / 3.0 *acos(3.0 * qq / 2.0 / pp * sqrt(-3.0 / pp)) - 2.0 * 2.0 *
PI / 3.0);
1756 double root0 = t0 - bb / 3.0;
1757 double root1 = t1 - bb / 3.0;
1758 double root2 = t2 - bb / 3.0;
1761 return MAX(
MAX(root0, root1), root2);
std::complex< double > cdla_13
double eI(double a[3], double k, double Theta, double mult)
std::complex< double > cdla_22
void give_ndIi(double dJi[9], double ddJih[27], const double sort_a[3], nLambda nLa)
double loc_x[3]
Local coordinates of a point.
double I33(const double a[3], double I32, double I31, double lambda, double mult, double Dla, bool intpoint)
Class eshelbySoluEllipticIntegralsEllipsoid.
std::complex< double > cx2[3]
std::complex< double > cDla2
void give_dIi(double dJi[9], const double sort_a[3], const double x[3], aLambda aLa)
double I2(double I1, double I3, double lambda, double mult, double Dla, bool intpoint)
double give_Ip_Derivative(aLambda aLa, derivativeDirection p)
Class legendreIntegrals provides functions calculating values of elliptical integrals.
std::complex< double > cdla_12
const Problem * P
problem description
const InclusionRecord3D * I
std::complex< double > cDla3
double I12(const double a[3], double I1, double I2)
double give_Iip_Derivative(const double a[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection p)
double I3(const double a[3], double k, double Theta, double lambda, double mult, bool intpoint)
std::complex< double > cIij_i(const double a[3], std::complex< double > la, std::complex< double > Dla, std::complex< double > cdla_i, double mult, ellipticIntegralComponent component)
static double ellf(double phi, double ak)
Function calculating the Legendre's integral of the first kind - numerical recepies.
double give_Iijp_Derivative(const double a[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection p)
double nIi_i(const double a[3], double la, double Dla, double dla_i, double mult, ellipticIntegralComponent component)
void give_cddIi(double ddJi[27], double ImdJi[27])
double giveLambdaDerivative(const double a[3], const double x[3], double lambda, derivativeDirection direction)
ellipticIntegralComponent
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 I1(const double a[3], double k, double Theta, double mult)
double ddJij[81]
Second derivatives of elliptic integral Iij.
DiffTypes give_diffType(void) const
Give type of ...
Single Point data structure - contribution from Single inclusion.
void give_cdIi(double RedJi[9], double ImdJi[27], const double sort_a[3], cLambda CLa)
std::complex< double > cx1[3]
double I11(const double a[3], double I12, double I13, double lambda, double mult, double Dla, bool intpoint)
double I23(const double a[3], double I2, double I3)
double ndiff_1
derivative step for the first derivations
double giveEllipticIntegralFirstDerivative(const double a[3], const double x[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection direction)
static double giveLambda(const double a[3], const double x[3], InclusionGeometry shape)
std::complex< double > cdla_33
void give_ddIi(double ddJi[27], const double sort_a[3], const double x[3], aLambda aLa)
double giveEllipticIntegralSeccondDerivative(const double a[3], const double x[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection direction_1, derivativeDirection direction_2)
void giveDerivativesOfEllipticIntegrals(Point *point, bool intpoint)
Function gives the values of Ferers-Dyson's elliptic integral derivatives of the inclusion this->I...
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.
std::complex< double > cla2
Class of functions calculating the values of 'lambda' parameter and its derivatives.
double I22(const double a[3], double I21, double I23, double lambda, double mult, double Dla, bool intpoint)
#define _delta_lambda(lambda)
void give_cddIij(double ddJij[81], double ImdJij[81])
double dJij[27]
First derivatives of elliptic integral Iij.
double giveEllipticIntegralDerivative(const double a[3], const double x[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection direction_1, derivativeDirection direction_2)
std::complex< double > c_dLambda(const double a[3], std::complex< double > x[3], std::complex< double > lambda, derivativeDirection direction)
void give_cdIij(double RedJij[27], double ImdJij[81], const double sort_a[3], cLambda CLa)
void give_ddIij(double ddJi[27], const double sort_a[3], const double x[3], aLambda aLa)
double getLambda(const double a[3], double x1, double x2, double x3)
Returns lambda for a given point (x1, x2, x3)
std::complex< double > cIi_i(const double a[3], std::complex< double > la, std::complex< double > Dla, std::complex< double > cdla_i, double mult, ellipticIntegralComponent component)
double give_Iijpq_Derivative(const double a[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection p, derivativeDirection q)
std::complex< double > cx3[3]
static double elle(double phi, double ak)
Function calculating the Legendre's integral of the seccond kind - numerical recepies.
double give_Iipq_Derivative(const double a[3], aLambda aLa, ellipticIntegralComponent component, derivativeDirection p, derivativeDirection q)
double I13(const double a[3], double I1, double I3)
std::complex< double > cdla_23
double nIij_i(const double a[3], double la, double Dla, double dla_i, double mult, ellipticIntegralComponent component)
std::complex< double > cla1
void give_dIij(double dJij[27], const double sort_a[3], const double x[3], aLambda aLa)
std::complex< double > cla3
std::complex< double > cdla_11
std::complex< double > cDla1
void giveEllipticIntegrals(double J[13], double lambda, bool intpoint)
Function gives the values of Ferers-Dyson's elliptic integrals of the inclusion this->I.