1#ifndef DUNE_FEM_DYNAMICARRAY_HH
2#define DUNE_FEM_DYNAMICARRAY_HH
13#include <dune/common/densevector.hh>
14#include <dune/common/ftraits.hh>
23 template<
class K >
class StaticArray;
28 :
public std::allocator< T >
30 typedef std::allocator< T > BaseType;
32#if __cplusplus <= 201703L
33 typedef typename BaseType :: pointer
pointer ;
54 std::copy( oldMem, oldMem+copySize, p );
66 typedef std::allocator< T > BaseType;
70#if __cplusplus <= 201703L
71 typedef typename BaseType :: pointer
pointer ;
103 template <
class T,
class AllocatorType =
typename std::conditional< Std::is_pod< T > :: value,
104 PODArrayAllocator< T >,
105 StandardArrayAllocator< T > > :: type >
112 struct DenseMatVecTraits< Fem::StaticArray< K > >
121 struct FieldTraits< Fem::StaticArray< K > >
129 struct DenseMatVecTraits< Fem::DynamicArray< K > > :
public DenseMatVecTraits< Fem::StaticArray< K > >
134 struct FieldTraits< Fem::DynamicArray< K > > :
public FieldTraits< Fem::StaticArray< K > >
150 typedef DenseVector< ThisType > BaseType;
193 assert( (
size_ > 0 ) ?
vec_ !=
nullptr :
true );
207 void * dest = ((
void *) (&
vec_[newStartIdx]));
208 const void * src = ((
const void *) (&
vec_[oldStartIdx]));
209 std::memmove(dest, src, length *
sizeof(
value_type));
242 template <
class T,
class Allocator>
321 assert( (
size_ > 0 ) ?
vec_ !=
nullptr :
true );
396 assert( nMemSize >= mSize );
398 if(
vec_ ==
nullptr )
402 if( initializeNewValues )
404 std::fill(
vec_,
vec_+nMemSize, value );
409 assert( nMemSize > 0 );
414 if( nMemSize >
memSize_ && initializeNewValues )
427 if(
vec_ !=
nullptr )
double min(const Dune::Fem::Double &v, const double p)
Definition: double.hh:953
Definition: bindguard.hh:11
Definition: utility.hh:162
An implementation of DenseVector which uses a C-array of fixed size as storage.
Definition: dynamicarray.hh:148
value_type & operator[](size_type i)
random access operator
Definition: dynamicarray.hh:176
size_type size() const
return size of array
Definition: dynamicarray.hh:170
ThisType & operator=(const ThisType &org)
copy assignament
Definition: dynamicarray.hh:190
BaseType::size_type size_type
Definition: dynamicarray.hh:153
bool operator==(const ThisType &other) const
Definition: dynamicarray.hh:214
size_type size_
Definition: dynamicarray.hh:233
StaticArray(const ThisType &)=delete
value_type * data()
return pointer to data
Definition: dynamicarray.hh:220
DofStorageType vec_
Definition: dynamicarray.hh:232
DenseMatVecTraits< ThisType >::container_type DofStorageType
Definition: dynamicarray.hh:158
void clear()
set all entries to 0
Definition: dynamicarray.hh:199
StaticArray(size_type size, const value_type *vec)
create array of length size and store vec as pointer to memory
Definition: dynamicarray.hh:163
void memmove(size_type length, size_type oldStartIdx, size_type newStartIdx)
move memory from old to new destination
Definition: dynamicarray.hh:205
BaseType::value_type value_type
Definition: dynamicarray.hh:155
value_type FieldType
Definition: dynamicarray.hh:156
const value_type * data() const
return pointer to data
Definition: dynamicarray.hh:226
oriented to the STL Allocator funtionality
Definition: dynamicarray.hh:29
pointer reallocate(pointer oldMem, size_type oldSize, size_type n)
Definition: dynamicarray.hh:49
pointer allocate(size_type n)
Definition: dynamicarray.hh:39
void deallocate(pointer p, size_type n)
Definition: dynamicarray.hh:44
BaseType::size_type size_type
Definition: dynamicarray.hh:37
BaseType::pointer pointer
Definition: dynamicarray.hh:33
Definition: dynamicarray.hh:64
BaseType::size_type size_type
Definition: dynamicarray.hh:75
PODArrayAllocator()=default
void deallocate(pointer p, size_type n)
release memory previously allocated with malloc member
Definition: dynamicarray.hh:87
pointer reallocate(pointer oldMem, size_type oldSize, size_type n)
allocate array of nmemb objects of type T
Definition: dynamicarray.hh:94
BaseType::value_type value_type
Definition: dynamicarray.hh:76
pointer allocate(size_type n)
allocate array of nmemb objects of type T
Definition: dynamicarray.hh:79
BaseType::pointer pointer
Definition: dynamicarray.hh:71
An implementation of DenseVector which uses a C-array of dynamic size as storage.
Definition: dynamicarray.hh:244
ThisType & operator=(const ThisType &org)
assign arrays
Definition: dynamicarray.hh:326
void setMemoryFactor(double memFactor)
set memory factor
Definition: dynamicarray.hh:296
void adjustMemory(size_type mSize, bool initializeNewValues, const value_type &value=value_type())
adjust the memory
Definition: dynamicarray.hh:391
void assign(const ThisType &org)
assign arrays
Definition: dynamicarray.hh:315
void reserve(size_type mSize)
Definition: dynamicarray.hh:371
size_type capacity() const
return number of total enties of array
Definition: dynamicarray.hh:309
AllocatorType allocator_
Definition: dynamicarray.hh:438
BaseType::value_type value_type
Definition: dynamicarray.hh:258
DynamicArray< T, AllocatorType > ThisType
Definition: dynamicarray.hh:248
void resize(size_type nsize)
Definition: dynamicarray.hh:334
void resize(size_type nsize, const value_type &value)
Definition: dynamicarray.hh:342
void freeMemory()
Definition: dynamicarray.hh:425
double memoryFactor_
Definition: dynamicarray.hh:436
DynamicArray(const ThisType &other)
copy constructor
Definition: dynamicarray.hh:261
DynamicArray(size_type size=0, AllocatorType allocator=AllocatorType())
create array of length size without initializing the values
Definition: dynamicarray.hh:286
~DynamicArray()
destructor
Definition: dynamicarray.hh:303
size_type usedMemorySize() const
return size of vector in bytes
Definition: dynamicarray.hh:384
BaseType::size_type size_type
Definition: dynamicarray.hh:257
void doResize(size_type nsize, bool initializeNewValues, const value_type &value=value_type())
Definition: dynamicarray.hh:347
DynamicArray(size_type size, const value_type &value, AllocatorType allocator=AllocatorType())
create array of length size with initialized values
Definition: dynamicarray.hh:271
StaticArray< T > BaseType
Definition: dynamicarray.hh:249
Allocator AllocatorType
Definition: dynamicarray.hh:246
size_type memSize_
Definition: dynamicarray.hh:437
K * container_type
Definition: dynamicarray.hh:115
std::size_t size_type
Definition: dynamicarray.hh:117
Fem::StaticArray< K > derived_type
Definition: dynamicarray.hh:114
K value_type
Definition: dynamicarray.hh:116
FieldTraits< K >::field_type field_type
Definition: dynamicarray.hh:123
FieldTraits< K >::real_type real_type
Definition: dynamicarray.hh:124