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'.