COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
List of all members
Matrix Class Referenceabstract

#include <Matrix.hpp>

Inherits Component.

Inherited by EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

Public Member Functions

INDIVIDUAL ACCESS
virtual void set_value (const Uint icol, const Uint irow, const Real value)=0
 Set value at given location in the matrix. More...
 
virtual void add_value (const Uint icol, const Uint irow, const Real value)=0
 Add value at given location in the matrix. More...
 
virtual void get_value (const Uint icol, const Uint irow, Real &value)=0
 Get value at given location in the matrix. More...
 
EFFICCIENT ACCESS
virtual void set_values (const BlockAccumulator &values)=0
 Set a list of values. More...
 
virtual void add_values (const BlockAccumulator &values)=0
 
virtual void get_values (BlockAccumulator &values)=0
 Add a list of values. More...
 
virtual void set_row (const Uint iblockrow, const Uint ieq, Real diagval, Real offdiagval)=0
 Set a row, diagonal and off-diagonals values separately (dirichlet-type boundaries) More...
 
virtual void get_column_and_replace_to_zero (const Uint iblockcol, Uint ieq, std::vector< Real > &values)=0
 
virtual void symmetric_dirichlet (const Uint blockrow, const Uint ieq, const Real value, LSS::Vector &rhs)=0
 
virtual void tie_blockrow_pairs (const Uint iblockrow_to, const Uint iblockrow_from)=0
 Add one line to another and tie to it via dirichlet-style (applying periodicity) More...
 
virtual void set_diagonal (const std::vector< Real > &diag)=0
 Set the diagonal. More...
 
virtual void add_diagonal (const std::vector< Real > &diag)=0
 Add to the diagonal. More...
 
virtual void get_diagonal (std::vector< Real > &diag)=0
 Get the diagonal. More...
 
virtual void reset (Real reset_to=0.)=0
 Reset Matrix. More...
 
MISCELLANEOUS
virtual void print (common::LogStream &stream)=0
 Print to wherever. More...
 
virtual void print (std::ostream &stream)=0
 Print to wherever. More...
 
virtual void print (const std::string &filename, std::ios_base::openmode mode=std::ios_base::out)=0
 Print to file given by filename. More...
 
virtual void print_native (std::ostream &stream)=0
 Use the native printing functionality of the matrix implementation. More...
 
virtual const bool is_created ()=0
 Accessor to the state of create. More...
 
virtual const Uint neq ()=0
 Accessor to the number of equations. More...
 
virtual const Uint blockrow_size ()=0
 Accessor to the number of block rows. More...
 
virtual const Uint blockcol_size ()=0
 Accessor to the number of block columns. More...
 
virtual void clone_to (Matrix &other)=0
 Make a deep copy of the current matrix into other. More...
 
virtual void read_native (const common::URI &file)=0
 Read in a linear system, optionally filling the provided RHS and solution vector. More...
 
LINEAR ALGEBRA
virtual void apply (const Handle< Vector > &y, const Handle< Vector const > &x, const Real alpha=1., const Real beta=0.)=0
 Compute y = alpha*A*x + beta*y. More...
 
TEST ONLY
virtual void debug_data (std::vector< Uint > &row_indices, std::vector< Uint > &col_indices, std::vector< Real > &values)=0
 
- Public Member Functions inherited from Component
 Component (const std::string &name)
 
virtual ~Component ()
 Virtual destructor. More...
 
const std::string & name () const
 Access the name of the component. More...
 
void rename (const std::string &name)
 Rename the component. More...
 
URI uri () const
 Construct the full path. More...
 
void complete_path (URI &path) const
 
Handle< Componentaccess_component (const URI &path) const
 
Handle< Componentaccess_component_checked (const URI &path)
 
Handle< Component const > access_component_checked (const URI &path) const
 
Handle< Componenthandle ()
 Get a handle to the component. More...
 
Handle< Component const > handle () const
 
template<typename ComponentT >
Handle< ComponentT > handle ()
 
template<typename ComponentT >
Handle< ComponentT const > handle () const
 
Handle< Componentparent () const
 
Handle< Component const > root () const
 
Handle< Componentroot ()
 
Handle< Componentget_child (const std::string &name)
 
Handle< Component const > get_child (const std::string &name) const
 
Handle< Componentget_child_checked (const std::string &name)
 
Handle< Component const > get_child_checked (const std::string &name) const
 
Handle< Componentcreate_component (const std::string &name, const std::string &builder)
 Build a (sub)component of this component using the extended type_name of the component. More...
 
template<typename T >
Handle< T > create_component (const std::string &name)
 Create a (sub)component of this component automatically cast to the specified type. More...
 
template<typename T >
Handle< T > create_static_component (const std::string &name)
 Create a static "always there" subcomponent. More...
 
Componentadd_component (const boost::shared_ptr< Component > &subcomp)
 Add the passed component as a subcomponent. More...
 
void add_link (Component &linked_component)
 
boost::shared_ptr< Componentremove_component (const std::string &name)
 Remove a (sub)component of this component. More...
 
boost::shared_ptr< Componentremove_component (Component &subcomp)
 Remove a (sub)component of this component. More...
 
void clear ()
 Remove all sub-components of this component, except for the static ones. More...
 
void move_to (Component &to_parent)
 
std::string tree (bool basic_mode=false, Uint depth=0, Uint recursion_level=0) const
 
std::string info (const std::string &what=std::string("cospt")) const
 
size_t count_children () const
 
virtual std::string derived_type_name () const =0
 
PropertyListproperties ()
 
const PropertyListproperties () const
 
OptionListoptions ()
 
const OptionListoptions () const
 
void reset_options ()
 Reset all options to their default value. More...
 
void configure_option_recursively (const std::string &optname, const boost::any &val)
 
Componentmark_basic ()
 marks this component as basic. More...
 
template<typename ComponentT >
void put_components (std::vector< boost::shared_ptr< ComponentT > > &vec, const bool recurse)
 
template<typename ComponentT >
void put_components (std::vector< boost::shared_ptr< ComponentT const > > &vec, const bool recurse) const
 
template<>
void put_components (std::vector< boost::shared_ptr< Component > > &vec, const bool recurse)
 
template<>
void put_components (std::vector< boost::shared_ptr< Component const > > &vec, const bool recurse) const
 
Component::iterator begin ()
 The begin iterator for a range containing Components. More...
 
Component::iterator end ()
 The end iterator for a range containing Components. More...
 
Component::const_iterator begin () const
 The begin iterator for a range containing Components (const version) More...
 
Component::const_iterator end () const
 The end iterator for a range containing Components (const version) More...
 
Component::iterator recursive_begin ()
 The begin iterator for a recursive range containing Components. More...
 
Component::iterator recursive_end ()
 The end iterator for a recursive range containing Components. More...
 
Component::const_iterator recursive_begin () const
 The begin iterator for a recursive range containing Components (const version) More...
 
Component::const_iterator recursive_end () const
 The end iterator for a recursive range containing Components (const version) More...
 
template<typename T >
Handle< T > create_component (const std::string &name, const std::string &builder)
 Create a component using the reduced builder name. More...
 
void signal_configure (SignalArgs &args)
 configures all the options on this class More...
 
void signal_create_component (SignalArgs &args)
 creates a component from this component More...
 
void signal_delete_component (SignalArgs &args)
 delete this component More...
 
void signal_move_component (SignalArgs &args)
 moves a component from this component to another More...
 
void signal_list_tree (SignalArgs &args) const
 lists the sub components and puts them on the xml_tree More...
 
void signal_list_tree_recursive (SignalArgs &args) const
 prints tree recursively More...
 
void signal_list_properties (SignalArgs &args) const
 lists the properties of this component More...
 
void signal_list_options (SignalArgs &args) const
 lists the properties of this component More...
 
void signal_list_options_recursive (SignalArgs &args) const
 prints all options recursive More...
 
void signal_list_signals (SignalArgs &args) const
 lists the signals of this component More...
 
void signal_list_signals_recursive (SignalArgs &args) const
 prints all signals recursive More...
 
void signal_print_info (SignalArgs &args) const
 gets info on this component More...
 
void signal_print_tree (SignalArgs &args) const
 signal to print the tree More...
 
void signature_print_tree (SignalArgs &args) const
 signature to signal_print_tree More...
 
void signal_rename_component (SignalArgs &args)
 renames this component More...
 
void signal_save_tree (SignalArgs &args)
 dumps the tree to a file More...
 
void signal_list_content (SignalArgs &args)
 gives information about this component such as options, signals, ... More...
 
void signal_signature (SignalArgs &args)
 Gives a signal signature, if any. More...
 
void signature_create_component (SignalArgs &args)
 
void signature_rename_component (SignalArgs &args)
 
void signature_move_component (SignalArgs &args)
 
void signal_store_timings (SignalArgs &args)
 Signal to store the timings (if enabled) into properties, i.e. for readout from python or the GUI. More...
 
void signal_clear (SignalArgs &args)
 Signal to remove all sub-components. More...
 
void signal_reset_options (SignalArgs &args)
 Signal to set all options to their default value. More...
 
void signal_add_tag (SignalArgs &args)
 Signal to add a tag. More...
 
void signature_add_tag (SignalArgs &args)
 
- Public Member Functions inherited from SignalHandler
 ~SignalHandler ()
 
const storage_tsignal_list () const
 
SignalPtr signal (const SignalID &sname)
 
SignalCPtr signal (const SignalID &sname) const
 
SignalRet call_signal (const SignalID &sname, SignalArgs &sinput)
 Calls the signal by providing its name and input. More...
 
SignalRet call_signal (const SignalID &sname, std::vector< std::string > &sinput)
 Calls the signal by providing its name and input. More...
 
bool signal_exists (const SignalID &sname) const
 Checks if a signal exists or not. More...
 
Signalregist_signal (const SignalID &sname)
 Regist signal. More...
 
void unregist_signal (const SignalID &sname)
 Unregist signal. More...
 
- Public Member Functions inherited from ConnectionManager
 ~ConnectionManager ()
 destructor closes all connections More...
 
Connectionconnection (const std::string &name)
 
Connectionmanage_connection (const std::string &name)
 manages a connection (creates if necessary) More...
 
- Public Member Functions inherited from TaggedObject
 TaggedObject ()
 Constructor. More...
 
bool has_tag (const std::string &tag) const
 
void add_tag (const std::string &tag)
 
std::vector< std::string > get_tags () const
 
void remove_tag (const std::string &tag)
 

CREATION, DESTRUCTION AND COMPONENT SYSTEM

static std::string type_name ()
 name of the type More...
 
virtual const std::string solvertype ()=0
 Accessor to solver type. More...
 
virtual const bool is_swappable (const LSS::Vector &solution, const LSS::Vector &rhs)=0
 Accessor to the flag if matrix, solution and rhs are tied together or not. More...
 
 Matrix (const std::string &name)
 Default constructor. More...
 
virtual void create (cf3::common::PE::CommPattern &cp, const Uint neq, const std::vector< Uint > &node_connectivity, const std::vector< Uint > &starting_indices, LSS::Vector &solution, LSS::Vector &rhs, const std::vector< Uint > &periodic_links_nodes=std::vector< Uint >(), const std::vector< bool > &periodic_links_active=std::vector< bool >())=0
 
virtual void create_blocked (cf3::common::PE::CommPattern &cp, const VariablesDescriptor &vars, const std::vector< Uint > &node_connectivity, const std::vector< Uint > &starting_indices, LSS::Vector &solution, LSS::Vector &rhs, const std::vector< Uint > &periodic_links_nodes=std::vector< Uint >(), const std::vector< bool > &periodic_links_active=std::vector< bool >())=0
 Keep the equations for one variable together, forming big subsystems in the global matrix. More...
 
virtual void destroy ()=0
 Deallocate underlying data. More...
 

Additional Inherited Members

- Public Types inherited from Component
typedef ComponentIterator< Componentiterator
 type of the iterator to Component More...
 
typedef ComponentIterator< Component const > const_iterator
 type of the iterator to constant Component More...
 
- Public Types inherited from SignalHandler
typedef std::vector< SignalPtrstorage_t
 storage type for signals More...
 
- Static Public Member Functions inherited from Component
static std::string type_name ()
 Get the class name. More...
 
- Public Attributes inherited from SignalHandler
storage_t m_signals
 storage of the signals More...
 
- Protected Member Functions inherited from Component
Componentadd_static_component (const boost::shared_ptr< Component > &subcomp)
 Add a static (sub)component of this component. More...
 
void raise_tree_updated_event ()
 raise event that the path has changed More...
 

Detailed Description

Definition at line 35 of file Matrix.hpp.

Constructor & Destructor Documentation

Matrix ( const std::string &  name)
inline

Default constructor.

Definition at line 51 of file Matrix.hpp.

Member Function Documentation

virtual void add_diagonal ( const std::vector< Real > &  diag)
pure virtual

Add to the diagonal.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void add_value ( const Uint  icol,
const Uint  irow,
const Real  value 
)
pure virtual

Add value at given location in the matrix.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void add_values ( const BlockAccumulator values)
pure virtual

Add a list of values local ibdices eigen, templatization on top level

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void apply ( const Handle< Vector > &  y,
const Handle< Vector const > &  x,
const Real  alpha = 1.,
const Real  beta = 0. 
)
pure virtual

Compute y = alpha*A*x + beta*y.

Implemented in TrilinosCrsMatrix, EmptyLSSMatrix, and TrilinosFEVbrMatrix.

virtual const Uint blockcol_size ( )
pure virtual

Accessor to the number of block columns.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual const Uint blockrow_size ( )
pure virtual

Accessor to the number of block rows.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void clone_to ( Matrix other)
pure virtual

Make a deep copy of the current matrix into other.

Implemented in TrilinosCrsMatrix, EmptyLSSMatrix, and TrilinosFEVbrMatrix.

virtual void create ( cf3::common::PE::CommPattern cp,
const Uint  neq,
const std::vector< Uint > &  node_connectivity,
const std::vector< Uint > &  starting_indices,
LSS::Vector solution,
LSS::Vector rhs,
const std::vector< Uint > &  periodic_links_nodes = std::vector< Uint >(),
const std::vector< bool > &  periodic_links_active = std::vector< bool >() 
)
pure virtual

Setup sparsity structure should only work with local numbering (parallel computations, plus rcm could be a totally internal matter of the matrix) internal mapping should be invisible to outside (needs to reorganize to push ghost nodes) maybe 2 ctable csr style local numbering needs global numbering for communication - ??? commpattern ???

Implemented in TrilinosCrsMatrix, TrilinosFEVbrMatrix, and EmptyLSSMatrix.

virtual void create_blocked ( cf3::common::PE::CommPattern cp,
const VariablesDescriptor vars,
const std::vector< Uint > &  node_connectivity,
const std::vector< Uint > &  starting_indices,
LSS::Vector solution,
LSS::Vector rhs,
const std::vector< Uint > &  periodic_links_nodes = std::vector< Uint >(),
const std::vector< bool > &  periodic_links_active = std::vector< bool >() 
)
pure virtual

Keep the equations for one variable together, forming big subsystems in the global matrix.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void debug_data ( std::vector< Uint > &  row_indices,
std::vector< Uint > &  col_indices,
std::vector< Real > &  values 
)
pure virtual

exports the matrix into big linear arrays

Attention
only for debug and utest purposes

Implemented in TrilinosCrsMatrix, EmptyLSSMatrix, and TrilinosFEVbrMatrix.

virtual void destroy ( )
pure virtual

Deallocate underlying data.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void get_column_and_replace_to_zero ( const Uint  iblockcol,
Uint  ieq,
std::vector< Real > &  values 
)
pure virtual

Get a column and replace it to zero (dirichlet-type boundaries, when trying to preserve symmetry)

Note
that sparsity info is lost, values will contain zeros where no matrix entry is present
Attention
by the definitiona of the compresssed sparse row matrices, this operation tends to be very heavy

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void get_diagonal ( std::vector< Real > &  diag)
pure virtual

Get the diagonal.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void get_value ( const Uint  icol,
const Uint  irow,
Real &  value 
)
pure virtual

Get value at given location in the matrix.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void get_values ( BlockAccumulator values)
pure virtual

Add a list of values.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual const bool is_created ( )
pure virtual

Accessor to the state of create.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual const bool is_swappable ( const LSS::Vector solution,
const LSS::Vector rhs 
)
pure virtual

Accessor to the flag if matrix, solution and rhs are tied together or not.

Implemented in TrilinosCrsMatrix, TrilinosFEVbrMatrix, and EmptyLSSMatrix.

virtual const Uint neq ( )
pure virtual

Accessor to the number of equations.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void print ( common::LogStream stream)
pure virtual

Print to wherever.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void print ( std::ostream &  stream)
pure virtual

Print to wherever.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void print ( const std::string &  filename,
std::ios_base::openmode  mode = std::ios_base::out 
)
pure virtual

Print to file given by filename.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void print_native ( std::ostream &  stream)
pure virtual

Use the native printing functionality of the matrix implementation.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void read_native ( const common::URI file)
pure virtual

Read in a linear system, optionally filling the provided RHS and solution vector.

Implemented in TrilinosCrsMatrix, EmptyLSSMatrix, and TrilinosFEVbrMatrix.

virtual void reset ( Real  reset_to = 0.)
pure virtual
virtual void set_diagonal ( const std::vector< Real > &  diag)
pure virtual

Set the diagonal.

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

virtual void set_row ( const Uint  iblockrow,
const Uint  ieq,
Real  diagval,
Real  offdiagval 
)
pure virtual

Set a row, diagonal and off-diagonals values separately (dirichlet-type boundaries)

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void set_value ( const Uint  icol,
const Uint  irow,
const Real  value 
)
pure virtual

Set value at given location in the matrix.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void set_values ( const BlockAccumulator values)
pure virtual

Set a list of values.

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual const std::string solvertype ( )
pure virtual

Accessor to solver type.

Implemented in TrilinosCrsMatrix, TrilinosFEVbrMatrix, and EmptyLSSMatrix.

virtual void symmetric_dirichlet ( const Uint  blockrow,
const Uint  ieq,
const Real  value,
LSS::Vector rhs 
)
pure virtual

Apply a dirichlet boundary condition, preserving symmetry by moving entries to the RHS

Precondition
The matrix must be structurally symmetric
Warning
Structural symmetry is not checked, incorrect results will appear if you use this on a non structurally symmetric matrix

Implemented in EmptyLSSMatrix, TrilinosFEVbrMatrix, and TrilinosCrsMatrix.

virtual void tie_blockrow_pairs ( const Uint  iblockrow_to,
const Uint  iblockrow_from 
)
pure virtual

Add one line to another and tie to it via dirichlet-style (applying periodicity)

Implemented in EmptyLSSMatrix, TrilinosCrsMatrix, and TrilinosFEVbrMatrix.

static std::string type_name ( )
inlinestatic

name of the type

Definition at line 42 of file Matrix.hpp.


The documentation for this class was generated from the following file:
Send comments to:
COOLFluiD Web Admin