5#ifndef WAVESIMC_HELPER_FUNC_HPP
6#define WAVESIMC_HELPER_FUNC_HPP
8#include "CustomLibraries/np.hpp"
18 boost::multi_array<double, 2>
dfdx(boost::multi_array<double, 2> f,
double dx)
20 std::vector<boost::multi_array<double, 2>> grad_f =
np::gradient(f, {dx, dx});
25 boost::multi_array<double, 2>
dfdz(boost::multi_array<double, 2> f,
double dz)
27 std::vector<boost::multi_array<double, 2>> grad_f =
np::gradient(f, {dz, dz});
32 boost::multi_array<double, 2>
d2fdx2(boost::multi_array<double, 2> f,
double dx)
34 boost::multi_array<double, 2> df =
dfdx(f, dx);
35 boost::multi_array<double, 2> df2 =
dfdx(df, dx);
40 boost::multi_array<double, 2>
d2fdz2(boost::multi_array<double, 2> f,
double dz)
42 boost::multi_array<double, 2> df =
dfdz(f, dz);
43 boost::multi_array<double, 2> df2 =
dfdz(df, dz);
49 boost::multi_array<double, 2>
divergence(boost::multi_array<double, 2> f1, boost::multi_array<double, 2> f2,
52 boost::multi_array<double, 2> f_x =
dfdx(f1, dx);
53 boost::multi_array<double, 2> f_z =
dfdz(f2, dz);
54 boost::multi_array<double, 2> div = f_x + f_z;
boost::multi_array< double, 2 > dfdz(boost::multi_array< double, 2 > f, double dz)
Takes the partial derivative of a 2D matrix f with respect to z.
boost::multi_array< double, 2 > dfdx(boost::multi_array< double, 2 > f, double dx)
Takes the partial derivative of a 2D matrix f with respect to x.
boost::multi_array< double, 2 > d2fdx2(boost::multi_array< double, 2 > f, double dx)
Takes the second partial derivative of a 2D matrix f with respect to x.
boost::multi_array< double, 2 > d2fdz2(boost::multi_array< double, 2 > f, double dz)
Takes the second partial derivative of a 2D matrix f with respect to z.
boost::multi_array< double, 2 > divergence(boost::multi_array< double, 2 > f1, boost::multi_array< double, 2 > f2, double dx, double dz)
::value constexpr std::vector< boost::multi_array< T, ND > > gradient(boost::multi_array< T, ND > inArray, std::initializer_list< T > args)