SyFi
0.3
|
#include <Dof.h>
Public Member Functions | |
Dof (bool create_glob2dof=false, bool create_glob2loc=false) | |
~Dof () | |
void | clear () |
unsigned int | insert_dof (unsigned int e, unsigned int i, GiNaC::ex Li) |
unsigned int | size () const |
unsigned int | num_elements () const |
unsigned int | max_dofs_per_element () const |
unsigned int | glob_dof (unsigned int e, unsigned int i) |
unsigned int | glob_dof (GiNaC::ex Lj) |
GiNaC::ex | glob_dof (unsigned int j) |
vector_ii | glob2loc (unsigned int j) |
Protected Attributes | |
unsigned int | counter |
unsigned int | emax |
unsigned int | imax |
std::map< std::pair< unsigned int, unsigned int >, unsigned int > | loc2glob |
bool | create_glob2loc |
std::map< unsigned int, vector_ii > | glob2loc_map |
std::map< GiNaC::ex, unsigned int, GiNaC::ex_is_less > | dof2glob |
bool | create_glob2dof |
std::map< unsigned int, GiNaC::ex > | glob2dof |
SyFi::Dof::Dof | ( | bool | create_glob2dof = false , |
bool | create_glob2loc = false |
||
) | [inline] |
Definition at line 65 of file Dof.h.
: counter(0), emax(0), imax(0), create_glob2loc(create_glob2loc), create_glob2dof(create_glob2dof) { }
SyFi::Dof::~Dof | ( | ) | [inline] |
void SyFi::Dof::clear | ( | ) |
vector_ii SyFi::Dof::glob2loc | ( | unsigned int | j | ) |
Definition at line 138 of file Dof.cpp.
Referenced by main().
{ if ( !create_glob2loc ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2loc flag before initialization!"); } return glob2loc_map[j]; }
unsigned int SyFi::Dof::glob_dof | ( | unsigned int | e, |
unsigned int | i | ||
) |
Definition at line 92 of file Dof.cpp.
References run_all::res.
Referenced by SyFi::compute_mixed_Poisson_element_matrix(), compute_nlconvdiff_element_matrix(), compute_Poisson_element_matrix(), SyFi::compute_Poisson_element_matrix(), SyFi::compute_Stokes_element_matrix(), and main().
unsigned int SyFi::Dof::glob_dof | ( | GiNaC::ex | Lj | ) |
GiNaC::ex SyFi::Dof::glob_dof | ( | unsigned int | j | ) |
Definition at line 119 of file Dof.cpp.
{ if ( !create_glob2dof ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2dof flag before initialization!"); } std::map<unsigned int, GiNaC::ex>::iterator iter = glob2dof.find(j); if ( iter == glob2dof.end() ) { //throw std::runtime_error("In glob_dof(j): Not found"); std::cerr << "In glob_dof(j): Not found" << std::endl; return GiNaC::ex(); } return iter->second; }
unsigned int SyFi::Dof::insert_dof | ( | unsigned int | e, |
unsigned int | i, | ||
GiNaC::ex | Li | ||
) |
Definition at line 37 of file Dof.cpp.
References SyFi::p.
Referenced by SyFi::compute_mixed_Poisson_element_matrix(), compute_nlconvdiff_element_matrix(), compute_Poisson_element_matrix(), SyFi::compute_Poisson_element_matrix(), SyFi::compute_Stokes_element_matrix(), and main().
{ if (e > emax) emax = e; if (i > imax) imax = i; unsigned int return_dof; // check if the dof is new, if so // update counter, dof2glob and create // a new vector in glob2loc_map std::map< GiNaC::ex, unsigned int, GiNaC::ex_is_less >::iterator index_iter = dof2glob.find(Li); if( index_iter == dof2glob.end() ) { // define a new dof return_dof = counter; // count inserted global indices counter++; // the central "D -> global index" map dof2glob[Li] = return_dof; if ( create_glob2dof ) { std::pair<unsigned int, GiNaC::ex> p(return_dof, Li); glob2dof.insert(p); } if ( create_glob2loc ) { // initialize with empty vector glob2loc_map[return_dof] = vector_ii(); glob2loc_map[return_dof].reserve(imax); } } else // dof is not new { return_dof = index_iter->second; } // loc2glob should always be updated pair_ii index(e, i); loc2glob[index] = return_dof; // insert (e,i) in glob2loc_map[Li] if ( create_glob2loc ) { glob2loc_map[return_dof].push_back(index); } return return_dof; }
unsigned int SyFi::Dof::max_dofs_per_element | ( | ) | const [inline] |
unsigned int SyFi::Dof::num_elements | ( | ) | const [inline] |
unsigned int SyFi::Dof::size | ( | ) | const [inline] |
unsigned int SyFi::Dof::counter [protected] |
bool SyFi::Dof::create_glob2dof [protected] |
bool SyFi::Dof::create_glob2loc [protected] |
std::map<GiNaC::ex , unsigned int, GiNaC::ex_is_less > SyFi::Dof::dof2glob [protected] |
unsigned int SyFi::Dof::emax [protected] |
Definition at line 42 of file Dof.h.
Referenced by num_elements().
std::map< unsigned int, GiNaC::ex > SyFi::Dof::glob2dof [protected] |
std::map< unsigned int, vector_ii > SyFi::Dof::glob2loc_map [protected] |
unsigned int SyFi::Dof::imax [protected] |
Definition at line 45 of file Dof.h.
Referenced by max_dofs_per_element().
std::map<std::pair<unsigned int,unsigned int>, unsigned int> SyFi::Dof::loc2glob [protected] |