12 #include "Decomposition/CartDecomposition.hpp"
13 #include "DCPSE/Dcpse.hpp"
14 #include "Operators/Vector/vector_dist_operators.hpp"
16 #include "DCPSE/Dcpse.cuh"
20 const double dcpse_oversampling_factor = 1.9;
21 const double rcut_verlet = 3.1;
29 template<
typename exp1,
typename DCPSE_type>
38 typedef std::false_type is_ker;
40 typedef std::false_type NN_type;
42 typedef typename exp1::vtype vtype;
53 inline void init()
const {
64 template<
typename r_type=
typename std::remove_reference<decltype(o1.value(
vect_dist_key_dx()))>::type>
66 return dcp.computeDifferentialOperator(key, o1);
69 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
70 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
71 unsigned int comp)
const {
73 for (
int j = 0; j < dcp.getNumNN(key); j++) {
74 auto coeff_dc = dcp.getCoeffNN(key, j);
75 auto k = dcp.getIndexNN(key, j);
77 auto k_coeff = coeff_dc * coeff * dcp.getEpsilonInvPrefactor(key);
78 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
80 auto kk_coeff = dcp.getSign() * coeff_dc * coeff * dcp.getEpsilonInvPrefactor(key);
81 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
93 return o1.getVector();
103 const vtype &getVector()
const {
104 return o1.getVector();
108 template<
typename exp1,
typename DCPSE_type>
113 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
115 static const int dims = DCPSE_type::vtype::dims;
116 typedef typename DCPSE_type::vtype::stype stype;
120 typedef std::false_type is_ker;
122 typedef std::false_type NN_type;
124 typedef typename exp1::vtype vtype;
128 : o1(o1), dcp(dcp) {}
135 inline void init()
const {
146 template<
typename r_type=VectorS<dims, stype> >
150 for (
int i = 0; i < dims; i++) {
151 v_grad.
get(i) = dcp[i].computeDifferentialOperator(key, o1);
157 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
158 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
159 unsigned int comp)
const {
160 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
162 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
163 auto coeff_dc = dcp[i].getCoeffNN(key, j);
164 auto k = dcp[i].getIndexNN(key, j);
166 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
167 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
169 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
170 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
188 return o1.getVector();
198 const vtype &getVector()
const {
199 return o1.getVector();
205 template<
typename exp1,
typename DCPSE_type>
210 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
212 static const int dims = DCPSE_type::vtype::dims;
213 typedef typename DCPSE_type::vtype::stype stype;
217 typedef std::false_type is_ker;
219 typedef std::false_type NN_type;
221 typedef typename exp1::vtype vtype;
225 : o1(o1), dcp(dcp) {}
232 inline void init()
const {
243 template<
typename r_type=VectorS<dims, stype> >
246 v_grad.
get(0) = dcp[0].computeDifferentialOperator(key, o1);
247 v_grad.
get(1) = -dcp[1].computeDifferentialOperator(key, o1);
252 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
253 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
254 unsigned int comp)
const {
255 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
257 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
258 auto coeff_dc = dcp[i].getCoeffNN(key, j);
259 auto k = dcp[i].getIndexNN(key, j);
261 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
262 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
264 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
265 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
283 return o1.getVector();
293 const vtype &getVector()
const {
294 return o1.getVector();
310 typedef std::false_type is_ker;
312 typedef std::false_type NN_type;
317 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
318 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
319 unsigned int comp)
const {
320 if (l1.template get<0>(i) != key.
getKey()) {
321 std::cout <<
"ERROR" << std::endl;
324 cols[p_map.template getProp<0>(key) * Sys_eqs::nvar + comp] += coeff;
325 std::cout <<
"L2: " << l2.template get<0>(i) << std::endl;
326 cols[p_map.template getProp<0>(l2.template get<0>(i)) * Sys_eqs::nvar + comp] -= coeff;
343 typedef std::false_type is_ker;
345 typedef std::false_type NN_type;
348 : l1(l1), l2_key(l2_key) {}
350 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
351 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
352 unsigned int comp)
const {
353 if (l1.template get<0>(i) != key.
getKey()) {
354 std::cout <<
"ERROR" << std::endl;
357 cols[p_map.template getProp<0>(key) * Sys_eqs::nvar + comp] += coeff;
358 cols[p_map.template getProp<0>(l2_key) * Sys_eqs::nvar + comp] -= coeff;
364 template<
typename exp1,
typename DCPSE_type>
369 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
371 static const int dims = DCPSE_type::vtype::dims;
372 typedef typename DCPSE_type::vtype::stype stype;
376 typedef std::false_type is_ker;
378 typedef std::false_type NN_type;
380 typedef typename exp1::vtype vtype;
383 : o1(o1), dcp(dcp) {}
385 inline void init()
const {
389 template<
typename r_type=
typename std::remove_reference<decltype(o1.value(
vect_dist_key_dx(0)))>::type>
392 typename std::remove_reference<decltype(o1.value(key))>::type v_lap;
396 for (
int i = 0; i < dims; i++) {
397 v_lap += dcp[i].computeDifferentialOperator(key, o1);
403 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
404 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
405 unsigned int comp)
const {
406 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
408 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
409 auto coeff_dc = dcp[i].getCoeffNN(key, j);
410 auto k = dcp[i].getIndexNN(key, j);
412 auto coeff_k = coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
413 o1.template value_nz<Sys_eqs>(p_map, k, cols, coeff_k, comp);
415 auto coeff_kk = dcp[i].getSign() * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
416 o1.template value_nz<Sys_eqs>(p_map, key, cols, coeff_kk, comp);
429 return o1.getVector();
439 const vtype &getVector()
const {
440 return o1.getVector();
445 template<
typename exp1,
typename DCPSE_type>
450 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
452 static const int dims = DCPSE_type::vtype::dims;
453 typedef typename DCPSE_type::vtype::stype stype;
457 typedef std::false_type is_ker;
459 typedef std::false_type NN_type;
461 typedef typename exp1::vtype vtype;
464 : o1(o1), dcp(dcp) {}
466 inline void init()
const {
470 template<
typename r_type=
typename std::remove_reference<decltype(o1.value(
vect_dist_key_dx(0)))>::type::coord_type>
474 typename std::remove_reference<decltype(o1.value(key))>::type::coord_type v_div;
477 for (
int i = 0; i < dims; i++) {
478 v_div += dcp[i].computeDifferentialOperator(key, o1, i);
484 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
485 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
486 unsigned int comp)
const {
487 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
489 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
490 auto coeff_dc = dcp[i].getCoeffNN(key, j);
491 auto k = dcp[i].getIndexNN(key, j);
493 auto k_coeff = coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
494 o1.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
496 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
497 o1.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
515 return o1.getVector();
525 const vtype &getVector()
const {
526 return o1.getVector();
530 template<
typename exp1,
typename exp2_pr>
532 typedef typename std::tuple_element<1, exp2_pr>::type DCPSE_type;
533 typedef typename std::tuple_element<0, exp2_pr>::type exp2;
539 DCPSE_type (&dcp)[DCPSE_type::vtype::dims];
541 static const int dims = DCPSE_type::vtype::dims;
542 typedef typename DCPSE_type::vtype::stype stype;
546 typedef std::false_type is_ker;
548 typedef std::false_type NN_type;
556 : o1(o1), o2(o2), dcp(dcp) {}
558 inline void init()
const {
564 template<
typename r_type=
typename std::remove_reference<decltype(o2.value(
vect_dist_key_dx(0)))>::type>
567 typename std::remove_reference<decltype(o2.value(key))>::type adv;
569 for (
int i = 0; i < dims; i++) {
570 adv += o1.value(key)[i] * dcp[i].computeDifferentialOperator(key, o2);
577 template<
typename Sys_eqs,
typename pmap_type,
typename unordered_map_type,
typename coeff_type>
578 inline void value_nz(pmap_type &p_map,
const vect_dist_key_dx &key, unordered_map_type &cols, coeff_type &coeff,
579 unsigned int comp)
const {
580 for (
int i = 0; i < DCPSE_type::vtype::dims; i++) {
582 for (
int j = 0; j < dcp[i].getNumNN(key); j++) {
583 auto coeff_dc = dcp[i].getCoeffNN(key, j);
584 auto k = dcp[i].getIndexNN(key, j);
586 auto k_coeff = o1.value(k) * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
587 o2.template value_nz<Sys_eqs>(p_map, k, cols, k_coeff, comp);
590 o1.value(key) * dcp[i].getSign() * coeff_dc * coeff * dcp[i].getEpsilonInvPrefactor(key);
591 o2.template value_nz<Sys_eqs>(p_map, key, cols, kk_coeff, comp);
617 const vtype &getVector()
const {
649 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
650 class Derivative_x_T {
666 template<
typename particles_type>
669 VerletList_type& verletList,
671 typename particles_type::stype rCut,
672 support_options opt = support_options::RADIUS
678 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
696 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
700 VerletList_type& verletList,
702 typename vector_type::stype rCut,
703 support_options opt = support_options::RADIUS
709 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
720 template<
typename particles_type>
722 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
725 template<
typename operand_type>
727 operator()(operand_type arg) {
728 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
733 template<
unsigned int prp,
typename particles_type>
735 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
736 dcpse_temp->template DrawKernel<prp>(
particles, k);
740 template<
unsigned int prp,
typename particles_type>
742 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
743 dcpse_temp->template DrawKernelNN<prp>(
particles, k);
747 template<
typename particles_type>
749 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
759 template<
typename particles_type>
761 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
762 dcpse_temp->save(file);
769 template<
typename particles_type>
771 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
772 dcpse_temp->load(file);
779 template<
typename particles_type>
781 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
799 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
800 class Derivative_y_T {
817 template<
typename particles_type>
820 VerletList_type& verletList,
822 typename particles_type::stype rCut,
823 support_options opt = support_options::RADIUS
829 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
847 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
851 VerletList_type& verletList,
853 typename vector_type::stype rCut,
854 support_options opt = support_options::RADIUS
860 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
871 template<
typename particles_type>
873 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
876 template<
typename operand_type>
879 operator()(operand_type arg) {
880 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
885 template<
unsigned int prp,
typename particles_type>
887 auto dcpse2 = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
888 dcpse2->template DrawKernel<prp>(
particles, k);
892 template<
typename particles_type>
894 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
904 template<
typename particles_type>
906 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
907 dcpse_temp->save(file);
914 template<
typename particles_type>
916 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
917 dcpse_temp->load(file);
924 template<
typename particles_type>
926 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
943 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
944 class Derivative_z_T {
960 template<
typename particles_type>
963 VerletList_type& verletList,
965 typename particles_type::stype rCut,
966 support_options opt = support_options::RADIUS
972 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
990 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
994 VerletList_type& verletList,
996 typename vector_type::stype rCut,
997 support_options opt = support_options::RADIUS
1003 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1014 template<
typename particles_type>
1016 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1019 template<
typename operand_type>
1021 operator()(operand_type arg) {
1022 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1032 template<
typename particles_type>
1034 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1035 dcpse_temp->save(file);
1042 template<
typename particles_type>
1044 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1045 dcpse_temp->load(file);
1052 template<
typename particles_type>
1054 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1055 dcpse_temp->initializeUpdate(
particles);
1059 template<
typename particles_type>
1061 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1081 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1100 template<
typename particles_type>
1103 VerletList_type& verletList,
1105 typename particles_type::stype rCut,
1106 support_options opt = support_options::RADIUS
1108 typedef Dcpse_type<particles_type::dims, VerletList_type, particles_type> DCPSE_type;
1112 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1119 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1139 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1143 VerletList_type& verletList,
1145 typename vector_type::stype rCut,
1146 support_options opt = support_options::RADIUS
1148 typedef Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> DCPSE_type;
1152 Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *dcpse_ptr = (Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *) dcpse;
1159 new(&dcpse_ptr[i]) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1171 template<
typename particles_type>
1174 delete &(((Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse)[i]);
1178 template<
typename operand_type>
1180 operator()(operand_type arg) {
1181 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1184 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1187 template<
unsigned int prp,
typename particles_type>
1189 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1192 dcpse_ptr[i].template DrawKernel<prp>(
particles, i, k);
1202 template<
typename particles_type>
1204 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1206 dcpse_ptr[i].initializeUpdate(
particles);
1226 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1244 template<
typename particles_type>
1247 VerletList_type& verletList,
1249 typename particles_type::stype rCut,
1250 support_options opt = support_options::RADIUS
1252 typedef Dcpse_type<particles_type::dims, VerletList_type, particles_type> DCPSE_type;
1256 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1261 new(dcpse_ptr) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1265 new(dcpse_ptr+1) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1286 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1290 VerletList_type& verletList,
1292 typename vector_type::stype rCut,
1293 support_options opt = support_options::RADIUS
1295 typedef Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> DCPSE_type;
1299 Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *dcpse_ptr = (Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *) dcpse;
1304 new(dcpse_ptr) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1316 new(dcpse_ptr+1) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1328 template<
typename operand_type>
1330 operator()(operand_type arg) {
1331 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1334 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1350 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1369 template<
typename particles_type>
1372 VerletList_type& verletList,
1374 typename particles_type::stype rCut,
1375 support_options opt = support_options::RADIUS
1377 typedef Dcpse_type<particles_type::dims, VerletList_type, particles_type> DCPSE_type;
1380 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1387 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1408 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1412 VerletList_type& verletList,
1414 typename vector_type::stype rCut,
1415 support_options opt = support_options::RADIUS
1417 typedef Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> DCPSE_type;
1420 Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *dcpse_ptr = (Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *) dcpse;
1427 new(&dcpse_ptr[i]) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1439 template<
typename operand_type>
1441 operator()(operand_type arg) {
1442 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1445 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1449 template<
typename particles_type>
1451 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1459 template<
unsigned int prp,
typename particles_type>
1461 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1464 dcpse_ptr[i].template DrawKernel<prp>(
particles, k);
1468 template<
typename particles_type>
1470 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1477 template<
typename particles_type>
1479 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1481 dcpse_ptr[i].initializeUpdate(
particles);
1502 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1503 class Divergence_T {
1521 template<
typename particles_type>
1524 VerletList_type& verletList,
1526 typename particles_type::stype rCut,
1527 support_options opt = support_options::RADIUS
1529 typedef Dcpse_type<particles_type::dims, VerletList_type, particles_type> DCPSE_type;
1533 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1540 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1561 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1565 VerletList_type& verletList,
1567 typename vector_type::stype rCut,
1568 support_options opt = support_options::RADIUS
1570 typedef Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> DCPSE_type;
1574 Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *dcpse_ptr = (Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *) dcpse;
1581 new(&dcpse_ptr[i]) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1593 template<
typename operand_type>
1595 operator()(operand_type arg) {
1596 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1599 *(dcpse_type(*)[operand_type::vtype::dims]) dcpse);
1607 template<
typename particles_type>
1609 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1611 dcpse_ptr[i].initializeUpdate(
particles);
1631 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1650 template<
typename particles_type>
1653 VerletList_type& verletList,
1655 typename particles_type::stype rCut,
1656 support_options opt = support_options::RADIUS
1658 typedef Dcpse_type<particles_type::dims, VerletList_type, particles_type> DCPSE_type;
1662 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1669 new(&dcpse_ptr[i]) Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1691 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1695 VerletList_type& verletList,
1697 typename vector_type::stype rCut,
1698 support_options opt = support_options::RADIUS
1700 typedef Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> DCPSE_type;
1704 Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *dcpse_ptr = (Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2> *) dcpse;
1711 new(&dcpse_ptr[i]) Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1725 template<
typename operand_type1,
typename operand_type2>
1727 operator()(operand_type1 arg, operand_type2 arg2) {
1728 typedef Dcpse_type<operand_type2::vtype::dims, VerletList_type, typename operand_type2::vtype> dcpse_type;
1732 *(dcpse_type(*)[operand_type2::vtype::dims]) dcpse);
1735 template<
typename particles_type>
1737 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1745 template<
unsigned int prp,
typename particles_type>
1747 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1750 dcpse_ptr[i].template DrawKernel<prp>(
particles, i, k);
1760 template<
typename particles_type>
1762 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1764 dcpse_ptr[i].initializeUpdate(
particles);
1783 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1784 class Derivative_xy_T {
1800 template<
typename particles_type>
1803 VerletList_type& verletList,
1805 typename particles_type::stype rCut,
1806 support_options opt = support_options::RADIUS
1813 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1831 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1835 VerletList_type& verletList,
1837 typename vector_type::stype rCut,
1838 support_options opt = support_options::RADIUS
1845 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
1856 template<
typename particles_type>
1858 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1861 template<
typename operand_type>
1863 operator()(operand_type arg) {
1864 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1869 template<
unsigned int prp,
typename particles_type>
1871 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1873 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
1877 template<
typename particles_type>
1879 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1889 template<
typename particles_type>
1891 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1892 dcpse_temp->save(file);
1899 template<
typename particles_type>
1901 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1902 dcpse_temp->load(file);
1909 template<
typename particles_type>
1911 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1912 dcpse_temp->initializeUpdate(
particles);
1927 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
1928 class Derivative_yz_T {
1944 template<
typename particles_type>
1947 VerletList_type& verletList,
1949 typename particles_type::stype rCut,
1950 support_options opt = support_options::RADIUS
1957 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
1975 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
1979 VerletList_type& verletList,
1981 typename vector_type::stype rCut,
1982 support_options opt = support_options::RADIUS
1989 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2000 template<
typename particles_type>
2002 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2005 template<
typename operand_type>
2007 operator()(operand_type arg) {
2008 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2013 template<
unsigned int prp,
typename particles_type>
2015 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2017 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
2021 template<
typename particles_type>
2023 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2033 template<
typename particles_type>
2035 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2036 dcpse_temp->save(file);
2043 template<
typename particles_type>
2045 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2046 dcpse_temp->load(file);
2053 template<
typename particles_type>
2055 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2056 dcpse_temp->initializeUpdate(
particles);
2071 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2072 class Derivative_xz_T {
2088 template<
typename particles_type>
2091 VerletList_type& verletList,
2093 typename particles_type::stype rCut,
2094 support_options opt = support_options::RADIUS
2101 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2119 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2123 VerletList_type& verletList,
2125 typename vector_type::stype rCut,
2126 support_options opt = support_options::RADIUS
2133 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2144 template<
typename particles_type>
2146 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2149 template<
typename operand_type>
2151 operator()(operand_type arg) {
2152 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2157 template<
unsigned int prp,
typename particles_type>
2159 Dcpse_type<particles_type::dims, VerletList_type, particles_type> *dcpse_ptr = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2161 dcpse_ptr[0].template DrawKernel<prp>(
particles, k);
2165 template<
typename particles_type>
2167 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2177 template<
typename particles_type>
2179 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2180 dcpse_temp->save(file);
2187 template<
typename particles_type>
2189 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2190 dcpse_temp->load(file);
2197 template<
typename particles_type>
2199 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2200 dcpse_temp->initializeUpdate(
particles);
2216 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2217 class Derivative_xx_T {
2233 template<
typename particles_type>
2236 VerletList_type& verletList,
2238 typename particles_type::stype rCut,
2239 support_options opt = support_options::RADIUS
2246 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2264 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2268 VerletList_type& verletList,
2270 typename vector_type::stype rCut,
2271 support_options opt = support_options::RADIUS
2278 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2289 template<
typename particles_type>
2291 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2294 template<
typename operand_type>
2296 operator()(operand_type arg) {
2297 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2302 template<
typename particles_type>
2304 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2309 template<
unsigned int prp,
typename particles_type>
2311 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2312 dcpse_temp->template DrawKernel<prp>(
particles, k);
2321 template<
typename particles_type>
2323 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2324 dcpse_temp->save(file);
2331 template<
typename particles_type>
2333 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2334 dcpse_temp->load(file);
2341 template<
typename particles_type>
2343 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2344 dcpse_temp->initializeUpdate(
particles);
2360 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2361 class Derivative_yy_T {
2377 template<
typename particles_type>
2380 VerletList_type& verletList,
2382 typename particles_type::stype rCut,
2383 support_options opt = support_options::RADIUS
2390 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2409 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2413 VerletList_type& verletList,
2415 typename vector_type::stype rCut,
2416 support_options opt = support_options::RADIUS
2423 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2434 template<
typename particles_type>
2436 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2439 template<
typename operand_type>
2441 operator()(operand_type arg) {
2442 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2447 template<
typename particles_type>
2449 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2454 template<
unsigned int prp,
typename particles_type>
2456 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2457 dcpse_temp->template DrawKernel<prp>(
particles, k);
2466 template<
typename particles_type>
2468 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2469 dcpse_temp->save(file);
2476 template<
typename particles_type>
2478 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2479 dcpse_temp->load(file);
2486 template<
typename particles_type>
2488 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2489 dcpse_temp->initializeUpdate(
particles);
2504 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2505 class Derivative_zz_T {
2521 template<
typename particles_type>
2524 VerletList_type& verletList,
2526 typename particles_type::stype rCut,
2527 support_options opt = support_options::RADIUS
2533 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2552 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2556 VerletList_type& verletList,
2558 typename vector_type::stype rCut,
2559 support_options opt = support_options::RADIUS
2565 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2576 template<
typename particles_type>
2578 delete (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2581 template<
typename operand_type>
2583 operator()(operand_type arg) {
2584 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2589 template<
typename particles_type>
2591 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2596 template<
unsigned int prp,
typename particles_type>
2598 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2599 dcpse_temp->template DrawKernel<prp>(
particles, k);
2608 template<
typename particles_type>
2610 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2611 dcpse_temp->save(file);
2618 template<
typename particles_type>
2620 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2621 dcpse_temp->load(file);
2628 template<
typename particles_type>
2630 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2631 dcpse_temp->initializeUpdate(
particles);
2636 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2637 class Derivative_xxx_T {
2643 template<
typename particles_type>
2646 VerletList_type& verletList,
2648 typename particles_type::stype rCut,
2649 support_options opt = support_options::RADIUS
2656 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2662 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2666 VerletList_type& verletList,
2668 typename vector_type::stype rCut,
2669 support_options opt = support_options::RADIUS
2676 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2687 template<
typename operand_type>
2690 operator()(operand_type arg) {
2691 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2696 template<
typename particles_type>
2698 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2703 template<
unsigned int prp,
typename particles_type>
2705 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2706 dcpse_temp->template DrawKernel<prp>(
particles, k);
2715 template<
typename particles_type>
2717 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2718 dcpse_temp->save(file);
2725 template<
typename particles_type>
2727 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2728 dcpse_temp->load(file);
2735 template<
typename particles_type>
2737 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2738 dcpse_temp->initializeUpdate(
particles);
2743 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2744 class Derivative_xxy_T {
2750 template<
typename particles_type>
2753 VerletList_type& verletList,
2755 typename particles_type::stype rCut,
2756 support_options opt = support_options::RADIUS
2763 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2769 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2773 VerletList_type& verletList,
2775 typename vector_type::stype rCut,
2776 support_options opt = support_options::RADIUS
2783 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2794 template<
typename operand_type>
2797 operator()(operand_type arg) {
2798 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2803 template<
typename particles_type>
2805 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2810 template<
unsigned int prp,
typename particles_type>
2812 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2813 dcpse_temp->template DrawKernel<prp>(
particles, k);
2822 template<
typename particles_type>
2824 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2825 dcpse_temp->save(file);
2832 template<
typename particles_type>
2834 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2835 dcpse_temp->load(file);
2842 template<
typename particles_type>
2844 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2845 dcpse_temp->initializeUpdate(
particles);
2850 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2851 class Derivative_yyx_T {
2857 template<
typename particles_type>
2860 VerletList_type& verletList,
2862 typename particles_type::stype rCut,
2863 support_options opt = support_options::RADIUS
2870 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2876 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2880 VerletList_type& verletList,
2882 typename vector_type::stype rCut,
2883 support_options opt = support_options::RADIUS
2890 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
2901 template<
typename operand_type>
2904 operator()(operand_type arg) {
2905 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
2910 template<
typename particles_type>
2912 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2917 template<
unsigned int prp,
typename particles_type>
2919 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2920 dcpse_temp->template DrawKernel<prp>(
particles, k);
2929 template<
typename particles_type>
2931 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2932 dcpse_temp->save(file);
2939 template<
typename particles_type>
2941 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2942 dcpse_temp->load(file);
2949 template<
typename particles_type>
2951 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
2952 dcpse_temp->initializeUpdate(
particles);
2957 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
2958 class Derivative_yyy_T {
2964 template<
typename particles_type>
2967 VerletList_type& verletList,
2969 typename particles_type::stype rCut,
2970 support_options opt = support_options::RADIUS
2977 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
2983 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
2987 VerletList_type& verletList,
2989 typename vector_type::stype rCut,
2990 support_options opt = support_options::RADIUS
2997 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
3008 template<
typename operand_type>
3011 operator()(operand_type arg) {
3012 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
3017 template<
typename particles_type>
3019 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3024 template<
unsigned int prp,
typename particles_type>
3026 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3027 dcpse_temp->template DrawKernel<prp>(
particles, k);
3036 template<
typename particles_type>
3038 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3039 dcpse_temp->save(file);
3046 template<
typename particles_type>
3048 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3049 dcpse_temp->load(file);
3056 template<
typename particles_type>
3058 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3059 dcpse_temp->initializeUpdate(
particles);
3065 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
3066 class Derivative_xxxx_T {
3072 template<
typename particles_type>
3075 VerletList_type& verletList,
3077 typename particles_type::stype rCut,
3078 support_options opt = support_options::RADIUS
3085 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
3091 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
3095 VerletList_type& verletList,
3097 typename vector_type::stype rCut,
3098 support_options opt = support_options::RADIUS
3105 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
3116 template<
typename operand_type>
3118 operator()(operand_type arg) {
3119 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
3124 template<
typename particles_type>
3126 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3131 template<
unsigned int prp,
typename particles_type>
3133 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3134 dcpse_temp->template DrawKernel<prp>(
particles, k);
3143 template<
typename particles_type>
3145 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3146 dcpse_temp->save(file);
3153 template<
typename particles_type>
3155 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3156 dcpse_temp->load(file);
3163 template<
typename particles_type>
3165 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3166 dcpse_temp->initializeUpdate(
particles);
3172 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
3173 class Derivative_yyyy_T {
3179 template<
typename particles_type>
3182 VerletList_type& verletList,
3184 typename particles_type::stype rCut,
3185 support_options opt = support_options::RADIUS
3192 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
3198 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
3202 VerletList_type& verletList,
3204 typename vector_type::stype rCut,
3205 support_options opt = support_options::RADIUS
3212 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
3223 template<
typename operand_type>
3225 operator()(operand_type arg) {
3226 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
3231 template<
typename particles_type>
3233 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3238 template<
unsigned int prp,
typename particles_type>
3240 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3241 dcpse_temp->template DrawKernel<prp>(
particles, k);
3250 template<
typename particles_type>
3252 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3253 dcpse_temp->save(file);
3260 template<
typename particles_type>
3262 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3263 dcpse_temp->load(file);
3270 template<
typename particles_type>
3272 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3273 dcpse_temp->initializeUpdate(
particles);
3278 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
3279 class Derivative_xxyy_T {
3285 template<
typename particles_type>
3288 VerletList_type& verletList,
3290 typename particles_type::stype rCut,
3291 support_options opt = support_options::RADIUS
3298 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
3304 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
3308 VerletList_type& verletList,
3310 typename vector_type::stype rCut,
3311 support_options opt = support_options::RADIUS
3318 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
3329 template<
typename operand_type>
3332 operator()(operand_type arg) {
3333 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
3338 template<
typename particles_type>
3340 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3345 template<
unsigned int prp,
typename particles_type>
3347 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3348 dcpse_temp->template DrawKernel<prp>(
particles, k);
3357 template<
typename particles_type>
3359 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3360 dcpse_temp->save(file);
3367 template<
typename particles_type>
3369 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3370 dcpse_temp->load(file);
3377 template<
typename particles_type>
3379 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3380 dcpse_temp->initializeUpdate(
particles);
3386 template<
typename VerletList_type,
template<
unsigned int,
typename,
typename...>
class Dcpse_type = Dcpse>
3387 class Derivative_G_T {
3393 template<
typename particles_type>
3396 VerletList_type& verletList,
3398 typename particles_type::stype rCut,
3400 support_options opt = support_options::RADIUS
3402 dcpse =
new Dcpse_type<particles_type::dims, VerletList_type, particles_type>(parts, verletList, p, ord, rCut, opt);
3408 std::enable_if_t<std::is_same<int, typename vector_type2::yes_i_am_vector_subset>::value>* =
nullptr>
3412 VerletList_type& verletList,
3414 typename vector_type::stype rCut,
3416 support_options opt = support_options::RADIUS
3418 dcpse =
new Dcpse_type<vector_type::dims, VerletList_type, vector_type, vector_type2>(
3429 template<
typename operand_type>
3431 operator()(operand_type arg) {
3432 typedef Dcpse_type<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
3437 template<
typename particles_type>
3439 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3444 template<
unsigned int prp,
typename particles_type>
3446 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3447 dcpse_temp->template DrawKernel<prp>(
particles, k);
3456 template<
typename particles_type>
3458 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3459 dcpse_temp->save(file);
3466 template<
typename particles_type>
3468 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3469 dcpse_temp->load(file);
3476 template<
typename particles_type>
3478 auto dcpse_temp = (Dcpse_type<particles_type::dims, VerletList_type, particles_type> *) dcpse;
3479 dcpse_temp->initializeUpdate(
particles);
3485 template <
typename VerletList_type>
using Derivative_x = Derivative_x_T<VerletList_type, Dcpse>;
3486 template <
typename VerletList_type>
using Derivative_x = Derivative_x_T<VerletList_type, Dcpse>;
3487 template <
typename VerletList_type>
using Derivative_y = Derivative_y_T<VerletList_type, Dcpse>;
3488 template <
typename VerletList_type>
using Derivative_z = Derivative_z_T<VerletList_type, Dcpse>;
3489 template <
typename VerletList_type>
using Gradient = Gradient_T<VerletList_type, Dcpse>;
3490 template <
typename VerletList_type>
using Curl2D = Curl2D_T<VerletList_type, Dcpse>;
3491 template <
typename VerletList_type>
using Laplacian = Laplacian_T<VerletList_type, Dcpse>;
3492 template <
typename VerletList_type>
using Divergence = Divergence_T<VerletList_type, Dcpse>;
3493 template <
typename VerletList_type>
using Advection = Advection_T<VerletList_type, Dcpse>;
3494 template <
typename VerletList_type>
using Derivative_xy = Derivative_xy_T<VerletList_type, Dcpse>;
3495 template <
typename VerletList_type>
using Derivative_yz = Derivative_yz_T<VerletList_type, Dcpse>;
3496 template <
typename VerletList_type>
using Derivative_xz = Derivative_xz_T<VerletList_type, Dcpse>;
3497 template <
typename VerletList_type>
using Derivative_xx = Derivative_xx_T<VerletList_type, Dcpse>;
3498 template <
typename VerletList_type>
using Derivative_yy = Derivative_yy_T<VerletList_type, Dcpse>;
3499 template <
typename VerletList_type>
using Derivative_zz = Derivative_zz_T<VerletList_type, Dcpse>;
3500 template <
typename VerletList_type>
using Derivative_xxx = Derivative_xxx_T<VerletList_type, Dcpse>;
3501 template <
typename VerletList_type>
using Derivative_xxy = Derivative_xxy_T<VerletList_type, Dcpse>;
3502 template <
typename VerletList_type>
using Derivative_yyx = Derivative_yyx_T<VerletList_type, Dcpse>;
3503 template <
typename VerletList_type>
using Derivative_yyy = Derivative_yyy_T<VerletList_type, Dcpse>;
3504 template <
typename VerletList_type>
using Derivative_xxxx = Derivative_xxxx_T<VerletList_type, Dcpse>;
3505 template <
typename VerletList_type>
using Derivative_yyyy = Derivative_yyyy_T<VerletList_type, Dcpse>;
3506 template <
typename VerletList_type>
using Derivative_xxyy = Derivative_xxyy_T<VerletList_type, Dcpse>;
3507 template <
typename VerletList_type>
using Derivative_G = Derivative_G_T<VerletList_type, Dcpse>;
3510 #if defined(__NVCC__)
3511 template <
typename VerletList_type>
using Derivative_x_gpu = Derivative_x_T<VerletList_type, Dcpse_gpu>;
3512 template <
typename VerletList_type>
using Derivative_y_gpu = Derivative_y_T<VerletList_type, Dcpse_gpu>;
3513 template <
typename VerletList_type>
using Derivative_z_gpu = Derivative_z_T<VerletList_type, Dcpse_gpu>;
3514 template <
typename VerletList_type>
using Gradient_gpu = Gradient_T<VerletList_type, Dcpse_gpu>;
3515 template <
typename VerletList_type>
using Curl2D_gpu = Curl2D_T<VerletList_type, Dcpse_gpu>;
3516 template <
typename VerletList_type>
using Laplacian_gpu = Laplacian_T<VerletList_type, Dcpse_gpu>;
3517 template <
typename VerletList_type>
using Divergence_gpu = Divergence_T<VerletList_type, Dcpse_gpu>;
3518 template <
typename VerletList_type>
using Advection_gpu = Advection_T<VerletList_type, Dcpse_gpu>;
3519 template <
typename VerletList_type>
using Derivative_xy_gpu = Derivative_xy_T<VerletList_type, Dcpse_gpu>;
3520 template <
typename VerletList_type>
using Derivative_yz_gpu = Derivative_yz_T<VerletList_type, Dcpse_gpu>;
3521 template <
typename VerletList_type>
using Derivative_xz_gpu = Derivative_xz_T<VerletList_type, Dcpse_gpu>;
3522 template <
typename VerletList_type>
using Derivative_xx_gpu = Derivative_xx_T<VerletList_type, Dcpse_gpu>;
3523 template <
typename VerletList_type>
using Derivative_yy_gpu = Derivative_yy_T<VerletList_type, Dcpse_gpu>;
3524 template <
typename VerletList_type>
using Derivative_zz_gpu = Derivative_zz_T<VerletList_type, Dcpse_gpu>;
3525 template <
typename VerletList_type>
using Derivative_xxx_gpu = Derivative_xxx_T<VerletList_type, Dcpse_gpu>;
3526 template <
typename VerletList_type>
using Derivative_xxy_gpu = Derivative_xxy_T<VerletList_type, Dcpse_gpu>;
3527 template <
typename VerletList_type>
using Derivative_yyx_gpu = Derivative_yyx_T<VerletList_type, Dcpse_gpu>;
3528 template <
typename VerletList_type>
using Derivative_yyy_gpu = Derivative_yyy_T<VerletList_type, Dcpse_gpu>;
3529 template <
typename VerletList_type>
using Derivative_G_gpu = Derivative_G_T<VerletList_type, Dcpse_gpu>;
This class implement the point shape in an N-dimensional space.
__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...