8#ifndef CUBOIDPYRAMIDALMATRIX_H_
9#define CUBOIDPYRAMIDALMATRIX_H_
11#include "utils/mardyn_assert.h"
22 _totalNumEntries(N*(N+1)*(4*N-1)/6), _numSlices(N) {
24 _entries =
new double[_totalNumEntries];
32 _totalNumEntries(c._totalNumEntries), _numSlices(c._numSlices) {
34 _entries =
new double[_totalNumEntries];
35 std::copy(c._entries, c._entries + c._totalNumEntries, _entries);
40 std::swap(_totalNumEntries, rhs._totalNumEntries);
41 std::swap(_numSlices, rhs._numSlices);
42 std::swap(_entries, rhs._entries);
48 void clear() {
for (
unsigned i = 0; i < _totalNumEntries; ++i) _entries[i] = 0.0; }
50 unsigned get_num_entries()
const {
return _totalNumEntries;}
52 inline double & access(
unsigned i,
unsigned j,
int k) {
return _entries[index(i,j,k)];}
53 inline const double& access_const(
unsigned i,
unsigned j,
int k)
const {
return _entries[index(i,j,k)];}
54 inline double & access_seq(
unsigned i) {
return _entries[i];}
55 inline double access_seq_const(
unsigned i)
const {
return _entries[i];}
57 inline unsigned index(
unsigned i,
unsigned j,
int k)
const {
58 mardyn_assert(i <= _numSlices);
59 mardyn_assert(j <= i);
60 mardyn_assert(
static_cast<unsigned>(abs(k))<= i);
61 return i*(i+1)*(4*i-1)/6 + (2*i + 1)*j + i + k;
70 unsigned _totalNumEntries;
Definition: CuboidPyramidalMatrix.h:16
Definition: L2PCellProcessor.cpp:15