HypreParVector, HypreParMatrix, and HypreSmoother with GPU backends.
Add 2 versions of a new method: Vector::MakeRef -- one that takes
a Vector and an offset and another that takes a Vector, an offset
and a new size.
Add some simple debugging tools:
* Add a new output "trace" stream: mfem::trc. By default, the output
of mfem::trc goes to std::cout; the new function mfem::OpenTraceFile()
can be used to redirect the output of mfem::trc to a file called
'mfem-trace-<pid>' where <pid> is the process id. Note that this
function can be called from a debugger.
* In class Vector, add a new method Vector::PrintTrace() that prints a
Vector to the mfem::trc stream -- this method can be called from a
debugger, unlike Vector::Print with mfem::trc as argument (at least
in gdb this did not work).
* In class Memory<T>, add 2 new methods: PrintFlags() and
CompareHostAndDevice() which are explicitly instantiated for T=int
and T=double, so that they can be called inside a debugger for
these two types.
SetParSpaces(), plus const and non-const versions of ParFESpace().
In class BlockNonlinearForm, add const and non-const methods,
FESpace().
Add some more comments/documentation.
serve as wrappers for true-dof block-vectors. This change also
fixes a bug in the method GetLocalGradient(): 'block_offsets'
was used instead of 'block_trueOffsets'.
* NonlinearForm is now an Operator between true-dof vectors.
* In both classes, essential b.c. are represented internally as a list
of true dofs.
* Move the methods GetProlongation() and GetRestriction(), which are
part of the Operator interface, from class ParNonlinearForm to the
base class, NonlinearForm.
* Add doxygen documentation.
* Add a new Update() method, similar to (Par)BilinearForm.
* The method ParNonlinearForm::GetLocalGradient() does not impose
essential b.c. - they must be imposed at the true-dof level.
using the method AssembleFaceMatrix.
In class NonlinearForm, rename the data members 'dfi', 'fbfi', etc to
use the ending 'nfi' (from nonlinear form integrator) instead of 'bfi'.
In NonlinearForm::GetEnergy, replace the warning messages with abort
calls.
In the destructor of NonlinearForm, delete the NonlinearFormIntegrator
objects stored in 'fnfi' and 'bfnfi'.
Add a version of NonlinearForm::AddBdrFaceIntegrator that allows
restricting the integrator to a subset of the boundary.
In ParNonlinearForm::GetGradient, call abort when the form has face
terms - not implemented.
In class ParNonlinearForm, add the methods GetProlongation and
GetRestriction - they use the associated ParFiniteElementSpace.
calls to ParFiniteElementSpace::GetProlongationMatrix() in places
where only the action of the matrix is required.
In ParNonlinearForm::Mult(), use the parallel prolongation operator
instead of relying on the GroupCommunicator.