Lorene::Matrice Class Reference
Utilities.

Matrix handling. More...

`#include <matrice.h>`

## Public Member Functions

| Matrice (int size1, int size2)
| Standard constructor.
| Matrice (const Matrice &)
| Constructor by copy.
| Matrice (const Tbl &tab)
| Constructor from a `Tbl`.
| ~Matrice ()
| Destructor.
int | get_etat () const
| Returns the logical state.
void | set_etat_qcq ()
| Sets the logical state to `ETATQCQ` (ordinary state).
void | set_etat_zero ()
| Sets the logical state to `ETATZERO` (zero).
void | set_etat_nondef ()
| Sets the logical state to `ETATNONDEF` (undefined state).
void | annule_hard ()
| Sets the logical state to `ETATQCQ` (undefined state).
int | get_dim (int i) const
| Returns the dimension of the matrix.
Tbl | get_array () const
| Returns the array of matrix elements.
void | operator= (double x)
| Sets all the element of `*std` to x.
void | operator= (const Matrice &)
| Assignement to another `Matrice`.
void | operator= (const Tbl &)
| Assignement to a `Tbl`.
double & | set (int j, int i)
| Read/write of a particuliar element.
double | operator() (int j, int i) const
| Read-only of a particuliar element.
void | set_band (int up, int low) const
| Calculate the band storage of `*std`.
void | set_lu () const
| Calculate the LU-representation, assuming the band-storage has been done.
Tbl | inverse (const Tbl &sec_membre) const
| Solves the linear system represented by the matrix.
Tbl | val_propre () const
| Returns the eigenvalues of the matrix, calculated using LAPACK.
Matrice | vect_propre () const
| Returns the eigenvectors of the matrix, calculated using LAPACK.
double | determinant () const
| Computes the determinant of the matrix, using LAPACK and the standard decomposition.
Matrice | transpose () const
| Computes the transpose matrix.
void | operator+= (const Matrice &)
| Addition of a `Matrice` to `this`.
void | operator+= (double)
| Addition of a `double` to `this`.
void | operator-= (const Matrice &)
| Subtraction of a `Matrice` to `this`.
void | operator-= (double)
| Subtraction of a `double` to `this`.
void | operator*= (double)
| Multiplication of `this` by a `double`.
void | operator/= (double)
| Division of `this` by a `double`.

## Private Member Functions

void | del_t ()
| Logical destructor : dellocates the memory of the various used representations.
void | del_deriv ()
| Deletes the (mutable) derived members: band, lu, permute.

## Private Attributes

int | etat
| logical state ``(ETATZERO, ETATQCQ or ETATNONDEF)
Tbl * | std
| Pointer on the array of the standard representation.
int | ku
| Number of upper-diagonals in the band representation.
int | kl
| Number of lower-diagonals in the band representation.
Tbl * | band
| Pointer on the array of the band representation of a square matrix.
Tbl * | lu
| Pointer on the first array of the LU-representation.
Itbl * | permute
| Pointer on the second array of the LU-representation.

## Friends

ostream & | operator<< (ostream &flux, const Matrice &source)
| Display.
Matrice | operator+ (const Matrice &a, const Matrice &b)
| `Matrice` + `Matrice`
Matrice | operator- (const Matrice &a, const Matrice &b)
| `Matrice` - `Matrice`
Matrice | operator* (const Matrice &a, double x)
| `Matrice` * `double`
Matrice | operator* (double x, const Matrice &a)
| `double` * `Matrice`
Matrice | operator* (const Matrice &aa, const Matrice &bb)
| Matrix product.
Matrice | operator/ (const Matrice &a, double x)
| `Matrice` / `double`

## Detailed Description

Matrix handling.

The matrix can be stored in the usual way in `std`, in a band-way by `band` and on a LU-decomposition by the two arrays `lu` and `permute`. All the storage conventions are those af LAPACK which is used to make the LU-decomposition, the inversion and to compute the eigenvalues of the matrix. All those representations are redondant, that means that doing the LU-decomposition, for example, does NOT destroy previously calculated type of storage.

()

Definition at line 152 of file matrice.h.

## Constructor & Destructor Documentation

## Matrice() [1/3]

Lorene::Matrice::Matrice | ( | int | size1,
|  | int | size2 )

Standard constructor.

All the representations are set to `ETATNONDEF`.

Parameters

  size1 | [input] number of lines.
  size2 | [input] number of columns.

Definition at line 203 of file matrice.C.

References band, etat, kl, ku, lu, permute, and std.

## Matrice() [2/3]

Lorene::Matrice::Matrice | ( | const Matrice & | source | ) |

Constructor by copy.

Definition at line 214 of file matrice.C.

References band, etat, kl, ku, lu, Matrice(), permute, and std.

## Matrice() [3/3]

Lorene::Matrice::Matrice | ( | const Tbl & | tab | ) |

Constructor from a `Tbl`.

Parameters

  tab | [input] 2-dimension or 1-dimension array

If `tab` is a 1-dimension `Tbl`, a single-column matrix is created, otherwise `*std` is simply constructed by a `Tbl` copy of `tab`.

Definition at line 228 of file matrice.C.

References band, etat, Lorene::Tbl::get_etat(), Lorene::Tbl::get_ndim(), Lorene::Tbl::get_taille(), kl, ku, lu, permute, std, and Lorene::Tbl::t.

## ~Matrice()

Lorene::Matrice::~Matrice | ( |  | ) |

Destructor.

Definition at line 255 of file matrice.C.

References del_t().

## Member Function Documentation

## annule_hard()

void Lorene::Matrice::annule_hard | ( |  | ) |

Sets the logical state to `ETATQCQ` (undefined state).

And sets all the components to zero

Definition at line 193 of file matrice.C.

References del_deriv(), etat, and std.

## del_deriv()

void Lorene::Matrice::del_deriv | ( |  | ) |

private

Deletes the (mutable) derived members: band, lu, permute.

Definition at line 164 of file matrice.C.

References band, lu, and permute.

## del_t()

void Lorene::Matrice::del_t | ( |  | ) |

private

Logical destructor : dellocates the memory of the various used representations.

Definition at line 156 of file matrice.C.

References del_deriv(), and std.

## determinant()

double Lorene::Matrice::determinant | ( |  | ) | const

Computes the determinant of the matrix, using LAPACK and the standard decomposition.

Definition at line 560 of file matrice.C.

References get_dim(), and val_propre().

## get_array()

Tbl Lorene::Matrice::get_array | ( |  | ) | const

inline

Returns the array of matrix elements.

Definition at line 251 of file matrice.h.

References std.

## get_dim()

int Lorene::Matrice::get_dim | ( | int | i | ) | const

Returns the dimension of the matrix.

Parameters

  i | [input] if i =0 returns the number of lines and if i =2 returns the number of columns.

Definition at line 260 of file matrice.C.

References std.

## get_etat()

int Lorene::Matrice::get_etat | ( |  | ) | const

inline

Returns the logical state.

Definition at line 213 of file matrice.h.

References etat.

## inverse()

Tbl Lorene::Matrice::inverse | ( | const Tbl & | sec_membre | ) | const

Solves the linear system represented by the matrix.

The calculus assumes the the LU-decomposition has been done and is conducted using LAPACK.

Parameters

  sec_membre | [input] the right-hand side of the system.

Definition at line 424 of file matrice.C.

References band, get_dim(), Lorene::Tbl::get_dim(), kl, ku, lu, permute, and Lorene::Tbl::t.

## operator()()

double Lorene::Matrice::operator() | ( | int | j,
|  | int | i ) const

inline

Read-only of a particuliar element.

Parameters

  j | [input] line coordinate.
  i | [input] column coordinate.

Definition at line 290 of file matrice.h.

References etat, and std.

## operator*=()

void Lorene::Matrice::operator*= | ( | double | x | ) |

Multiplication of `this` by a `double`.

Definition at line 622 of file matrice.C.

References std, and Lorene::x.

## operator+=() [1/2]

void Lorene::Matrice::operator+= | ( | const Matrice & | a | ) |

Addition of a `Matrice` to `this`.

Definition at line 602 of file matrice.C.

References Matrice(), and std.

## operator+=() [2/2]

void Lorene::Matrice::operator+= | ( | double | x | ) |

Addition of a `double` to `this`.

Definition at line 612 of file matrice.C.

References std, and Lorene::x.

## operator-=() [1/2]

void Lorene::Matrice::operator-= | ( | const Matrice & | a | ) |

Subtraction of a `Matrice` to `this`.

Definition at line 607 of file matrice.C.

References Matrice(), and std.

## operator-=() [2/2]

void Lorene::Matrice::operator-= | ( | double | x | ) |

Subtraction of a `double` to `this`.

Definition at line 617 of file matrice.C.

References std, and Lorene::x.

## operator/=()

void Lorene::Matrice::operator/= | ( | double | x | ) |

Division of `this` by a `double`.

Definition at line 627 of file matrice.C.

References std, and Lorene::x.

## operator=() [1/3]

void Lorene::Matrice::operator= | ( | const Matrice & | source | ) |

Assignement to another `Matrice`.

Definition at line 273 of file matrice.C.

References band, del_t(), etat, Lorene::Tbl::get_dim(), kl, ku, lu, Matrice(), permute, set_etat_nondef(), set_etat_qcq(), set_etat_zero(), and std.

## operator=() [2/3]

void Lorene::Matrice::operator= | ( | const Tbl & | source | ) |

Assignement to a `Tbl`.

Definition at line 306 of file matrice.C.

References del_t(), Lorene::Tbl::etat, Lorene::Tbl::get_dim(), set_etat_nondef(), set_etat_qcq(), set_etat_zero(), std, and Lorene::Tbl::t.

## operator=() [3/3]

void Lorene::Matrice::operator= | ( | double | x | ) |

Sets all the element of `*std` to x.

The other representations are set to `ETATNONDEF`.

Definition at line 265 of file matrice.C.

References set_etat_qcq(), set_etat_zero(), std, and Lorene::x.

## set()

double & Lorene::Matrice::set | ( | int | j,
|  | int | i )

inline

Read/write of a particuliar element.

This is done in `*std` and all the other representations are no longer valid.

Parameters

  j | [input] line coordinate.
  i | [input] column coordinate.

Definition at line 277 of file matrice.h.

References band, del_deriv(), etat, lu, and std.

## set_band()

void Lorene::Matrice::set_band | ( | int | up,
|  | int | low ) const

Calculate the band storage of `*std`.

Please note that this function does NOT check if `*std` represents a real band-matrix.

Parameters

  up | [input] number of upper-diagonals.
  low | [input] number of lower-diagonals.

Definition at line 364 of file matrice.C.

References band, kl, ku, and std.

## set_etat_nondef()

void Lorene::Matrice::set_etat_nondef | ( |  | ) |

Sets the logical state to `ETATNONDEF` (undefined state).

The state of of all the representations is now `ETATNONDEF`.

Definition at line 187 of file matrice.C.

References del_deriv(), etat, and std.

## set_etat_qcq()

void Lorene::Matrice::set_etat_qcq | ( |  | ) |

Sets the logical state to `ETATQCQ` (ordinary state).

The state of `*std` is now `ETATQCQ` and the one of all the other representations is `ETATNONDEF`.

Definition at line 175 of file matrice.C.

References del_deriv(), etat, and std.

## set_etat_zero()

void Lorene::Matrice::set_etat_zero | ( |  | ) |

Sets the logical state to `ETATZERO` (zero).

The state of `*std` is now `ETATZERO` and the one of all the other representations is `ETATNONDEF`.

Definition at line 181 of file matrice.C.

References del_deriv(), etat, and std.

## set_lu()

void Lorene::Matrice::set_lu | ( |  | ) | const

Calculate the LU-representation, assuming the band-storage has been done.

The calculus is done using LAPACK.

Definition at line 392 of file matrice.C.

References band, kl, ku, lu, permute, and std.

## transpose()

Matrice Lorene::Matrice::transpose | ( |  | ) | const

Computes the transpose matrix.

Definition at line 578 of file matrice.C.

References etat, Matrice(), set(), set_etat_qcq(), set_etat_zero(), and std.

## val_propre()

Tbl Lorene::Matrice::val_propre | ( |  | ) | const

Returns the eigenvalues of the matrix, calculated using LAPACK.

Returns
  contains the real and the imaginary parts of the eigenvalues. The real parts are in `Tbl` (0, *) and the imaginary parts in `Tbl` (1, *).

Definition at line 457 of file matrice.C.

References etat, get_dim(), Lorene::Tbl::set(), Lorene::Tbl::set_etat_qcq(), and std.

## vect_propre()

Matrice Lorene::Matrice::vect_propre | ( |  | ) | const

Returns the eigenvectors of the matrix, calculated using LAPACK.

Definition at line 507 of file matrice.C.

References etat, get_dim(), Matrice(), set(), set_etat_qcq(), and std.

## Friends And Related Symbol Documentation

## operator* [1/3]

Matrice operator* | ( | const Matrice & | a,
|  | double | x )

friend

`Matrice` * `double`

Definition at line 646 of file matrice.C.

References Matrice(), std, and Lorene::x.

## operator* [2/3]

Matrice operator* | ( | const Matrice & | aa,
|  | const Matrice & | bb )

friend

Matrix product.

Definition at line 658 of file matrice.C.

References Lorene::Tbl::get_dim(), get_etat(), Matrice(), set(), set_etat_qcq(), set_etat_zero(), and std.

## operator* [3/3]

Matrice operator* | ( | double | x,
|  | const Matrice & | a )

friend

`double` * `Matrice`

Definition at line 652 of file matrice.C.

References Matrice(), std, and Lorene::x.

## operator+

Matrice operator+ | ( | const Matrice & | a,
|  | const Matrice & | b )

friend

`Matrice` + `Matrice`

Definition at line 634 of file matrice.C.

References Matrice(), and std.

## operator-

Matrice operator- | ( | const Matrice & | a,
|  | const Matrice & | b )

friend

`Matrice` - `Matrice`

Definition at line 640 of file matrice.C.

References Matrice(), and std.

## operator/

Matrice operator/ | ( | const Matrice & | a,
|  | double | x )

friend

`Matrice` / `double`

Definition at line 693 of file matrice.C.

References Matrice(), std, and Lorene::x.

## operator<<

ostream & operator<< | ( | ostream & | flux,
|  | const Matrice & | source )

friend

Display.

Definition at line 330 of file matrice.C.

References band, Lorene::Tbl::get_dim(), Lorene::Tbl::get_etat(), kl, ku, lu, Matrice(), and std.

## Member Data Documentation

## band

Tbl* Lorene::Matrice::band

mutable private

Pointer on the array of the band representation of a square matrix.

To be precise, is stored in `band` for , n being the size of the matrix.

Definition at line 170 of file matrice.h.

## etat

int Lorene::Matrice::etat

private

logical state ``(ETATZERO, ETATQCQ or ETATNONDEF)

Definition at line 156 of file matrice.h.

## kl

int Lorene::Matrice::kl

mutable private

Number of lower-diagonals in the band representation.

Definition at line 162 of file matrice.h.

## ku

int Lorene::Matrice::ku

mutable private

Number of upper-diagonals in the band representation.

Definition at line 161 of file matrice.h.

## lu

Tbl* Lorene::Matrice::lu

mutable private

Pointer on the first array of the LU-representation.

Definition at line 173 of file matrice.h.

## permute

Itbl* Lorene::Matrice::permute

mutable private

Pointer on the second array of the LU-representation.

Definition at line 174 of file matrice.h.

## std

Tbl* Lorene::Matrice::std

private

Pointer on the array of the standard representation.

Definition at line 158 of file matrice.h.

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

- matrice.h
- matrice.C