Giter VIP home page Giter VIP logo

stkfmm's Introduction

Hi there 👋

stkfmm's People

Contributors

benlandrum avatar blackwer avatar fbusabiaga avatar wenyan4work avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

stkfmm's Issues

Unable to compile

Hello, I am having trouble compiling the master branch of this repo.
I installed the develop branch of pvfmm using cmake as per the instructions. Then I ran:

mkdir build && cd build && cmake ..

which finishes without issue.

Running make, however, results in a lot of errors, the start of the output is:

[  4%] Building CXX object Lib/CMakeFiles/STKFMM_STATIC.dir/src/FMMData.cpp.o
In file included from /usr/local/include/pvfmm/sctl/slender_element.hpp:224,
                 from /usr/local/include/pvfmm/sctl.hpp:25,
                 from /usr/local/include/pvfmm/pvfmm_common.hpp:66,
                 from /usr/local/include/pvfmm/pvfmm.hpp:13,
                 from /home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:4,
                 from /home/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:19,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:4,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /home/user/STKFMM/Lib/src/FMMData.cpp:1:
/usr/local/include/pvfmm/sctl/slender_element.txx: In member function ‘void sctl::ToroidalGreensFn<Real, Nm, Nr, Nt>::Setup(const Kernel&, Real)’:
/usr/local/include/pvfmm/sctl/slender_element.txx:146:29: error: ‘QuadReal’ was not declared in this scope
     PrecompToroidalGreensFn<QuadReal>(ker, R0);
                             ^~~~~~~~
/usr/local/include/pvfmm/sctl/slender_element.txx:146:29: note: suggested alternative: ‘Real’
     PrecompToroidalGreensFn<QuadReal>(ker, R0);
                             ^~~~~~~~
                             Real
In file included from /usr/local/include/pvfmm/sctl/slender_element.hpp:224,
                 from /usr/local/include/pvfmm/sctl.hpp:25,
                 from /usr/local/include/pvfmm/pvfmm_common.hpp:66,
                 from /usr/local/include/pvfmm/pvfmm.hpp:13,
                 from /home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:4,
                 from /home/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:19,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:4,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /home/user/STKFMM/Lib/src/FMMData.cpp:1:
/usr/local/include/pvfmm/sctl/slender_element.txx: In lambda function:
/usr/local/include/pvfmm/sctl/slender_element.txx:801:21: error: ‘QuadReal’ was not declared in this scope
       Vector<Vector<QuadReal>> data;
                     ^~~~~~~~
/usr/local/include/pvfmm/sctl/slender_element.txx:801:21: error: template argument 1 is invalid
/usr/local/include/pvfmm/sctl/slender_element.txx:801:29: error: template argument 1 is invalid
       Vector<Vector<QuadReal>> data;
                             ^~
/usr/local/include/pvfmm/sctl/slender_element.txx:802:47: error: no matching function for call to ‘ReadFile<QuadReal>(int&, const char [14])’
       ReadFile<QuadReal>(data, "data/log_quad");

Defining SCTL_QUAD_T as double somewhere results in another bunch of different errors, starting with:

[  4%] Building CXX object Lib/CMakeFiles/STKFMM_STATIC.dir/src/FMMData.cpp.o
In file included from /home/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:19,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:4,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /home/user/STKFMM/Lib/src/FMMData.cpp:1:
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp: In function ‘Vec_t pvfmm::rsqrt_wrapper(Vec_t)’:
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:61:23: error: ‘rsqrt_intrin0’ is not a member of ‘pvfmm’
         return pvfmm::rsqrt_intrin0<Vec_t, Real_t>(r2);
                       ^~~~~~~~~~~~~
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:61:42: error: expected primary-expression before ‘,’ token
         return pvfmm::rsqrt_intrin0<Vec_t, Real_t>(r2);
                                          ^
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:61:50: error: expected primary-expression before ‘>’ token
         return pvfmm::rsqrt_intrin0<Vec_t, Real_t>(r2);
                                                  ^
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:63:23: error: ‘rsqrt_intrin1’ is not a member of ‘pvfmm’
         return pvfmm::rsqrt_intrin1<Vec_t, Real_t>(r2);
                       ^~~~~~~~~~~~~
/home/user/STKFMM/Lib/include/STKFMM/stkfmm_helpers.hpp:63:42: error: expected primary-expression before ‘,’ token
         return pvfmm::rsqrt_intrin1<Vec_t, Real_t>(r2);

I was able to fix this by adding

#include<intrin_wrapper.hpp>

to the end of pvfmm_common.hpp.

This reduces the error to just this

[  4%] Building CXX object Lib/CMakeFiles/STKFMM_STATIC.dir/src/FMMData.cpp.o
In file included from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:6,
                 from /home/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /home/user/STKFMM/Lib/src/FMMData.cpp:1:
/home/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function ‘static const pvfmm::Kernel<T>& pv
fmm::StokesLayerKernel<T>::Vel()’:
/home/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:48:43: error: ‘pvfmm::stokes_vel’ is not a template
     static Kernel<T> ker = BuildKernel<T, stokes_vel<T, NEWTON_ITE>>("stokes_vel", 3, std::pair<int, int>(3, 3));
                                           ^~~~~~~~~~
make[2]: *** [Lib/CMakeFiles/STKFMM_STATIC.dir/src/FMMData.cpp.o] Error 1
make[1]: *** [Lib/CMakeFiles/STKFMM_STATIC.dir/all] Error 2
make: *** [all] Error 2

I gave up here because if I then go to the pvfmm include folder looking for stokes_vel I get:

$ grep -R stokes_vel *
kernel.txx:struct stokes_vel : public GenericKernel<stokes_vel> {
kernel.txx:  static Kernel<T> ker=BuildKernel<T, stokes_vel::Eval<T>, stokes_sym_dip::Eval<T>>("stokes_vel"   , 3, std::pair<int,int>(3,3),

Which looks quite different.

Would you help me with this? It seems to me that when the compilation instructions in the stkfmm readme refer to the pvfmm development branch, it must be the develop branch at some past moment in time and it has diverged since?
Maybe I am missing some instructions?

Thanks.

Compiler error

Hey!

When trying to compile the library, I get the following error(s). Any idea on how to fix that? This is with g++ 11.2.0

$ make
Consolidate compiler generated dependencies of target STKFMM_SHARED
[  4%] Building CXX object Lib/CMakeFiles/STKFMM_SHARED.dir/src/FMMData.cpp.o
In file included from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:7,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:41:40: error: expected template-name before '<' token
   41 | struct laplace_p : public GenericKernel<laplace_p> {
      |                                        ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:41:40: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:41:40: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:67:44: error: expected template-name before '<' token
   67 | struct laplace_pgrad : public GenericKernel<laplace_pgrad> {
      |                                            ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:67:44: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:67:44: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:98:46: error: expected template-name before '<' token
   98 | struct laplace_dipolep : public GenericKernel<laplace_dipolep> {
      |                                              ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:98:46: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:98:46: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:115:50: error: expected template-name before '<' token
  115 | struct laplace_dipolepgrad : public GenericKernel<laplace_dipolepgrad> {
      |                                                  ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:115:50: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:115:50: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:138:48: error: expected template-name before '<' token
  138 | struct laplace_pgradgrad : public GenericKernel<laplace_pgradgrad> {
      |                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:138:48: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:138:48: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:168:54: error: expected template-name before '<' token
  168 | struct laplace_dipolepgradgrad : public GenericKernel<laplace_dipolepgradgrad> {
      |                                                      ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:168:54: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:168:54: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:202:44: error: expected template-name before '<' token
  202 | struct laplace_quadp : public GenericKernel<laplace_quadp> {
      |                                            ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:202:44: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:202:44: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:234:52: error: expected template-name before '<' token
  234 | struct laplace_quadpgradgrad : public GenericKernel<laplace_quadpgradgrad> {
      |                                                    ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:234:52: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:234:52: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::LaplaceLayerKernel<T>::PGrad()':
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:317:35: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
  317 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                   ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:317:35: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:317:9: error: parse error in template argument list
  317 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:317:65: error: qualified-id in declaration before '<' token
  317 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                                                 ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:320:64: error: incomplete type 'pvfmm::laplace_pgrad' used in nested name specifier
  320 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgrad::Eval<T>, laplace_dipolepgrad::Eval<T>>(
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:320:64: error: incomplete type 'pvfmm::laplace_pgrad' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:320:34: error: parse error in template argument list
  320 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgrad::Eval<T>, laplace_dipolepgrad::Eval<T>>(
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:320:98: error: qualified-id in declaration before '<' token
  320 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgrad::Eval<T>, laplace_dipolepgrad::Eval<T>>(
      |                                                                                                  ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::LaplaceLayerKernel<T>::PGradGrad()':
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:332:35: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
  332 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                   ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:332:35: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:332:9: error: parse error in template argument list
  332 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:332:65: error: qualified-id in declaration before '<' token
  332 |         BuildKernel<T, laplace_p::Eval<T>, laplace_dipolep::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                                                 ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:335:68: error: incomplete type 'pvfmm::laplace_pgradgrad' used in nested name specifier
  335 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgradgrad::Eval<T>, laplace_dipolepgradgrad::Eval<T>>(
      |                                                                    ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:335:68: error: incomplete type 'pvfmm::laplace_pgradgrad' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:335:34: error: parse error in template argument list
  335 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgradgrad::Eval<T>, laplace_dipolepgradgrad::Eval<T>>(
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:335:106: error: qualified-id in declaration before '<' token
  335 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_pgradgrad::Eval<T>, laplace_dipolepgradgrad::Eval<T>>(
      |                                                                                                          ^
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::LaplaceLayerKernel<T>::QPGradGrad()':
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:345:59: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
  345 |     static Kernel<T> lap_pker = BuildKernel<T, laplace_p::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                                           ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:345:59: error: incomplete type 'pvfmm::laplace_p' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:345:33: error: parse error in template argument list
  345 |     static Kernel<T> lap_pker = BuildKernel<T, laplace_p::Eval<T>>("laplace", 3, std::pair<int, int>(1, 1));
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:346:69: error: incomplete type 'pvfmm::laplace_pgradgrad' used in nested name specifier
  346 |     static Kernel<T> lap_pggker = BuildKernel<T, laplace_pgradgrad::Eval<T>>("laplace", 3, std::pair<int, int>(1, 10));
      |                                                                     ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:346:69: error: incomplete type 'pvfmm::laplace_pgradgrad' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:346:35: error: parse error in template argument list
  346 |     static Kernel<T> lap_pggker = BuildKernel<T, laplace_pgradgrad::Eval<T>>("laplace", 3, std::pair<int, int>(1, 10));
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:347:64: error: incomplete type 'pvfmm::laplace_quadp' used in nested name specifier
  347 |     static Kernel<T> lap_qpker = BuildKernel<T, laplace_quadp::Eval<T>>("laplace", 3, std::pair<int, int>(9, 1));
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:347:64: error: incomplete type 'pvfmm::laplace_quadp' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:347:34: error: parse error in template argument list
  347 |     static Kernel<T> lap_qpker = BuildKernel<T, laplace_quadp::Eval<T>>("laplace", 3, std::pair<int, int>(9, 1));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:349:72: error: incomplete type 'pvfmm::laplace_quadpgradgrad' used in nested name specifier
  349 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_quadpgradgrad::Eval<T>>(
      |                                                                        ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:349:72: error: incomplete type 'pvfmm::laplace_quadpgradgrad' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/LaplaceLayerKernel.hpp:349:34: error: parse error in template argument list
  349 |     static Kernel<T> lap_pgker = BuildKernel<T, laplace_quadpgradgrad::Eval<T>>(
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:8,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp: At global scope:
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:17:36: error: expected template-name before '<' token
   17 | struct rpy_u : public GenericKernel<rpy_u> {
      |                                    ^
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:17:36: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:17:36: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:52:40: error: expected template-name before '<' token
   52 | struct rpy_ulapu : public GenericKernel<rpy_ulapu> {
      |                                        ^
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:52:40: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:52:40: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:97:40: error: expected template-name before '<' token
   97 | struct stk_ulapu : public GenericKernel<stk_ulapu> {
      |                                        ^
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:97:40: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:97:40: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::RPYKernel<T>::ulapu(':
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:139:53: error: incomplete type 'pvfmm::rpy_u' used in nested name specifier
  139 |     static Kernel<T> gr_ker = BuildKernel<T, rpy_u::Eval<T>>("rpy_u", 3, std::pair<int, int>(4, 3));
      |                                                     ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:139:53: error: incomplete type 'pvfmm::rpy_u' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:139:31: error: parse error in template argument list
  139 |     static Kernel<T> gr_ker = BuildKernel<T, rpy_u::Eval<T>>("rpy_u", 3, std::pair<int, int>(4, 3));
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:141:60: error: incomplete type 'pvfmm::stk_ulapu' used in nested name specifier
  141 |     static Kernel<T> glapg_ker = BuildKernel<T, stk_ulapu::Eval<T>>("stk_ulapu", 3, std::pair<int, int>(3, 6));
      |                                                            ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:141:60: error: incomplete type 'pvfmm::stk_ulapu' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:141:34: error: parse error in template argument list
  141 |     static Kernel<T> glapg_ker = BuildKernel<T, stk_ulapu::Eval<T>>("stk_ulapu", 3, std::pair<int, int>(3, 6));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:143:62: error: incomplete type 'pvfmm::rpy_ulapu' used in nested name specifier
  143 |     static Kernel<T> grlapgr_ker = BuildKernel<T, rpy_ulapu::Eval<T>>("rpy_ulapu", 3, std::pair<int, int>(4, 6),
      |                                                              ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:143:62: error: incomplete type 'pvfmm::rpy_ulapu' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/RPYKernel.hpp:143:36: error: parse error in template argument list
  143 |     static Kernel<T> grlapgr_ker = BuildKernel<T, rpy_ulapu::Eval<T>>("rpy_ulapu", 3, std::pair<int, int>(4, 6),
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:14,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:9,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp: At global scope:
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:25:48: error: expected template-name before '<' token
   25 | struct stokes_doublepvel : public GenericKernel<stokes_doublepvel> {
      |                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:25:48: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:25:48: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:64:52: error: expected template-name before '<' token
   64 | struct stokes_doublepvelgrad : public GenericKernel<stokes_doublepvelgrad> {
      |                                                    ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:64:52: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:64:52: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:150:53: error: expected template-name before '<' token
  150 | struct stokes_doublelaplacian : public GenericKernel<stokes_doublelaplacian> {
      |                                                     ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:150:53: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:150:53: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:213:52: error: expected template-name before '<' token
  213 | struct stokes_doubletraction : public GenericKernel<stokes_doubletraction> {
      |                                                    ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:213:52: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesDoubleLayerKernel.hpp:213:52: error: expected unqualified-id before '<' token
In file included from /Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:15,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:9,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:27:42: error: expected template-name before '<' token
   27 | struct stokes_pvel : public GenericKernel<stokes_pvel> {
      |                                          ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:27:42: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:27:42: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:54:46: error: expected template-name before '<' token
   54 | struct stokes_pvelgrad : public GenericKernel<stokes_pvelgrad> {
      |                                              ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:54:46: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:54:46: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:118:51: error: expected template-name before '<' token
  118 | struct stokes_pvellaplacian : public GenericKernel<stokes_pvellaplacian> {
      |                                                   ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:118:51: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:118:51: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:162:46: error: expected template-name before '<' token
  162 | struct stokes_traction : public GenericKernel<stokes_traction> {
      |                                              ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:162:46: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesSingleLayerKernel.hpp:162:46: error: expected unqualified-id before '<' token
In file included from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:9,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesLayerKernel<T>::Vel()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:40:28: error: parse error in template argument list
   40 |     static Kernel<T> ker = BuildKernel<T, stokes_vel::Eval<T>>("stokes_vel", 3, std::pair<int, int>(3, 3));
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesLayerKernel<T>::PVel()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:46:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
   46 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:46:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:46:36: error: parse error in template argument list
   46 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:46:96: error: qualified-id in declaration before '<' token
   46 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesLayerKernel<T>::PVelGrad()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:54:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
   54 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:54:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:54:36: error: parse error in template argument list
   54 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:54:96: error: qualified-id in declaration before '<' token
   54 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:57:69: error: incomplete type 'pvfmm::stokes_pvelgrad' used in nested name specifier
   57 |     static Kernel<T> stokes_pgker = BuildKernel<T, stokes_pvelgrad::Eval<T>, stokes_doublepvelgrad::Eval<T>>(
      |                                                                     ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:57:69: error: incomplete type 'pvfmm::stokes_pvelgrad' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:57:37: error: parse error in template argument list
   57 |     static Kernel<T> stokes_pgker = BuildKernel<T, stokes_pvelgrad::Eval<T>, stokes_doublepvelgrad::Eval<T>>(
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:57:105: error: qualified-id in declaration before '<' token
   57 |     static Kernel<T> stokes_pgker = BuildKernel<T, stokes_pvelgrad::Eval<T>, stokes_doublepvelgrad::Eval<T>>(
      |                                                                                                         ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesLayerKernel<T>::PVelLaplacian()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:66:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
   66 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:66:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:66:36: error: parse error in template argument list
   66 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:66:96: error: qualified-id in declaration before '<' token
   66 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:70:46: error: incomplete type 'pvfmm::stokes_pvellaplacian' used in nested name specifier
   70 |         BuildKernel<T, stokes_pvellaplacian::Eval<T>, stokes_doublelaplacian::Eval<T>>(
      |                                              ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:70:46: error: incomplete type 'pvfmm::stokes_pvellaplacian' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:70:9: error: parse error in template argument list
   70 |         BuildKernel<T, stokes_pvellaplacian::Eval<T>, stokes_doublelaplacian::Eval<T>>(
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:70:83: error: qualified-id in declaration before '<' token
   70 |         BuildKernel<T, stokes_pvellaplacian::Eval<T>, stokes_doublelaplacian::Eval<T>>(
      |                                                                                   ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesLayerKernel<T>::Traction()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:79:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
   79 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:79:64: error: incomplete type 'pvfmm::stokes_pvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:79:36: error: parse error in template argument list
   79 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:79:96: error: qualified-id in declaration before '<' token
   79 |     static Kernel<T> stokes_pker = BuildKernel<T, stokes_pvel::Eval<T>, stokes_doublepvel::Eval<T>>(
      |                                                                                                ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:83:41: error: incomplete type 'pvfmm::stokes_traction' used in nested name specifier
   83 |         BuildKernel<T, stokes_traction::Eval<T>, stokes_doubletraction::Eval<T>>(
      |                                         ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:83:41: error: incomplete type 'pvfmm::stokes_traction' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:83:9: error: parse error in template argument list
   83 |         BuildKernel<T, stokes_traction::Eval<T>, stokes_doubletraction::Eval<T>>(
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesLayerKernel.hpp:83:77: error: qualified-id in declaration before '<' token
   83 |         BuildKernel<T, stokes_traction::Eval<T>, stokes_doubletraction::Eval<T>>(
      |                                                                             ^
In file included from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_common.hpp:10,
                 from /Users/user/STKFMM/Lib/include/STKFMM/STKFMM_impl.hpp:4,
                 from /Users/user/STKFMM/Lib/src/FMMData.cpp:1:
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp: At global scope:
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:17:44: error: expected template-name before '<' token
   17 | struct stokes_regvel : public GenericKernel<stokes_regvel> {
      |                                            ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:17:44: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:17:44: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:48:46: error: expected template-name before '<' token
   48 | struct stokes_regftvel : public GenericKernel<stokes_regftvel> {
      |                                              ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:48:46: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:48:46: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:96:51: error: expected template-name before '<' token
   96 | struct stokes_regftvelomega : public GenericKernel<stokes_regftvelomega> {
      |                                                   ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:96:51: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:96:51: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:158:46: error: expected template-name before '<' token
  158 | struct stokes_velomega : public GenericKernel<stokes_velomega> {
      |                                              ^
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:158:46: error: expected '{' before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:158:46: error: expected unqualified-id before '<' token
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesRegKernel<T>::Vel()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:214:39: error: incomplete type 'pvfmm::stokes_regvel' used in nested name specifier
  214 |         BuildKernel<T, stokes_regvel::Eval<T>>("stokes_regvel", 3, std::pair<int, int>(4, 3), NULL, NULL, NULL,
      |                                       ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:214:39: error: incomplete type 'pvfmm::stokes_regvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:214:9: error: parse error in template argument list
  214 |         BuildKernel<T, stokes_regvel::Eval<T>>("stokes_regvel", 3, std::pair<int, int>(4, 3), NULL, NULL, NULL,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp: In static member function 'static const pvfmm::Kernel<T>& pvfmm::StokesRegKernel<T>::FTVelOmega()':
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:224:41: error: incomplete type 'pvfmm::stokes_velomega' used in nested name specifier
  224 |         BuildKernel<T, stokes_velomega::Eval<T>>("stokes_velomega", 3, std::pair<int, int>(3, 6));
      |                                         ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:224:41: error: incomplete type 'pvfmm::stokes_velomega' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:224:9: error: parse error in template argument list
  224 |         BuildKernel<T, stokes_velomega::Eval<T>>("stokes_velomega", 3, std::pair<int, int>(3, 6));
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:226:41: error: incomplete type 'pvfmm::stokes_regftvel' used in nested name specifier
  226 |         BuildKernel<T, stokes_regftvel::Eval<T>>("stokes_regftvel", 3, std::pair<int, int>(7, 3));
      |                                         ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:226:41: error: incomplete type 'pvfmm::stokes_regftvel' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:226:9: error: parse error in template argument list
  226 |         BuildKernel<T, stokes_regftvel::Eval<T>>("stokes_regftvel", 3, std::pair<int, int>(7, 3));
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:227:69: error: incomplete type 'pvfmm::stokes_regftvelomega' used in nested name specifier
  227 |     static Kernel<T> s2t_ker = BuildKernel<T, stokes_regftvelomega::Eval<T>>(
      |                                                                     ^~~~
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:227:69: error: incomplete type 'pvfmm::stokes_regftvelomega' used in nested name specifier
/Users/user/STKFMM/Lib/include/STKFMM/StokesRegSingleLayerKernel.hpp:227:32: error: parse error in template argument list
  227 |     static Kernel<T> s2t_ker = BuildKernel<T, stokes_regftvelomega::Eval<T>>(
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [Lib/CMakeFiles/STKFMM_SHARED.dir/src/FMMData.cpp.o] Error 1
make[1]: *** [Lib/CMakeFiles/STKFMM_SHARED.dir/all] Error 2
make: *** [all] Error 2

Debug output in the M2L module

FMMData::readM2LMat expects M2L data to be in a certain format. Mixing debug output in the M2L module (e.g., in the 3D-3D Laplace) and precomputed data can lead to unexpected bugs. I recommend either sending debug to std::cerr or writing data files (rather than streaming). There is also some commented-out debug code that should be removed.

std::cout << "Precomputing time:" << duration / 1e6 << std::endl;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.