13#ifndef dealii_vector_memory_h
14#define dealii_vector_memory_h
101template <
typename VectorType = ::Vector<
double>>
148 free(
const VectorType *
const) = 0;
160 "You are trying to deallocate a vector from a memory pool, but this "
161 "vector has not actually been allocated by the same pool before.");
186 :
public std::unique_ptr<VectorType, std::function<void(VectorType *)>>
233template <
typename VectorType = ::Vector<
double>>
280 free(
const VectorType *
const v)
override;
310template <
typename VectorType = ::Vector<
double>>
373 free(
const VectorType *
const)
override;
394 using entry_type = std::pair<bool, std::unique_ptr<VectorType>>;
461 namespace GrowingVectorMemoryImplementation
474template <
typename VectorType>
476 :
std::unique_ptr<VectorType,
std::function<void(VectorType *)>>(
478 [&mem](VectorType *v) { mem.
free(v); })
483template <
typename VectorType>
492template <
typename VectorType>
virtual VectorType * alloc() override
static void release_unused_memory()
static Threads::Mutex mutex
virtual void free(const VectorType *const) override
virtual std::size_t memory_consumption() const
virtual ~GrowingVectorMemory() override
GrowingVectorMemory(const size_type initial_size=0, const bool log_statistics=false)
std::pair< bool, std::unique_ptr< VectorType > > entry_type
virtual void free(const VectorType *const v) override
virtual VectorType * alloc() override
Pointer & operator=(Pointer &&p) noexcept=default
Pointer(Pointer &&p) noexcept=default
Pointer(VectorMemory< VectorType > &mem)
virtual VectorType * alloc()=0
virtual ~VectorMemory() override=default
virtual void free(const VectorType *const)=0
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotAllocatedHere()
#define DeclExceptionMsg(Exception, defaulttext)
Tpetra::Vector< Number, LO, GO, NodeType< MemorySpace > > VectorType
void release_all_unused_memory()
unsigned int global_dof_index
void initialize(const size_type size)
std::vector< entry_type > * data