v0.13.2
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
MoFEM::SCHUR_DSYSV Struct Reference

Static Public Member Functions

static auto invertMat (MatrixDouble &m, MatrixDouble &inv, double eps)
 

Detailed Description

Definition at line 441 of file Schur.cpp.

Member Function Documentation

◆ invertMat()

static auto MoFEM::SCHUR_DSYSV::invertMat ( MatrixDouble m,
MatrixDouble inv,
double  eps 
)
inlinestatic

Definition at line 442 of file Schur.cpp.

442 {
444 VectorInt ipiv;
445 VectorDouble lapack_work;
446 const int nb = m.size1();
447
448 if (eps) {
449 for (int cc = 0; cc != nb; ++cc) {
450 m(cc, cc) += eps;
451 }
452 }
453
454 inv.resize(nb, nb, false);
455 inv.clear();
456 for (int cc = 0; cc != nb; ++cc)
457 inv(cc, cc) = -1;
458 ipiv.resize(nb, false);
459 lapack_work.resize(nb * nb, false);
460 const auto info =
461 lapack_dsysv('L', nb, nb, &*m.data().begin(), nb, &*ipiv.begin(),
462 &*inv.data().begin(), nb, &*lapack_work.begin(), nb * nb);
463 if (info != 0)
464 SETERRQ1(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
465 "Can not invert matrix info = %d", info);
467 };
static const double eps
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
@ MOFEM_OPERATION_UNSUCCESSFUL
Definition: definitions.h:34
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:440
FTensor::Index< 'm', SPACE_DIM > m
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)
Definition: lapack_wrap.h:220
UBlasVector< double > VectorDouble
Definition: Types.hpp:68
UBlasVector< int > VectorInt
Definition: Types.hpp:67

The documentation for this struct was generated from the following file: