12#ifndef MFEM_COMPLEX_DPGWEAKFORM
13#define MFEM_COMPLEX_DPGWEAKFORM
138 for (
int i = 0; i <
nblocks; i++)
160 MFEM_VERIFY(
mat_r,
"mat_r is NULL and can't be dereferenced");
166 MFEM_VERIFY(
mat_i,
"mat_i is NULL and can't be dereferenced");
173 MFEM_VERIFY(
mat_e_r,
"mat_e is NULL and can't be dereferenced");
180 MFEM_VERIFY(
mat_e_i,
"mat_e is NULL and can't be dereferenced");
207 int copy_interior = 0);
209 template <
typename OpType>
213 int copy_interior = 0)
217 OpType *A_ptr = Ah.
Is<OpType>();
218 MFEM_VERIFY(A_ptr,
"invalid OpType used");
225 template <
typename OpType>
230 OpType *A_ptr = Ah.
Is<OpType>();
231 MFEM_VERIFY(A_ptr,
"invalid OpType used");
260 if (
Bmat.Size() == 0)
283 for (
int i = 0; i < trace_fes_all.
Size(); i++)
285 if (trace_fes_all[i])
287 trace_fes.
Append(trace_fes_all[i]);
Dynamic 2D array using row-major layout.
void SetSize(int nsize)
Change the logical size of the array, keep existing entries.
int Size() const
Return the logical size of the array.
int Append(const T &el)
Append element 'el' to array, resize if necessary.
A class to handle Vectors in a block fashion.
Class that performs static condensation of interior dofs for multiple FE spaces for complex systems (...
void GetTraceFESpaces(Array< FiniteElementSpace * > &trace_fes) const
Mimic the action of a complex operator using two real operators.
Arbitrary order "H^{1/2}-conforming" trace finite elements defined on the interface between mesh elem...
int GetNE() const
Returns number of elements.
Arbitrary order H(curl)-trace finite elements defined on the interface between mesh elements (faces,...
Pointer to an Operator of a specified type.
OpType * Is() const
Return the Operator pointer dynamically cast to a specified OpType.
DiagonalPolicy
Defines operator diagonal policy upon elimination of rows and/or columns.
@ DIAG_ONE
Set the diagonal value to one.
Arbitrary order "H^{-1/2}-conforming" face finite elements defined on the interface between mesh elem...
const int * ess_tdof_list