511 {
515 const int nb =
m.size1();
516
518 for (int cc = 0; cc != nb; ++cc) {
520 }
521 }
522
523 inv.resize(nb, nb, false);
524 inv.clear();
525 auto ptr = &*inv.data().begin();
526 for (
int c = 0;
c != nb; ++
c, ptr += nb + 1)
527 *ptr = -1;
528 ipiv.resize(nb, false);
529 lapack_work.resize(nb * nb, false);
530 const auto info =
531 lapack_dsysv(
'L', nb, nb, &*
m.data().begin(), nb, &*ipiv.begin(),
532 &*inv.data().begin(), nb, &*lapack_work.begin(), nb * nb);
533 if (info != 0)
535 "Can not invert matrix info = %d", info);
537 };
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ MOFEM_OPERATION_UNSUCCESSFUL
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
FTensor::Index< 'm', SPACE_DIM > m
const double c
speed of light (cm/ns)
static __CLPK_integer lapack_dsysv(char uplo, __CLPK_integer n, __CLPK_integer nrhs, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv, __CLPK_doublereal *b, __CLPK_integer ldb, __CLPK_doublereal *work, __CLPK_integer lwork)
UBlasVector< double > VectorDouble
UBlasVector< int > VectorInt