33template <
int N,
typename T>
35template <
int N,
typename T>
71 namespace TableBaseAccessors
80 template <
int N,
typename T,
bool Constness>
89 template <
int N,
typename T>
107 template <
int N,
typename T>
157 template <
int N,
typename T,
bool C,
unsigned int P>
201 <<
"Index " << N - P + 1 <<
"has a value of " << arg1
202 <<
" but needs to be in the range [" << arg2 <<
',' << arg3
218 template <
int N1,
typename T1>
219 friend class ::Table;
220 template <
int N1,
typename T1,
bool C1,
unsigned int P1>
222 friend class ::Table<N, T>;
223 friend class Accessor<N, T, C, P + 1>;
235 template <
int N,
typename T,
bool C>
322 template <
int N1,
typename T1>
323 friend class ::Table;
324 template <
int N1,
typename T1,
bool C1,
unsigned int P1>
326 friend class ::Table<2, T>;
437template <
int N,
typename T>
465 template <
typename InputIterator>
467 InputIterator entries,
468 const bool C_style_indexing =
true);
479 template <
typename T2>
510 template <
typename T2>
544 const bool omit_default_initialization =
false);
556 size(
const unsigned int i)
const;
614 template <
typename InputIterator>
616 fill(InputIterator entries,
const bool C_style_indexing =
true);
726 const unsigned int root_process);
755 template <
class Archive>
801 template <
int,
typename>
818template <
int N,
typename T>
886 template <
typename InputIterator>
888 InputIterator entries,
889 const bool C_style_indexing =
true);
954 template <
typename TableType,
bool Constness, Storage storage_order>
961 template <
typename TableType,
bool Constness, Storage storage_order>
980 template <
typename TableType,
bool Constness, Storage storage_order>
988 std::conditional_t<Constness, const TableType *, TableType *>;
1024 template <
bool OtherConstness>
1079 friend class AccessorBase<TableType, true, storage_order>;
1083 Iterator<TableType, Constness, storage_order>,
1084 Accessor<TableType, Constness, storage_order>>;
1091 template <
typename TableType, Storage storage_order>
1111 using AccessorBase<TableType,
true, storage_order>::AccessorBase;
1118 template <
typename TableType, Storage storage_order>
1138 using AccessorBase<TableType,
false, storage_order>::AccessorBase;
1158 using AccessorBase<TableType,
false, storage_order>::value;
1185 template <
typename TableType,
bool Constness, Storage storage_order>
1188 Accessor<TableType, Constness, storage_order>>
1200 std::conditional_t<Constness, const TableType *, TableType *>;
1228 const std::ptrdiff_t linear_index);
1247template <
typename T>
1332 template <
typename InputIterator>
1335 InputIterator entries,
1336 const bool C_style_indexing =
true);
1346 const bool omit_default_initialization =
false);
1463 AccessorBase<Table<2, T>, true, MatrixTableIterators::Storage::row_major>;
1465 AccessorBase<Table<2, T>, false, MatrixTableIterators::Storage::row_major>;
1470 Accessor<Table<2, T>, false, MatrixTableIterators::Storage::row_major>;
1484template <typename T>
1543 template <
typename InputIterator>
1547 InputIterator entries,
1548 const bool C_style_indexing =
true);
1558 const bool omit_default_initialization =
false);
1618template <
typename T>
1702template <
typename T>
1789template <
typename T>
1877template <
typename T>
1971template <
typename T>
2030 const bool omit_default_initialization =
false);
2128 MatrixTableIterators::Storage::column_major>;
2135 MatrixTableIterators::Storage::column_major>;
2144template <int N, typename T>
2152template <
int N,
typename T>
2153template <
typename InputIterator>
2155 InputIterator entries,
2156 const bool C_style_indexing)
2159 fill(entries, C_style_indexing);
2164template <
int N,
typename T>
2168 , table_size(src.table_size)
2173template <
int N,
typename T>
2174template <
typename T2>
2184template <
int N,
typename T>
2195template <
int N,
typename T>
2196template <
class Archive>
2209 namespace TableBaseAccessors
2211 template <
int N,
typename T,
bool C,
unsigned int P>
2213 const iterator
data)
2220 template <
int N,
typename T,
bool C,
unsigned int P>
2221 inline Accessor<N, T, C, P>::Accessor(
const Accessor &a)
2228 template <
int N,
typename T,
bool C,
unsigned int P>
2229 inline Accessor<
N,
T,
C, P - 1>
2230 Accessor<N, T, C, P>::operator[](
const size_type i)
const
2238 return Accessor<
N,
T,
C, P - 1>(table,
data);
2244 size_type subobject_size = table.size()[
N - 1];
2245 for (
int p = P - 1; p > 1; --p)
2246 subobject_size *= table.size()[
N - p];
2248 return Accessor<
N,
T,
C, P - 1>(table, new_data);
2254 template <
int N,
typename T,
bool C>
2255 inline Accessor<N, T, C, 1>::Accessor(
const TableType &table,
2256 const iterator
data)
2263 template <
int N,
typename T,
bool C>
2264 inline Accessor<N, T, C, 1>::Accessor(
const Accessor &a)
2271 template <
int N,
typename T,
bool C>
2272 inline typename Accessor<N, T, C, 1>::reference
2273 Accessor<N, T, C, 1>::operator[](
const size_type i)
const
2281 template <
int N,
typename T,
bool C>
2282 inline typename Accessor<N, T, C, 1>::size_type
2283 Accessor<N, T, C, 1>::size()
const
2285 return table.size()[
N - 1];
2290 template <
int N,
typename T,
bool C>
2291 inline typename Accessor<N, T, C, 1>::iterator
2292 Accessor<N, T, C, 1>::begin()
const
2299 template <
int N,
typename T,
bool C>
2300 inline typename Accessor<N, T, C, 1>::iterator
2301 Accessor<N, T, C, 1>::end()
const
2303 return data + table.size()[
N - 1];
2310template <
int N,
typename T>
2323template <
int N,
typename T>
2324template <
typename T2>
2330 std::copy(m.
values.begin(),
2331 m.
values.begin() + n_elements(),
2339template <
int N,
typename T>
2354template <
int N,
typename T>
2358 return (values == T2.
values);
2363template <
int N,
typename T>
2368 if (n_elements() != 0)
2374template <
int N,
typename T>
2378 if (n_elements() != 0)
2384template <
int N,
typename T>
2387 const unsigned int root_process)
2391 values.replicate_across_communicator(communicator, root_process);
2399template <
int N,
typename T>
2402 const bool omit_default_initialization)
2404 table_size = new_sizes;
2406 const size_type new_size = n_elements();
2427 if (!omit_default_initialization)
2433 values.resize_fast(new_size);
2438 values.resize_fast(new_size);
2443template <
int N,
typename T>
2453template <
int N,
typename T>
2462template <
int N,
typename T>
2467 return table_size[i];
2472template <
int N,
typename T>
2477 for (
unsigned int n = 0; n <
N; ++n)
2484template <
int N,
typename T>
2488 return (n_elements() == 0);
2495 namespace TableImplementation
2497 template <
typename InputIterator,
typename T>
2502 for (size_type i = 0; i < table.
size()[0]; ++i)
2507 template <
typename InputIterator,
typename T>
2512 for (size_type j = 0; j < table.
size()[1]; ++j)
2513 for (size_type i = 0; i < table.
size()[0]; ++i)
2518 template <
typename InputIterator,
typename T>
2523 for (size_type k = 0; k < table.
size()[2]; ++k)
2524 for (size_type j = 0; j < table.
size()[1]; ++j)
2525 for (size_type i = 0; i < table.
size()[0]; ++i)
2530 template <
typename InputIterator,
typename T,
int N>
2540template <
int N,
typename T>
2541template <
typename InputIterator>
2547 if (C_style_indexing)
2553 internal::TableImplementation::fill_Fortran_style(entries, *
this);
2558template <
int N,
typename T>
2563 std::swap(table_size, v.table_size);
2568template <
int N,
typename T>
2577template <
int N,
typename T>
2591 return size_type(indices[0]) * table_size[1] + indices[1];
2593 return ((
size_type(indices[0]) * table_size[1] + indices[1]) *
2598 unsigned int s = indices[0];
2599 for (
unsigned int n = 1; n <
N; ++n)
2600 s = s * table_size[n] + indices[n];
2608template <
int N,
typename T>
2612 for (
unsigned int n = 0; n <
N; ++n)
2619template <
int N,
typename T>
2623 for (
unsigned int n = 0; n <
N; ++n)
2630template <
int N,
typename T>
2634 return values[position(indices)];
2639template <
int N,
typename T>
2644 return values[position(indices)];
2649template <
typename T>
2656template <
typename T>
2657template <
typename InputIterator>
2659 InputIterator entries,
2660 const bool C_style_indexing)
2666template <
typename T>
2676template <
typename T>
2686template <
typename T>
2696template <
typename T>
2709template <
typename T>
2716template <
typename T>
2717template <
typename InputIterator>
2719 const size_type size2,
2720 InputIterator entries,
2721 const bool C_style_indexing)
2727template <
typename T>
2730 const size_type size2,
2731 const bool omit_default_initialization)
2734 omit_default_initialization);
2739template <
typename T>
2740inline ::internal::TableBaseAccessors::Accessor<2, T, true, 1>
2744 return ::internal::TableBaseAccessors::Accessor<2, T, true, 1>(
2750template <
typename T>
2751inline ::internal::TableBaseAccessors::Accessor<2, T, false, 1>
2755 return ::internal::TableBaseAccessors::Accessor<2, T, false, 1>(
2761template <
typename T>
2772template <
typename T>
2783template <
typename T>
2792template <
typename T>
2801template <
typename T>
2805 return this->table_size[0];
2810template <
typename T>
2814 return this->table_size[1];
2819template <
typename T>
2828template <
typename T>
2837template <
typename T>
2846template <
typename T>
2862 template <
typename TableType, Storage storage_order>
2863 inline std::ptrdiff_t
2864 get_row_index(
const std::ptrdiff_t linear_index,
2865 const TableType *
const container)
2867 switch (storage_order)
2869 case Storage::row_major:
2870 return linear_index / container->n_cols();
2871 case Storage::column_major:
2872 return linear_index % container->n_rows();
2881 template <
typename TableType, Storage storage_order>
2882 inline std::ptrdiff_t
2883 get_column_index(
const std::ptrdiff_t linear_index,
2884 const TableType *
const container)
2886 switch (storage_order)
2888 case Storage::row_major:
2889 return linear_index % container->n_cols();
2890 case Storage::column_major:
2891 return linear_index / container->n_rows();
2901 template <
typename TableType,
bool Constness, Storage storage_order>
2903 : container(nullptr)
2904 , linear_index(
std::numeric_limits<decltype(linear_index)>::
max())
2909 template <
typename TableType,
bool Constness, Storage storage_order>
2910 inline AccessorBase<TableType, Constness, storage_order>::AccessorBase(
2911 const container_pointer_type table)
2918 template <
typename TableType,
bool Constness, Storage storage_order>
2919 inline AccessorBase<TableType, Constness, storage_order>::AccessorBase(
2920 const AccessorBase<TableType, false, storage_order> &a)
2921 : container(a.container)
2922 , linear_index(a.linear_index)
2927 template <
typename TableType,
bool Constness, Storage storage_order>
2928 inline AccessorBase<TableType, Constness, storage_order>::AccessorBase(
2929 const container_pointer_type table,
2930 const std::ptrdiff_t index)
2932 , linear_index(
index)
2934 Assert(0 <= linear_index &&
2935 std::size_t(linear_index) < container->values.size() + 1,
2936 ExcMessage(
"The current iterator points outside of the table and is "
2937 "not the end iterator."));
2942 template <
typename TableType,
bool Constness, Storage storage_order>
2943 inline const typename AccessorBase<TableType, Constness, storage_order>::
2945 AccessorBase<TableType, Constness, storage_order>::value()
const
2947 assert_valid_linear_index();
2948 return this->container->values[linear_index];
2953 template <
typename TableType,
bool Constness, Storage storage_order>
2954 inline AccessorBase<TableType, Constness, storage_order>::
2957 assert_valid_linear_index();
2958 return this->container->values[linear_index];
2963 template <
typename TableType,
bool Constness, Storage storage_order>
2964 inline typename AccessorBase<TableType, Constness, storage_order>::size_type
2965 AccessorBase<TableType, Constness, storage_order>::row()
const
2967 assert_valid_linear_index();
2968 return static_cast<std::size_t
>(
2969 internal::get_row_index<TableType, storage_order>(linear_index,
2975 template <
typename TableType,
bool Constness, Storage storage_order>
2976 inline typename AccessorBase<TableType, Constness, storage_order>::size_type
2977 AccessorBase<TableType, Constness, storage_order>::column()
const
2979 assert_valid_linear_index();
2980 return static_cast<std::size_t
>(
2981 internal::get_column_index<TableType, storage_order>(linear_index,
2987 template <
typename TableType,
bool Constness, Storage storage_order>
2989 AccessorBase<TableType, Constness, storage_order>::assert_valid_linear_index()
2993 Assert(container !=
nullptr,
2994 ExcMessage(
"This accessor has been default-constructed and does not "
2995 "have a corresponding table."));
2996 Assert(!container->empty(),
2997 ExcMessage(
"An empty table has no rows or columns."));
2998 Assert(0 <= linear_index &&
2999 std::size_t(linear_index) < container->values.size(),
3000 ExcMessage(
"The current iterator points outside of the table."));
3001 const std::ptrdiff_t row_n =
3002 internal::get_row_index<TableType, storage_order>(linear_index,
3004 const std::ptrdiff_t column_n =
3005 internal::get_column_index<TableType, storage_order>(linear_index,
3007 Assert(0 <= column_n && std::size_t(column_n) < container->n_cols(),
3008 ExcMessage(
"The current iterator points outside the table."));
3009 Assert(0 <= row_n && std::size_t(row_n) < container->n_rows(),
3010 ExcMessage(
"The current iterator points outside the table."));
3016 template <
typename TableType, Storage storage_order>
3017 inline const Accessor<TableType, false, storage_order> &
3018 Accessor<TableType, false, storage_order>::operator=(
3019 const typename Accessor<TableType, false, storage_order>::value_type &t)
3022 this->assert_valid_linear_index();
3023 this->container->values[this->linear_index] = t;
3029 template <
typename TableType, Storage storage_order>
3030 inline const Accessor<TableType, false, storage_order> &
3031 Accessor<TableType, false, storage_order>::operator=(
3032 typename Accessor<TableType, false, storage_order>::value_type &&t)
const
3034 this->assert_valid_linear_index();
3035 this->container->values[this->linear_index] = t;
3041 template <
typename TableType, Storage storage_order>
3042 inline typename Accessor<TableType, false, storage_order>::value_type &
3043 Accessor<TableType, false, storage_order>::value()
const
3045 this->assert_valid_linear_index();
3046 return this->container->values[this->linear_index];
3051 template <
typename TableType, Storage storage_order>
3052 inline Accessor<TableType, false, storage_order>::operator
value_type &()
3054 this->assert_valid_linear_index();
3055 return this->container->values[this->linear_index];
3060 template <
typename TableType,
bool Constness, Storage storage_order>
3061 inline Iterator<TableType, Constness, storage_order>::Iterator(
3062 const Accessor<TableType, Constness, storage_order> &a)
3064 Accessor<TableType, Constness, storage_order>>(a)
3069 template <
typename TableType,
bool Constness, Storage storage_order>
3070 inline Iterator<TableType, Constness, storage_order>::Iterator(
3071 const container_pointer_type table)
3073 Accessor<TableType, Constness, storage_order>>(
3074 Accessor<TableType, Constness, storage_order>(table))
3079 template <
typename TableType,
bool Constness, Storage storage_order>
3080 inline Iterator<TableType, Constness, storage_order>::Iterator(
3081 const Iterator<TableType, false, storage_order> &i)
3083 Accessor<TableType, Constness, storage_order>>(*i)
3088 template <
typename TableType,
bool Constness, Storage storage_order>
3089 inline Iterator<TableType, Constness, storage_order>::Iterator(
3090 const container_pointer_type table,
3091 const size_type row_n,
3092 const size_type col_n)
3095 table->n_cols() * row_n + col_n :
3096 table->n_rows() * col_n + row_n)
3101 template <
typename TableType,
bool Constness, Storage storage_order>
3102 inline Iterator<TableType, Constness, storage_order>::Iterator(
3103 const container_pointer_type table,
3104 const std::ptrdiff_t linear_index)
3106 Accessor<TableType, Constness, storage_order>>(
3107 Accessor<TableType, Constness, storage_order>(table, linear_index))
3114template <
typename T>
3116 const size_type size2)
3122template <
typename T>
3125 const size_type size2,
3126 const bool omit_default_initialization)
3129 omit_default_initialization);
3134template <
typename T>
3145template <
typename T>
3156template <
typename T>
3165template <
typename T>
3174template <
typename T>
3178 return this->table_size[1];
3183template <
typename T>
3187 return this->table_size[0];
3192template <
typename T>
3201template <
typename T>
3210template <
typename T>
3219template <
typename T>
3229template <
typename T>
3231 const size_type size2,
3232 const size_type size3)
3238template <
typename T>
3239template <
typename InputIterator>
3241 const size_type size2,
3242 const size_type size3,
3243 InputIterator entries,
3244 const bool C_style_indexing)
3252template <
typename T>
3255 const size_type size2,
3256 const size_type size3,
3257 const bool omit_default_initialization)
3260 omit_default_initialization);
3265template <
typename T>
3266inline ::internal::TableBaseAccessors::Accessor<3, T, true, 2>
3271 size_type(this->table_size[1]) * this->table_size[2];
3273 *
this, this->
values.begin() + i * subobject_size));
3278template <
typename T>
3279inline ::internal::TableBaseAccessors::Accessor<3, T, false, 2>
3284 size_type(this->table_size[1]) * this->table_size[2];
3286 *
this, this->
values.begin() + i * subobject_size));
3291template <
typename T>
3295 const size_type k)
const
3301 ->values[(
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3307template <
typename T>
3315 ->values[(
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3321template <
typename T>
3323 const size_type size2,
3324 const size_type size3,
3325 const size_type size4)
3331template <
typename T>
3332inline ::internal::TableBaseAccessors::Accessor<4, T, true, 3>
3337 size_type(this->table_size[1]) * this->table_size[2] * this->table_size[3];
3339 *
this, this->
values.begin() + i * subobject_size));
3344template <
typename T>
3345inline ::internal::TableBaseAccessors::Accessor<4, T, false, 3>
3350 size_type(this->table_size[1]) * this->table_size[2] * this->table_size[3];
3352 *
this, this->
values.begin() + i * subobject_size));
3357template <
typename T>
3362 const size_type l)
const
3369 ->values[((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3371 this->table_size[3] +
3377template <
typename T>
3389 ->values[((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3391 this->table_size[3] +
3397template <
typename T>
3399 const size_type size2,
3400 const size_type size3,
3401 const size_type size4,
3402 const size_type size5)
3408template <
typename T>
3409inline ::internal::TableBaseAccessors::Accessor<5, T, true, 4>
3414 this->table_size[2] * this->table_size[3] *
3415 this->table_size[4];
3417 *
this, this->
values.begin() + i * subobject_size));
3422template <
typename T>
3423inline ::internal::TableBaseAccessors::Accessor<5, T, false, 4>
3428 this->table_size[2] * this->table_size[3] *
3429 this->table_size[4];
3431 *
this, this->
values.begin() + i * subobject_size));
3436template <
typename T>
3442 const size_type m)
const
3450 ->values[(((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3452 this->table_size[3] +
3454 this->table_size[4] +
3460template <
typename T>
3474 ->values[(((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3476 this->table_size[3] +
3478 this->table_size[4] +
3484template <
typename T>
3486 const size_type size2,
3487 const size_type size3,
3488 const size_type size4,
3489 const size_type size5,
3490 const size_type size6)
3494 table_indices[0] = size1;
3495 table_indices[1] = size2;
3496 table_indices[2] = size3;
3497 table_indices[3] = size4;
3498 table_indices[4] = size5;
3499 table_indices[5] = size6;
3506template <
typename T>
3507inline ::internal::TableBaseAccessors::Accessor<6, T, true, 5>
3512 this->table_size[2] * this->table_size[3] *
3513 this->table_size[4] * this->table_size[5];
3515 *
this, this->
values.begin() + i * subobject_size));
3520template <
typename T>
3521inline ::internal::TableBaseAccessors::Accessor<6, T, false, 5>
3526 this->table_size[2] * this->table_size[3] *
3527 this->table_size[4] * this->table_size[5];
3529 *
this, this->
values.begin() + i * subobject_size));
3534template <
typename T>
3541 const size_type n)
const
3550 ->values[((((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3552 this->table_size[3] +
3554 this->table_size[4] +
3556 this->table_size[5] +
3562template <
typename T>
3578 ->values[((((
size_type(i) * this->table_size[1] + j) * this->table_size[2] +
3580 this->table_size[3] +
3582 this->table_size[4] +
3584 this->table_size[5] +
3590template <
typename T>
3592 const size_type size2,
3593 const size_type size3,
3594 const size_type size4,
3595 const size_type size5,
3596 const size_type size6,
3597 const size_type size7)
3601 table_indices[0] = size1;
3602 table_indices[1] = size2;
3603 table_indices[2] = size3;
3604 table_indices[3] = size4;
3605 table_indices[4] = size5;
3606 table_indices[5] = size6;
3607 table_indices[6] = size7;
3614template <
typename T>
3615inline ::internal::TableBaseAccessors::Accessor<7, T, true, 6>
3620 size_type(this->table_size[1]) * this->table_size[2] * this->table_size[3] *
3621 this->table_size[4] * this->table_size[5] * this->table_size[6];
3623 *
this, this->
values.begin() + i * subobject_size));
3628template <
typename T>
3629inline ::internal::TableBaseAccessors::Accessor<7, T, false, 6>
3634 size_type(this->table_size[1]) * this->table_size[2] * this->table_size[3] *
3635 this->table_size[4] * this->table_size[5] * this->table_size[6];
3637 *
this, this->
values.begin() + i * subobject_size));
3642template <
typename T>
3650 const size_type o)
const
3660 [(((((
size_type(i) * this->table_size[1] + j) * this->table_size[2] + k) *
3661 this->table_size[3] +
3663 this->table_size[4] +
3665 this->table_size[5] +
3667 this->table_size[6] +
3673template <
typename T>
3691 [(((((
size_type(i) * this->table_size[1] + j) * this->table_size[2] + k) *
3692 this->table_size[3] +
3694 this->table_size[4] +
3696 this->table_size[5] +
3698 this->table_size[6] +
3712template <
int N,
typename T>
const value_type * const_iterator
const value_type & const_reference
Accessor< TableType, Constness, storage_order > accessor
Accessor base class for Table<2, T> and TransposeTable.
AccessorBase(const AccessorBase< TableType, false, storage_order > &)
std::conditional_t< Constness, const TableType *, TableType * > container_pointer_type
void assert_valid_linear_index() const
typename TableType::value_type value_type
std::ptrdiff_t linear_index
const value_type & value() const
container_pointer_type container
AccessorBase(const container_pointer_type table)
AccessorBase(const container_pointer_type table, const std::ptrdiff_t linear_index)
friend bool operator==(const AccessorBase< TableType, Constness, storage_order > &left, const AccessorBase< TableType, OtherConstness, storage_order > &right)
typename TableType::size_type size_type
const Accessor< TableType, false, storage_order > & operator=(value_type &&) const
const Accessor< TableType, false, storage_order > & operator=(const value_type &) const
typename AccessorBase< TableType, true, storage_order >::value_type value_type
value_type & value() const
typename AccessorBase< TableType, true, storage_order >::size_type size_type
typename AccessorBase< TableType, true, storage_order >::value_type value_type
typename AccessorBase< TableType, true, storage_order >::size_type size_type
Accessor class template. This class is partially specialized for both values of Constness.
Iterator class for both matrix-like tables, i.e., Table<2, T> and TransposeTable.
Iterator(const container_pointer_type object, const size_type row, const size_type column)
std::conditional_t< Constness, const TableType *, TableType * > container_pointer_type
Iterator(const Accessor< TableType, Constness, storage_order > &accessor)
Iterator(const container_pointer_type object)
Iterator(const Iterator< TableType, false, storage_order > &i)
Iterator(const container_pointer_type container, const std::ptrdiff_t linear_index)
typename TableType::size_type size_type
void fill(const T &value)
std::size_t memory_consumption() const
TableBase< N, T > & operator=(const TableBase< N, T > &src)
void reinit(const TableIndices< N > &new_size, const bool omit_default_initialization=false)
AlignedVector< T >::const_reference el(const TableIndices< N > &indices) const
AlignedVector< T >::const_reference operator()(const TableIndices< N > &indices) const
AlignedVector< T > values
TableBase< N, T > & operator=(TableBase< N, T > &&src) noexcept
~TableBase() override=default
typename AlignedVector< T >::size_type size_type
size_type n_elements() const
TableBase(const TableBase< N, T2 > &src)
void swap(TableBase< N, T > &v) noexcept
TableBase(const TableIndices< N > &sizes, InputIterator entries, const bool C_style_indexing=true)
const TableIndices< N > & size() const
bool operator==(const TableBase< N, T > &T2) const
size_type position(const TableIndices< N > &indices) const
TableBase(const TableBase< N, T > &src)
TableBase< N, T > & operator=(const TableBase< N, T2 > &src)
AlignedVector< T >::reference operator()(const TableIndices< N > &indices)
AlignedVector< T >::reference el(const TableIndices< N > &indices)
void fill(InputIterator entries, const bool C_style_indexing=true)
void serialize(Archive &ar, const unsigned int version)
void replicate_across_communicator(const MPI_Comm communicator, const unsigned int root_process)
TableBase(const TableIndices< N > &sizes)
size_type size(const unsigned int i) const
TableBase(TableBase< N, T > &&src) noexcept
TableIndices< N > table_size
Table(const size_type size)
AlignedVector< T >::const_reference operator[](const size_type i) const
typename TableBase< 1, T >::size_type size_type
AlignedVector< T >::reference operator[](const size_type i)
AlignedVector< T >::const_reference operator()(const size_type i) const
AlignedVector< T >::reference operator()(const size_type i)
Table(const size_type size, InputIterator entries, const bool C_style_indexing=true)
AlignedVector< T >::reference operator()(const size_type i, const size_type j)
AlignedVector< T >::reference el(const size_type i, const size_type j)
typename AlignedVector< T >::const_reference const_reference
typename AlignedVector< T >::value_type value_type
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j) const
::internal::TableBaseAccessors::Accessor< 2, T, false, 1 > operator[](const size_type i)
typename TableBase< 2, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 2, T, true, 1 > operator[](const size_type i) const
AlignedVector< T >::const_reference el(const size_type i, const size_type j) const
typename AlignedVector< T >::reference reference
const_iterator end() const
Table(const size_type size1, const size_type size2, InputIterator entries, const bool C_style_indexing=true)
void reinit(const size_type size1, const size_type size2, const bool omit_default_initialization=false)
const_iterator begin() const
Table(const size_type size1, const size_type size2)
::internal::TableBaseAccessors::Accessor< 3, T, true, 2 > operator[](const size_type i) const
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j, const size_type k) const
AlignedVector< T >::reference operator()(const size_type i, const size_type j, const size_type k)
Table(const size_type size1, const size_type size2, const size_type size3)
Table(const size_type size1, const size_type size2, const size_type size3, InputIterator entries, const bool C_style_indexing=true)
void reinit(const size_type size1, const size_type size2, const size_type size3, const bool omit_default_initialization=false)
typename TableBase< 3, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 3, T, false, 2 > operator[](const size_type i)
::internal::TableBaseAccessors::Accessor< 4, T, true, 3 > operator[](const size_type i) const
Table(const size_type size1, const size_type size2, const size_type size3, const size_type size4)
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j, const size_type k, const size_type l) const
typename TableBase< 4, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 4, T, false, 3 > operator[](const size_type i)
AlignedVector< T >::reference operator()(const size_type i, const size_type j, const size_type k, const size_type l)
typename TableBase< 5, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 5, T, false, 4 > operator[](const size_type i)
AlignedVector< T >::reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m)
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m) const
::internal::TableBaseAccessors::Accessor< 5, T, true, 4 > operator[](const size_type i) const
Table(const size_type size1, const size_type size2, const size_type size3, const size_type size4, const size_type size5)
::internal::TableBaseAccessors::Accessor< 6, T, false, 5 > operator[](const size_type i)
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m, const size_type n) const
Table(const size_type size1, const size_type size2, const size_type size3, const size_type size4, const size_type size5, const size_type size6)
AlignedVector< T >::reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m, const size_type n)
typename TableBase< 6, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 6, T, true, 5 > operator[](const size_type i) const
::internal::TableBaseAccessors::Accessor< 7, T, false, 6 > operator[](const size_type i)
typename TableBase< 7, T >::size_type size_type
::internal::TableBaseAccessors::Accessor< 7, T, true, 6 > operator[](const size_type i) const
AlignedVector< T >::reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m, const size_type n, const size_type o)
AlignedVector< T >::const_reference operator()(const size_type i, const size_type j, const size_type k, const size_type l, const size_type m, const size_type n, const size_type o) const
Table(const size_type size1, const size_type size2, const size_type size3, const size_type size4, const size_type size5, const size_type size6, const size_type size7)
void reinit(const size_type size1, const size_type size2, const bool omit_default_initialization=false)
TransposeTable(const size_type size1, const size_type size2)
MatrixTableIterators::Iterator< TransposeTable< T >, false, MatrixTableIterators::Storage::column_major > iterator
reference el(const size_type i, const size_type j)
const_iterator begin() const
MatrixTableIterators::Iterator< TransposeTable< T >, true, MatrixTableIterators::Storage::column_major > const_iterator
const_iterator end() const
typename AlignedVector< T >::reference reference
typename TableBase< 2, T >::size_type size_type
const_reference operator()(const size_type i, const size_type j) const
typename AlignedVector< T >::value_type value_type
const_reference el(const size_type i, const size_type j) const
reference operator()(const size_type i, const size_type j)
typename AlignedVector< T >::const_reference const_reference
typename Types< N, T, C >::value_type value_type
Accessor(const Accessor &a)
typename Types< N, T, C >::const_iterator const_iterator
typename Types< N, T, C >::TableType TableType
typename Types< N, T, C >::const_reference const_reference
typename Types< N, T, C >::iterator iterator
std::ptrdiff_t difference_type
reference operator[](const size_type) const
typename Types< N, T, C >::reference reference
Accessor(const TableType &table, const iterator data)
typename Types< N, T, C >::TableType TableType
typename Types< N, T, C >::iterator iterator
Accessor(const Accessor &a)
Accessor< N, T, C, P - 1 > operator[](const size_type i) const
Accessor(const TableType &table, const iterator data)
std::ptrdiff_t difference_type
typename Types< N, T, C >::const_iterator const_iterator
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_ASSERT_UNREACHABLE()
#define DEAL_II_NOT_IMPLEMENTED()
static ::ExceptionBase & ExcIndexRange(size_type arg1, size_type arg2, size_type arg3)
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
#define DeclException3(Exception3, type1, type2, type3, outsequence)
static ::ExceptionBase & ExcMessage(std::string arg1)
std::vector< index_type > data
types::global_dof_index size_type
Storage
Enumeration describing the storage order (i.e., the in-memory layout) of a table class.
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)
SymmetricTensor< 2, dim, Number > C(const Tensor< 2, dim, Number > &F)
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
T broadcast(const MPI_Comm comm, const T &object_to_send, const unsigned int root_process=0)
void reinit(MatrixBlock< MatrixType > &v, const BlockSparsityPattern &p)
typename AlignedVector< T >::iterator iterator
typename AlignedVector< T >::const_iterator const_iterator
typename AlignedVector< T >::reference reference
typename AlignedVector< T >::const_reference const_reference
typename AlignedVector< T >::const_iterator const_iterator
typename AlignedVector< T >::const_reference const_reference
typename AlignedVector< T >::const_iterator iterator
typename AlignedVector< T >::const_reference reference
void swap(TableBase< N, T > &u, TableBase< N, T > &v) noexcept