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)
98 for (
int s = 0;
s <
fes.Size(); ++
s)
130 for (
int s = 0;
s <
fes.Size(); ++
s)
151 for (
int s=0;
s<
fes.Size(); ++
s)
153 fes[
s]->GetProlongationMatrix()->Mult(
161 MFEM_ABORT(
"TODO: assemble contributions from shared face terms");
164 for (
int s=0;
s<
fes.Size(); ++
s)
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(
211 for (
int s=0;
s<
fes.Size(); ++
s)
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)
330 for (
int s=0;
s<
fes.Size(); ++
s)
332 fes[
s]->GetProlongationMatrix()->Mult(
342 for (
int s=0;
s<
fes.Size(); ++
s)
344 fes[
s]->GetProlongationMatrix()->Mult(
355 paramfes[
s]->GetProlongationMatrix()->Mult(
int Size() const
Return the logical size of the array.
A class to handle Block systems in a matrix-free implementation.
void SetBlock(int iRow, int iCol, Operator *op, real_t c=1.0)
Add a block op in the block-entry (iblock, jblock).
void Update(real_t *data, const Array< int > &bOffsets)
Update method.
Vector & GetBlock(int i)
Get the i-th vector in the block.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Pointer to an Operator of a specified type.
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...
void ConvertFrom(OperatorHandle &A)
Convert the given OperatorHandle A to the currently set type id.
Type
Enumeration defining IDs for some classes derived from Operator.
@ Hypre_ParCSR
ID for class HypreParMatrix.
Abstract parallel finite element space.
void SetSubVector(const Array< int > &dofs, const real_t value)
Set the entries listed in dofs to the given value.
Helper struct to convert a C++ type to an MPI type.