GooseFEM 1.4.1.dev2+g78f16df
Loading...
Searching...
No Matches
GooseFEM::MatrixPartitionedTyings Class Reference

Sparse matrix from with dependent DOFs are eliminated, and the remaining (small) independent system is partitioned in an unknown and a prescribed part. More...

#include <GooseFEM/MatrixPartitionedTyings.h>

Inheritance diagram for GooseFEM::MatrixPartitionedTyings:
GooseFEM::MatrixPartitionedTyingsBase< MatrixPartitionedTyings > GooseFEM::MatrixPartitionedBase< D > GooseFEM::MatrixBase< D >

Public Member Functions

 MatrixPartitionedTyings (const array_type::tensor< size_t, 2 > &conn, const array_type::tensor< size_t, 2 > &dofs, const Eigen::SparseMatrix< double > &Cdu, const Eigen::SparseMatrix< double > &Cdp)
 Constructor.
 
const Eigen::SparseMatrix< double > & data_uu () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_up () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_pu () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_pp () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_ud () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_pd () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_du () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_dp () const
 Pointer to data.
 
const Eigen::SparseMatrix< double > & data_dd () const
 Pointer to data.
 
- Public Member Functions inherited from GooseFEM::MatrixPartitionedTyingsBase< MatrixPartitionedTyings >
size_t nni () const
 Number of independent DOFs.
 
size_t nnd () const
 Number of dependent DOFs.
 
const array_type::tensor< size_t, 1 > & iii () const
 Independent DOFs.
 
const array_type::tensor< size_t, 1 > & iid () const
 Dependent DOFs.
 
- Public Member Functions inherited from GooseFEM::MatrixPartitionedBase< D >
size_t nnu () const
 Number of unknown DOFs.
 
size_t nnp () const
 Number of prescribed DOFs.
 
const array_type::tensor< size_t, 1 > & iiu () const
 Unknown DOFs.
 
const array_type::tensor< size_t, 1 > & iip () const
 Prescribed DOFs.
 
array_type::tensor< double, 2 > Reaction (const array_type::tensor< double, 2 > &x, const array_type::tensor< double, 2 > &b) const
 Right-hand-size for corresponding to the prescribed DOFs:
 
array_type::tensor< double, 1 > Reaction (const array_type::tensor< double, 1 > &x, const array_type::tensor< double, 1 > &b) const
 Same as Reaction(const array_type::tensor<double, 2>&, const array_type::tensor<double, 2>&), but of "dofval" input and output.
 
void reaction (const array_type::tensor< double, 2 > &x, array_type::tensor< double, 2 > &b) const
 Same as Reaction(const array_type::tensor<double, 2>&, const array_type::tensor<double, 2>&), but inserting in-place.
 
void reaction (const array_type::tensor< double, 1 > &x, array_type::tensor< double, 1 > &b) const
 Same as Reaction(const array_type::tensor<double, 1>&, const array_type::tensor<double, 1>&), but inserting in-place.
 
array_type::tensor< double, 1 > Reaction_p (const array_type::tensor< double, 1 > &x_u, const array_type::tensor< double, 1 > &x_p) const
 Same as Reaction(const array_type::tensor<double, 1>&, const array_type::tensor<double, 1>&), but with partitioned input and output.
 
void reaction_p (const array_type::tensor< double, 1 > &x_u, const array_type::tensor< double, 1 > &x_p, array_type::tensor< double, 1 > &b_p) const
 Same as Reaction_p(const array_type::tensor<double, 1>&, const array_type::tensor<double, 1>&), but writing to preallocated output.
 
- Public Member Functions inherited from GooseFEM::MatrixBase< D >
size_t nelem () const
 Number of elements.
 
size_t nne () const
 Number of nodes per element.
 
size_t nnode () const
 Number of nodes.
 
size_t ndim () const
 Number of dimensions.
 
size_t ndof () const
 Number of DOFs.
 
const array_type::tensor< size_t, 2 > & dofs () const
 DOFs per node.
 
const array_type::tensor< size_t, 2 > & conn () const
 Connectivity.
 
std::array< size_t, 1 > shape_dofval () const
 Shape of "dofval".
 
std::array< size_t, 2 > shape_nodevec () const
 Shape of "nodevec".
 
std::array< size_t, 3 > shape_elemmat () const
 Shape of "elemmat".
 
template<class T >
void assemble (const T &elemmat)
 Assemble from "elemmat".
 
array_type::tensor< double, 2 > Todense () const
 Copy as dense matrix.
 
template<class T >
void todense (T &ret) const
 Copy to dense matrix.
 
array_type::tensor< double, 2 > Dot (const array_type::tensor< double, 2 > &x) const
 Dot-product \( b_i = A_{ij} x_j \).
 
array_type::tensor< double, 1 > Dot (const array_type::tensor< double, 1 > &x) const
 Dot-product \( b_i = A_{ij} x_j \).
 
void dot (const array_type::tensor< double, 2 > &x, array_type::tensor< double, 2 > &b) const
 Dot-product \( b_i = A_{ij} x_j \).
 
void dot (const array_type::tensor< double, 1 > &x, array_type::tensor< double, 1 > &b) const
 Dot-product \( b_i = A_{ij} x_j \).
 

Protected Attributes

Eigen::SparseMatrix< doublem_Auu
 The matrix.
 
Eigen::SparseMatrix< doublem_Aup
 The matrix.
 
Eigen::SparseMatrix< doublem_Apu
 The matrix.
 
Eigen::SparseMatrix< doublem_App
 The matrix.
 
Eigen::SparseMatrix< doublem_Aud
 The matrix.
 
Eigen::SparseMatrix< doublem_Apd
 The matrix.
 
Eigen::SparseMatrix< doublem_Adu
 The matrix.
 
Eigen::SparseMatrix< doublem_Adp
 The matrix.
 
Eigen::SparseMatrix< doublem_Add
 The matrix.
 
Eigen::SparseMatrix< doublem_ACuu
 // The matrix for which the tyings have been applied.
 
Eigen::SparseMatrix< doublem_ACup
 // The matrix for which the tyings have been applied.
 
Eigen::SparseMatrix< doublem_ACpu
 // The matrix for which the tyings have been applied.
 
Eigen::SparseMatrix< doublem_ACpp
 // The matrix for which the tyings have been applied.
 
std::vector< Eigen::Triplet< double > > m_Tuu
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tup
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tpu
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tpp
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tud
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tpd
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tdu
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tdp
 Matrix entries.
 
std::vector< Eigen::Triplet< double > > m_Tdd
 Matrix entries.
 
Eigen::SparseMatrix< doublem_Cdu
 Tying matrix, see Tyings::Periodic::Cdu().
 
Eigen::SparseMatrix< doublem_Cdp
 Tying matrix, see Tyings::Periodic::Cdp().
 
Eigen::SparseMatrix< doublem_Cud
 Transpose of "m_Cdu".
 
Eigen::SparseMatrix< doublem_Cpd
 Transpose of "m_Cdp".
 
- Protected Attributes inherited from GooseFEM::MatrixPartitionedTyingsBase< MatrixPartitionedTyings >
array_type::tensor< size_t, 1 > m_iii
 See iii()
 
array_type::tensor< size_t, 1 > m_iid
 See iid()
 
size_t m_nni
 See nni.
 
size_t m_nnd
 See nnd.
 
- Protected Attributes inherited from GooseFEM::MatrixPartitionedBase< D >
array_type::tensor< size_t, 1 > m_iiu
 See iiu()
 
array_type::tensor< size_t, 1 > m_iip
 See iip()
 
size_t m_nnu
 See nnu.
 
size_t m_nnp
 See nnp.
 
- Protected Attributes inherited from GooseFEM::MatrixBase< D >
array_type::tensor< size_t, 2 > m_conn
 Connectivity [nelem, nne].
 
array_type::tensor< size_t, 2 > m_dofs
 DOF-numbers per node [nnode, ndim].
 
size_t m_nelem
 See nelem().
 
size_t m_nne
 See nne().
 
size_t m_nnode
 See nnode().
 
size_t m_ndim
 See ndim().
 
size_t m_ndof
 See ndof().
 
bool m_changed = true
 Signal changes to data.
 

Friends

template<class >
class MatrixPartitionedTyingsSolver
 

Additional Inherited Members

- Public Types inherited from GooseFEM::MatrixPartitionedTyingsBase< MatrixPartitionedTyings >
using derived_type
 Underlying type.
 
- Public Types inherited from GooseFEM::MatrixPartitionedBase< D >
using derived_type = D
 Underlying type.
 
- Public Types inherited from GooseFEM::MatrixBase< D >
using derived_type = D
 Underlying type.
 

Detailed Description

Sparse matrix from with dependent DOFs are eliminated, and the remaining (small) independent system is partitioned in an unknown and a prescribed part.

In particular:

\( A_{ii} = \begin{bmatrix} A_{uu} & A_{up} \\ A_{pu} & A_{pp} \end{bmatrix} \)

See VectorPartitionedTyings() for bookkeeping definitions.

Definition at line 37 of file MatrixPartitionedTyings.h.

Constructor & Destructor Documentation

◆ MatrixPartitionedTyings()

GooseFEM::MatrixPartitionedTyings::MatrixPartitionedTyings ( const array_type::tensor< size_t, 2 > & conn,
const array_type::tensor< size_t, 2 > & dofs,
const Eigen::SparseMatrix< double > & Cdu,
const Eigen::SparseMatrix< double > & Cdp )
inline

Constructor.

Parameters
connconnectivity [nelem, nne].
dofsDOFs per node [nnode, ndim].
CduSee Tyings::Periodic::Cdu().
CdpSee Tyings::Periodic::Cdp().

Definition at line 86 of file MatrixPartitionedTyings.h.

Member Function Documentation

◆ data_dd()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_dd ( ) const
inline

Pointer to data.

Definition at line 204 of file MatrixPartitionedTyings.h.

◆ data_dp()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_dp ( ) const
inline

Pointer to data.

Definition at line 196 of file MatrixPartitionedTyings.h.

◆ data_du()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_du ( ) const
inline

Pointer to data.

Definition at line 188 of file MatrixPartitionedTyings.h.

◆ data_pd()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_pd ( ) const
inline

Pointer to data.

Definition at line 180 of file MatrixPartitionedTyings.h.

◆ data_pp()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_pp ( ) const
inline

Pointer to data.

Definition at line 164 of file MatrixPartitionedTyings.h.

◆ data_pu()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_pu ( ) const
inline

Pointer to data.

Definition at line 156 of file MatrixPartitionedTyings.h.

◆ data_ud()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_ud ( ) const
inline

Pointer to data.

Definition at line 172 of file MatrixPartitionedTyings.h.

◆ data_up()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_up ( ) const
inline

Pointer to data.

Definition at line 148 of file MatrixPartitionedTyings.h.

◆ data_uu()

const Eigen::SparseMatrix< double > & GooseFEM::MatrixPartitionedTyings::data_uu ( ) const
inline

Pointer to data.

Definition at line 140 of file MatrixPartitionedTyings.h.

Friends And Related Symbol Documentation

◆ MatrixPartitionedTyingsSolver

Definition at line 73 of file MatrixPartitionedTyings.h.

Member Data Documentation

◆ m_ACpp

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_ACpp
protected

// The matrix for which the tyings have been applied.

Definition at line 56 of file MatrixPartitionedTyings.h.

◆ m_ACpu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_ACpu
protected

// The matrix for which the tyings have been applied.

Definition at line 55 of file MatrixPartitionedTyings.h.

◆ m_ACup

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_ACup
protected

// The matrix for which the tyings have been applied.

Definition at line 54 of file MatrixPartitionedTyings.h.

◆ m_ACuu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_ACuu
protected

// The matrix for which the tyings have been applied.

Definition at line 53 of file MatrixPartitionedTyings.h.

◆ m_Add

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Add
protected

The matrix.

Definition at line 52 of file MatrixPartitionedTyings.h.

◆ m_Adp

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Adp
protected

The matrix.

Definition at line 51 of file MatrixPartitionedTyings.h.

◆ m_Adu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Adu
protected

The matrix.

Definition at line 50 of file MatrixPartitionedTyings.h.

◆ m_Apd

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Apd
protected

The matrix.

Definition at line 49 of file MatrixPartitionedTyings.h.

◆ m_App

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_App
protected

The matrix.

Definition at line 47 of file MatrixPartitionedTyings.h.

◆ m_Apu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Apu
protected

The matrix.

Definition at line 46 of file MatrixPartitionedTyings.h.

◆ m_Aud

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Aud
protected

The matrix.

Definition at line 48 of file MatrixPartitionedTyings.h.

◆ m_Aup

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Aup
protected

The matrix.

Definition at line 45 of file MatrixPartitionedTyings.h.

◆ m_Auu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Auu
protected

The matrix.

Definition at line 44 of file MatrixPartitionedTyings.h.

◆ m_Cdp

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Cdp
protected

Tying matrix, see Tyings::Periodic::Cdp().

Definition at line 67 of file MatrixPartitionedTyings.h.

◆ m_Cdu

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Cdu
protected

Tying matrix, see Tyings::Periodic::Cdu().

Definition at line 66 of file MatrixPartitionedTyings.h.

◆ m_Cpd

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Cpd
protected

Transpose of "m_Cdp".

Definition at line 69 of file MatrixPartitionedTyings.h.

◆ m_Cud

Eigen::SparseMatrix<double> GooseFEM::MatrixPartitionedTyings::m_Cud
protected

Transpose of "m_Cdu".

Definition at line 68 of file MatrixPartitionedTyings.h.

◆ m_Tdd

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tdd
protected

Matrix entries.

Definition at line 65 of file MatrixPartitionedTyings.h.

◆ m_Tdp

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tdp
protected

Matrix entries.

Definition at line 64 of file MatrixPartitionedTyings.h.

◆ m_Tdu

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tdu
protected

Matrix entries.

Definition at line 63 of file MatrixPartitionedTyings.h.

◆ m_Tpd

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tpd
protected

Matrix entries.

Definition at line 62 of file MatrixPartitionedTyings.h.

◆ m_Tpp

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tpp
protected

Matrix entries.

Definition at line 60 of file MatrixPartitionedTyings.h.

◆ m_Tpu

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tpu
protected

Matrix entries.

Definition at line 59 of file MatrixPartitionedTyings.h.

◆ m_Tud

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tud
protected

Matrix entries.

Definition at line 61 of file MatrixPartitionedTyings.h.

◆ m_Tup

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tup
protected

Matrix entries.

Definition at line 58 of file MatrixPartitionedTyings.h.

◆ m_Tuu

std::vector<Eigen::Triplet<double> > GooseFEM::MatrixPartitionedTyings::m_Tuu
protected

Matrix entries.

Definition at line 57 of file MatrixPartitionedTyings.h.


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