5 #ifndef OPENFPM_PDATA_DCPSE_SURFACE_OP_HPP
6 #define OPENFPM_PDATA_DCPSE_SURFACE_OP_HPP
9 #include "DCPSE/DCPSE_op/DCPSE_op.hpp"
11 template<
unsigned int NORMAL_ID,
typename VerletList_type>
12 class SurfaceDerivative_x {
32 template<
typename particles_type>
35 VerletList_type& verletList,
37 typename particles_type::stype rCut,
38 typename particles_type::stype nSpacing,
40 support_options opt = support_options::RADIUS
46 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
49 template<
typename particles_type>
51 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
54 template<
typename operand_type>
56 operator()(operand_type arg) {
57 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
62 template<
typename particles_type>
64 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
69 template<
unsigned int prp,
typename particles_type>
71 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
72 dcpse_temp->template DrawKernel<prp>(
particles, k);
81 template<
typename particles_type>
83 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
84 dcpse_temp->save(file);
91 template<
typename particles_type>
93 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
94 dcpse_temp->load(file);
102 template<
typename particles_type>
104 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
105 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
125 template<
unsigned int NORMAL_ID,
typename VerletList_type>
126 class SurfaceDerivative_y {
131 template<
typename particles_type>
134 VerletList_type& verletList,
136 typename particles_type::stype rCut,
137 typename particles_type::stype nSpacing,
139 support_options opt = support_options::RADIUS
145 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
148 template<
typename particles_type>
150 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
153 template<
typename operand_type>
155 operator()(operand_type arg) {
156 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
161 template<
typename particles_type>
163 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
168 template<
unsigned int prp,
typename particles_type>
170 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
171 dcpse_temp->template DrawKernel<prp>(
particles, k);
181 template<
typename particles_type>
183 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
184 dcpse_temp->save(file);
191 template<
typename particles_type>
193 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
194 dcpse_temp->load(file);
201 template<
typename particles_type>
203 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
204 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
225 template<
unsigned int NORMAL_ID,
typename VerletList_type>
226 class SurfaceDerivative_z {
231 template<
typename particles_type>
234 VerletList_type& verletList,
236 typename particles_type::stype rCut,
237 typename particles_type::stype nSpacing,
239 support_options opt = support_options::RADIUS
245 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
248 template<
typename particles_type>
250 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
253 template<
typename operand_type>
255 operator()(operand_type arg) {
256 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
261 template<
typename particles_type>
263 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
268 template<
unsigned int prp,
typename particles_type>
270 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
271 dcpse_temp->template DrawKernel<prp>(
particles, k);
280 template<
typename particles_type>
282 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
283 dcpse_temp->save(file);
290 template<
typename particles_type>
292 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
293 dcpse_temp->load(file);
300 template<
typename particles_type>
302 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
303 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
325 template<
unsigned int NORMAL_ID,
typename VerletList_type>
326 class Laplace_Beltrami {
331 template<
typename particles_type>
334 VerletList_type& verletList,
336 typename particles_type::stype rCut,
337 typename particles_type::stype nSpacing,
339 support_options opt = support_options::RADIUS
347 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
350 template<
typename particles_type>
352 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
355 template<
typename operand_type>
357 operator()(operand_type arg) {
358 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
363 template<
typename particles_type>
365 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
370 template<
unsigned int prp,
typename particles_type>
372 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
373 dcpse_temp->template DrawKernel<prp>(
particles, k);
382 template<
typename particles_type>
384 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
385 dcpse_temp->save(file);
392 template<
typename particles_type>
394 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
395 dcpse_temp->load(file);
402 template<
typename particles_type>
404 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
405 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
406 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
426 template<
unsigned int NORMAL_ID,
typename VerletList_type>
427 class SurfaceDerivative_xx {
432 template<
typename particles_type>
433 SurfaceDerivative_xx(
435 VerletList_type& verletList,
437 typename particles_type::stype rCut,
438 typename particles_type::stype nSpacing,
440 support_options opt = support_options::RADIUS
446 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
449 template<
typename particles_type>
451 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
454 template<
typename operand_type>
456 operator()(operand_type arg) {
457 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
462 template<
typename particles_type>
464 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
469 template<
unsigned int prp,
typename particles_type>
471 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
472 dcpse_temp->template DrawKernel<prp>(
particles, k);
481 template<
typename particles_type>
483 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
484 dcpse_temp->save(file);
491 template<
typename particles_type>
493 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
494 dcpse_temp->load(file);
501 template<
typename particles_type>
503 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
504 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
505 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
525 template<
unsigned int NORMAL_ID,
typename VerletList_type>
526 class SurfaceDerivative_yy {
531 template<
typename particles_type>
532 SurfaceDerivative_yy(
534 VerletList_type& verletList,
536 typename particles_type::stype rCut,
537 typename particles_type::stype nSpacing,
539 support_options opt = support_options::RADIUS
544 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
547 template<
typename particles_type>
549 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
552 template<
typename operand_type>
554 operator()(operand_type arg) {
555 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
560 template<
typename particles_type>
562 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
567 template<
unsigned int prp,
typename particles_type>
569 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
570 dcpse_temp->template DrawKernel<prp>(
particles, k);
579 template<
typename particles_type>
581 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
582 dcpse_temp->save(file);
589 template<
typename particles_type>
591 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
592 dcpse_temp->load(file);
599 template<
typename particles_type>
601 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
602 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
623 template<
unsigned int NORMAL_ID,
typename VerletList_type>
624 class SurfaceDerivative_zz {
629 template<
typename particles_type>
630 SurfaceDerivative_zz(
632 VerletList_type& verletList,
634 typename particles_type::stype rCut,
635 typename particles_type::stype nSpacing,
637 support_options opt = support_options::RADIUS
643 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
646 template<
typename particles_type>
648 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
651 template<
typename operand_type>
653 operator()(operand_type arg) {
654 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
659 template<
typename particles_type>
661 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
666 template<
unsigned int prp,
typename particles_type>
668 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
669 dcpse_temp->template DrawKernel<prp>(
particles, k);
678 template<
typename particles_type>
680 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
681 dcpse_temp->save(file);
688 template<
typename particles_type>
690 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
691 dcpse_temp->load(file);
698 template<
typename particles_type>
700 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
701 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
709 template<
unsigned int NORMAL_ID,
typename VerletList_type>
710 class SurfaceDerivative_xy {
727 template<
typename particles_type>
728 SurfaceDerivative_xy(
730 VerletList_type& verletList,
732 typename particles_type::stype rCut,
733 typename particles_type::stype nSpacing,
735 support_options opt = support_options::RADIUS
742 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
745 template<
typename particles_type>
747 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
750 template<
typename operand_type>
752 operator()(operand_type arg) {
753 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
758 template<
typename particles_type>
760 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
765 template<
unsigned int prp,
typename particles_type>
767 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
768 dcpse_temp->template DrawKernel<prp>(
particles, k);
777 template<
typename particles_type>
779 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
780 dcpse_temp->save(file);
787 template<
typename particles_type>
789 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
790 dcpse_temp->load(file);
797 template<
typename particles_type>
799 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
800 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
821 template<
unsigned int NORMAL_ID,
typename VerletList_type>
822 class SurfaceDerivative_yz {
827 template<
typename particles_type>
828 SurfaceDerivative_yz(
830 VerletList_type& verletList,
832 typename particles_type::stype rCut,
833 typename particles_type::stype nSpacing,
835 support_options opt = support_options::RADIUS
842 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
845 template<
typename particles_type>
847 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
850 template<
typename operand_type>
852 operator()(operand_type arg) {
853 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
858 template<
typename particles_type>
860 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
865 template<
unsigned int prp,
typename particles_type>
867 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
868 dcpse_temp->template DrawKernel<prp>(
particles, k);
877 template<
typename particles_type>
879 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
880 dcpse_temp->save(file);
887 template<
typename particles_type>
889 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
890 dcpse_temp->load(file);
897 template<
typename particles_type>
899 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
900 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
921 template<
unsigned int NORMAL_ID,
typename VerletList_type>
922 class SurfaceDerivative_xz {
927 template<
typename particles_type>
928 SurfaceDerivative_xz(
930 VerletList_type& verletList,
932 typename particles_type::stype rCut,
933 typename particles_type::stype nSpacing,
935 support_options opt = support_options::RADIUS
942 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
945 template<
typename particles_type>
947 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
950 template<
typename operand_type>
952 operator()(operand_type arg) {
953 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
958 template<
typename particles_type>
960 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
965 template<
unsigned int prp,
typename particles_type>
967 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
968 dcpse_temp->template DrawKernel<prp>(
particles, k);
977 template<
typename particles_type>
979 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
980 dcpse_temp->save(file);
987 template<
typename particles_type>
989 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
990 dcpse_temp->load(file);
997 template<
typename particles_type>
999 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1000 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
1001 dcpse_temp->initializeUpdate(
particles);
1022 template<
unsigned int NORMAL_ID,
typename VerletList_type>
1023 class SurfaceDerivative_G {
1028 template<
typename particles_type>
1029 SurfaceDerivative_G(
1031 VerletList_type& verletList,
1033 typename particles_type::stype rCut,
1034 typename particles_type::stype nSpacing,
1035 unsigned int nCount,
1037 support_options opt = support_options::RADIUS
1039 dcpse =
new SurfaceDcpse<particles_type::dims, VerletList_type, particles_type>(parts, parts, verletList, p, ord, rCut,nSpacing, nCount, value_t<NORMAL_ID>(), opt);
1042 template<
typename particles_type>
1044 delete (SurfaceDcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1047 template<
typename operand_type>
1049 operator()(operand_type arg) {
1050 typedef Dcpse<operand_type::vtype::dims, VerletList_type, typename operand_type::vtype> dcpse_type;
1055 template<
typename particles_type>
1057 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1062 template<
unsigned int prp,
typename particles_type>
1064 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1065 dcpse_temp->template DrawKernel<prp>(
particles, k);
1074 template<
typename particles_type>
1076 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1077 dcpse_temp->save(file);
1084 template<
typename particles_type>
1086 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1087 dcpse_temp->load(file);
1094 template<
typename particles_type>
1096 auto dcpse_temp = (Dcpse<particles_type::dims, VerletList_type, particles_type> *) dcpse;
1097 dcpse_temp->template createNormalParticles<NORMAL_ID>(
particles);
1098 dcpse_temp->initializeUpdate(
particles);
This class implement the point shape in an N-dimensional space.
Unknown operation specialization.
bool write(std::string out, int opt=VTK_WRITER)
Output particle position and properties.