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>
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_;
int loadComplete(bool applyBCs=true, bool globalAssemble=true)
LinearSystem_General(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
int loadLagrangeConstraint(int constraintID, const double *weights, double rhsValue)
int setBCValuesOnVector(fei::Vector *vector)
bool eqnIsEssentialBC(int globalEqnIndex) const
void getConstrainedEqns(std::vector< int > &crEqns) const
int parameters(int numParams, const char *const *paramStrings)
int loadEssentialBCs(int numIDs, const int *IDs, int idType, int fieldID, int offsetIntoField, const double *prescribedValues)
int loadPenaltyConstraint(int constraintID, const double *weights, double penaltyValue, double rhsValue)
void getEssentialBCs(std::vector< int > &bcEqns, std::vector< double > &bcVals) const
virtual ~LinearSystem_General()