12#include "Decomposition/CartDecomposition.hpp"
13#include "DCPSE/Dcpse.hpp"
14#include "Operators/Vector/vector_dist_operators.hpp"
16#include "DCPSE/Dcpse.cuh"
20const double dcpse_oversampling_factor = 1.9;
21const double rcut_verlet = 3.1;
29template<
typename exp1,
typename DCPSE_type>
38 typedef std::false_type is_ker;
40 typedef std::false_type NN_type;
42 typedef std::false_type is_sort;
44 typedef typename exp1::vtype vtype;
55 inline void init()
const {
66 template<
typename r_type=
typename std::remove_reference<
decltype(o1.value(
vect_dist_key_dx()))>::type>
68 return dcp.computeDifferentialOperator(key, o1);
71 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
72 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
73 unsigned int comp)
const {
75 for (
int j = 0; j < dcp.getNumNN(key); j++) {
76 auto coeff_dc = dcp.getCoeffNN(key, j);
77 auto k = dcp.getIndexNN(key, j);
79 auto k_coeff = coeff_dc * coeff * dcp.getEpsilonInvPrefactor(key);
80 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
82 auto kk_coeff = dcp.getSign() * coeff_dc * coeff * dcp.getEpsilonInvPrefactor(key);
83 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
95 return o1.getVector();
105 const vtype &getVector()
const {
106 return o1.getVector();
110template<
typename exp1,
typename DCPSE_type>
115 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
117 static const int dims = DCPSE_type::vtype::dims;
118 typedef typename DCPSE_type::vtype::stype stype;
122 typedef std::false_type is_ker;
124 typedef std::false_type NN_type;
126 typedef std::false_type is_sort;
128 typedef typename exp1::vtype vtype;
132 : o1(o1), dcp(dcp) {}
139 inline void init()
const {
150 template<
typename r_type=VectorS<dims, stype> >
154 for (
int i = 0; i < dims; i++) {
155 v_grad.
get(i) = dcp[i].computeDifferentialOperator(key, o1);
161 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
162 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
163 unsigned int comp)
const {
164 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
166 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
167 auto coeff_dc = dcp[i].getCoeffNN(key, j);
168 auto k = dcp[i].getIndexNN(key, j);
170 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
171 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
173 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
174 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
192 return o1.getVector();
202 const vtype &getVector()
const {
203 return o1.getVector();
209template<
typename exp1,
typename DCPSE_type>
214 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
216 static const int dims = DCPSE_type::vtype::dims;
217 typedef typename DCPSE_type::vtype::stype stype;
221 typedef std::false_type is_ker;
223 typedef std::false_type NN_type;
225 typedef std::false_type is_sort;
227 typedef typename exp1::vtype vtype;
231 : o1(o1), dcp(dcp) {}
238 inline void init()
const {
249 template<
typename r_type=VectorS<dims, stype> >
252 v_grad.
get(0) = dcp[0].computeDifferentialOperator(key, o1);
253 v_grad.
get(1) = -dcp[1].computeDifferentialOperator(key, o1);
258 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
259 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
260 unsigned int comp)
const {
261 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
263 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
264 auto coeff_dc = dcp[i].getCoeffNN(key, j);
265 auto k = dcp[i].getIndexNN(key, j);
267 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
268 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
270 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
271 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
289 return o1.getVector();
299 const vtype &getVector()
const {
300 return o1.getVector();
316 typedef std::false_type is_ker;
318 typedef std::false_type NN_type;
320 typedef std::false_type is_sort;
325 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
326 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
327 unsigned int comp)
const {
328 if (l1.template get<0>(i) != key.
getKey()) {
329 std::cout <<
"ERROR" << std::endl;
332 cols[p_map.template getProp<0>(key) * Sys_eqs::nvar + comp] += coeff;
333 std::cout <<
"L2: " << l2.template get<0>(i) << std::endl;
334 cols[p_map.template getProp<0>(l2.template get<0>(i)) * Sys_eqs::nvar + comp] -= coeff;
351 typedef std::false_type is_ker;
353 typedef std::false_type NN_type;
355 typedef std::false_type is_sort;
358 : l1(l1), l2_key(l2_key) {}
360 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
361 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
362 unsigned int comp)
const {
363 if (l1.template get<0>(i) != key.
getKey()) {
364 std::cout <<
"ERROR" << std::endl;
367 cols[p_map.template getProp<0>(key) * Sys_eqs::nvar + comp] += coeff;
368 cols[p_map.template getProp<0>(l2_key) * Sys_eqs::nvar + comp] -= coeff;
374template<
typename exp1,
typename DCPSE_type>
379 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
381 static const int dims = DCPSE_type::vtype::dims;
382 typedef typename DCPSE_type::vtype::stype stype;
386 typedef std::false_type is_ker;
388 typedef std::false_type NN_type;
390 typedef std::false_type is_sort;
392 typedef typename exp1::vtype vtype;
395 : o1(o1), dcp(dcp) {}
397 inline void init()
const {
401 template<
typename r_type=
typename std::remove_reference<
decltype(o1.value(
vect_dist_key_dx(0)))>::type>
404 typename std::remove_reference<
decltype(o1.value(key))>::type v_lap;
408 for (
int i = 0; i < dims; i++) {
409 v_lap += dcp[i].computeDifferentialOperator(key, o1);
415 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
416 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
417 unsigned int comp)
const {
418 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
420 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
421 auto coeff_dc = dcp[i].getCoeffNN(key, j);
422 auto k = dcp[i].getIndexNN(key, j);
424 auto coeff_k = coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
425 o1.template value_nz<Sys_eqs>(p_map, k, cols, coeff_k, comp);
427 auto coeff_kk = dcp[i].getSign() * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
428 o1.template value_nz<Sys_eqs>(p_map, key, cols, coeff_kk, comp);
441 return o1.getVector();
451 const vtype &getVector()
const {
452 return o1.getVector();
457template<
typename exp1,
typename DCPSE_type>
462 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
464 static const int dims = DCPSE_type::vtype::dims;
465 typedef typename DCPSE_type::vtype::stype stype;
469 typedef std::false_type is_ker;
471 typedef std::false_type NN_type;
473 typedef std::false_type is_sort;
475 typedef typename exp1::vtype vtype;
478 : o1(o1), dcp(dcp) {}
480 inline void init()
const {
484 template<
typename r_type=
typename std::remove_reference<
decltype(o1.value(
vect_dist_key_dx(0)))>::type::coord_type>
488 typename std::remove_reference<
decltype(o1.value(key))>::type::coord_type v_div;
491 for (
int i = 0; i < dims; i++) {
492 v_div += dcp[i].computeDifferentialOperator(key, o1, i);
498 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
499 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
500 unsigned int comp)
const {
501 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
503 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
504 auto coeff_dc = dcp[i].getCoeffNN(key, j);
505 auto k = dcp[i].getIndexNN(key, j);
507 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
508 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
510 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
511 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
529 return o1.getVector();
539 const vtype &getVector()
const {
540 return o1.getVector();
544template<
typename exp1,
typename exp2_pr>
546 typedef typename std::tuple_element<1, exp2_pr>::type DCPSE_type;
547 typedef typename std::tuple_element<0, exp2_pr>::type exp2;
553 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
555 static const int dims = DCPSE_type::vtype::dims;
556 typedef typename DCPSE_type::vtype::stype stype;
560 typedef std::false_type is_ker;
562 typedef std::false_type NN_type;
564 typedef std::false_type is_sort;
572 : o1(o1), o2(o2), dcp(dcp) {}
574 inline void init()
const {
580 template<
typename r_type=
typename std::remove_reference<
decltype(o2.value(
vect_dist_key_dx(0)))>::type>
583 typename std::remove_reference<
decltype(o2.value(key))>::type adv;
585 for (
int i = 0; i < dims; i++) {
586 adv += o1.value(key)[i] * dcp[i].computeDifferentialOperator(key, o2);
593 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
594 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
595 unsigned int comp)
const {
596 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
598 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
599 auto coeff_dc = dcp[i].getCoeffNN(key, j);
600 auto k = dcp[i].getIndexNN(key, j);
602 auto k_coeff = o1.value(k) * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
603 o2.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
606 o1.value(key) * dcp[i].getSign() * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
607 o2.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
633 const vtype &getVector()
const {
666template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
667class Derivative_x_T {
684 template<
typename particles_type>
685 Derivative_x_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
686 double oversampling_factor = dcpse_oversampling_factor,
687 support_options opt = support_options::RADIUS) {
692 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
695 template<
typename particles_type>
697 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
700 template<
typename operand_type>
702 operator()(operand_type arg) {
703 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
708 template<
unsigned int prp,
typename particles_type>
710 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
711 dcpse_temp->template DrawKernel<prp>(
particles, k);
715 template<
unsigned int prp,
typename particles_type>
717 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
718 dcpse_temp->template DrawKernelNN<prp>(
particles, k);
722 template<
typename particles_type>
724 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
734 template<
typename particles_type>
736 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
737 dcpse_temp->save(file);
744 template<
typename particles_type>
746 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
747 dcpse_temp->load(file);
754 template<
typename particles_type>
756 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
775template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
776class Derivative_y_T {
794 template<
typename particles_type>
795 Derivative_y_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
796 double oversampling_factor = dcpse_oversampling_factor,
797 support_options opt = support_options::RADIUS) {
802 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
805 template<
typename particles_type>
807 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
810 template<
typename operand_type>
813 operator()(operand_type arg) {
814 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
819 template<
unsigned int prp,
typename particles_type>
821 auto dcpse2 = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
822 dcpse2->template DrawKernel<prp>(
particles, k);
826 template<
typename particles_type>
828 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
838 template<
typename particles_type>
840 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
841 dcpse_temp->save(file);
848 template<
typename particles_type>
850 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
851 dcpse_temp->load(file);
858 template<
typename particles_type>
860 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
878template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
879class Derivative_z_T {
896 template<
typename particles_type>
897 Derivative_z_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
898 double oversampling_factor = dcpse_oversampling_factor,
899 support_options opt = support_options::RADIUS) {
904 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
907 template<
typename particles_type>
909 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
912 template<
typename operand_type>
914 operator()(operand_type arg) {
915 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
925 template<
typename particles_type>
927 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
928 dcpse_temp->save(file);
935 template<
typename particles_type>
937 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
938 dcpse_temp->load(file);
945 template<
typename particles_type>
947 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
952 template<
typename particles_type>
954 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
975template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
995 template<
typename particles_type>
996 Gradient_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
997 double oversampling_factor = dcpse_oversampling_factor,
998 support_options opt = support_options::RADIUS) {
999 typedef Dcpse_type<particles_type::dims, particles_type> DCPSE_type;
1003 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1011 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, dcpse_ptr[0], p, ord, rCut, oversampling_factor, opt);
1013 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1017 template<
typename particles_type>
1020 delete &(((Dcpse_type<particles_type::dims, particles_type> *) dcpse)[i]);
1024 template<
typename operand_type>
1026 operator()(operand_type arg) {
1027 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1030 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1033 template<
unsigned int prp,
typename particles_type>
1035 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1038 dcpse_ptr[i].template DrawKernel<prp>(
particles, i, k);
1048 template<
typename particles_type>
1050 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1052 dcpse_ptr[i].initializeUpdate(
particles);
1073template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1092 template<
typename particles_type>
1093 Curl2D_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1094 double oversampling_factor = dcpse_oversampling_factor, support_options opt = support_options::RADIUS) {
1095 typedef Dcpse_type<particles_type::dims, particles_type> DCPSE_type;
1099 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1104 new(dcpse_ptr) Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1108 new(dcpse_ptr+1) Dcpse_type<particles_type::dims, particles_type>(parts, dcpse_ptr[0], p, ord, rCut, oversampling_factor, opt);
1112 template<
typename operand_type>
1114 operator()(operand_type arg) {
1115 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1118 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1135template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1155 template<
typename particles_type>
1156 Laplacian_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1157 double oversampling_factor = dcpse_oversampling_factor,
1158 support_options opt = support_options::RADIUS) {
1159 typedef Dcpse_type<particles_type::dims, particles_type> DCPSE_type;
1162 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1170 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, dcpse_ptr[0], p, ord, rCut, oversampling_factor, opt);
1172 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1176 template<
typename operand_type>
1178 operator()(operand_type arg) {
1179 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1182 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1186 template<
typename particles_type>
1188 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1196 template<
unsigned int prp,
typename particles_type>
1198 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1201 dcpse_ptr[i].template DrawKernel<prp>(
particles, k);
1205 template<
typename particles_type>
1207 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1214 template<
typename particles_type>
1216 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1218 dcpse_ptr[i].initializeUpdate(
particles);
1240template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1260 template<
typename particles_type>
1261 Divergence_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1262 double oversampling_factor = dcpse_oversampling_factor,
1263 support_options opt = support_options::RADIUS) {
1264 typedef Dcpse_type<particles_type::dims, particles_type> DCPSE_type;
1268 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1276 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, dcpse_ptr[0], p, ord, rCut, oversampling_factor, opt);
1278 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1282 template<
typename operand_type>
1284 operator()(operand_type arg) {
1285 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1288 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1296 template<
typename particles_type>
1298 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1300 dcpse_ptr[i].initializeUpdate(
particles);
1321template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1341 template<
typename particles_type>
1342 Advection_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1343 double oversampling_factor = dcpse_oversampling_factor,
1344 support_options opt = support_options::RADIUS) {
1345 typedef Dcpse_type<particles_type::dims, particles_type> DCPSE_type;
1349 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1357 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, dcpse_ptr[0], p, ord, rCut, oversampling_factor, opt);
1359 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1365 template<
typename operand_type1,
typename operand_type2>
1367 operator()(operand_type1 arg, operand_type2 arg2) {
1368 typedef Dcpse_type<operand_type2::vtype::dims, typename operand_type2::vtype> dcpse_type;
1372 *(dcpse_type(*)[operand_type2::vtype::dims]) dcpse);
1375 template<
typename particles_type>
1377 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1385 template<
unsigned int prp,
typename particles_type>
1387 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1390 dcpse_ptr[i].template DrawKernel<prp>(
particles, i, k);
1400 template<
typename particles_type>
1402 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1404 dcpse_ptr[i].initializeUpdate(
particles);
1424template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1425class Derivative_xy_T {
1442 template<
typename particles_type>
1443 Derivative_xy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1444 double oversampling_factor = dcpse_oversampling_factor,
1445 support_options opt = support_options::RADIUS) {
1451 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1454 template<
typename particles_type>
1456 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1459 template<
typename operand_type>
1461 operator()(operand_type arg) {
1462 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1467 template<
unsigned int prp,
typename particles_type>
1469 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1471 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
1475 template<
typename particles_type>
1477 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1487 template<
typename particles_type>
1489 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1490 dcpse_temp->save(file);
1497 template<
typename particles_type>
1499 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1500 dcpse_temp->load(file);
1507 template<
typename particles_type>
1509 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1510 dcpse_temp->initializeUpdate(
particles);
1526template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1527class Derivative_yz_T {
1544 template<
typename particles_type>
1545 Derivative_yz_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1546 double oversampling_factor = dcpse_oversampling_factor,
1547 support_options opt = support_options::RADIUS) {
1553 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1556 template<
typename particles_type>
1558 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1561 template<
typename operand_type>
1563 operator()(operand_type arg) {
1564 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1569 template<
unsigned int prp,
typename particles_type>
1571 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1573 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
1577 template<
typename particles_type>
1579 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1589 template<
typename particles_type>
1591 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1592 dcpse_temp->save(file);
1599 template<
typename particles_type>
1601 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1602 dcpse_temp->load(file);
1609 template<
typename particles_type>
1611 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1612 dcpse_temp->initializeUpdate(
particles);
1628template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1629class Derivative_xz_T {
1646 template<
typename particles_type>
1647 Derivative_xz_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1648 double oversampling_factor = dcpse_oversampling_factor,
1649 support_options opt = support_options::RADIUS) {
1655 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1658 template<
typename particles_type>
1660 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1663 template<
typename operand_type>
1665 operator()(operand_type arg) {
1666 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1671 template<
unsigned int prp,
typename particles_type>
1673 Dcpse_type<particles_type::dims, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1675 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
1679 template<
typename particles_type>
1681 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1691 template<
typename particles_type>
1693 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1694 dcpse_temp->save(file);
1701 template<
typename particles_type>
1703 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1704 dcpse_temp->load(file);
1711 template<
typename particles_type>
1713 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1714 dcpse_temp->initializeUpdate(
particles);
1731template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1732class Derivative_xx_T {
1749 template<
typename particles_type>
1750 Derivative_xx_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1751 double oversampling_factor = dcpse_oversampling_factor,
1752 support_options opt = support_options::RADIUS) {
1758 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1761 template<
typename particles_type>
1763 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1766 template<
typename operand_type>
1768 operator()(operand_type arg) {
1769 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1774 template<
typename particles_type>
1776 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1781 template<
unsigned int prp,
typename particles_type>
1783 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1784 dcpse_temp->template DrawKernel<prp>(
particles, k);
1793 template<
typename particles_type>
1795 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1796 dcpse_temp->save(file);
1803 template<
typename particles_type>
1805 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1806 dcpse_temp->load(file);
1813 template<
typename particles_type>
1815 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1816 dcpse_temp->initializeUpdate(
particles);
1833template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1834class Derivative_yy_T {
1851 template<
typename particles_type>
1852 Derivative_yy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1853 double oversampling_factor = dcpse_oversampling_factor,
1854 support_options opt = support_options::RADIUS) {
1860 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1863 template<
typename particles_type>
1865 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1868 template<
typename operand_type>
1870 operator()(operand_type arg) {
1871 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1876 template<
typename particles_type>
1878 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1883 template<
unsigned int prp,
typename particles_type>
1885 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1886 dcpse_temp->template DrawKernel<prp>(
particles, k);
1895 template<
typename particles_type>
1897 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1898 dcpse_temp->save(file);
1905 template<
typename particles_type>
1907 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1908 dcpse_temp->load(file);
1915 template<
typename particles_type>
1917 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1918 dcpse_temp->initializeUpdate(
particles);
1934template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1935class Derivative_zz_T {
1952 template<
typename particles_type>
1953 Derivative_zz_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
1954 double oversampling_factor = dcpse_oversampling_factor,
1955 support_options opt = support_options::RADIUS) {
1960 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
1963 template<
typename particles_type>
1965 delete (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1968 template<
typename operand_type>
1970 operator()(operand_type arg) {
1971 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
1976 template<
typename particles_type>
1978 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1983 template<
unsigned int prp,
typename particles_type>
1985 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1986 dcpse_temp->template DrawKernel<prp>(
particles, k);
1995 template<
typename particles_type>
1997 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
1998 dcpse_temp->save(file);
2005 template<
typename particles_type>
2007 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2008 dcpse_temp->load(file);
2015 template<
typename particles_type>
2017 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2018 dcpse_temp->initializeUpdate(
particles);
2023template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2024class Derivative_xxx_T {
2030 template<
typename particles_type>
2031 Derivative_xxx_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2032 double oversampling_factor = dcpse_oversampling_factor,
2033 support_options opt = support_options::RADIUS) {
2039 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2042 template<
typename operand_type>
2045 operator()(operand_type arg) {
2046 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2051 template<
typename particles_type>
2053 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2058 template<
unsigned int prp,
typename particles_type>
2060 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2061 dcpse_temp->template DrawKernel<prp>(
particles, k);
2070 template<
typename particles_type>
2072 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2073 dcpse_temp->save(file);
2080 template<
typename particles_type>
2082 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2083 dcpse_temp->load(file);
2090 template<
typename particles_type>
2092 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2093 dcpse_temp->initializeUpdate(
particles);
2098template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2099class Derivative_xxy_T {
2105 template<
typename particles_type>
2106 Derivative_xxy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2107 double oversampling_factor = dcpse_oversampling_factor,
2108 support_options opt = support_options::RADIUS) {
2114 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2117 template<
typename operand_type>
2120 operator()(operand_type arg) {
2121 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2126 template<
typename particles_type>
2128 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2133 template<
unsigned int prp,
typename particles_type>
2135 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2136 dcpse_temp->template DrawKernel<prp>(
particles, k);
2145 template<
typename particles_type>
2147 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2148 dcpse_temp->save(file);
2155 template<
typename particles_type>
2157 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2158 dcpse_temp->load(file);
2165 template<
typename particles_type>
2167 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2168 dcpse_temp->initializeUpdate(
particles);
2173template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2174class Derivative_yyx_T {
2180 template<
typename particles_type>
2181 Derivative_yyx_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2182 double oversampling_factor = dcpse_oversampling_factor,
2183 support_options opt = support_options::RADIUS) {
2189 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2192 template<
typename operand_type>
2195 operator()(operand_type arg) {
2196 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2201 template<
typename particles_type>
2203 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2208 template<
unsigned int prp,
typename particles_type>
2210 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2211 dcpse_temp->template DrawKernel<prp>(
particles, k);
2220 template<
typename particles_type>
2222 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2223 dcpse_temp->save(file);
2230 template<
typename particles_type>
2232 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2233 dcpse_temp->load(file);
2240 template<
typename particles_type>
2242 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2243 dcpse_temp->initializeUpdate(
particles);
2248template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2249class Derivative_yyy_T {
2255 template<
typename particles_type>
2256 Derivative_yyy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2257 double oversampling_factor = dcpse_oversampling_factor,
2258 support_options opt = support_options::RADIUS) {
2264 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2267 template<
typename operand_type>
2270 operator()(operand_type arg) {
2271 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2276 template<
typename particles_type>
2278 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2283 template<
unsigned int prp,
typename particles_type>
2285 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2286 dcpse_temp->template DrawKernel<prp>(
particles, k);
2295 template<
typename particles_type>
2297 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2298 dcpse_temp->save(file);
2305 template<
typename particles_type>
2307 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2308 dcpse_temp->load(file);
2315 template<
typename particles_type>
2317 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2318 dcpse_temp->initializeUpdate(
particles);
2324template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2325class Derivative_xxxx_T {
2331 template<
typename particles_type>
2332 Derivative_xxxx_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2333 double oversampling_factor = dcpse_oversampling_factor,
2334 support_options opt = support_options::RADIUS) {
2340 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2343 template<
typename operand_type>
2346 operator()(operand_type arg) {
2347 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2352 template<
typename particles_type>
2354 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2359 template<
unsigned int prp,
typename particles_type>
2361 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2362 dcpse_temp->template DrawKernel<prp>(
particles, k);
2371 template<
typename particles_type>
2373 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2374 dcpse_temp->save(file);
2381 template<
typename particles_type>
2383 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2384 dcpse_temp->load(file);
2391 template<
typename particles_type>
2393 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2394 dcpse_temp->initializeUpdate(
particles);
2400template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2401class Derivative_yyyy_T {
2407 template<
typename particles_type>
2408 Derivative_yyyy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2409 double oversampling_factor = dcpse_oversampling_factor,
2410 support_options opt = support_options::RADIUS) {
2416 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2419 template<
typename operand_type>
2422 operator()(operand_type arg) {
2423 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2428 template<
typename particles_type>
2430 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2435 template<
unsigned int prp,
typename particles_type>
2437 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2438 dcpse_temp->template DrawKernel<prp>(
particles, k);
2447 template<
typename particles_type>
2449 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2450 dcpse_temp->save(file);
2457 template<
typename particles_type>
2459 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2460 dcpse_temp->load(file);
2467 template<
typename particles_type>
2469 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2470 dcpse_temp->initializeUpdate(
particles);
2475template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2476class Derivative_xxyy_T {
2482 template<
typename particles_type>
2483 Derivative_xxyy_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2484 double oversampling_factor = dcpse_oversampling_factor,
2485 support_options opt = support_options::RADIUS) {
2491 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2494 template<
typename operand_type>
2497 operator()(operand_type arg) {
2498 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2503 template<
typename particles_type>
2505 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2510 template<
unsigned int prp,
typename particles_type>
2512 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2513 dcpse_temp->template DrawKernel<prp>(
particles, k);
2522 template<
typename particles_type>
2524 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2525 dcpse_temp->save(file);
2532 template<
typename particles_type>
2534 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2535 dcpse_temp->load(file);
2542 template<
typename particles_type>
2544 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2545 dcpse_temp->initializeUpdate(
particles);
2551template<
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2552class Derivative_G_T {
2558 template<
typename particles_type>
2559 Derivative_G_T(
particles_type &parts,
unsigned int ord,
typename particles_type::stype rCut,
2561 support_options opt = support_options::RADIUS) {
2562 dcpse =
new Dcpse_type<particles_type::dims, particles_type>(parts, p, ord, rCut, oversampling_factor, opt);
2565 template<
typename operand_type>
2567 operator()(operand_type arg) {
2568 typedef Dcpse_type<operand_type::vtype::dims, typename operand_type::vtype> dcpse_type;
2573 template<
typename particles_type>
2575 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2580 template<
unsigned int prp,
typename particles_type>
2582 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2583 dcpse_temp->template DrawKernel<prp>(
particles, k);
2592 template<
typename particles_type>
2594 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2595 dcpse_temp->save(file);
2602 template<
typename particles_type>
2604 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2605 dcpse_temp->load(file);
2612 template<
typename particles_type>
2614 auto dcpse_temp = (Dcpse_type<particles_type::dims, particles_type> *) dcpse;
2615 dcpse_temp->initializeUpdate(
particles);
2621typedef Derivative_x_T<Dcpse> Derivative_x;
2622typedef Derivative_y_T<Dcpse> Derivative_y;
2623typedef Derivative_z_T<Dcpse> Derivative_z;
2624typedef Gradient_T<Dcpse> Gradient;
2625typedef Curl2D_T<Dcpse> Curl2D;
2626typedef Laplacian_T<Dcpse> Laplacian;
2627typedef Divergence_T<Dcpse> Divergence;
2628typedef Advection_T<Dcpse> Advection;
2629typedef Derivative_xy_T<Dcpse> Derivative_xy;
2630typedef Derivative_yz_T<Dcpse> Derivative_yz;
2631typedef Derivative_xz_T<Dcpse> Derivative_xz;
2632typedef Derivative_xx_T<Dcpse> Derivative_xx;
2633typedef Derivative_yy_T<Dcpse> Derivative_yy;
2634typedef Derivative_zz_T<Dcpse> Derivative_zz;
2635typedef Derivative_xxx_T<Dcpse> Derivative_xxx;
2636typedef Derivative_xxy_T<Dcpse> Derivative_xxy;
2637typedef Derivative_yyx_T<Dcpse> Derivative_yyx;
2638typedef Derivative_yyy_T<Dcpse> Derivative_yyy;
2639typedef Derivative_xxxx_T<Dcpse> Derivative_xxxx;
2640typedef Derivative_yyyy_T<Dcpse> Derivative_yyyy;
2641typedef Derivative_xxyy_T<Dcpse> Derivative_xxyy;
2642typedef Derivative_G_T<Dcpse> Derivative_G;
2645#if defined(__NVCC__)
2646typedef Derivative_x_T<Dcpse_gpu> Derivative_x_gpu;
2647typedef Derivative_y_T<Dcpse_gpu> Derivative_y_gpu;
2648typedef Derivative_z_T<Dcpse_gpu> Derivative_z_gpu;
2649typedef Gradient_T<Dcpse_gpu> Gradient_gpu;
2650typedef Curl2D_T<Dcpse_gpu> Curl2D_gpu;
2651typedef Laplacian_T<Dcpse_gpu> Laplacian_gpu;
2652typedef Divergence_T<Dcpse_gpu> Divergence_gpu;
2653typedef Advection_T<Dcpse_gpu> Advection_gpu;
2654typedef Derivative_xy_T<Dcpse_gpu> Derivative_xy_gpu;
2655typedef Derivative_yz_T<Dcpse_gpu> Derivative_yz_gpu;
2656typedef Derivative_xz_T<Dcpse_gpu> Derivative_xz_gpu;
2657typedef Derivative_xx_T<Dcpse_gpu> Derivative_xx_gpu;
2658typedef Derivative_yy_T<Dcpse_gpu> Derivative_yy_gpu;
2659typedef Derivative_zz_T<Dcpse_gpu> Derivative_zz_gpu;
2660typedef Derivative_xxx_T<Dcpse_gpu> Derivative_xxx_gpu;
2661typedef Derivative_xxy_T<Dcpse_gpu> Derivative_xxy_gpu;
2662typedef Derivative_yyx_T<Dcpse_gpu> Derivative_yyx_gpu;
2663typedef Derivative_yyy_T<Dcpse_gpu> Derivative_yyy_gpu;
2664typedef Derivative_G_T<Dcpse_gpu> Derivative_G_gpu;
This class implement the point shape in an N-dimensional space.
__device__ __host__ void zero()
Set to zero the point coordinate.
__device__ __host__ const T & get(unsigned int i) const
Get coordinate.
Implementation of 1-D std::vector like structure.
Grid key for a distributed grid.
__device__ __host__ size_t getKey() const
Get the key.
Unknown operation specialization.
static const unsigned int dims
template parameters typedefs
KeyT const ValueT ValueT OffsetIteratorT OffsetIteratorT int
[in] The number of segments that comprise the sorting data
OutputIteratorT OffsetT ReductionOpT OuputT init
< [in] The initial value of the reduction
aggregate of properties, from a list of object if create a struct that follow the OPENFPM native stru...