STORMM Source Documentation
Loading...
Searching...
No Matches
one_dimensional_splines.h
1// -*-c++-*-
2#ifndef STORMM_MATH_ONE_DIMENSIONAL_SPLINES_H
3#define STORMM_MATH_ONE_DIMENSIONAL_SPLINES_H
4
5#include "copyright.h"
6
7namespace stormm {
8namespace stmath {
9
40template <typename Tcalc4, typename Tcalc>
41void evaluateCubicSpline(const Tcalc4 abcd_coefficients, Tcalc r, Tcalc *u_contrib,
42 Tcalc *fmag = nullptr);
43
44template <typename Tcalc4, typename Tcalc2, typename Tcalc>
45Tcalc2 evaluateCubicSpline(const Tcalc4 abcd_coefficients, Tcalc r);
46
47template <typename Tcalc4, typename Tcalc>
48void evaluateCubicSpline(const Tcalc4* abcd_coefficients, int spline_count, Tcalc interval,
49 Tcalc r, Tcalc *u_contrib, Tcalc *fmag = nullptr);
50
51template <typename Tcalc4, typename Tcalc>
52void evaluateCubicSpline(const std::vector<Tcalc4> &abcd_coefficients, Tcalc interval, Tcalc r,
53 Tcalc *u_contrib, Tcalc *fmag = nullptr);
54
55template <typename Tcalc4, typename Tcalc>
56void evaluateCubicSpline(const Hybrid<Tcalc4> &abcd_coefficients, Tcalc interval, Tcalc r,
57 Tcalc *u_contrib, Tcalc *fmag = nullptr);
58
59template <typename Tcalc4, typename Tcalc2, typename Tcalc>
60Tcalc2 evaluateCubicSpline(const Tcalc4* abcd_coefficients, int spline_count, Tcalc interval,
61 Tcalc r);
62
63template <typename Tcalc4, typename Tcalc2, typename Tcalc>
64Tcalc2 evaluateCubicSpline(const std::vector<Tcalc4> &abcd_coefficients, Tcalc interval,
65 Tcalc r);
66
67template <typename Tcalc4, typename Tcalc2, typename Tcalc>
68Tcalc2 evaluateCubicSpline(const Hybrid<Tcalc4> &abcd_coefficients, Tcalc interval,
69 Tcalc r);
71
83template <typename Tcalc4, typename Tcalc>
84void evaluateQuarticSpline(const Tcalc4 abcd_coefficients, const Tcalc e_coefficient,
85 Tcalc r, Tcalc *u_contrib, Tcalc *fmag = nullptr);
86
87template <typename Tcalc4, typename Tcalc2, typename Tcalc>
88Tcalc2 evaluateQuarticSpline(const Tcalc4 abcd_coefficients, const Tcalc e_coefficient, Tcalc r);
89
90template <typename Tcalc4, typename Tcalc>
91void evaluateQuarticSpline(const Tcalc4* abcd_coefficients, const Tcalc* e_coefficient,
92 int spline_count, Tcalc interval, Tcalc r, Tcalc *u_contrib,
93 Tcalc *fmag = nullptr);
94
95template <typename Tcalc4, typename Tcalc>
96void evaluateQuarticSpline(const std::vector<Tcalc4> &abcd_coefficients,
97 const std::vector<Tcalc> &e_coefficient, Tcalc interval, Tcalc r,
98 Tcalc *u_contrib, Tcalc *fmag = nullptr);
99
100template <typename Tcalc4, typename Tcalc>
101void evaluateQuarticSpline(const Hybrid<Tcalc4> &abcd_coefficients,
102 const Hybrid<Tcalc> &e_coefficient, Tcalc interval, Tcalc r,
103 Tcalc *u_contrib, Tcalc *fmag = nullptr);
104
105template <typename Tcalc4, typename Tcalc2, typename Tcalc>
106Tcalc2 evaluateQuarticSpline(const Tcalc4* abcd_coefficients, const Tcalc* e_coefficient,
107 int spline_count, Tcalc interval, Tcalc r);
108
109template <typename Tcalc4, typename Tcalc2, typename Tcalc>
110Tcalc2 evaluateQuarticSpline(const std::vector<Tcalc4> &abcd_coefficients,
111 const std::vector<Tcalc> &e_coefficient, Tcalc interval, Tcalc r);
112
113template <typename Tcalc4, typename Tcalc2, typename Tcalc>
114Tcalc2 evaluateQuarticSpline(const Hybrid<Tcalc4> &abcd_coefficients,
115 const Hybrid<Tcalc> &e_coefficient, Tcalc interval, Tcalc r);
117
130template <typename Tcalc4, typename Tcalc2, typename Tcalc>
131void evaluateQuinticSpline(const Tcalc4 abcd_coefficients, const Tcalc2 ef_coefficients,
132 Tcalc r, Tcalc *u_contrib, Tcalc *fmag = nullptr);
133
134template <typename Tcalc4, typename Tcalc3, typename Tcalc2, typename Tcalc>
135Tcalc3 evaluateQuinticSpline(const Tcalc4 abcd_coefficients, const Tcalc2 ef_coefficients,
136 Tcalc r);
137
138template <typename Tcalc4, typename Tcalc2, typename Tcalc>
139void evaluateQuinticSpline(const Tcalc4* abcd_coefficients, const Tcalc2* ef_coefficients,
140 int spline_count, Tcalc interval, Tcalc r, Tcalc *u_contrib,
141 Tcalc *fmag = nullptr);
142
143template <typename Tcalc4, typename Tcalc2, typename Tcalc>
144void evaluateQuinticSpline(const std::vector<Tcalc4> &abcd_coefficients,
145 const std::vector<Tcalc2> &ef_coefficients, Tcalc interval, Tcalc r,
146 Tcalc *u_contrib, Tcalc *fmag = nullptr);
147
148template <typename Tcalc4, typename Tcalc2, typename Tcalc>
149void evaluateQuinticSpline(const Hybrid<Tcalc4> &abcd_coefficients,
150 const Hybrid<Tcalc2> &ef_coefficients, Tcalc interval, Tcalc r,
151 Tcalc *u_contrib, Tcalc *fmag = nullptr);
152
153template <typename Tcalc4, typename Tcalc3, typename Tcalc2, typename Tcalc>
154Tcalc3 evaluateQuinticSpline(const Tcalc4* abcd_coefficients, const Tcalc* ef_coefficients,
155 int spline_count, Tcalc interval, Tcalc r);
156
157template <typename Tcalc4, typename Tcalc3, typename Tcalc2, typename Tcalc>
158Tcalc3 evaluateQuinticSpline(const std::vector<Tcalc4> &abcd_coefficients,
159 const std::vector<Tcalc> &ef_coefficients, Tcalc interval, Tcalc r);
160
161template <typename Tcalc4, typename Tcalc3, typename Tcalc2, typename Tcalc>
162Tcalc3 evaluateQuinticSpline(const Hybrid<Tcalc4> &abcd_coefficients,
163 const Hybrid<Tcalc> &ef_coefficients, Tcalc interval, Tcalc r);
165
166} // namespace stmath
167} // namespace stormm
168
169#include "one_dimensional_splines.tpp"
170
171#endif
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202