75 if (dbcManager_ == NULL) {
80 if (matrix_.get() != NULL && globalAssemble) {
81 err = matrix_->gatherFromOverlap();
83 fei::console_out() <<
"snl_fei::LinearSystem_FEData::loadComplete, ERROR in matrix."
84 <<
"gatherFromOverlap(), data may be incorrect."<<
FEI_ENDL;
90 if (rhs_.get() != NULL && globalAssemble) {
91 err = rhs_->gatherFromOverlap();
93 fei::console_out() <<
"snl_fei::LinearSystem_FEData::loadComplete, ERROR rhs."
94 <<
"gatherFromOverlap(), data may be incorrect."<<
FEI_ENDL;
100 CHK_ERR( implementBCs(applyBCs) );
102 return(feData_->loadComplete());
114 std::vector<int> essEqns;
115 std::vector<double> essGamma;
119 int localsize = vecSpace->getNumIndices_Owned();
120 bool zeroSharedRows =
false;
123 CHK_ERR( dbcManager_->finalizeBCEqns(bcEqns) );
126 std::map<int,fei::FillableMat*>::iterator
127 it = remotes.begin(),
128 it_end = remotes.end();
129 for(; it!=it_end; ++it) {
137 int len = essEqns.size();
138 essEqns.resize(len*3);
139 int* nodeNumbers = &essEqns[0]+len;
140 int* dof_ids = nodeNumbers+len;
143 int* essEqnsPtr = &essEqns[0];
144 double* gammaPtr = &essGamma[0];
146 for(
int i=0; i<len; ++i) {
147 int eqn = essEqnsPtr[i];
148 nodeNumbers[i] = lookup_->getAssociatedNodeNumber(eqn);
149 int fieldID = lookup_->getAssociatedFieldID(eqn);
150 int base_eqn = lookup_->getEqnNumber(nodeNumbers[i], fieldID);
151 dof_ids[i]=vecSpace->getFieldDofMap().get_dof_id(fieldID, eqn-base_eqn);
155 CHK_ERR( feData_->setDirichletBCs(len, nodeNumbers, dof_ids, gammaPtr) );