66 VGREAT, VGREAT, VGREAT,
67 VGREAT, VGREAT, VGREAT,
68 VGREAT, VGREAT, VGREAT
74 -VGREAT, -VGREAT, -VGREAT,
75 -VGREAT, -VGREAT, -VGREAT,
76 -VGREAT, -VGREAT, -VGREAT
105 scalar a = -t.
xx() - t.
yy() - t.
zz();
110 scalar c = - t.
xx()*t.
yy()*t.
zz() - t.
xy()*t.
yz()*t.
zx()
115 if (
mag(c) < 1.0
e-100)
117 scalar disc =
sqr(a) - 4*
b;
121 scalar q = -0.5*
sqrt(
max(0.0, disc));
130 <<
"zero and complex eigenvalues in tensor: " << t
136 scalar Q = (a*a - 3*
b)/9;
137 scalar
R = (2*a*a*a - 9*a*b + 27*c)/54;
145 scalar sqrtQ =
sqrt(Q);
146 scalar theta =
acos(R/(Q*sqrtQ));
148 scalar m2SqrtQ = -2*sqrtQ;
151 i = m2SqrtQ*
cos(theta/3) - aBy3;
165 return vector(root, root, root);
171 <<
"complex eigenvalues detected for tensor: " << t
197 return vector(i, ii, iii);
203 if (
mag(lambda) < SMALL)
212 scalar sd0 = A.
yy()*A.
zz() - A.
yz()*A.
zy();
213 scalar sd1 = A.
xx()*A.
zz() - A.
xz()*A.
zx();
214 scalar sd2 = A.
xx()*A.
yy() - A.
xy()*A.
yx();
216 scalar magSd0 =
mag(sd0);
217 scalar magSd1 =
mag(sd1);
218 scalar magSd2 =
mag(sd2);
221 if (magSd0 > magSd1 && magSd0 > magSd2 && magSd0 > SMALL)
226 (A.
yz()*A.
zx() - A.
zz()*A.
yx())/sd0,
233 else if (magSd1 > magSd2 && magSd1 > SMALL)
237 (A.
xz()*A.
zy() - A.
zz()*A.
xy())/sd1,
245 else if (magSd2 > SMALL)
249 (A.
xy()*A.
yz() - A.
yy()*A.
xz())/sd2,
250 (A.
yx()*A.
xz() - A.
xx()*A.
yz())/sd2,
302 scalar a = -t.
xx() - t.
yy() - t.
zz();
307 scalar c = - t.
xx()*t.
yy()*t.
zz() - t.
xy()*t.
yz()*t.
xz()
312 if (
mag(c) < 1.0
e-100)
314 scalar disc =
sqr(a) - 4*
b;
318 scalar q = -0.5*
sqrt(
max(0.0, disc));
327 <<
"zero and complex eigenvalues in tensor: " << t
333 scalar Q = (a*a - 3*
b)/9;
334 scalar
R = (2*a*a*a - 9*a*b + 27*c)/54;
342 scalar sqrtQ =
sqrt(Q);
343 scalar theta =
acos(R/(Q*sqrtQ));
345 scalar m2SqrtQ = -2*sqrtQ;
348 i = m2SqrtQ*
cos(theta/3) - aBy3;
362 return vector(root, root, root);
367 WarningIn(
"eigenValues(const symmTensor&)")
368 <<
"complex eigenvalues detected for symmTensor: " << t
394 return vector(i, ii, iii);
400 if (
mag(lambda) < SMALL)
409 scalar sd0 = A.
yy()*A.
zz() - A.
yz()*A.
yz();
410 scalar sd1 = A.
xx()*A.
zz() - A.
xz()*A.
xz();
411 scalar sd2 = A.
xx()*A.
yy() - A.
xy()*A.
xy();
413 scalar magSd0 =
mag(sd0);
414 scalar magSd1 =
mag(sd1);
415 scalar magSd2 =
mag(sd2);
418 if (magSd0 > magSd1 && magSd0 > magSd2 && magSd0 > SMALL)
423 (A.
yz()*A.
xz() - A.
zz()*A.
xy())/sd0,
430 else if (magSd1 > magSd2 && magSd1 > SMALL)
434 (A.
xz()*A.
yz() - A.
zz()*A.
xy())/sd1,
442 else if (magSd2 > SMALL)
446 (A.
xy()*A.
yz() - A.
yy()*A.
xz())/sd2,
447 (A.
xy()*A.
xz() - A.
xx()*A.
yz())/sd2,