File fdbase.hpp
File List > include > multigrid > fdbase.hpp
Go to the documentation of this file
#pragma once
#include "multigrid/types.hpp"
namespace mgrid {
class FDBase {
public:
FDBase() = default;
virtual ~FDBase() = default;
FDBase(const FDBase &) = default;
FDBase &operator=(const FDBase &) = default;
FDBase(FDBase &&) = default;
FDBase &operator=(FDBase &&) = default;
[[nodiscard]] double spacing(int n) const { return n == 0 ? hx_ : hz_; }
[[nodiscard]] const Axis &x_axis() const { return xAxis_; }
[[nodiscard]] const Axis &z_axis() const { return zAxis_; }
protected:
void calculate_geometry(double aspect, int nx, int nz, AxisKind kx = AxisKind::bounded,
AxisKind kz = AxisKind::bounded);
Axis xAxis_{};
Axis zAxis_{};
int nx_{0};
int nz_{0};
double aspect_{0.0};
double hx_{0.0};
double hz_{0.0};
double xfactor_{0.0};
double zfactor_{0.0};
double xxfactor_{0.0};
double zzfactor_{0.0};
double xzfactor_{0.0};
};
} // namespace mgrid