1#ifndef _fei_DirichletBCManager_hpp_
2#define _fei_DirichletBCManager_hpp_
12#include <fei_DirichletBCRecord.hpp>
13#include <SNL_FEI_Structure.hpp>
14#include <fei_VectorSpace.hpp>
16#include <fei_Pool_alloc.hpp>
25class DirichletBCManager {
27 DirichletBCManager(SNL_FEI_Structure* structure)
28 : structure_(structure), vecSpace_() {}
30 DirichletBCManager(fei::SharedPtr<fei::VectorSpace> vecspace)
31 : structure_(NULL), vecSpace_(vecspace) {}
33 ~DirichletBCManager(){}
35 void addBCRecords(
int numBCs,
40 const double* prescribedValues);
42 void addBCRecords(
int numBCs,
46 const int* offsetsIntoField,
47 const double* prescribedValues);
49 int finalizeBCEqns(fei::Matrix& matrix,
50 bool throw_if_bc_slave_conflict=
false);
52 int finalizeBCEqns(EqnBuffer& bcEqns);
54 size_t getNumBCRecords()
const;
59 int getEqnNumber(
int IDType,
int ID,
int fieldID,
int offsetIntoField);
61 SNL_FEI_Structure* structure_;
62 fei::SharedPtr<fei::VectorSpace> vecSpace_;
64 typedef std::map<int,double,std::less<int>,
65 fei_Pool_alloc<std::pair<const int, double> > > bc_map;