Name | Modified | Size | Downloads / Week |
---|---|---|---|
README.md | 2016-07-19 | 4.4 kB | |
hypergk_quickstart.pdf | 2016-07-19 | 367.8 kB | |
hypergk-0.2-alpha.tar.gz | 2016-07-15 | 44.3 kB | |
hypergk-0.1-alpha.tar.gz | 2016-06-22 | 35.3 kB | |
Totals: 4 Items | 451.9 kB | 0 |
CONTENTS OF THIS FILE
- Introduction
- Documentation
- Requirements
- Installation
- Maintainers
- Release notes
INTRODUCTION
hyperGK is a collection of C++ classes intended to be used as a static library for numerical integration. The library consists of "core integrators" and "refiners". Core integrators will integrate a given integrand in a ryperrectangular region using the direct product of one-dimensional Gauss-Kronrod quadrature rules. This is done in a way to maximize the potential for parallelization. Refiners are "refactored" versions of refiners found in Quadpack, modified to handle the integrations on several variables. Integrations over non-rectangular domains are performed by means variable integration limits.
The user can either let the integration drivers do most of the work automatically or they may "tweak" the integrations. Improper integration limits are informed by means of special constants and a coordinate transformation will be performed automatically. The user can also specify a transformation among a set of predefined common transformations, and they can also easily use transformations of their own.
The goal of the project is to have implemented most of the integration strategies found in Quadpack, for all sorts of problems. For the moment, the refiners that are alreay implemented are those of QAG, QAGP and QAGS. The core integrators for multidimensional integrals are prefixed with HGK and the only one that can be used for the momend is HGK_OMP, parallelized with OpenMP. A version that is parallelized with MPI is also going to be available. Besides those, there is also an integrator named GK, which may be used for integrations in a single variable and result in roundoffs compatible with those of the integrators of Quadpack.
Note that hyperGK is under active development and the API is still being defined. Feedback is most welcome.
DOCUMENTATION
A detailed documentation is planned. For the moment, the user can either check the usage examples found in the demonstrations directory or read the overview found in the project's Wiki.
REQUIREMENTS
hyperGK requires only a C++11 compiler and OpenMP v4.
INSTALLATION
The library is generated by invoking make with the makefile provided, which will result in a static library found in the lib/ subdirectory. To use the library, the user must include the header file found in the include/ directory.
MAINTAINERS
For the moment, there's only me working on this project. Please, don't hesitate in contact me.
ACKNOWLEDGEMENTS
hyperGK has been developed during my time as postdoc at Universidade Federal do ABC, UFABC, and I'm thankful for the finantial support of CAPES and the National Program of Postdoctoral Research, PNPD.
RELEASE NOTES
** Version 0.2-alpha (2016-07-14) **
- Added Fortran bindings.
- Reworked makefiles.
- Fixed some type mismatches between int and size_t.
** Version 0.1-alpha (2016-06-22) **
- Changes to the directory tree.
- Minor bugfixes.
- Added a little quickstart user guide.
** Version 0.04-preview-2016-05-16 **
- Integrals over non-rectangular regions no longer require recursion. Automatic coordinate transformations will be performed in these cases.
- It is now possible to mix variable and improper integration limits. The required transformations will be performed automatically.
- It should now be simpler for the user to supply variable integration limits.
- demo.cpp has been updated to reflect the alterations.
** Version 0.03-preview-2016-04-18 **
- More input checks were added.
- OpenMP v4 is now required. The 'integrate' function will now check if the integrand is already a recursive integral. When this is the case, the core integrator will be set to "exception safe" mode and the integrand evaluations will be performed inside try-blocks. In the event of exception, the loop will be terminated and the exception will be rethrown.
** Version 0.02-preview-2016-04-14 **
- Here I added some input checking and the user is expected to execute all routines inside try-blocks. All messages important to the user will come in the form of runtime exceptions (
std::runtime_error
).