43 #if defined(DEBUG) && !defined(NDEBUG) 113 const int n_iter = (k > n-
k) ? n-k : k;
114 for (
int j = 1; j <= n_iter; j++, n--) {
117 else if (ret % j == 0)
259 cs_math_3_distance(
const cs_real_t xa[3],
264 v[0] = xb[0] - xa[0];
265 v[1] = xb[1] - xa[1];
266 v[2] = xb[2] - xa[2];
268 return sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
284 cs_math_3_distance_dot_product(
const cs_real_t xa[3],
288 return ((xb[0] - xa[0])*xc[0]+(xb[1] - xa[1])*xc[1]+(xb[2] - xa[2])*xc[2]);
304 cs_math_3_square_distance(
const cs_real_t xa[3],
311 return (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
347 cs_math_3_33_3_dot_product(
const cs_real_t n1[3],
352 = ( n1[0]*
t[0][0]*n2[0] + n1[1]*
t[1][0]*n2[0] + n1[2]*
t[2][0]*n2[0]
353 + n1[0]*
t[0][1]*n2[1] + n1[1]*
t[1][1]*n2[1] + n1[2]*
t[2][1]*n2[1]
354 + n1[0]*
t[0][2]*n2[2] + n1[1]*
t[1][2]*n2[2] + n1[2]*
t[2][2]*n2[2]);
375 cs_math_3_sym_33_3_dot_product(
const cs_real_t n1[3],
380 = ( n1[0]*
t[0]*n2[0] + n1[1]*
t[3]*n2[0] + n1[2]*
t[5]*n2[0]
381 + n1[0]*
t[3]*n2[1] + n1[1]*
t[1]*n2[1] + n1[2]*
t[4]*n2[1]
382 + n1[0]*
t[5]*n2[2] + n1[1]*
t[4]*n2[2] + n1[2]*
t[2]*n2[2]);
399 return sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
415 cs_real_t v2 = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
432 cs_math_3_normalise(
const cs_real_t vin[3],
439 vout[0] = inv_norm * vin[0];
440 vout[1] = inv_norm * vin[1];
441 vout[2] = inv_norm * vin[2];
456 cs_math_3_normalize(
const cs_real_t vin[3],
463 vout[0] = inv_norm * vin[0];
464 vout[1] = inv_norm * vin[1];
465 vout[2] = inv_norm * vin[2];
480 cs_math_3_orthogonal_projection(
const cs_real_t n[3],
484 vout[0] =
v[0]*(1.-n[0]*n[0])-
v[1]* n[1]*n[0] -
v[2]* n[2]*n[0];
485 vout[1] = -
v[0]* n[0]*n[1] +
v[1]*(1.-n[1]*n[1])-
v[2]* n[2]*n[1];
486 vout[2] = -
v[0]* n[0]*n[2] -
v[1]* n[1]*n[2] +
v[2]*(1.-n[2]*n[2]);
501 cs_math_3_normal_scaling(
const cs_real_t n[3],
505 cs_real_t v_dot_n = (factor -1.) * cs_math_3_dot_product(v, n);
506 for (
int i = 0; i < 3; i++)
507 v[i] += v_dot_n * n[i];
523 cs_math_33_normal_scaling_add(
const cs_real_t n[3],
528 ( n[0] * t[0][0] * n[0] + n[1] * t[1][0] * n[0] + n[2] * t[2][0] * n[0]
529 + n[0] * t[0][1] * n[1] + n[1] * t[1][1] * n[1] + n[2] * t[2][1] * n[1]
530 + n[0] * t[0][2] * n[2] + n[1] * t[1][2] * n[2] + n[2] * t[2][2] * n[2]);
531 for (
int i = 0; i < 3; i++) {
532 for (
int j = 0; j < 3; j++)
533 t[i][j] += n_t_n * n[i] * n[j];
548 cs_math_33_3_product(
const cs_real_t m[3][3],
552 mv[0] = m[0][0]*
v[0] + m[0][1]*
v[1] + m[0][2]*
v[2];
553 mv[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];
554 mv[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];
569 cs_math_33_3_product_add(
const cs_real_t m[3][3],
573 mv[0] += m[0][0]*
v[0] + m[0][1]*
v[1] + m[0][2]*
v[2];
574 mv[1] += m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];
575 mv[2] += m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];
590 cs_math_33t_3_product(
const cs_real_t m[3][3],
594 mv[0] = m[0][0]*
v[0] + m[1][0]*
v[1] + m[2][0]*
v[2];
595 mv[1] = m[0][1]*v[0] + m[1][1]*v[1] + m[2][1]*v[2];
596 mv[2] = m[0][2]*v[0] + m[1][2]*v[1] + m[2][2]*v[2];
612 cs_math_sym_33_3_product(
const cs_real_t m[6],
616 mv[0] = m[0] *
v[0] + m[3] *
v[1] + m[5] *
v[2];
617 mv[1] = m[3] * v[0] + m[1] * v[1] + m[4] * v[2];
618 mv[2] = m[5] * v[0] + m[4] * v[1] + m[2] * v[2];
634 cs_math_sym_33_3_product_add(
const cs_real_t m[6],
638 mv[0] += m[0] *
v[0] + m[3] *
v[1] + m[5] *
v[2];
639 mv[1] += m[3] * v[0] + m[1] * v[1] + m[4] * v[2];
640 mv[2] += m[5] * v[0] + m[4] * v[1] + m[2] * v[2];
655 cs_math_66_6_product(
const cs_real_t m[6][6],
659 for (
int i = 0; i < 6; i++) {
660 for (
int j = 0; j < 6; j++)
661 mv[i] = m[i][j] *
v[j];
677 cs_math_66_6_product_add(
const cs_real_t m[6][6],
681 for (
int i = 0; i < 6; i++) {
682 for (
int j = 0; j < 6; j++)
683 mv[i] += m[i][j] *
v[j];
698 cs_math_33_determinant(
const cs_real_t m[3][3])
700 const cs_real_t com0 = m[1][1]*m[2][2] - m[2][1]*m[1][2];
701 const cs_real_t com1 = m[2][1]*m[0][2] - m[0][1]*m[2][2];
702 const cs_real_t com2 = m[0][1]*m[1][2] - m[1][1]*m[0][2];
704 return m[0][0]*com0 + m[1][0]*com1 + m[2][0]*com2;
720 const cs_real_t com0 = m[1]*m[2] - m[4]*m[4];
721 const cs_real_t com1 = m[4]*m[5] - m[3]*m[2];
722 const cs_real_t com2 = m[3]*m[4] - m[1]*m[5];
724 return m[0]*com0 + m[3]*com1 + m[5]*com2;
737 #if defined(__INTEL_COMPILER) 738 #pragma optimization_level 0 746 uv[0] =
u[1]*
v[2] -
u[2]*
v[1];
747 uv[1] =
u[2]*v[0] -
u[0]*v[2];
748 uv[2] =
u[0]*v[1] -
u[1]*v[0];
763 #if defined(__INTEL_COMPILER) 764 #pragma optimization_level 0 768 cs_math_3_triple_product(
const cs_real_t u[3],
772 return (
u[1]*
v[2] -
u[2]*
v[1]) * w[0]
773 + (
u[2]*v[0] -
u[0]*v[2]) * w[1]
774 + (
u[0]*v[1] -
u[1]*v[0]) * w[2];
787 cs_math_33_inv_cramer(
const cs_real_t in[3][3],
790 out[0][0] = in[1][1]*in[2][2] - in[2][1]*in[1][2];
791 out[0][1] = in[2][1]*in[0][2] - in[0][1]*in[2][2];
792 out[0][2] = in[0][1]*in[1][2] - in[1][1]*in[0][2];
794 out[1][0] = in[2][0]*in[1][2] - in[1][0]*in[2][2];
795 out[1][1] = in[0][0]*in[2][2] - in[2][0]*in[0][2];
796 out[1][2] = in[1][0]*in[0][2] - in[0][0]*in[1][2];
798 out[2][0] = in[1][0]*in[2][1] - in[2][0]*in[1][1];
799 out[2][1] = in[2][0]*in[0][1] - in[0][0]*in[2][1];
800 out[2][2] = in[0][0]*in[1][1] - in[1][0]*in[0][1];
802 const double det = in[0][0]*out[0][0]+in[1][0]*out[0][1]+in[2][0]*out[0][2];
803 const double invdet = 1/det;
805 out[0][0] *= invdet, out[0][1] *= invdet, out[0][2] *= invdet;
806 out[1][0] *= invdet, out[1][1] *= invdet, out[1][2] *= invdet;
807 out[2][0] *= invdet, out[2][1] *= invdet, out[2][2] *= invdet;
819 cs_math_33_inv_cramer_in_place(
cs_real_t a[3][3])
821 cs_real_t a00 = a[1][1]*a[2][2] - a[2][1]*a[1][2];
822 cs_real_t a01 = a[2][1]*a[0][2] - a[0][1]*a[2][2];
823 cs_real_t a02 = a[0][1]*a[1][2] - a[1][1]*a[0][2];
824 cs_real_t a10 = a[2][0]*a[1][2] - a[1][0]*a[2][2];
825 cs_real_t a11 = a[0][0]*a[2][2] - a[2][0]*a[0][2];
826 cs_real_t a12 = a[1][0]*a[0][2] - a[0][0]*a[1][2];
827 cs_real_t a20 = a[1][0]*a[2][1] - a[2][0]*a[1][1];
828 cs_real_t a21 = a[2][0]*a[0][1] - a[0][0]*a[2][1];
829 cs_real_t a22 = a[0][0]*a[1][1] - a[1][0]*a[0][1];
831 double det_inv = 1. / (a[0][0]*a00 + a[1][0]*a01 + a[2][0]*a02);
833 a[0][0] = a00 * det_inv;
834 a[0][1] = a01 * det_inv;
835 a[0][2] = a02 * det_inv;
836 a[1][0] = a10 * det_inv;
837 a[1][1] = a11 * det_inv;
838 a[1][2] = a12 * det_inv;
839 a[2][0] = a20 * det_inv;
840 a[2][1] = a21 * det_inv;
841 a[2][2] = a22 * det_inv;
854 cs_math_33_inv_cramer_sym_in_place(
cs_real_t a[3][3])
856 cs_real_t a00 = a[1][1]*a[2][2] - a[2][1]*a[1][2];
857 cs_real_t a01 = a[2][1]*a[0][2] - a[0][1]*a[2][2];
858 cs_real_t a02 = a[0][1]*a[1][2] - a[1][1]*a[0][2];
859 cs_real_t a11 = a[0][0]*a[2][2] - a[2][0]*a[0][2];
860 cs_real_t a12 = a[1][0]*a[0][2] - a[0][0]*a[1][2];
861 cs_real_t a22 = a[0][0]*a[1][1] - a[1][0]*a[0][1];
863 double det_inv = 1. / (a[0][0]*a00 + a[1][0]*a01 + a[2][0]*a02);
865 a[0][0] = a00 * det_inv;
866 a[0][1] = a01 * det_inv;
867 a[0][2] = a02 * det_inv;
868 a[1][0] = a01 * det_inv;
869 a[1][1] = a11 * det_inv;
870 a[1][2] = a12 * det_inv;
871 a[2][0] = a02 * det_inv;
872 a[2][1] = a12 * det_inv;
873 a[2][2] = a22 * det_inv;
889 cs_math_sym_33_inv_cramer(
const cs_real_t s[6],
894 sout[0] = s[1]*s[2] - s[4]*s[4];
895 sout[1] = s[0]*s[2] - s[5]*s[5];
896 sout[2] = s[0]*s[1] - s[3]*s[3];
897 sout[3] = s[4]*s[5] - s[3]*s[2];
898 sout[4] = s[3]*s[5] - s[0]*s[4];
899 sout[5] = s[3]*s[4] - s[1]*s[5];
901 detinv = 1. / (s[0]*sout[0] + s[3]*sout[3] + s[5]*sout[5]);
922 cs_math_33_product(
const cs_real_t m1[3][3],
926 mout[0][0] = m1[0][0]*m2[0][0] + m1[0][1]*m2[1][0] + m1[0][2]*m2[2][0];
927 mout[0][1] = m1[0][0]*m2[0][1] + m1[0][1]*m2[1][1] + m1[0][2]*m2[2][1];
928 mout[0][2] = m1[0][0]*m2[0][2] + m1[0][1]*m2[1][2] + m1[0][2]*m2[2][2];
930 mout[1][0] = m1[1][0]*m2[0][0] + m1[1][1]*m2[1][0] + m1[1][2]*m2[2][0];
931 mout[1][1] = m1[1][0]*m2[0][1] + m1[1][1]*m2[1][1] + m1[1][2]*m2[2][1];
932 mout[1][2] = m1[1][0]*m2[0][2] + m1[1][1]*m2[1][2] + m1[1][2]*m2[2][2];
934 mout[2][0] = m1[2][0]*m2[0][0] + m1[2][1]*m2[1][0] + m1[2][2]*m2[2][0];
935 mout[2][1] = m1[2][0]*m2[0][1] + m1[2][1]*m2[1][1] + m1[2][2]*m2[2][1];
936 mout[2][2] = m1[2][0]*m2[0][2] + m1[2][1]*m2[1][2] + m1[2][2]*m2[2][2];
951 cs_math_33_transform_r_to_a(
const cs_real_t m[3][3],
957 _m[0][0] = m[0][0]*q[0][0] + m[0][1]*q[1][0] + m[0][2]*q[2][0];
958 _m[0][1] = m[0][0]*q[0][1] + m[0][1]*q[1][1] + m[0][2]*q[2][1];
959 _m[0][2] = m[0][0]*q[0][2] + m[0][1]*q[1][2] + m[0][2]*q[2][2];
961 _m[1][0] = m[1][0]*q[0][0] + m[1][1]*q[1][0] + m[1][2]*q[2][0];
962 _m[1][1] = m[1][0]*q[0][1] + m[1][1]*q[1][1] + m[1][2]*q[2][1];
963 _m[1][2] = m[1][0]*q[0][2] + m[1][1]*q[1][2] + m[1][2]*q[2][2];
965 _m[2][0] = m[2][0]*q[0][0] + m[2][1]*q[1][0] + m[2][2]*q[2][0];
966 _m[2][1] = m[2][0]*q[0][1] + m[2][1]*q[1][1] + m[2][2]*q[2][1];
967 _m[2][2] = m[2][0]*q[0][2] + m[2][1]*q[1][2] + m[2][2]*q[2][2];
970 mout[0][0] = q[0][0]*_m[0][0] + q[1][0]*_m[1][0] + q[2][0]*_m[2][0];
971 mout[0][1] = q[0][0]*_m[0][1] + q[1][0]*_m[1][1] + q[2][0]*_m[2][1];
972 mout[0][2] = q[0][0]*_m[0][2] + q[1][0]*_m[1][2] + q[2][0]*_m[2][2];
974 mout[1][0] = q[0][1]*_m[0][0] + q[1][1]*_m[1][0] + q[2][1]*_m[2][0];
975 mout[1][1] = q[0][1]*_m[0][1] + q[1][1]*_m[1][1] + q[2][1]*_m[2][1];
976 mout[1][2] = q[0][1]*_m[0][2] + q[1][1]*_m[1][2] + q[2][1]*_m[2][2];
978 mout[2][0] = q[0][2]*_m[0][0] + q[1][2]*_m[1][0] + q[2][2]*_m[2][0];
979 mout[2][1] = q[0][2]*_m[0][1] + q[1][2]*_m[1][1] + q[2][2]*_m[2][1];
980 mout[2][2] = q[0][2]*_m[0][2] + q[1][2]*_m[1][2] + q[2][2]*_m[2][2];
995 cs_math_33_transform_a_to_r(
const cs_real_t m[3][3],
1001 _m[0][0] = m[0][0]*q[0][0] + m[0][1]*q[0][1] + m[0][2]*q[0][2];
1002 _m[0][1] = m[0][0]*q[1][0] + m[0][1]*q[1][1] + m[0][2]*q[1][2];
1003 _m[0][2] = m[0][0]*q[2][0] + m[0][1]*q[2][1] + m[0][2]*q[2][2];
1005 _m[1][0] = m[1][0]*q[0][0] + m[1][1]*q[0][1] + m[1][2]*q[0][2];
1006 _m[1][1] = m[1][0]*q[1][0] + m[1][1]*q[1][1] + m[1][2]*q[1][2];
1007 _m[1][2] = m[1][0]*q[2][0] + m[1][1]*q[2][1] + m[1][2]*q[2][2];
1009 _m[2][0] = m[2][0]*q[0][0] + m[2][1]*q[0][1] + m[2][2]*q[0][2];
1010 _m[2][1] = m[2][0]*q[1][0] + m[2][1]*q[1][1] + m[2][2]*q[1][2];
1011 _m[2][2] = m[2][0]*q[2][0] + m[2][1]*q[2][1] + m[2][2]*q[2][2];
1014 mout[0][0] = q[0][0]*_m[0][0] + q[0][1]*_m[1][0] + q[0][2]*_m[2][0];
1015 mout[0][1] = q[0][0]*_m[0][1] + q[0][1]*_m[1][1] + q[0][2]*_m[2][1];
1016 mout[0][2] = q[0][0]*_m[0][2] + q[0][1]*_m[1][2] + q[0][2]*_m[2][2];
1018 mout[1][0] = q[1][0]*_m[0][0] + q[1][1]*_m[1][0] + q[1][2]*_m[2][0];
1019 mout[1][1] = q[1][0]*_m[0][1] + q[1][1]*_m[1][1] + q[1][2]*_m[2][1];
1020 mout[1][2] = q[1][0]*_m[0][2] + q[1][1]*_m[1][2] + q[1][2]*_m[2][2];
1022 mout[2][0] = q[2][0]*_m[0][0] + q[2][1]*_m[1][0] + q[2][2]*_m[2][0];
1023 mout[2][1] = q[2][0]*_m[0][1] + q[2][1]*_m[1][1] + q[2][2]*_m[2][1];
1024 mout[2][2] = q[2][0]*_m[0][2] + q[2][1]*_m[1][2] + q[2][2]*_m[2][2];
1039 cs_math_33_extract_sym_ant(
const cs_real_t m[3][3],
1044 m_sym[0][0] = 0.5 * (m[0][0] + m[0][0]);
1045 m_sym[0][1] = 0.5 * (m[0][1] + m[1][0]);
1046 m_sym[0][2] = 0.5 * (m[0][2] + m[2][0]);
1047 m_sym[1][0] = 0.5 * (m[1][0] + m[0][1]);
1048 m_sym[1][1] = 0.5 * (m[1][1] + m[1][1]);
1049 m_sym[1][2] = 0.5 * (m[1][2] + m[2][1]);
1050 m_sym[2][0] = 0.5 * (m[2][0] + m[0][2]);
1051 m_sym[2][1] = 0.5 * (m[2][1] + m[1][2]);
1052 m_sym[2][2] = 0.5 * (m[2][2] + m[2][2]);
1055 m_ant[0][0] = 0.5 * (m[0][0] - m[0][0]);
1056 m_ant[0][1] = 0.5 * (m[0][1] - m[1][0]);
1057 m_ant[0][2] = 0.5 * (m[0][2] - m[2][0]);
1058 m_ant[1][0] = 0.5 * (m[1][0] - m[0][1]);
1059 m_ant[1][1] = 0.5 * (m[1][1] - m[1][1]);
1060 m_ant[1][2] = 0.5 * (m[1][2] - m[2][1]);
1061 m_ant[2][0] = 0.5 * (m[2][0] - m[0][2]);
1062 m_ant[2][1] = 0.5 * (m[2][1] - m[1][2]);
1063 m_ant[2][2] = 0.5 * (m[2][2] - m[2][2]);
1077 cs_math_33_product_add(
const cs_real_t m1[3][3],
1081 mout[0][0] += m1[0][0]*m2[0][0] + m1[0][1]*m2[1][0] + m1[0][2]*m2[2][0];
1082 mout[0][1] += m1[0][0]*m2[0][1] + m1[0][1]*m2[1][1] + m1[0][2]*m2[2][1];
1083 mout[0][2] += m1[0][0]*m2[0][2] + m1[0][1]*m2[1][2] + m1[0][2]*m2[2][2];
1085 mout[1][0] += m1[1][0]*m2[0][0] + m1[1][1]*m2[1][0] + m1[1][2]*m2[2][0];
1086 mout[1][1] += m1[1][0]*m2[0][1] + m1[1][1]*m2[1][1] + m1[1][2]*m2[2][1];
1087 mout[1][2] += m1[1][0]*m2[0][2] + m1[1][1]*m2[1][2] + m1[1][2]*m2[2][2];
1089 mout[2][0] += m1[2][0]*m2[0][0] + m1[2][1]*m2[1][0] + m1[2][2]*m2[2][0];
1090 mout[2][1] += m1[2][0]*m2[0][1] + m1[2][1]*m2[1][1] + m1[2][2]*m2[2][1];
1091 mout[2][2] += m1[2][0]*m2[0][2] + m1[2][1]*m2[1][2] + m1[2][2]*m2[2][2];
1112 cs_math_sym_33_product(
const cs_real_t s1[6],
1117 sout[0] = s1[0]*s2[0] + s1[3]*s2[3] + s1[5]*s2[5];
1119 sout[1] = s1[3]*s2[3] + s1[1]*s2[1] + s1[4]*s2[4];
1121 sout[2] = s1[5]*s2[5] + s1[4]*s2[4] + s1[2]*s2[2];
1123 sout[3] = s1[0]*s2[3] + s1[3]*s2[1] + s1[5]*s2[4];
1125 sout[4] = s1[3]*s2[5] + s1[1]*s2[4] + s1[4]*s2[2];
1127 sout[5] = s1[0]*s2[5] + s1[3]*s2[4] + s1[5]*s2[2];
1141 cs_math_reduce_sym_prod_33_to_66(
const cs_real_t s[3][3],
1144 int tens2vect[3][3];
1145 int iindex[6], jindex[6];
1147 tens2vect[0][0] = 0; tens2vect[0][1] = 3; tens2vect[0][2] = 5;
1148 tens2vect[1][0] = 3; tens2vect[1][1] = 1; tens2vect[1][2] = 4;
1149 tens2vect[2][0] = 5; tens2vect[2][1] = 4; tens2vect[2][2] = 2;
1151 iindex[0] = 0; iindex[1] = 1; iindex[2] = 2;
1152 iindex[3] = 0; iindex[4] = 1; iindex[5] = 0;
1154 jindex[0] = 0; jindex[1] = 1; jindex[2] = 2;
1155 jindex[3] = 1; jindex[4] = 2; jindex[5] = 2;
1161 for (
int i = 0; i < 6; i++) {
1164 for (
int k = 0;
k < 3;
k++) {
1165 int ik = tens2vect[
k][ii];
1166 int jk = tens2vect[
k][jj];
1168 sout[
ik][i] += s[
k][jj];
1170 sout[jk][i] += s[
k][ii];
1190 cs_math_sym_33_double_product(
const cs_real_t s1[6],
1198 _sout[0][0] = s1[0]*s2[0] + s1[3]*s2[3] + s1[5]*s2[5];
1200 _sout[1][1] = s1[3]*s2[3] + s1[1]*s2[1] + s1[4]*s2[4];
1202 _sout[2][2] = s1[5]*s2[5] + s1[4]*s2[4] + s1[2]*s2[2];
1204 _sout[0][1] = s1[0]*s2[3] + s1[3]*s2[1] + s1[5]*s2[4];
1206 _sout[1][0] = s2[0]*s1[3] + s2[3]*s1[1] + s2[5]*s1[4];
1208 _sout[1][2] = s1[3]*s2[5] + s1[1]*s2[4] + s1[4]*s2[2];
1210 _sout[2][1] = s2[3]*s1[5] + s2[1]*s1[4] + s2[4]*s1[2];
1212 _sout[0][2] = s1[0]*s2[5] + s1[3]*s2[4] + s1[5]*s2[2];
1214 _sout[2][0] = s2[0]*s1[5] + s2[3]*s1[4] + s2[5]*s1[2];
1216 sout[0][0] = _sout[0][0]*s3[0] + _sout[0][1]*s3[3] + _sout[0][2]*s3[5];
1218 sout[1][1] = _sout[1][0]*s3[3] + _sout[1][1]*s3[1] + _sout[1][2]*s3[4];
1220 sout[2][2] = _sout[2][0]*s3[5] + _sout[2][1]*s3[4] + _sout[2][2]*s3[2];
1222 sout[0][1] = _sout[0][0]*s3[3] + _sout[0][1]*s3[1] + _sout[0][2]*s3[4];
1224 sout[1][0] = s3[0]*_sout[1][0] + s3[3]*_sout[1][1] + s3[5]*_sout[1][2];
1226 sout[1][2] = _sout[1][0]*s3[5] + _sout[1][1]*s3[4] + _sout[1][2]*s3[2];
1228 sout[2][1] = s3[3]*_sout[2][0] + s3[1]*_sout[2][1] + s3[4]*_sout[2][2];
1230 sout[0][2] = _sout[0][0]*s3[5] + _sout[0][1]*s3[4] + _sout[0][2]*s3[2];
1232 sout[2][0] = s3[0]*_sout[2][0] + s3[3]*_sout[2][1] + s3[5]*_sout[2][2];
1250 qv->
meas = magnitude;
1254 qv->
unitv[0] = inv * v[0];
1255 qv->
unitv[1] = inv * v[1];
1256 qv->
unitv[2] = inv * v[2];
Definition: cs_field_pointer.h:70
integer, save ik
Definition: numvar.f90:75
#define restrict
Definition: cs_defs.h:127
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:322
const cs_real_t cs_math_big_r
cs_math_sym_tensor_component_t
Definition: cs_math.h:61
const cs_real_t cs_math_pi
const cs_real_t cs_math_1ov6
#define BEGIN_C_DECLS
Definition: cs_defs.h:495
void cs_math_fw_and_bw_lu(const cs_real_t a_lu[], const int n, cs_real_t x[], const cs_real_t b[])
Block Jacobi utilities. Compute forward and backward to solve an LU P*P system.
Definition: cs_math.c:700
const cs_real_t cs_math_epzero
const cs_real_t cs_math_1ov24
const cs_real_t cs_math_1ov12
const cs_real_t cs_math_2ov3
const cs_real_t cs_math_4ov3
void cs_math_33_eigen(const cs_real_t m[3][3], cs_real_t *eig_ratio, cs_real_t *eig_max)
Compute max/min eigenvalues ratio and max. eigenvalue of a 3x3 symmetric matrix with non-symmetric st...
Definition: cs_math.c:336
double cs_real_t
Floating-point value.
Definition: cs_defs.h:307
Definition: cs_defs.h:353
double cs_math_surftri(const cs_real_t xv[3], const cs_real_t xe[3], const cs_real_t xf[3])
Compute the area of the convex_hull generated by 3 points. This corresponds to the computation of the...
Definition: cs_math.c:456
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:114
const cs_real_t cs_math_1ov3
double cs_math_get_machine_epsilon(void)
Get the value related to the machine precision.
Definition: cs_math.c:230
void cs_math_set_machine_epsilon(void)
Compute the value related to the machine precision.
Definition: cs_math.c:209
double precision, save a
Definition: cs_fuel_incl.f90:146
double cs_math_voltet(const cs_real_t xv[3], const cs_real_t xe[3], const cs_real_t xf[3], const cs_real_t xc[3])
Compute the volume of the convex_hull generated by 4 points. This is equivalent to the computation of...
Definition: cs_math.c:486
double meas
Definition: cs_defs.h:355
void cs_math_sym_33_eigen(const cs_real_t m[6], cs_real_t eig_vals[3])
Compute all eigenvalues of a 3x3 symmetric matrix with symmetric storage.
Definition: cs_math.c:250
const cs_real_t cs_math_5ov3
double precision, dimension(:,:,:), allocatable u
Definition: atimbr.f90:113
void cs_math_33_eig_val_vec(const cs_real_t m_in[3][3], const cs_real_t tol_err, cs_real_t eig_val[restrict 3], cs_real_t eig_vec[restrict 3][3])
Evaluate eigenvalues and eigenvectors of a real symmetric matrix m1[3,3]: m1*m2 = lambda*m2...
Definition: cs_math.c:518
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:320
const cs_real_t cs_math_zero_threshold
double unitv[3]
Definition: cs_defs.h:356
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:301
#define END_C_DECLS
Definition: cs_defs.h:496
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:327
Definition: cs_field_pointer.h:98
void cs_math_3_length_unitv(const cs_real_t xa[3], const cs_real_t xb[3], cs_real_t *len, cs_real_3_t unitv)
Compute the length (euclidien norm) between two points xa and xb in a cartesian coordinate system of ...
Definition: cs_math.c:423
const cs_real_t cs_math_infinite_r
void cs_math_fact_lu(cs_lnum_t n_blocks, const int b_size, const cs_real_t *a, cs_real_t *a_lu)
Compute LU factorization of an array of dense matrices of identical size.
Definition: cs_math.c:642
double precision, save b
Definition: cs_fuel_incl.f90:146