9 #ifndef _snl_fei_LinearSystem_General_hpp_
10 #define _snl_fei_LinearSystem_General_hpp_
12 #include <fei_macros.hpp>
14 #include <fei_CSVec.hpp>
15 #include <fei_LinearSystem.hpp>
16 #include <fei_Matrix.hpp>
17 #include <fei_Vector.hpp>
18 #include <fei_fwd.hpp>
19 #include <fei_Logger.hpp>
22 class DirichletBCManager;
43 const double* prescribedValues);
51 const int* offsetIntoField,
52 const double* prescribedValues);
56 const double *weights,
61 const double *weights,
69 bool globalAssemble=
true);
78 const char*
const* paramStrings);
91 std::vector<double>& bcVals)
const;
97 void setName(
const char* name);
99 int fill_EssBCValues();
101 int implementBCs(
bool applyBCs);
103 int enforceEssentialBC_LinSysCore();
105 void enforceEssentialBC_step_1(
fei::CSVec& essBCs);
107 void enforceEssentialBC_step_2(
fei::CSVec& essBCs);
110 std::vector<double>& coefs,
111 std::vector<int>& indices);
118 bool resolveConflictRequested_;
119 bool bcs_trump_slaves_;
120 bool explicitBCenforcement_;
121 bool BCenforcement_no_column_mod_;
126 int firstLocalOffset_;
127 int lastLocalOffset_;
130 std::map<std::string, unsigned> named_loadcomplete_counter_;
132 std::vector<int> iwork_;
133 std::vector<double> dwork_;
134 std::string dbgprefix_;
138 #endif // _snl_fei_LinearSystem_General_hpp_
int loadEssentialBCs(int numIDs, const int *IDs, int idType, int fieldID, int offsetIntoField, const double *prescribedValues)
int setBCValuesOnVector(fei::Vector *vector)
int parameters(int numParams, const char *const *paramStrings)
int loadPenaltyConstraint(int constraintID, const double *weights, double penaltyValue, double rhsValue)
int loadComplete(bool applyBCs=true, bool globalAssemble=true)
void getConstrainedEqns(std::vector< int > &crEqns) const
LinearSystem_General(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
void getEssentialBCs(std::vector< int > &bcEqns, std::vector< double > &bcVals) const
bool eqnIsEssentialBC(int globalEqnIndex) const
virtual ~LinearSystem_General()
int loadLagrangeConstraint(int constraintID, const double *weights, double rhsValue)