|
From: <kin...@us...> - 2004-02-23 06:16:35
|
Update of /cvsroot/teem/teem/src/ten In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30125 Modified Files: enumsTen.c ten.h tenGage.c Log Message: added P (and its derivatives), the phase of the cubic eigenvalue polynomial, as new quantity in tenGage, and finished preliminary debugging Index: enumsTen.c =================================================================== RCS file: /cvsroot/teem/teem/src/ten/enumsTen.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** enumsTen.c 23 Feb 2004 02:40:24 -0000 1.16 --- enumsTen.c 23 Feb 2004 06:03:13 -0000 1.17 *************** *** 73,76 **** --- 73,77 ---- "FA", "R", + "P", "evals", *************** *** 113,116 **** --- 114,121 ---- "R normal", + "P grad vec", + "P grad mag", + "P normal", + "anisotropies" }; *************** *** 127,130 **** --- 132,136 ---- "FA", "R", + "P", "3 eigenvalues", "eigenvalue 0", *************** *** 157,160 **** --- 163,169 ---- "R grad mag", "R normal", + "P grad vec", + "P grad mag", + "P normal", "anisotropies" }; *************** *** 163,205 **** _tenGageVal[] = { tenGageUnknown, ! tenGageTensor, /* 0: "t", the reconstructed tensor: GT[7] */ ! tenGageTrace, /* 1: "tr", trace of tensor: GT[1] */ ! tenGageB, /* 2: "b": GT[1] */ ! tenGageDet, /* 3: "det", determinant of tensor: GT[1] */ ! tenGageS, /* 4: "s", square of frobenius norm: GT[1] */ ! tenGageQ, /* 5: "q", (S - B)/9: GT[1] */ ! tenGageFA, /* 6: "fa", fractional anisotropy: GT[1] */ ! tenGageR, /* 7: "r", 9*A*B - 2*A^3 - 27*C: GT[1] */ ! tenGageEval, /* 8: "eval", all eigenvalues of tensor : GT[3] */ ! tenGageEval0, /* 9: "eval0", major eigenvalue of tensor : GT[1] */ ! tenGageEval1, /* 10: "eval1", medium eigenvalue of tensor : GT[1] */ ! tenGageEval2, /* 11: "eval2", minor eigenvalue of tensor : GT[1] */ ! tenGageEvec, /* 12: "evec", major eigenvectors of tensor: GT[9] */ ! tenGageEvec0, /* 13: "evec0", major eigenvectors of tensor: GT[3] */ ! tenGageEvec1, /* 14: "evec1", medium eigenvectors of tensor: GT[3] */ ! tenGageEvec2, /* 15: "evec2", minor eigenvectors of tensor: GT[3] */ ! tenGageTensorGrad, /* 16: "tg, all tensor component gradients: GT[21] */ ! tenGageTraceGradVec, /* 17: "trgv": gradient (vector) of trace: GT[3] */ ! tenGageTraceGradMag, /* 18: "trgm": gradient magnitude of trace: GT[1] */ ! tenGageTraceNormal, /* 19: "trn": normal of trace: GT[3] */ ! tenGageBGradVec, /* 20: "bgv", gradient (vector) of B: GT[3] */ ! tenGageBGradMag, /* 21: "bgm", gradient magnitude of B: GT[1] */ ! tenGageBNormal, /* 22: "bn", normal of B: GT[3] */ ! tenGageDetGradVec, /* 23: "detgv", gradient (vector) of Det: GT[3] */ ! tenGageDetGradMag, /* 24: "detgm", gradient magnitude of Det: GT[1] */ ! tenGageDetNormal, /* 25: "detn", normal of Det: GT[3] */ ! tenGageSGradVec, /* 26: "sgv", gradient (vector) of S: GT[3] */ ! tenGageSGradMag, /* 27: "sgm", gradient magnitude of S: GT[1] */ ! tenGageSNormal, /* 28: "sn", normal of S: GT[3] */ ! tenGageQGradVec, /* 29: "qgv", gradient vector of Q: GT[3] */ ! tenGageQGradMag, /* 30: "qgm", gradient magnitude of Q: GT[1] */ ! tenGageQNormal, /* 31: "qn", normalized gradient of Q: GT[3] */ ! tenGageFAGradVec, /* 32: "fagv", gradient vector of FA: GT[3] */ ! tenGageFAGradMag, /* 33: "fagm", gradient magnitude of FA: GT[1] */ ! tenGageFANormal, /* 34: "fan", normalized gradient of FA: GT[3] */ ! tenGageRGradVec, /* 35: "rgv", gradient vector of Q: GT[3] */ ! tenGageRGradMag, /* 36: "rgm", gradient magnitude of Q: GT[1] */ ! tenGageRNormal, /* 37: "rn", normalized gradient of Q: GT[3] */ ! tenGageAniso /* 38: "an", all anisotropies: GT[TEN_ANISO_MAX+1] */ }; --- 172,218 ---- _tenGageVal[] = { tenGageUnknown, ! tenGageTensor, /* "t", the reconstructed tensor: GT[7] */ ! tenGageTrace, /* "tr", trace of tensor: GT[1] */ ! tenGageB, /* "b": GT[1] */ ! tenGageDet, /* "det", determinant of tensor: GT[1] */ ! tenGageS, /* "s", square of frobenius norm: GT[1] */ ! tenGageQ, /* "q", (S - B)/9: GT[1] */ ! tenGageFA, /* "fa", fractional anisotropy: GT[1] */ ! tenGageR, /* "r", 9*A*B - 2*A^3 - 27*C: GT[1] */ ! tenGageP, /* "p", arccos(R/sqrt(Q^3)): GT[1] */ ! tenGageEval, /* "eval", all eigenvalues of tensor : GT[3] */ ! tenGageEval0, /* "eval0", major eigenvalue of tensor : GT[1] */ ! tenGageEval1, /* "eval1", medium eigenvalue of tensor : GT[1] */ ! tenGageEval2, /* "eval2", minor eigenvalue of tensor : GT[1] */ ! tenGageEvec, /* "evec", major eigenvectors of tensor: GT[9] */ ! tenGageEvec0, /* "evec0", major eigenvectors of tensor: GT[3] */ ! tenGageEvec1, /* "evec1", medium eigenvectors of tensor: GT[3] */ ! tenGageEvec2, /* "evec2", minor eigenvectors of tensor: GT[3] */ ! tenGageTensorGrad, /* "tg, all tensor component gradients: GT[21] */ ! tenGageTraceGradVec, /* "trgv": gradient (vector) of trace: GT[3] */ ! tenGageTraceGradMag, /* "trgm": gradient magnitude of trace: GT[1] */ ! tenGageTraceNormal, /* "trn": normal of trace: GT[3] */ ! tenGageBGradVec, /* "bgv", gradient (vector) of B: GT[3] */ ! tenGageBGradMag, /* "bgm", gradient magnitude of B: GT[1] */ ! tenGageBNormal, /* "bn", normal of B: GT[3] */ ! tenGageDetGradVec, /* "detgv", gradient (vector) of Det: GT[3] */ ! tenGageDetGradMag, /* "detgm", gradient magnitude of Det: GT[1] */ ! tenGageDetNormal, /* "detn", normal of Det: GT[3] */ ! tenGageSGradVec, /* "sgv", gradient (vector) of S: GT[3] */ ! tenGageSGradMag, /* "sgm", gradient magnitude of S: GT[1] */ ! tenGageSNormal, /* "sn", normal of S: GT[3] */ ! tenGageQGradVec, /* "qgv", gradient vector of Q: GT[3] */ ! tenGageQGradMag, /* "qgm", gradient magnitude of Q: GT[1] */ ! tenGageQNormal, /* "qn", normalized gradient of Q: GT[3] */ ! tenGageFAGradVec, /* "fagv", gradient vector of FA: GT[3] */ ! tenGageFAGradMag, /* "fagm", gradient magnitude of FA: GT[1] */ ! tenGageFANormal, /* "fan", normalized gradient of FA: GT[3] */ ! tenGageRGradVec, /* "rgv", gradient vector of Q: GT[3] */ ! tenGageRGradMag, /* "rgm", gradient magnitude of Q: GT[1] */ ! tenGageRNormal, /* "rn", normalized gradient of Q: GT[3] */ ! tenGagePGradVec, /* "pgv", gradient vector of P: GT[3] */ ! tenGagePGradMag, /* "pgm", gradient magnitude of P: GT[1] */ ! tenGagePNormal, /* "pn", normalized gradient of P: GT[3] */ ! tenGageAniso /* "an", all anisotropies: GT[TEN_ANISO_MAX+1] */ }; *************** *** 214,217 **** --- 227,231 ---- "fa", "r", + "p", "eval", "eval0", *************** *** 244,247 **** --- 258,264 ---- "rgm", "r grad mag", "rn", "r normal", + "pgv", "p grad vec", + "pgm", "p grad mag", + "pn", "p normal", "an", "aniso", "anisotropies", "" *************** *** 258,261 **** --- 275,279 ---- tenGageFA, tenGageR, + tenGageP, tenGageEval, tenGageEval0, *************** *** 288,291 **** --- 306,312 ---- tenGageRGradMag, tenGageRGradMag, tenGageRNormal, tenGageRNormal, + tenGagePGradVec, tenGagePGradVec, + tenGagePGradMag, tenGagePGradMag, + tenGagePNormal, tenGagePNormal, tenGageAniso, tenGageAniso, tenGageAniso }; Index: ten.h =================================================================== RCS file: /cvsroot/teem/teem/src/ten/ten.h,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** ten.h 23 Feb 2004 02:40:24 -0000 1.74 --- ten.h 23 Feb 2004 06:03:13 -0000 1.75 *************** *** 151,155 **** ** R = (9*A*B - 2*A^3 - 27*C)/54 = (5*A*B - 2*A*S - 27*C)/54 = thirdmoment({v1,v2,v3})/2 ! ** (phase in cubic solution = arccos(R/sqrt(Q)^3)) */ enum { --- 151,155 ---- ** R = (9*A*B - 2*A^3 - 27*C)/54 = (5*A*B - 2*A*S - 27*C)/54 = thirdmoment({v1,v2,v3})/2 ! ** P = arccos(R/sqrt(Q)^3) = phase angle of cubic solution */ enum { *************** *** 164,212 **** tenGageFA, /* 6: "fa", fractional anisotropy: GT[1] */ tenGageR, /* 7: "r", 9*A*B - 2*A^3 - 27*C: GT[1] */ ! tenGageEval, /* 8: "eval", all eigenvalues of tensor : GT[3] */ ! tenGageEval0, /* 9: "eval0", major eigenvalue of tensor : GT[1] */ ! tenGageEval1, /* 10: "eval1", medium eigenvalue of tensor : GT[1] */ ! tenGageEval2, /* 11: "eval2", minor eigenvalue of tensor : GT[1] */ ! tenGageEvec, /* 12: "evec", major eigenvectors of tensor: GT[9] */ ! tenGageEvec0, /* 13: "evec0", major eigenvectors of tensor: GT[3] */ ! tenGageEvec1, /* 14: "evec1", medium eigenvectors of tensor: GT[3] */ ! tenGageEvec2, /* 15: "evec2", minor eigenvectors of tensor: GT[3] */ ! tenGageTensorGrad, /* 16: "tg, all tensor component gradients, starting with the confidence gradient: GT[21] */ ! tenGageTraceGradVec, /* 17: "trgv": gradient (vector) of trace: GT[3] */ ! tenGageTraceGradMag, /* 18: "trgm": gradient magnitude of trace: GT[1] */ ! tenGageTraceNormal, /* 19: "trn": normal of trace: GT[3] */ ! tenGageBGradVec, /* 20: "bgv", gradient (vector) of B: GT[3] */ ! tenGageBGradMag, /* 21: "bgm", gradient magnitude of B: GT[1] */ ! tenGageBNormal, /* 22: "bn", normal of B: GT[3] */ ! tenGageDetGradVec, /* 23: "detgv", gradient (vector) of Det: GT[3] */ ! tenGageDetGradMag, /* 24: "detgm", gradient magnitude of Det: GT[1] */ ! tenGageDetNormal, /* 25: "detn", normal of Det: GT[3] */ ! tenGageSGradVec, /* 26: "sgv", gradient (vector) of S: GT[3] */ ! tenGageSGradMag, /* 27: "sgm", gradient magnitude of S: GT[1] */ ! tenGageSNormal, /* 28: "sn", normal of S: GT[3] */ ! tenGageQGradVec, /* 29: "qgv", gradient vector of Q: GT[3] */ ! tenGageQGradMag, /* 30: "qgm", gradient magnitude of Q: GT[1] */ ! tenGageQNormal, /* 31: "qn", normalized gradient of Q: GT[3] */ ! tenGageFAGradVec, /* 32: "fagv", gradient vector of FA: GT[3] */ ! tenGageFAGradMag, /* 33: "fagm", gradient magnitude of FA: GT[1] */ ! tenGageFANormal, /* 34: "fan", normalized gradient of FA: GT[3] */ ! tenGageRGradVec, /* 35: "rgv", gradient vector of Q: GT[3] */ ! tenGageRGradMag, /* 36: "rgm", gradient magnitude of Q: GT[1] */ ! tenGageRNormal, /* 37: "rn", normalized gradient of Q: GT[3] */ ! tenGageAniso, /* 38: "an", all anisotropies: GT[TEN_ANISO_MAX+1] */ tenGageLast }; ! #define TEN_GAGE_ITEM_MAX 38 /* --- 164,217 ---- tenGageFA, /* 6: "fa", fractional anisotropy: GT[1] */ tenGageR, /* 7: "r", 9*A*B - 2*A^3 - 27*C: GT[1] */ + tenGageP, /* 8: "p", arccos(R/sqrt(Q^3)): GT[1] */ ! tenGageEval, /* 9: "eval", all eigenvalues of tensor : GT[3] */ ! tenGageEval0, /* 10: "eval0", major eigenvalue of tensor : GT[1] */ ! tenGageEval1, /* 11: "eval1", medium eigenvalue of tensor : GT[1] */ ! tenGageEval2, /* 12: "eval2", minor eigenvalue of tensor : GT[1] */ ! tenGageEvec, /* 13: "evec", major eigenvectors of tensor: GT[9] */ ! tenGageEvec0, /* 14: "evec0", major eigenvectors of tensor: GT[3] */ ! tenGageEvec1, /* 15: "evec1", medium eigenvectors of tensor: GT[3] */ ! tenGageEvec2, /* 16: "evec2", minor eigenvectors of tensor: GT[3] */ ! tenGageTensorGrad, /* 17: "tg, all tensor component gradients, starting with the confidence gradient: GT[21] */ ! tenGageTraceGradVec, /* 18: "trgv": gradient (vector) of trace: GT[3] */ ! tenGageTraceGradMag, /* 19: "trgm": gradient magnitude of trace: GT[1] */ ! tenGageTraceNormal, /* 20: "trn": normal of trace: GT[3] */ ! tenGageBGradVec, /* 21: "bgv", gradient (vector) of B: GT[3] */ ! tenGageBGradMag, /* 22: "bgm", gradient magnitude of B: GT[1] */ ! tenGageBNormal, /* 23: "bn", normal of B: GT[3] */ ! tenGageDetGradVec, /* 24: "detgv", gradient (vector) of Det: GT[3] */ ! tenGageDetGradMag, /* 25: "detgm", gradient magnitude of Det: GT[1] */ ! tenGageDetNormal, /* 26: "detn", normal of Det: GT[3] */ ! tenGageSGradVec, /* 27: "sgv", gradient (vector) of S: GT[3] */ ! tenGageSGradMag, /* 28: "sgm", gradient magnitude of S: GT[1] */ ! tenGageSNormal, /* 29: "sn", normal of S: GT[3] */ ! tenGageQGradVec, /* 30: "qgv", gradient vector of Q: GT[3] */ ! tenGageQGradMag, /* 31: "qgm", gradient magnitude of Q: GT[1] */ ! tenGageQNormal, /* 32: "qn", normalized gradient of Q: GT[3] */ ! tenGageFAGradVec, /* 33: "fagv", gradient vector of FA: GT[3] */ ! tenGageFAGradMag, /* 34: "fagm", gradient magnitude of FA: GT[1] */ ! tenGageFANormal, /* 35: "fan", normalized gradient of FA: GT[3] */ ! tenGageRGradVec, /* 36: "rgv", gradient vector of Q: GT[3] */ ! tenGageRGradMag, /* 37: "rgm", gradient magnitude of Q: GT[1] */ ! tenGageRNormal, /* 38: "rn", normalized gradient of Q: GT[3] */ ! tenGagePGradVec, /* 39: "pgv", gradient vector of P: GT[3] */ ! tenGagePGradMag, /* 40: "pgm", gradient magnitude of P: GT[1] */ ! tenGagePNormal, /* 41: "pn", normalized gradient of P: GT[3] */ ! ! tenGageAniso, /* 42: "an", all anisotropies: GT[TEN_ANISO_MAX+1] */ tenGageLast }; ! #define TEN_GAGE_ITEM_MAX 42 /* Index: tenGage.c =================================================================== RCS file: /cvsroot/teem/teem/src/ten/tenGage.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** tenGage.c 23 Feb 2004 02:40:24 -0000 1.14 --- tenGage.c 23 Feb 2004 06:03:13 -0000 1.15 *************** *** 24,67 **** gageItemEntry _tenGageTable[TEN_GAGE_ITEM_MAX+1] = { ! /* enum value len,deriv, prereqs, parent item, index*/ ! {tenGageTensor, 7, 0, {-1, -1, -1, -1, -1}, -1, -1}, ! {tenGageTrace, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageB, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageDet, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageS, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageQ, 1, 0, {tenGageS, tenGageB, -1, -1, -1}, -1, -1}, ! {tenGageFA, 1, 0, {tenGageQ, tenGageS, -1, -1, -1}, -1, -1}, ! {tenGageR, 1, 0, {tenGageTrace, tenGageB, tenGageDet, tenGageS, -1}, -1, -1}, ! {tenGageEval, 3, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageEval0, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 0}, ! {tenGageEval1, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 1}, ! {tenGageEval2, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 2}, ! {tenGageEvec, 9, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageEvec0, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 0}, ! {tenGageEvec1, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 3}, ! {tenGageEvec2, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 6}, ! {tenGageTensorGrad, 21, 1, {-1, -1, -1, -1, -1}, -1, -1}, ! {tenGageTraceGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageTraceGradMag, 1, 1, {tenGageTraceGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageTraceNormal, 3, 1, {tenGageTraceGradVec, tenGageTraceGradMag, -1, -1, -1}, -1, -1}, ! {tenGageBGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageBGradMag, 1, 1, {tenGageBGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageBNormal, 3, 1, {tenGageBGradVec, tenGageBGradMag, -1, -1, -1}, -1, -1}, ! {tenGageDetGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageDetGradMag, 1, 1, {tenGageDetGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageDetNormal, 3, 1, {tenGageDetGradVec, tenGageDetGradMag, -1, -1, -1}, -1, -1}, ! {tenGageSGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageSGradMag, 1, 1, {tenGageSGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageSNormal, 3, 1, {tenGageSGradVec, tenGageSGradMag, -1, -1, -1}, -1, -1}, ! {tenGageQGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageQGradMag, 1, 1, {tenGageQGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageQNormal, 3, 1, {tenGageQGradVec, tenGageQGradMag, -1, -1, -1}, -1, -1}, ! {tenGageFAGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageFAGradMag, 1, 1, {tenGageFAGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageFANormal, 3, 1, {tenGageFAGradVec, tenGageFAGradMag, -1, -1, -1}, -1, -1}, ! {tenGageRGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageRGradMag, 1, 1, {tenGageRGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageRNormal, 3, 1, {tenGageRGradVec, tenGageRGradMag, -1, -1, -1}, -1, -1}, ! {tenGageAniso, TEN_ANISO_MAX+1, 0, {tenGageEval0, tenGageEval1, tenGageEval2, -1, -1}, -1, -1} }; --- 24,83 ---- gageItemEntry _tenGageTable[TEN_GAGE_ITEM_MAX+1] = { ! /* enum value len,deriv, prereqs, parent item, index*/ ! {tenGageTensor, 7, 0, {-1, -1, -1, -1, -1}, -1, -1}, ! ! {tenGageTrace, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageB, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageDet, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageS, 1, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageQ, 1, 0, {tenGageS, tenGageB, -1, -1, -1}, -1, -1}, ! {tenGageFA, 1, 0, {tenGageQ, tenGageS, -1, -1, -1}, -1, -1}, ! {tenGageR, 1, 0, {tenGageTrace, tenGageB, tenGageDet, tenGageS, -1}, -1, -1}, ! {tenGageP, 1, 0, {tenGageR, tenGageQ, -1, -1, -1}, -1, -1}, ! ! {tenGageEval, 3, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageEval0, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 0}, ! {tenGageEval1, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 1}, ! {tenGageEval2, 1, 0, {tenGageEval, -1, -1, -1, -1}, tenGageEval, 2}, ! {tenGageEvec, 9, 0, {tenGageTensor, -1, -1, -1, -1}, -1, -1}, ! {tenGageEvec0, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 0}, ! {tenGageEvec1, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 3}, ! {tenGageEvec2, 3, 0, {tenGageEvec, -1, -1, -1, -1}, tenGageEvec, 6}, ! ! {tenGageTensorGrad, 21, 1, {-1, -1, -1, -1, -1}, -1, -1}, ! ! {tenGageTraceGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageTraceGradMag, 1, 1, {tenGageTraceGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageTraceNormal, 3, 1, {tenGageTraceGradVec, tenGageTraceGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageBGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageBGradMag, 1, 1, {tenGageBGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageBNormal, 3, 1, {tenGageBGradVec, tenGageBGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageDetGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageDetGradMag, 1, 1, {tenGageDetGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageDetNormal, 3, 1, {tenGageDetGradVec, tenGageDetGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageSGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad, -1, -1, -1}, -1, -1}, ! {tenGageSGradMag, 1, 1, {tenGageSGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageSNormal, 3, 1, {tenGageSGradVec, tenGageSGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageQGradVec, 3, 1, {tenGageSGradVec, tenGageBGradVec, -1, -1, -1}, -1, -1}, ! {tenGageQGradMag, 1, 1, {tenGageQGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageQNormal, 3, 1, {tenGageQGradVec, tenGageQGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageFAGradVec, 3, 1, {tenGageQGradVec, tenGageSGradVec, tenGageFA, -1, -1}, -1, -1}, ! {tenGageFAGradMag, 1, 1, {tenGageFAGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageFANormal, 3, 1, {tenGageFAGradVec, tenGageFAGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageRGradVec, 3, 1, {tenGageTraceGradVec, tenGageBGradVec, tenGageDetGradVec, tenGageSGradVec, -1}, -1, -1}, ! {tenGageRGradMag, 1, 1, {tenGageRGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGageRNormal, 3, 1, {tenGageRGradVec, tenGageRGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGagePGradVec, 3, 1, {tenGageRGradVec, tenGageQGradVec, tenGageP, -1, -1}, -1, -1}, ! {tenGagePGradMag, 1, 1, {tenGagePGradVec, -1, -1, -1, -1}, -1, -1}, ! {tenGagePNormal, 3, 1, {tenGagePGradVec, tenGagePGradMag, -1, -1, -1}, -1, -1}, ! ! {tenGageAniso, TEN_ANISO_MAX+1, 0, {tenGageEval0, tenGageEval1, tenGageEval2, -1, -1}, -1, -1} }; *************** *** 127,137 **** _tenGageAnswer (gageContext *ctx, gagePerVolume *pvl) { /* char me[]="_tenGageAnswer"; */ ! gage_t *tenAns, *evalAns, *evecAns, *vecTmp=NULL, magTmp=0, ! tmp0, tmp1, ! dtConf=0, dtA=0, dtB=0, dtC=0, dtD=0, dtE=0, dtF=0, *gradDtA=NULL, *gradDtB=NULL, *gradDtC=NULL, *gradDtD=NULL, *gradDtE=NULL, *gradDtF=NULL, ! gradCbA[3], *gradCbS=NULL, *gradCbB=NULL, *gradCbQ=NULL, ! cbQ=0, cbA=0, cbB=0, cbC=0, cbS=0; #if !GAGE_TYPE_FLOAT --- 143,155 ---- _tenGageAnswer (gageContext *ctx, gagePerVolume *pvl) { /* char me[]="_tenGageAnswer"; */ ! double epsilon=1.0E-13; ! gage_t *tenAns, *evalAns, *evecAns, *vecTmp=NULL, *gradDtA=NULL, *gradDtB=NULL, *gradDtC=NULL, *gradDtD=NULL, *gradDtE=NULL, *gradDtF=NULL, ! *gradCbS=NULL, *gradCbB=NULL, *gradCbQ=NULL, *gradCbR=NULL; ! double tmp0, tmp1, magTmp=0, ! gradCbA[3], gradCbC[3], ! dtA=0, dtB=0, dtC=0, dtD=0, dtE=0, dtF=0, ! cbQQQ=0, cbQ=0, cbR=0, cbA=0, cbB=0, cbC=0, cbS=0; #if !GAGE_TYPE_FLOAT *************** *** 145,149 **** if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensor)) { /* done if doV */ - dtConf = tenAns[0]; dtA = tenAns[1]; dtB = tenAns[2]; --- 163,166 ---- *************** *** 177,184 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFA)) { ! pvl->directAnswer[tenGageFA][0] = 3*sqrt(cbQ/cbS); } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageR)) { ! pvl->directAnswer[tenGageR][0] = (5*cbA*cbB - 27*cbC - 2*cbA*cbS)/54; } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEvec)) { --- 194,207 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFA)) { ! pvl->directAnswer[tenGageFA][0] = 3*sqrt(cbQ/(epsilon + cbS)); } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageR)) { ! cbR = pvl->directAnswer[tenGageR][0] = (5*cbA*cbB - 27*cbC - 2*cbA*cbS)/54; ! } ! if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageP)) { ! cbQQQ = cbQ*cbQ*cbQ; ! tmp0 = cbR/(epsilon + sqrt(cbQQQ)); ! tmp0 = AIR_CLAMP(0.0, tmp0, 1.0); ! pvl->directAnswer[tenGageP][0] = acos(tmp0); } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEvec)) { *************** *** 224,228 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageTraceNormal], 1.0/magTmp, vecTmp); } /* --- B --- */ --- 247,252 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageTraceNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- B --- */ *************** *** 241,245 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageBNormal], 1.0/magTmp, vecTmp); } /* --- Det --- */ --- 265,270 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageBNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- Det --- */ *************** *** 253,256 **** --- 278,282 ---- 2*(dtB*dtC - dtA*dtE), gradDtE, dtA*dtD - dtB*dtB, gradDtF); + ELL_3V_SCALE(gradCbC, -1, vecTmp); } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetGradMag)) { *************** *** 258,262 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageDetNormal], 1.0/magTmp, vecTmp); } /* --- S --- */ --- 284,289 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageDetNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- S --- */ *************** *** 275,279 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageSNormal], 1.0/magTmp, vecTmp); } /* --- Q --- */ --- 302,307 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageSNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- Q --- */ *************** *** 288,298 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageQNormal], 1.0/magTmp, vecTmp); } /* --- FA --- */ if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGradVec)) { vecTmp = pvl->directAnswer[tenGageFAGradVec]; ! tmp0 = 9.0/(2*pvl->directAnswer[tenGageFA][0]*cbS); ! tmp1 = -tmp0*cbQ/cbS; ELL_3V_SCALE_ADD2(vecTmp, tmp0, gradCbQ, --- 316,327 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageQNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- FA --- */ if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGradVec)) { vecTmp = pvl->directAnswer[tenGageFAGradVec]; ! tmp0 = 9.0/(epsilon + 2*pvl->directAnswer[tenGageFA][0]*cbS); ! tmp1 = -tmp0*cbQ/(epsilon + cbS); ELL_3V_SCALE_ADD2(vecTmp, tmp0, gradCbQ, *************** *** 303,314 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFANormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageFANormal], 1.0/magTmp, vecTmp); } /* --- R --- */ if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRGradVec)) { ! vecTmp = pvl->directAnswer[tenGageRGradVec]; ELL_3V_SCALE_ADD4(vecTmp, (5*cbB - 2*cbS)/54.0, gradCbA, ! 1.0/2.0, pvl->directAnswer[tenGageDetGradVec], 5.0*cbA/54.0, gradCbB, -cbA/27.0, gradCbS); --- 332,345 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFANormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageFANormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- R --- */ if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRGradVec)) { ! gradCbR = vecTmp = pvl->directAnswer[tenGageRGradVec]; ! tmp0 = 1.0/(epsilon + 2*sqrt(cbQ*cbQ*cbQ)); ELL_3V_SCALE_ADD4(vecTmp, (5*cbB - 2*cbS)/54.0, gradCbA, ! -1.0/2.0, gradCbC, 5.0*cbA/54.0, gradCbB, -cbA/27.0, gradCbS); *************** *** 318,322 **** } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageRNormal], 1.0/magTmp, vecTmp); } /* --- Aniso --- */ --- 349,372 ---- } if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGageRNormal], ! 1.0/(epsilon + magTmp), vecTmp); ! } ! /* --- P --- */ ! if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGagePGradVec)) { ! vecTmp = pvl->directAnswer[tenGagePGradVec]; ! tmp1 = cbQ*cbQ*cbQ; ! tmp1 = sqrt(tmp1)*sqrt(1.0 - cbR*cbR/(epsilon + tmp1)); ! tmp1 = 1.0/(epsilon + tmp1); ! tmp0 = tmp1*3*cbR/(epsilon + 2*cbQ); ! ELL_3V_SCALE_ADD2(vecTmp, ! tmp0, gradCbQ, ! -tmp1, gradCbR); ! } ! if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGagePGradMag)) { ! magTmp = pvl->directAnswer[tenGagePGradMag][0] = ELL_3V_LEN(vecTmp); ! } ! if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGagePNormal)) { ! ELL_3V_SCALE(pvl->directAnswer[tenGagePNormal], ! 1.0/(epsilon + magTmp), vecTmp); } /* --- Aniso --- */ |