177 const T xmid = T(0.5)*(xnew + xold);
178 if constexpr (depos_order == 1){
179 const auto j =
static_cast<int>(xmid);
180 const T xint_old = xold - T(j);
181 sx_old[0] = T(1.0) - xint_old;
182 sx_old[1] = xint_old;
184 const T xint_new = xnew - T(j);
185 sx_new[0] = T(1.0) - xint_new;
186 sx_new[1] = xint_new;
189 else if constexpr (depos_order == 2){
190 const auto j =
static_cast<int>(xmid + T(0.5));
191 const T xint_old = xold - T(j);
192 sx_old[0] = T(0.5)*(T(0.5) - xint_old)*(T(0.5) - xint_old);
193 sx_old[1] = T(0.75) - xint_old*xint_old;
194 sx_old[2] = T(0.5)*(T(0.5) + xint_old)*(T(0.5) + xint_old);
196 const T xint_new = xnew - T(j);
197 sx_new[0] = T(0.5)*(T(0.5) - xint_new)*(T(0.5) - xint_new);
198 sx_new[1] = T(0.75) - xint_new*xint_new;
199 sx_new[2] = T(0.5)*(T(0.5) + xint_new)*(T(0.5) + xint_new);
203 else if constexpr (depos_order == 3){
204 const auto j =
static_cast<int>(xmid);
205 const T xint_old = xold - T(j);
206 sx_old[0] = T(1.0)/T(6.0)*(T(1.0) - xint_old)*(T(1.0) - xint_old)*(T(1.0) - xint_old);
207 sx_old[1] = T(2.0)/T(3.0) - xint_old*xint_old*(T(1.0) - xint_old/(T(2.0)));
208 sx_old[2] = T(2.0)/T(3.0) - (T(1.0) - xint_old)*(T(1.0) - xint_old)*(T(1.0) - T(0.5)*(T(1.0) - xint_old));
209 sx_old[3] = T(1.0)/T(6.0)*xint_old*xint_old*xint_old;
211 const T xint_new = xnew - T(j);
212 sx_new[0] = T(1.0)/T(6.0)*(T(1.0) - xint_new)*(T(1.0) - xint_new)*(T(1.0) - xint_new);
213 sx_new[1] = T(2.0)/T(3.0) - xint_new*xint_new*(T(1.0) - xint_new/(T(2.0)));
214 sx_new[2] = T(2.0)/T(3.0) - (T(1.0) - xint_new)*(T(1.0) - xint_new)*(T(1.0) - T(0.5)*(T(1.0) - xint_new));
215 sx_new[3] = T(1.0)/T(6.0)*xint_new*xint_new*xint_new;
219 else if constexpr (depos_order == 4){
220 const auto j =
static_cast<int>(xmid + T(0.5));
221 const T xint_old = xold - T(j);
222 sx_old[0] = (T(1.0))/(T(24.0))*(T(0.5) - xint_old)*(T(0.5) - xint_old)*(T(0.5) - xint_old)*(T(0.5) - xint_old);
223 sx_old[1] = (T(1.0))/(T(24.0))*(T(4.75) - T(11.0)*xint_old + T(4.0)*xint_old*xint_old*(T(1.5) + xint_old - xint_old*xint_old));
224 sx_old[2] = (T(1.0))/(T(24.0))*(T(14.375) + T(6.0)*xint_old*xint_old*(xint_old*xint_old - T(2.5)));
225 sx_old[3] = (T(1.0))/(T(24.0))*(T(4.75) + T(11.0)*xint_old + T(4.0)*xint_old*xint_old*(T(1.5) - xint_old - xint_old*xint_old));
226 sx_old[4] = (T(1.0))/(T(24.0))*(T(0.5) + xint_old)*(T(0.5) + xint_old)*(T(0.5) + xint_old)*(T(0.5)+xint_old);
228 const T xint_new = xnew - T(j);
229 sx_new[0] = (T(1.0))/(T(24.0))*(T(0.5) - xint_new)*(T(0.5) - xint_new)*(T(0.5) - xint_new)*(T(0.5) - xint_new);
230 sx_new[1] = (T(1.0))/(T(24.0))*(T(4.75) - T(11.0)*xint_new + T(4.0)*xint_new*xint_new*(T(1.5) + xint_new - xint_new*xint_new));
231 sx_new[2] = (T(1.0))/(T(24.0))*(T(14.375) + T(6.0)*xint_new*xint_new*(xint_new*xint_new - T(2.5)));
232 sx_new[3] = (T(1.0))/(T(24.0))*(T(4.75) + T(11.0)*xint_new + T(4.0)*xint_new*xint_new*(T(1.5) - xint_new - xint_new*xint_new));
233 sx_new[4] = (T(1.0))/(T(24.0))*(T(0.5) + xint_new)*(T(0.5) + xint_new)*(T(0.5) + xint_new)*(T(0.5)+xint_new);