1 #ifndef VTESTBED_CORE_VELOCITY_POTENTIAL_HH 2 #define VTESTBED_CORE_VELOCITY_POTENTIAL_HH 8 #include <vtestbed/core/assumptions.hh> 9 #include <vtestbed/core/fourier_transform.hh> 10 #include <vtestbed/core/grid.hh> 11 #include <vtestbed/core/policy.hh> 12 #include <vtestbed/core/types.hh> 24 template <
class T,
int N>
58 inline const Grid<T,2>&
59 wave_number_grid()
const {
64 assumptions(Assumptions rhs) {
65 this->_assumptions = rhs;
68 inline const Assumptions&
70 return this->_assumptions;
85 const Grid<T,N+1>& grid_tzxy,
86 const Array<T,N>& wavy_surface,
87 Array<T,N+1>& velocity_potential
92 const Grid<T,4>& grid_tzxy,
93 const Array<T,3>& wavy_surface,
94 Array<T,4>& velocity_potential
96 this->
solve(grid_tzxy, wavy_surface, velocity_potential);
138 const Array3<T>& wavy_surface,
150 template <
class T, Policy P>
157 typedef blitz::TinyVector<int,2> int2;
194 const Array<T,3>& wavy_surface,
195 Array<T,4>& velocity_potential
225 template <
class T,
int N, Policy P>
227 make_velocity_potential_solver();
233 #endif // vim:filetype=cpp virtual void solve(const Grid< T, N+1 > &grid_tzxy, const Array< T, N > &wavy_surface, Array< T, N+1 > &velocity_potential)=0
Calculate velocity potential for each grid point.
Uses formulae from linear wavy theory.
void depth(T rhs)
Set water depth.
void solve(const Grid< T, 4 > &grid_tzxy, const Array< T, 3 > &wavy_surface, Array< T, 4 > &velocity_potential) override
Computes velocity potential .
void window_function(const Grid< T, 2 > &wngrid, const T z, Array2< T > &result)
Computes window (first) function .
Base class for all velocity potential solvers.
T depth() const noexcept
Get water depth.
Base class for linear velocity potential solver.
void second_function(const Grid< T, 4 > &grid_tzxy, const Array3< T > &wavy_surface, Array3< C > &result)
Computes second function.