28 template <
class T,
unsigned Dim>
36 template <
unsigned Dim>
47 template <
class FT,
class M,
class C,
class PT>
58 ngp =
FindNGP(mesh, ppos, ctag);
84 ERRORMSG(
"IntTSC::scatter: not implemented for Dim>3!!"<<
endl);
90 template <
class FT,
class M,
class C,
class PT>
99 ngp =
FindNGP(mesh, ppos, ctag);
101 FindPos(gpos, mesh, ngp, ctag);
125 ERRORMSG(
"IntTSC::scatter: not implemented for Dim>3!!"<<
endl);
130 template <
class FT,
class M,
class C,
class PT>
141 ERRORMSG(
"IntTSC::scatter: not implemented for Dim>3!!"<<
endl);
146 template <
class FT,
class M,
class C,
class PT>
156 ngp =
FindNGP(mesh, ppos, ctag);
158 FindPos(gpos, mesh, ngp, ctag);
182 ERRORMSG(
"IntTSC::gather: not implemented for Dim>3!!"<<
endl);
188 template <
class FT,
class M,
class C,
class PT>
197 ngp =
FindNGP(mesh, ppos, ctag);
199 FindPos(gpos, mesh, ngp, ctag);
223 ERRORMSG(
"IntTSC::gather: not implemented for Dim>3!!"<<
endl);
228 template <
class FT,
class M,
class C,
class PT>
239 ERRORMSG(
"IntTSC::gather: not implemented for Dim>3!!"<<
endl);
257 template <
class FT,
class M,
class C,
class PT>
266 ngp =
FindNGP(mesh, ppos, ctag);
268 FindPos(gpos, mesh, ngp, ctag);
283 auto W = [dpos](
unsigned p,
unsigned i) {
284 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
285 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
286 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
288 for (
int p0=-1; p0<=1; ++p0) {
289 fiter.
offset(p0) +=
W(p0,0) * pdata;
296 template <
class FT,
class M,
class C,
class PT>
305 ngp =
FindNGP(mesh, ppos, ctag);
307 FindPos(gpos, mesh, ngp, ctag);
322 auto W = [dpos](
unsigned p,
unsigned i) {
323 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
324 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
325 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
327 for (
int p0=-1; p0<=1; ++p0) {
328 fiter.
offset(p0) +=
W(p0,0) * pdata;
335 template <
class FT,
class M,
class C,
class PT>
351 auto W = [dpos](
unsigned p,
unsigned i) {
352 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
353 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
354 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
356 for (
int p0=-1; p0<=1; ++p0) {
357 fiter.
offset(p0) +=
W(p0,0) * pdata;
364 template <
class FT,
class M,
class C,
class PT>
373 ngp =
FindNGP(mesh, ppos, ctag);
375 FindPos(gpos, mesh, ngp, ctag);
392 auto W = [dpos](
unsigned p,
unsigned i) {
393 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
394 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
395 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
398 for (
int p0=-1; p0<=1; ++p0) {
399 pdata +=
W(p0,0)*fiter.
offset(p0);
407 template <
class FT,
class M,
class C,
class PT>
416 ngp =
FindNGP(mesh, ppos, ctag);
418 FindPos(gpos, mesh, ngp, ctag);
433 auto W = [dpos](
unsigned p,
unsigned i) {
434 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
435 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
436 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
439 for (
int p0=-1; p0<=1; ++p0) {
440 pdata +=
W(p0,0)*fiter.
offset(p0);
448 template <
class FT,
class M,
class C,
class PT>
462 auto W = [dpos](
unsigned p,
unsigned i) {
463 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
464 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
465 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
468 for (
int p0=-1; p0<=1; ++p0) {
469 pdata +=
W(p0,0)*fiter.
offset(p0);
489 template <
class FT,
class M,
class C,
class PT>
498 ngp =
FindNGP(mesh, ppos, ctag);
500 FindPos(gpos, mesh, ngp, ctag);
521 auto W = [dpos](
unsigned p,
unsigned i) {
522 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
523 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
524 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
526 for (
int p0=-1; p0<=1; ++p0) {
527 for (
int p1=-1; p1<=1; ++p1) {
528 fiter.
offset(p0,p1) +=
W(p0,0) *
W(p1,1) * pdata;
536 template <
class FT,
class M,
class C,
class PT>
545 ngp =
FindNGP(mesh, ppos, ctag);
547 FindPos(gpos, mesh, ngp, ctag);
569 auto W = [dpos](
unsigned p,
unsigned i) {
570 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
571 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
572 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
574 for (
int p0=-1; p0<=1; ++p0) {
575 for (
int p1=-1; p1<=1; ++p1) {
576 fiter.
offset(p0,p1) +=
W(p0,0) *
W(p1,1) * pdata;
584 template <
class FT,
class M,
class C,
class PT>
607 auto W = [dpos](
unsigned p,
unsigned i) {
608 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
609 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
610 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
612 for (
int p0=-1; p0<=1; ++p0) {
613 for (
int p1=-1; p1<=1; ++p1) {
614 fiter.
offset(p0,p1) +=
W(p0,0) *
W(p1,1) * pdata;
622 template <
class FT,
class M,
class C,
class PT>
631 ngp =
FindNGP(mesh, ppos, ctag);
633 FindPos(gpos, mesh, ngp, ctag);
655 auto W = [dpos](
unsigned p,
unsigned i) {
656 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
657 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
658 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
660 for (
int p0=-1; p0<=1; ++p0) {
661 for (
int p1=-1; p1<=1; ++p1) {
662 pdata +=
W(p0,0) *
W(p1,1) * fiter.
offset(p0,p1);
671 template <
class FT,
class M,
class C,
class PT>
680 ngp =
FindNGP(mesh, ppos, ctag);
682 FindPos(gpos, mesh, ngp, ctag);
705 auto W = [dpos](
unsigned p,
unsigned i) {
706 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
707 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
708 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
710 for (
int p0=-1; p0<=1; ++p0) {
711 for (
int p1=-1; p1<=1; ++p1) {
712 pdata +=
W(p0,0) *
W(p1,1) * fiter.
offset(p0,p1);
720 template <
class FT,
class M,
class C,
class PT>
742 auto W = [dpos](
unsigned p,
unsigned i) {
743 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
744 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
745 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
747 for (
int p0=-1; p0<=1; ++p0) {
748 for (
int p1=-1; p1<=1; ++p1) {
749 pdata +=
W(p0,0) *
W(p1,1) * fiter.
offset(p0,p1);
770 template <
class FT,
class M,
class C,
class PT>
781 ngp =
FindNGP(mesh, ppos, ctag);
783 FindPos(gpos, mesh, ngp, ctag);
793 auto W = [dpos](
unsigned p,
unsigned i) {
794 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
795 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
796 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
799 for (
int p0=-1; p0<=1; ++p0) {
800 for (
int p1=-1; p1<=1; ++p1) {
801 for (
int p2=-1; p2<=1; ++p2) {
802 fiter.
offset(p0,p1,p2) +=
W(p0,0) *
W(p1,1) *
W(p2,2) * pdata;
813 template <
class FT,
class M,
class C,
class PT>
822 ngp =
FindNGP(mesh, ppos, ctag);
824 FindPos(gpos, mesh, ngp, ctag);
834 auto W = [dpos](
unsigned p,
unsigned i) {
835 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
836 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
837 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
840 for (
int p0=-1; p0<=1; ++p0) {
841 for (
int p1=-1; p1<=1; ++p1) {
842 for (
int p2=-1; p2<=1; ++p2) {
843 fiter.
offset(p0,p1,p2) +=
W(p0,0) *
W(p1,1) *
W(p2,2) * pdata;
854 template <
class FT,
class M,
class C,
class PT>
863 auto W = [dpos](
unsigned p,
unsigned i) {
864 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
865 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
866 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
868 for (
int p0=-1; p0<=1; ++p0) {
869 for (
int p1=-1; p1<=1; ++p1) {
870 for (
int p2=-1; p2<=1; ++p2) {
871 fiter.
offset(p0,p1,p2) +=
W(p0,0) *
W(p1,1) *
W(p2,2) * pdata;
884 template <
class FT,
class M,
class C,
class PT>
893 ngp =
FindNGP(mesh, ppos, ctag);
895 FindPos(gpos, mesh, ngp, ctag);
907 auto W = [dpos](
unsigned p,
unsigned i) {
908 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
909 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
910 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
912 for (
int p0=-1; p0<=1; ++p0) {
913 for (
int p1=-1; p1<=1; ++p1) {
914 for (
int p2=-1; p2<=1; ++p2) {
915 pdata +=
W(p0,0) *
W(p1,1) *
W(p2,2) * fiter.
offset(p0,p1,p2);
926 template <
class FT,
class M,
class C,
class PT>
935 ngp =
FindNGP(mesh, ppos, ctag);
937 FindPos(gpos, mesh, ngp, ctag);
949 auto W = [dpos](
unsigned p,
unsigned i) {
950 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
951 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
952 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
954 for (
int p0=-1; p0<=1; ++p0) {
955 for (
int p1=-1; p1<=1; ++p1) {
956 for (
int p2=-1; p2<=1; ++p2) {
957 pdata +=
W(p0,0) *
W(p1,1) *
W(p2,2) * fiter.
offset(p0,p1,p2);
966 template <
class FT,
class M,
class C,
class PT>
978 auto W = [dpos](
unsigned p,
unsigned i) {
979 if (p==-1)
return .125*(1.-4.*dpos(i)+4.*dpos(i)*dpos(i));
980 else if (p==0)
return .25*(3.-4.*dpos(i)*dpos(i));
981 else if (p==+1)
return .125*(1.+4.*dpos(i)+4.*dpos(i)*dpos(i)); };
983 for (
int p0=-1; p0<=1; ++p0) {
984 for (
int p1=-1; p1<=1; ++p1) {
985 for (
int p2=-1; p2<=1; ++p2) {
986 pdata +=
W(p0,0) *
W(p1,1) *
W(p2,2) * fiter.
offset(p0,p1,p2);
1008 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
1017 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
1027 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
1036 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
1045 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
1055 template <
class FT,
unsigned Dim,
class M,
class C,
class PT>
static void scatter(const FT &pdata, Field< FT, 1U, M, C > &f, const NDIndex< 1U > &ngp, const int lgpoff[1U], const Vektor< PT, 1U > &dpos)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh, NDIndex< Dim > &ngp, int lgpoff[Dim], Vektor< PT, Dim > &dpos)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh)
static void scatter(const FT &pdata, Field< FT, 3U, M, C > &f, const Vektor< PT, 3U > &ppos, const M &mesh, NDIndex< 3U > &ngp, int lgpoff[3U], Vektor< PT, 3U > &dpos)
static void gather(FT &pdata, const Field< FT, 2U, M, C > &f, const NDIndex< 2U > &ngp, const int lgpoff[2U], const Vektor< PT, 2U > &dpos)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const NDIndex< Dim > &ngp, const int lgpoff[Dim], const Vektor< PT, Dim > &dpos)
static void gather(FT &pdata, const Field< FT, 3U, M, C > &f, const Vektor< PT, 3U > &ppos, const M &mesh)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh)
static void gather(FT &pdata, const Field< FT, 3U, M, C > &f, const Vektor< PT, 3U > &ppos, const M &mesh, NDIndex< 3U > &ngp, int lgpoff[3U], Vektor< PT, 3U > &dpos)
static void scatter(const FT &pdata, Field< FT, 2U, M, C > &f, const Vektor< PT, 2U > &ppos, const M &mesh, NDIndex< 2U > &ngp, int lgpoff[2U], Vektor< PT, 2U > &dpos)
static void gather(FT &pdata, const Field< FT, 3U, M, C > &f, const NDIndex< 3U > &ngp, const int lgpoff[3U], const Vektor< PT, 3U > &dpos)
CacheDataTSC< T, Dim > Cache_t
static void scatter(const FT &pdata, Field< FT, 1U, M, C > &f, const Vektor< PT, 1U > &ppos, const M &mesh, NDIndex< 1U > &ngp, int lgpoff[1U], Vektor< PT, 1U > &dpos)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const NDIndex< Dim > &ngp, const int lgpoff[Dim], const Vektor< PT, Dim > &dpos)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh, NDIndex< Dim > &ngp, int lgpoff[Dim], Vektor< PT, Dim > &dpos)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh)
void FindDelta(Vektor< PT, Dim > &delta, const M &mesh, const NDIndex< Dim > &gp, CenteringTag< Cell >)
static void scatter(const FT &pdata, Field< FT, 2U, M, C > &f, const Vektor< PT, 2U > &ppos, const M &mesh)
void FindPos(Vektor< PT, Dim > &pos, const M &mesh, const NDIndex< Dim > &indices, CenteringTag< Cell >)
static void scatter(const FT &pdata, Field< FT, 2U, M, C > &f, const NDIndex< 2U > &ngp, const int lgpoff[2U], const Vektor< PT, 2U > &dpos)
static CompressedBrickIterator< T, Dim > getFieldIter(const BareField< T, Dim > &f, const NDIndex< Dim > &pt)
static void gather(FT &pdata, const Field< FT, 1U, M, C > &f, const Vektor< PT, 1U > &ppos, const M &mesh)
NDIndex< Dim > FindNGP(const M &mesh, const Vektor< PT, Dim > &ppos, CenteringTag< Cell >)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const CacheDataTSC< PT, Dim > &cache)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const CacheDataTSC< PT, Dim > &cache)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh, CacheDataTSC< PT, Dim > &cache)
static void gather(FT &pdata, const Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh, CacheDataTSC< PT, Dim > &cache)
static void gather(FT &pdata, const Field< FT, 1U, M, C > &f, const Vektor< PT, 1U > &ppos, const M &mesh, NDIndex< 1U > &ngp, int lgpoff[1U], Vektor< PT, 1U > &dpos)
static void scatter(const FT &pdata, Field< FT, Dim, M, C > &f, const Vektor< PT, Dim > &ppos, const M &mesh)
static void gather(FT &pdata, const Field< FT, 1U, M, C > &f, const NDIndex< 1U > &ngp, const int lgpoff[1U], const Vektor< PT, 1U > &dpos)
static void gather(FT &pdata, const Field< FT, 2U, M, C > &f, const Vektor< PT, 2U > &ppos, const M &mesh)
static void scatter(const FT &pdata, Field< FT, 3U, M, C > &f, const Vektor< PT, 3U > &ppos, const M &mesh)
Inform & endl(Inform &inf)
static void gather(FT &pdata, const Field< FT, 2U, M, C > &f, const Vektor< PT, 2U > &ppos, const M &mesh, NDIndex< 2U > &ngp, int lgpoff[2U], Vektor< PT, 2U > &dpos)
static void scatter(const FT &pdata, Field< FT, 3U, M, C > &f, const NDIndex< 3U > &ngp, const int lgpoff[3U], const Vektor< PT, 3U > &dpos)
static void scatter(const FT &pdata, Field< FT, 1U, M, C > &f, const Vektor< PT, 1U > &ppos, const M &mesh)