Code Monkey home page Code Monkey logo

polyquad's Introduction

PyFR

Overview

PyFR is an open-source Python based framework for solving advection-diffusion type problems on streaming architectures using the Flux Reconstruction approach of Huynh. The framework is designed to solve a range of governing systems on mixed unstructured grids containing various element types. It is also designed to target a range of hardware platforms via use of an in-built domain specific language derived from the Mako templating engine.

Examples

Test cases are available in the PyFR-Test-Cases repository.

Contributing

To contribute to PyFR please follow the steps listed below:

  1. Fork this repository to your GitHub account
  2. Create a new branch in your forked repository
  3. Make changes in your new branch
  4. Submit your changes by creating a Pull Request to the develop branch of the original PyFR repository

Modifications to the develop branch are eventually merged into the master branch for a new release.

Help and Community

Information on the usage and structure of PyFR can be found in the documentation.

For further help in developing and using PyFR, or to connect with the wider community of users, please go to the PyFR Discourse.

Authors

See the AUTHORS file.

License

PyFR is released under the New BSD License (see the LICENSE file for details). Documentation is made available under a Creative Commons Attribution 4.0 license (see http://creativecommons.org/licenses/by/4.0/).

polyquad's People

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

polyquad's Issues

Polyquad does not build without MPI

The cause is line 77 of src/actions/iterate.hpp:

typedef std::pair<std::any, std::list<mpi::request>> Req;

and line 496 of the same file:

std::cout << "Rank: "<< rank_ << " ub: " << ub_ << " "

both of which are outside the ifdef POLYQUAD_HAVE_MPI blocks.

Project compiles forever

I have not been able to compile the project
The compiler goes on forever. I killed it after 2 hours, it then uses 24.5 g of memory.
I am on linux
I use gcc 9.2.0
boost 1.77.0
the last version of boost/multiprecision
Eigen 3.4.0

Polyquad fails to build with Eigen 3

When building polyquad with eigen 3 there are some problems: (I use Eigen version 3.3.3)

  • in base.hpp:220ff: the temporal storage of pts.array() and out.array() causes a compiler error. Resolution: call middleRows<N>(i) directly on pts.array():
derived.eval_orthob_block(pts.array().template middleRows<16>(i),
                          out.array().template middleCols<16>(i));
  • when compiling with mpreal, eigen has some bugs:
    • mpreal changed its definition of std::numeric_limits
    • in the algorithm LevenbergMarquardt some values of std::numeric_limits are used, that are not provided. Resolution: Eigen3 must be patched
      eigen.patch.txt
    • I will open an issue in the Eigen3 repository

Compilation takes extraordinary amounts of memory

I'd like to use this program to generate some simplex quadrature rules. However, AFAICT from running /usr/bin/time -v, compilation on master (with just -O2) takes more than four hours and requires more than 256GB of memory. I'm using boost 1.70 and I'm not using MPI.

Is this a (very odd) bug due to me not using MPI, or are these large values expected?

Edit: clarification: I wrote "more than" because I don't have access to a system with more memory - the job was killed at that point.

Project does not compile

Hello,
I am interested in using your program, specifically to get large order (more than 50) quadrature rule on the triangle.
I have a fresh install of boost (version 1.77.0) and Eigen (3.4.0) when running make I get the error shown below.

Best regards.

[ 50%] Building CXX object CMakeFiles/polyquad.dir/src/main.cpp.o
In file included from /home/houdayer/include/Eigen/Core:304,
from /home/houdayer/include/Eigen/Dense:1,
from /home/houdayer/Polyquad-master/src/utils/io.hpp:23,
from /home/houdayer/Polyquad-master/src/actions/eval.hpp:22,
from /home/houdayer/Polyquad-master/src/main.cpp:21:
/home/houdayer/include/Eigen/src/Core/StableNorm.h: In instantiation of ‘typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real Eigen::internal::blueNorm_impl(const Eigen::EigenBase&) [with Derived = Eigen::Block<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, -1, 0, -1, -1>, -1, 1, true>; typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’:
/home/houdayer/include/Eigen/src/Core/StableNorm.h:231:33: required from ‘typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real Eigen::MatrixBase::blueNorm() const [with Derived = Eigen::Block<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, -1, 0, -1, -1>, -1, 1, true>; typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/include/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h:42:14: required from ‘Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<_FunctorType>::minimizeOneStep(Eigen::LevenbergMarquardt<_FunctorType>::FVectorType&) [with _FunctorType = Eigen::NumericalDiff<polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]::min_functor, Eigen::Forward>; Eigen::LevenbergMarquardt<_FunctorType>::FVectorType = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename _FunctorType::JacobianType::Scalar = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/include/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h:286:18: required from ‘Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<_FunctorType>::minimize(Eigen::LevenbergMarquardt<_FunctorType>::FVectorType&) [with _FunctorType = Eigen::NumericalDiff<polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]::min_functor, Eigen::Forward>; Eigen::LevenbergMarquardt<_FunctorType>::FVectorType = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename _FunctorType::JacobianType::Scalar = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/shapes/base.hpp:338:5: required from ‘std::tuple<T, Eigen::Matrix<RhsScalar, -1, 1, 0, -1, 1> > polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]’
/home/houdayer/Polyquad-master/src/actions/find.hpp:124:22: required from ‘void polyquad::process_find(const boost::program_options::variables_map&) [with Domain = polyquad::TriDomain; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/main.cpp:55:32: required from ‘void process_dispatch(const boost::program_options::variables_map&) [with Domain = polyquad::TriDomain; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/main.cpp:84:5: required from here
/home/houdayer/include/Eigen/src/Core/StableNorm.h:136:57: error: ‘digits’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
136 | static const int it = NumTraits::digits(); // number of base-beta digits in mantissa
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/houdayer/include/Eigen/src/Core/StableNorm.h:137:63: error: ‘min_exponent’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
137 | static const int iemin = NumTraits::min_exponent(); // minimum exponent
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

/home/houdayer/include/Eigen/src/Core/StableNorm.h:138:63: error: ‘max_exponent’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
138 | static const int iemax = NumTraits::max_exponent(); // maximum exponent
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

/home/houdayer/include/Eigen/src/Core/StableNorm.h: In instantiation of ‘typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real Eigen::internal::blueNorm_impl(const Eigen::EigenBase&) [with Derived = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’:
/home/houdayer/include/Eigen/src/Core/StableNorm.h:231:33: required from ‘typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real Eigen::MatrixBase::blueNorm() const [with Derived = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename Eigen::NumTraits<typename Eigen::internal::traits::Scalar>::Real = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/include/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h:74:12: required from ‘void Eigen::internal::lmpar2(const QRSolver&, const VectorType&, const VectorType&, typename VectorType::Scalar, typename VectorType::Scalar&, VectorType&) [with QRSolver = Eigen::ColPivHouseholderQR<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, -1, 0, -1, -1> >; VectorType = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename VectorType::Scalar = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/include/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h:92:21: required from ‘Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<_FunctorType>::minimizeOneStep(Eigen::LevenbergMarquardt<_FunctorType>::FVectorType&) [with _FunctorType = Eigen::NumericalDiff<polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]::min_functor, Eigen::Forward>; Eigen::LevenbergMarquardt<_FunctorType>::FVectorType = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename _FunctorType::JacobianType::Scalar = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/include/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h:286:18: required from ‘Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<_FunctorType>::minimize(Eigen::LevenbergMarquardt<_FunctorType>::FVectorType&) [with _FunctorType = Eigen::NumericalDiff<polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]::min_functor, Eigen::Forward>; Eigen::LevenbergMarquardt<_FunctorType>::FVectorType = Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >, -1, 1, 0, -1, 1>; typename _FunctorType::JacobianType::Scalar = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/shapes/base.hpp:338:5: required from ‘std::tuple<T, Eigen::Matrix<RhsScalar, -1, 1, 0, -1, 1> > polyquad::BaseDomain<Derived, T, Ndim, Norbits>::minimise(int) [with Derived = polyquad::TriDomain<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >; int Ndim = 2; int Norbits = 3]’
/home/houdayer/Polyquad-master/src/actions/find.hpp:124:22: required from ‘void polyquad::process_find(const boost::program_options::variables_map&) [with Domain = polyquad::TriDomain; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/main.cpp:55:32: required from ‘void process_dispatch(const boost::program_options::variables_map&) [with Domain = polyquad::TriDomain; T = boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> >]’
/home/houdayer/Polyquad-master/src/main.cpp:84:5: required from here
/home/houdayer/include/Eigen/src/Core/StableNorm.h:136:57: error: ‘digits’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
136 | static const int it = NumTraits::digits(); // number of base-beta digits in mantissa
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/houdayer/include/Eigen/src/Core/StableNorm.h:137:63: error: ‘min_exponent’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
137 | static const int iemin = NumTraits::min_exponent(); // minimum exponent
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

/home/houdayer/include/Eigen/src/Core/StableNorm.h:138:63: error: ‘max_exponent’ is not a member of ‘Eigen::NumTraits<boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<100> > >’
138 | static const int iemax = NumTraits::max_exponent(); // maximum exponent
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

make[2]: *** [CMakeFiles/polyquad.dir/build.make:63 : CMakeFiles/polyquad.dir/src/main.cpp.o] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:76 : CMakeFiles/polyquad.dir/all] Erreur 2
make: *** [Makefile:84 : all] Erreur 2

Compiling fails with missing 'algorithm'

Dear all,

Compiling Polyquad fails with the following message:

image

I installed boost 1.83 library with Debian Package manager apt install libboost1.83-all-dev and I initialized the cmake build using clang for C and C++ (the generation of the Makefile was successful).

I have also installed eigen.

I am in the master branch of the Polyquad project.

Does anyone know how to fix this?

Thanks in advance.

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.