35 for (
int s1=0; s1<
fes.
Size(); ++s1)
37 for (
int s2=0; s2<
fes.
Size(); ++s2)
45 for (
int s=0;
s<statef.
Size();
s++)
49 for (
int s=0;
s<paramf.
Size();
s++)
58 for (
int s1=0; s1<
fes.
Size(); ++s1)
60 for (
int s2=0; s2<
fes.
Size(); ++s2)
138 MPI_Allreduce(&enloc, &englo, 1, MPI_DOUBLE, MPI_SUM,
153 fes[
s]->GetProlongationMatrix()->Mult(
161 MFEM_ABORT(
"TODO: assemble contributions from shared face terms");
166 fes[
s]->GetProlongationMatrix()->MultTranspose(
183 paramfes[
s]->GetProlongationMatrix()->Mult(
191 MFEM_ABORT(
"TODO: assemble contributions from shared face terms");
196 paramfes[
s]->GetProlongationMatrix()->MultTranspose(
213 fes[
s]->GetProlongationMatrix()->Mult(
223 for (
int i = 0; i <
fes.
Size(); ++i)
225 for (
int j = 0; j <
fes.
Size(); ++j)
236 for (
int s1=0; s1<
fes.
Size(); ++s1)
238 for (
int s2=0; s2<
fes.
Size(); ++s2)
254 for (
int s1=0; s1<
fes.
Size(); ++s1)
258 for (
int s2=0; s2<
fes.
Size(); ++s2)
268 MFEM_ABORT(
"TODO: assemble contributions from shared face terms");
271 for (
int s1=0; s1<
fes.
Size(); ++s1)
273 for (
int s2=0; s2<
fes.
Size(); ++s2)
281 dA.MakeSquareBlockDiag(pfes[s1]->GetComm(), pfes[s1]->GlobalVSize(),
282 pfes[s1]->GetDofOffsets(),
Grads(s1,s1));
283 Ph.ConvertFrom(pfes[s1]->Dof_TrueDof_Matrix());
291 dA.MakeRectangularBlockDiag(pfes[s1]->GetComm(),
292 pfes[s1]->GlobalVSize(),
293 pfes[s2]->GlobalVSize(),
294 pfes[s1]->GetDofOffsets(),
295 pfes[s2]->GetDofOffsets(),
298 Ph.ConvertFrom(pfes[s2]->Dof_TrueDof_Matrix());
316 for (
int s1=0; s1<
fes.
Size(); ++s1)
318 for (
int s2=0; s2<
fes.
Size(); ++s2)
332 fes[
s]->GetProlongationMatrix()->Mult(
344 fes[
s]->GetProlongationMatrix()->Mult(
355 paramfes[
s]->GetProlongationMatrix()->Mult(
int Size() const
Return the logical size of the array.
void SetSubVector(const Array< int > &dofs, const double value)
Set the entries listed in dofs to the given value.
void ConvertFrom(OperatorHandle &A)
Convert the given OperatorHandle A to the currently set type id.
Pointer to an Operator of a specified type.
void Update(double *data, const Array< int > &bOffsets)
Update method.
Abstract parallel finite element space.
void EliminateRowsCols(OperatorHandle &A, const Array< int > &ess_dof_list)
Reset the OperatorHandle to be the eliminated part of A after elimination of the essential dofs ess_d...
Type
Enumeration defining IDs for some classes derived from Operator.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
ID for class HypreParMatrix.
A class to handle Block systems in a matrix-free implementation.
void SetBlock(int iRow, int iCol, Operator *op, double c=1.0)
Add a block op in the block-entry (iblock, jblock).
Vector & GetBlock(int i)
Get the i-th vector in the block.