an alias when the 'own_mem' parameter is fasle.
Several simplifications/tweaks related to Vector::NewMemoryAndSize
and Vector::MakeRef in BlockVector, GridFunction, LinearForm, and
ParBlockNonlinearForm.
Add more MFEM_ASSERTs in MemoryManager::Delete_.
Remove MemoryManager::RegisterAliasBases().
In Memory<T>::MakeAlias, register the 'base' when the globally
configured device memory type (which can be a host type, e.g. when
running on host) is a device memory type. Always registering the
'base' creates errors in the unit tests:
"alias already exists with different base/offset!"
which are probably due to dangling aliases. If we want to always
register the 'base', we need to address these errors.
Updated the unit test "MemoryManager/Scopes" to test for the new
behavior of Vector::NewMemoryAndSize.
Disable the unit test "MemoryManager" since it defined a Device
object which destroys the MemoryManager at the end of the test.
an Update method, reuse vectors from PANonlinearFormExtension,
and support FormSystemOperator by implementing GetProlongation.
Fix the size of the NonlinearFormExtension operator -- it is an
L-to-L operator.
In class NonlinearForm, add methods to access the interior and
boundary face integrators.
Small tweaks the methods (Par)NonlinearForm::GetGradient,
ConstrainedOperator::AssembleDiagonal, and
RAPOperator::AssembleDiagonal.
Add more doxygen documentation and other comments.
Instead of returning the element neighbor index (i.e. starting from 0)
in `Elem2No`, now return the "shifted element index" (i.e. starting
from `NumOfElements`), so that callers of method (e.g. integrators)
can distinguish between local elements (`index < NumOfElements`) and
face neighbor element (`index >= NumOfElements`). The element neighbor
index can be recovered simply by subtracting `NumOfElements`.
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.