ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
integrator.hpp File Reference

Implementation of numerical integration routines. More...

#include <math.h>
#include <iostream>
#include "viennashe/forwards.h"
#include "viennashe/log/log.hpp"
#include "viennashe/math/log_keys.h"

Go to the source code of this file.

Classes

class  viennashe::math::IntMidPointRule
 Tag for the midpoint rule. More...
 
class  viennashe::math::IntTrapezoidalRule
 Tag for the trapezoidal rule. More...
 
class  viennashe::math::IntSimpsonRule
 Tag for the simpson rule. More...
 
class  viennashe::math::IntAdaptiveRule< IntRule >
 Tag for an adaptive integration rule. More...
 
class  viennashe::math::IntGauss< int_points >
 Gaussian integration rule. More...
 
class  viennashe::math::BindFirst< T >
 Binds the first argument of a function of functor to a certain value. More...
 
class  viennashe::math::BindSecond< T >
 Binds the second argument of a function or functor to a certain value. More...
 
class  viennashe::math::IntegrationBinder< T, IntRule >
 A binder for reducing an n-ary function to an n-1-ary function by integration over one variable. More...
 

Namespaces

namespace  viennashe
 The main ViennaSHE namespace. All functionality resides inside this namespace.
 
namespace  viennashe::math
 Namespace for all math specific code

 

Functions

template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntMidPointRule)
 Integration of a function using the mid point rule. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntTrapezoidalRule)
 Integration of a function using the trapezoidal rule. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntSimpsonRule)
 Integration of a function using the simpson rule. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 1 >)
 Integration of a function using the Gauss rule, 1 evaluation node. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 2 >)
 Integration of a function using the Gauss rule, 2 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 3 >)
 Integration of a function using the Gauss rule, 3 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 4 >)
 Integration of a function using the Gauss rule, 4 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 5 >)
 Integration of a function using the Gauss rule, 5 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 6 >)
 Integration of a function using the Gauss rule, 6 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 7 >)
 Integration of a function using the Gauss rule, 7 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 8 >)
 Integration of a function using the Gauss rule, 8 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 9 >)
 Integration of a function using the Gauss rule, 9 evaluation nodes. More...
 
template<typename T >
double viennashe::math::integrate (T const &f, double a, double b, IntGauss< 10 >)
 Integration of a function using the Gauss rule, 10 evaluation nodes. More...
 
template<typename T , typename U >
double viennashe::math::integrate (T const &f, double a, double b, IntAdaptiveRule< U > adaptiverule, long recursion_depth=0)
 Integration of a function using an adaptive integration rule based on bisection of the integration interval. More...
 
template<typename T , typename IntRuleTag >
double viennashe::math::integrate2D (double a1, double b1, double a2, double b2, T const &func2integrate, IntRuleTag)
 Convenience overload for two-dimensional integration. More...
 

Detailed Description

Implementation of numerical integration routines.

Will be replaced by functionality from ViennaMath in the future.

Definition in file integrator.hpp.