Program Listing for File point_cloud.h

↰ Return to documentation for file (src/pcms/field/data/point_cloud.h)

#ifndef POINT_CLOUD_H_
#define POINT_CLOUD_H_

#include "pcms/field/field_data.h"
#include "pcms/field/value_view.hpp"
#include "pcms/utility/arrays.h"
#include "pcms/field/layout/point_cloud.h"
#include <memory>

namespace pcms
{
class PointCloud
  : public FieldData<Real>
  , public DOFAccess<Real>
{
public:
  PointCloud(std::shared_ptr<const PointCloudLayout> layout);

  FieldValueType GetValueType() const override;
  const ValueBasis& GetValueBasis() const override;

  const DOFAccess<Real>* GetDOFAccess() const noexcept override { return this; }
  DOFAccess<Real>* GetDOFAccess() noexcept override { return this; }

  Rank2View<const Real, DeviceMemorySpace> GetOwnedValues() const override;
  void SetOwnedValues(Rank2View<const Real, DeviceMemorySpace> data) override;

private:
  std::shared_ptr<const PointCloudLayout> layout_;
  ValueBasis basis_;
  Kokkos::View<Real**, DeviceMemorySpace> device_data_;
};
} // namespace pcms

#endif // POINT_CLOUD_H_