oomph::CCComplexMatrix Class Reference

A class for compressed column matrices that store doubles. More...

#include <complex_matrices.h>

+ Inheritance diagram for oomph::CCComplexMatrix:

Public Member Functions

 CCComplexMatrix ()
 Default constructor. More...
 
 CCComplexMatrix (const Vector< std::complex< double >> &value, const Vector< int > &row_index, const Vector< int > &column_start, const unsigned long &n, const unsigned long &m)
 
 CCComplexMatrix (const CCComplexMatrix &matrix)=delete
 Broken copy constructor. More...
 
void operator= (const CCComplexMatrix &)=delete
 Broken assignment operator. More...
 
virtual ~CCComplexMatrix ()
 Destructor: Kill the LU factors if they have been setup. More...
 
void enable_doc_stats ()
 
void disable_doc_stats ()
 the solve More...
 
unsigned long nrow () const
 Return the number of rows of the matrix. More...
 
unsigned long ncol () const
 Return the number of columns of the matrix. More...
 
std::complex< doubleoperator() (const unsigned long &i, const unsigned long &j) const
 
int ludecompose ()
 LU decomposition using SuperLU. More...
 
void lubksub (Vector< std::complex< double >> &rhs)
 LU back solve for given RHS. More...
 
void clean_up_memory ()
 LU clean up (perhaps this should happen in the destructor) More...
 
void residual (const Vector< std::complex< double >> &x, const Vector< std::complex< double >> &b, Vector< std::complex< double >> &residual)
 Find the residulal to x of Ax=b, ie r=b-Ax. More...
 
void multiply (const Vector< std::complex< double >> &x, Vector< std::complex< double >> &soln)
 Multiply the matrix by the vector x: soln=Ax. More...
 
void multiply_transpose (const Vector< std::complex< double >> &x, Vector< std::complex< double >> &soln)
 Multiply the transposed matrix by the vector x: soln=A^T x. More...
 
- Public Member Functions inherited from oomph::ComplexMatrixBase
 ComplexMatrixBase ()
 (Empty) constructor. More...
 
 ComplexMatrixBase (const ComplexMatrixBase &matrix)=delete
 Broken copy constructor. More...
 
void operator= (const ComplexMatrixBase &)=delete
 Broken assignment operator. More...
 
virtual ~ComplexMatrixBase ()
 virtual (empty) destructor More...
 
virtual void solve (Vector< std::complex< double >> &rhs)
 
virtual void solve (const Vector< std::complex< double >> &rhs, Vector< std::complex< double >> &soln)
 
virtual double max_residual (const Vector< std::complex< double >> &x, const Vector< std::complex< double >> &rhs)
 
- Public Member Functions inherited from oomph::CCMatrix< std::complex< double > >
 CCMatrix ()
 Default constructor. More...
 
 CCMatrix (const Vector< std::complex< double > > &value, const Vector< int > &row_index_, const Vector< int > &column_start_, const unsigned long &n, const unsigned long &m)
 
 CCMatrix (const CCMatrix &source_matrix)
 Copy constructor. More...
 
void operator= (const CCMatrix &)=delete
 Broken assignment operator. More...
 
virtual ~CCMatrix ()
 Destructor, delete any allocated memory. More...
 
std::complex< doubleget_entry (const unsigned long &i, const unsigned long &j) const
 
std::complex< double > & entry (const unsigned long &i, const unsigned long &j)
 
intcolumn_start ()
 Access to C-style column_start array. More...
 
const intcolumn_start () const
 Access to C-style column_start array (const version) More...
 
introw_index ()
 Access to C-style row index array. More...
 
const introw_index () const
 Access to C-style row index array (const version) More...
 
void output_bottom_right_zero_helper (std::ostream &outfile) const
 
void sparse_indexed_output_helper (std::ostream &outfile) const
 
void clean_up_memory ()
 Wipe matrix data and set all values to 0. More...
 
void build (const Vector< std::complex< double > > &value, const Vector< int > &row_index, const Vector< int > &column_start, const unsigned long &n, const unsigned long &m)
 
void build_without_copy (std::complex< double > *value, int *row_index, int *column_start, const unsigned long &nnz, const unsigned long &n, const unsigned long &m)
 
- Public Member Functions inherited from oomph::SparseMatrix< T, MATRIX_TYPE >
 SparseMatrix ()
 Default constructor. More...
 
 SparseMatrix (const SparseMatrix &source_matrix)
 Copy constructor. More...
 
void operator= (const SparseMatrix &)=delete
 Broken assignment operator. More...
 
virtual ~SparseMatrix ()
 Destructor, delete the memory associated with the values. More...
 
Tvalue ()
 Access to C-style value array. More...
 
const Tvalue () const
 Access to C-style value array (const version) More...
 
unsigned long nrow () const
 Return the number of rows of the matrix. More...
 
unsigned long ncol () const
 Return the number of columns of the matrix. More...
 
unsigned long nnz () const
 Return the number of nonzero entries. More...
 
- Public Member Functions inherited from oomph::Matrix< T, MATRIX_TYPE >
 Matrix ()
 (Empty) constructor More...
 
 Matrix (const Matrix &matrix)=delete
 Broken copy constructor. More...
 
void operator= (const Matrix &)=delete
 Broken assignment operator. More...
 
virtual ~Matrix ()
 Virtual (empty) destructor. More...
 
T operator() (const unsigned long &i, const unsigned long &j) const
 
Toperator() (const unsigned long &i, const unsigned long &j)
 
virtual void output (std::ostream &outfile) const
 
void sparse_indexed_output (std::ostream &outfile, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const
 
void sparse_indexed_output (std::string filename, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const
 

Protected Attributes

bool Doc_stats_during_solve
 
- Protected Attributes inherited from oomph::CCMatrix< std::complex< double > >
intRow_index
 Row index. More...
 
intColumn_start
 Start index for column. More...
 
- Protected Attributes inherited from oomph::SparseMatrix< T, MATRIX_TYPE >
TValue
 Internal representation of the matrix values, a pointer. More...
 
unsigned long N
 Number of rows. More...
 
unsigned long M
 Number of columns. More...
 
unsigned long Nnz
 Number of non-zero values (i.e. size of Value array) More...
 

Private Attributes

void * F_factors
 Storage for the LU factors as required by SuperLU. More...
 
int Info
 Info flag for the SuperLU solver. More...
 

Additional Inherited Members

- Protected Member Functions inherited from oomph::Matrix< T, MATRIX_TYPE >
void range_check (const unsigned long &i, const unsigned long &j) const
 
- Static Protected Attributes inherited from oomph::SparseMatrix< T, MATRIX_TYPE >
static T Zero = T(0)
 Dummy zero. More...
 

Detailed Description

A class for compressed column matrices that store doubles.

Constructor & Destructor Documentation

◆ CCComplexMatrix() [1/3]

oomph::CCComplexMatrix::CCComplexMatrix ( )
inline

Default constructor.

407  : CCMatrix<std::complex<double>>(), F_factors(0), Info(0)
408  {
409  // By default SuperLU solves linear systems quietly
410  Doc_stats_during_solve = false;
411  }
int Info
Info flag for the SuperLU solver.
Definition: complex_matrices.h:398
bool Doc_stats_during_solve
Definition: complex_matrices.h:403
void * F_factors
Storage for the LU factors as required by SuperLU.
Definition: complex_matrices.h:395

References Doc_stats_during_solve.

◆ CCComplexMatrix() [2/3]

oomph::CCComplexMatrix::CCComplexMatrix ( const Vector< std::complex< double >> &  value,
const Vector< int > &  row_index,
const Vector< int > &  column_start,
const unsigned long &  n,
const unsigned long &  m 
)
inline

Constructor: Pass vector of values, vector of row indices, vector of column starts and number of rows (can be suppressed for square matrices). Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length.

423  : CCMatrix<std::complex<double>>(value, row_index, column_start, n, m),
424  F_factors(0),
425  Info(0)
426  {
427  // By default SuperLU solves linear systems quietly
428  Doc_stats_during_solve = false;
429  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
int * column_start()
Access to C-style column_start array.
Definition: matrices.h:2692
int * row_index()
Access to C-style row index array.
Definition: matrices.h:2704
T * value()
Access to C-style value array.
Definition: matrices.h:616
int * m
Definition: level2_cplx_impl.h:294

References Doc_stats_during_solve.

◆ CCComplexMatrix() [3/3]

oomph::CCComplexMatrix::CCComplexMatrix ( const CCComplexMatrix matrix)
delete

Broken copy constructor.

◆ ~CCComplexMatrix()

virtual oomph::CCComplexMatrix::~CCComplexMatrix ( )
inlinevirtual

Destructor: Kill the LU factors if they have been setup.

439  {
440  clean_up_memory();
441  }
void clean_up_memory()
LU clean up (perhaps this should happen in the destructor)
Definition: complex_matrices.cc:750

References clean_up_memory().

Member Function Documentation

◆ clean_up_memory()

void oomph::CCComplexMatrix::clean_up_memory ( )

LU clean up (perhaps this should happen in the destructor)

Cleanup storage.

751  {
752  // Only bother if we've done an LU solve
753  if (F_factors != 0)
754  {
755  // SuperLU expects compressed column format: Set flag for
756  // transpose (0/1) = (false/true)
757  int transpose = 0;
758 
759  // Doc (0/1) = (false/true)
760  int doc = 0;
761  if (Doc_stats_during_solve) doc = 1;
762 
763 
764  // Cast to integers for stupid SuperLU
765  int n_aux = (int)N;
766  int nnz_aux = (int)Nnz;
767 
768  // SuperLU in three steps (lu decompose, back subst, cleanup)
769  // Flag to indicate which solve step to do (1, 2 or 3)
770  int i = 3;
772  &n_aux,
773  &nnz_aux,
774  0,
775  Value,
776  Row_index,
777  Column_start,
778  0,
779  &n_aux,
780  &transpose,
781  &doc,
782  &F_factors,
783  &Info);
784  }
785  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
int * Column_start
Start index for column.
Definition: matrices.h:2779
int * Row_index
Row index.
Definition: matrices.h:2776
unsigned long Nnz
Number of non-zero values (i.e. size of Value array)
Definition: matrices.h:574
T * Value
Internal representation of the matrix values, a pointer.
Definition: matrices.h:565
unsigned long N
Number of rows.
Definition: matrices.h:568
return int(ret)+1
void transpose()
Definition: skew_symmetric_matrix3.cpp:135
int superlu_complex(int *, int *, int *, int *, std::complex< double > *, int *, int *, std::complex< double > *, int *, int *, int *, void *, int *)

References oomph::CCMatrix< std::complex< double > >::Column_start, Doc_stats_during_solve, F_factors, i, Info, int(), oomph::SparseMatrix< T, MATRIX_TYPE >::N, oomph::SparseMatrix< T, MATRIX_TYPE >::Nnz, oomph::CCMatrix< std::complex< double > >::Row_index, oomph::superlu_complex(), anonymous_namespace{skew_symmetric_matrix3.cpp}::transpose(), and oomph::SparseMatrix< T, MATRIX_TYPE >::Value.

Referenced by ~CCComplexMatrix().

◆ disable_doc_stats()

void oomph::CCComplexMatrix::disable_doc_stats ( )
inline

the solve

453  {
454  Doc_stats_during_solve = false;
455  }

References Doc_stats_during_solve.

◆ enable_doc_stats()

void oomph::CCComplexMatrix::enable_doc_stats ( )
inline

Set flag to indicate that stats are to be displayed during solution of linear system with SuperLU

446  {
447  Doc_stats_during_solve = true;
448  }

References Doc_stats_during_solve.

◆ lubksub()

void oomph::CCComplexMatrix::lubksub ( Vector< std::complex< double >> &  rhs)
virtual

LU back solve for given RHS.

Do the backsubstitution.

RHS vector

Reimplemented from oomph::ComplexMatrixBase.

669  {
670 #ifdef PARANOID
671  if (N != rhs.size())
672  {
673  std::ostringstream error_message_stream;
674  error_message_stream << "Size of RHS doesn't match matrix size\n"
675  << "N, rhs.size() " << N << " " << rhs.size()
676  << std::endl;
677 
678  throw OomphLibError(error_message_stream.str(),
681  }
682  if (N != M)
683  {
684  std::ostringstream error_message_stream;
685  error_message_stream << "Can only solve for quadratic matrices\n"
686  << "N, M " << N << " " << M << std::endl;
687 
688  throw OomphLibError(error_message_stream.str(),
691  }
692 #endif
693 
695  std::complex<double>* b = new std::complex<double>[N];
696 
697  // Copy across
698  for (unsigned long i = 0; i < N; i++)
699  {
700  b[i] = rhs[i];
701  }
702 
703  // SuperLU expects compressed column format: Set flag for
704  // transpose (0/1) = (false/true)
705  int transpose = 0;
706 
707  // Doc (0/1) = (false/true)
708  int doc = 0;
709  if (Doc_stats_during_solve) doc = 1;
710 
711  // Number of RHSs
712  int nrhs = 1;
713 
714 
715  // Cast to integers for stupid SuperLU
716  int n_aux = (int)N;
717  int nnz_aux = (int)Nnz;
718 
719  // SuperLU in three steps (lu decompose, back subst, cleanup)
720  // Do the solve phase
721  int i = 2;
723  &n_aux,
724  &nnz_aux,
725  &nrhs,
726  Value,
727  Row_index,
728  Column_start,
729  b,
730  &n_aux,
731  &transpose,
732  &doc,
733  &F_factors,
734  &Info);
735 
736  // Copy b into rhs vector
737  for (unsigned long i = 0; i < N; i++)
738  {
739  rhs[i] = b[i];
740  }
741 
742  // Cleanup
743  delete[] b;
744  }
Scalar * b
Definition: benchVecAdd.cpp:17
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References b, oomph::CCMatrix< std::complex< double > >::Column_start, Doc_stats_during_solve, F_factors, i, Info, int(), oomph::SparseMatrix< T, MATRIX_TYPE >::N, oomph::SparseMatrix< T, MATRIX_TYPE >::Nnz, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::CCMatrix< std::complex< double > >::Row_index, oomph::superlu_complex(), anonymous_namespace{skew_symmetric_matrix3.cpp}::transpose(), and oomph::SparseMatrix< T, MATRIX_TYPE >::Value.

◆ ludecompose()

int oomph::CCComplexMatrix::ludecompose ( )
virtual

LU decomposition using SuperLU.

Perform LU decomposition. Return the sign of the determinant.

Reimplemented from oomph::ComplexMatrixBase.

615  {
616 #ifdef PARANOID
617  if (N != M)
618  {
619  std::ostringstream error_message_stream;
620  error_message_stream << "Can only solve for quadratic matrices\n"
621  << "N, M " << N << " " << M << std::endl;
622 
623  throw OomphLibError(error_message_stream.str(),
626  }
627 #endif
628 
629  // SuperLU expects compressed column format: Set flag for
630  // transpose (0/1) = (false/true)
631  int transpose = 0;
632 
633  // Doc (0/1) = (false/true)
634  int doc = 0;
635  if (Doc_stats_during_solve) doc = 1;
636 
637  // Cast to integers for stupid SuperLU
638  int n_aux = (int)N;
639  int nnz_aux = (int)Nnz;
640 
641  // Integer to hold the sign of the determinant
642  int sign = 0;
643 
644  // Just do the lu decompose phase (i=1)
645  int i = 1;
647  &n_aux,
648  &nnz_aux,
649  0,
650  Value,
651  Row_index,
652  Column_start,
653  0,
654  &n_aux,
655  &transpose,
656  &doc,
657  &F_factors,
658  &Info);
659 
660  // Return the sign of the determinant
661  return sign;
662  }
T sign(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:172

References oomph::CCMatrix< std::complex< double > >::Column_start, Doc_stats_during_solve, F_factors, i, Info, int(), oomph::SparseMatrix< T, MATRIX_TYPE >::N, oomph::SparseMatrix< T, MATRIX_TYPE >::Nnz, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::CCMatrix< std::complex< double > >::Row_index, SYCL::sign(), oomph::superlu_complex(), anonymous_namespace{skew_symmetric_matrix3.cpp}::transpose(), and oomph::SparseMatrix< T, MATRIX_TYPE >::Value.

◆ multiply()

void oomph::CCComplexMatrix::multiply ( const Vector< std::complex< double >> &  x,
Vector< std::complex< double >> &  soln 
)
virtual

Multiply the matrix by the vector x: soln=Ax.

Multiply the matrix by the vector x.

Implements oomph::ComplexMatrixBase.

856  {
857 #ifdef PARANOID
858  // Check to see if x.size() = ncol()
859  if (x.size() != M)
860  {
861  std::ostringstream error_message_stream;
862  error_message_stream << "The x vector is not the right size. It is "
863  << x.size() << ", it should be " << M << std::endl;
864 
865  throw OomphLibError(error_message_stream.str(),
868  }
869 #endif
870 
871  if (soln.size() != N)
872  {
873  // Resize and initialize the solution vector
874  soln.resize(N);
875  }
876  for (unsigned i = 0; i < N; i++)
877  {
878  soln[i] = 0.0;
879  }
880 
881  for (unsigned long j = 0; j < N; j++)
882  {
883  for (long k = Column_start[j]; k < Column_start[j + 1]; k++)
884  {
885  unsigned long i = Row_index[k];
886  std::complex<double> a_ij = Value[k];
887  soln[i] += a_ij * x[j];
888  }
889  }
890  }
char char char int int * k
Definition: level2_impl.h:374
list x
Definition: plotDoE.py:28
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References oomph::CCMatrix< std::complex< double > >::Column_start, i, j, k, oomph::SparseMatrix< T, MATRIX_TYPE >::N, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::CCMatrix< std::complex< double > >::Row_index, oomph::SparseMatrix< T, MATRIX_TYPE >::Value, and plotDoE::x.

◆ multiply_transpose()

void oomph::CCComplexMatrix::multiply_transpose ( const Vector< std::complex< double >> &  x,
Vector< std::complex< double >> &  soln 
)
virtual

Multiply the transposed matrix by the vector x: soln=A^T x.

Implements oomph::ComplexMatrixBase.

898  {
899 #ifdef PARANOID
900  // Check to see x.size() = nrow()
901  if (x.size() != N)
902  {
903  std::ostringstream error_message_stream;
904  error_message_stream << "The x vector is not the right size. It is "
905  << x.size() << ", it should be " << N << std::endl;
906 
907  throw OomphLibError(error_message_stream.str(),
910  }
911 #endif
912 
913  if (soln.size() != M)
914  {
915  // Resize and initialize the solution vector
916  soln.resize(M);
917  }
918 
919  // Initialise the solution
920  for (unsigned long i = 0; i < M; i++)
921  {
922  soln[i] = 0.0;
923  }
924 
925  // Matrix vector product
926  for (unsigned long i = 0; i < N; i++)
927  {
928  for (long k = Column_start[i]; k < Column_start[i + 1]; k++)
929  {
930  unsigned long j = Row_index[k];
931  std::complex<double> a_ij = Value[k];
932  soln[j] += a_ij * x[i];
933  }
934  }
935  }
unsigned long M
Number of columns.
Definition: matrices.h:571

References oomph::CCMatrix< std::complex< double > >::Column_start, i, j, k, oomph::SparseMatrix< T, MATRIX_TYPE >::M, oomph::SparseMatrix< T, MATRIX_TYPE >::N, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::CCMatrix< std::complex< double > >::Row_index, oomph::SparseMatrix< T, MATRIX_TYPE >::Value, and plotDoE::x.

◆ ncol()

unsigned long oomph::CCComplexMatrix::ncol ( ) const
inlinevirtual

Return the number of columns of the matrix.

Implements oomph::ComplexMatrixBase.

465  {
466  return CCMatrix<std::complex<double>>::ncol();
467  }
unsigned long ncol() const
Return the number of columns of the matrix.
Definition: complex_matrices.h:464

◆ nrow()

unsigned long oomph::CCComplexMatrix::nrow ( ) const
inlinevirtual

Return the number of rows of the matrix.

Implements oomph::ComplexMatrixBase.

459  {
460  return CCMatrix<std::complex<double>>::nrow();
461  }
unsigned long nrow() const
Return the number of rows of the matrix.
Definition: complex_matrices.h:458

◆ operator()()

std::complex<double> oomph::CCComplexMatrix::operator() ( const unsigned long &  i,
const unsigned long &  j 
) const
inlinevirtual

Overload the round-bracket access operator to provide read-only (const) access to the data

Implements oomph::ComplexMatrixBase.

473  {
474  return CCMatrix<std::complex<double>>::get_entry(i, j);
475  }
std::complex< double > get_entry(const unsigned long &i, const unsigned long &j) const
Definition: matrices.h:2654

References oomph::CCMatrix< std::complex< double > >::get_entry(), i, and j.

◆ operator=()

void oomph::CCComplexMatrix::operator= ( const CCComplexMatrix )
delete

Broken assignment operator.

◆ residual()

void oomph::CCComplexMatrix::residual ( const Vector< std::complex< double >> &  x,
const Vector< std::complex< double >> &  b,
Vector< std::complex< double >> &  residual 
)
virtual

Find the residulal to x of Ax=b, ie r=b-Ax.

Work out residual vector r = b-Ax for candidate solution x.

Implements oomph::ComplexMatrixBase.

794  {
795 #ifdef PARANOID
796  // Check Matrix is square
797  if (N != M)
798  {
799  throw OomphLibError(
800  "This matrix is not square, the matrix MUST be square!",
803  }
804  // Check that size of rhs = nrow()
805  if (rhs.size() != N)
806  {
807  std::ostringstream error_message_stream;
808  error_message_stream << "The rhs vector is not the right size. It is "
809  << rhs.size() << ", it should be " << N << std::endl;
810 
811  throw OomphLibError(error_message_stream.str(),
814  }
815  // Check that the size of x is correct
816  if (x.size() != N)
817  {
818  std::ostringstream error_message_stream;
819  error_message_stream << "The x vector is not the right size. It is "
820  << x.size() << ", it should be " << N << std::endl;
821 
822  throw OomphLibError(error_message_stream.str(),
825  }
826 #endif
827 
828  unsigned long r_n = residual.size();
829  if (r_n != N)
830  {
831  residual.resize(N);
832  }
833 
834  // Need to do this in loop over rows
835  for (unsigned i = 0; i < N; i++)
836  {
837  residual[i] = rhs[i];
838  }
839  // Now loop over columns
840  for (unsigned long j = 0; j < N; j++)
841  {
842  for (long k = Column_start[j]; k < Column_start[j + 1]; k++)
843  {
844  unsigned long i = Row_index[k];
845  std::complex<double> a_ij = Value[k];
846  residual[i] -= a_ij * x[j];
847  }
848  }
849  }
void residual(const Vector< std::complex< double >> &x, const Vector< std::complex< double >> &b, Vector< std::complex< double >> &residual)
Find the residulal to x of Ax=b, ie r=b-Ax.
Definition: complex_matrices.cc:791

References oomph::CCMatrix< std::complex< double > >::Column_start, i, j, k, oomph::SparseMatrix< T, MATRIX_TYPE >::N, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::CCMatrix< std::complex< double > >::Row_index, oomph::SparseMatrix< T, MATRIX_TYPE >::Value, and plotDoE::x.

Member Data Documentation

◆ Doc_stats_during_solve

bool oomph::CCComplexMatrix::Doc_stats_during_solve
protected

Flag to indicate if stats are to be displayed during solution of linear system with SuperLU

Referenced by CCComplexMatrix(), clean_up_memory(), disable_doc_stats(), enable_doc_stats(), lubksub(), and ludecompose().

◆ F_factors

void* oomph::CCComplexMatrix::F_factors
private

Storage for the LU factors as required by SuperLU.

Referenced by clean_up_memory(), lubksub(), and ludecompose().

◆ Info

int oomph::CCComplexMatrix::Info
private

Info flag for the SuperLU solver.

Referenced by clean_up_memory(), lubksub(), and ludecompose().


The documentation for this class was generated from the following files: