Classes | Public Types | Static Public Member Functions

OpenTissue::mbd::optimized_ublas_math_policy< real_type_ > Class Template Reference

#include <mbd_optimized_ublas_math_policy.h>

Inheritance diagram for OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >:
OpenTissue::math::BasicMathTypes< real_type_, size_t >

List of all members.

Classes

class  system_matrix_type

Public Types

typedef
OpenTissue::math::BasicMathTypes
< real_type_, size_t > 
basic_math_types
typedef
basic_math_types::index_type 
index_type
typedef basic_math_types::real_type real_type
typedef
ublas::compressed_matrix
< real_type_ > 
matrix_type
typedef ublas::vector< real_type_ > vector_type
typedef vector_type::size_type size_type
typedef ublas::vector< index_typeidx_vector_type
typedef ublas::vector_range
< vector_type
vector_range
typedef ublas::matrix_range
< matrix_type
matrix_range
typedef ublas::vector_range
< idx_vector_type
idx_vector_range

Static Public Member Functions

static matrix_range subrange (matrix_type &M, size_type start1, size_type stop1, size_type start2, size_type stop2)
static vector_range subrange (vector_type &v, size_type start, size_type stop)
static idx_vector_range subrange (idx_vector_type &v, size_type start, size_type stop)
static void get_dimension (vector_type const &v, size_type &n)
static void get_dimensions (matrix_type const &A, size_type &m, size_type &n)
static void resize (vector_type &x, size_type n)
static void resize (idx_vector_type &x, size_type n)
static void resize (matrix_type &A, size_type m, size_type n)
static void prod (matrix_type const &A, vector_type const &x, vector_type const &b, vector_type &y)
static void prod_minus (matrix_type const &A, vector_type const &x, vector_type const &b, vector_type &y)
static void prod (matrix_type const &A, vector_type const &x, vector_type &y)
static void prod_add (matrix_type const &A, vector_type const &x, vector_type &y)
static void prod (matrix_type const &A, vector_type const &x, vector_type &y, real_type const &s)
static void prod_add (matrix_type const &A, vector_type const &x, vector_type &y, real_type const &s)
static void prod_trans (matrix_type const &A, vector_type const &x, vector_type &y)
static void prod_trans (matrix_type const &A, vector_type const &x, vector_type const &b, vector_type &y)
static void prod (vector_type &x, real_type const &s)
static void assign_minus (vector_type const &y, vector_type &x)
static void compute_system_matrix (matrix_type const &invM, matrix_type const &J, system_matrix_type &A)
static real_type row_prod (system_matrix_type const &A, size_type i, vector_type const &x)
 < Interface to support the GaussSeidel NCP solver.
static void prod (system_matrix_type const &A, vector_type const &x, vector_type const &b, vector_type &y)
static void init_system_matrix (system_matrix_type &A, vector_type const &x)
static void update_system_matrix (system_matrix_type &A, size_type i, real_type const &dx)

Detailed Description

template<typename real_type_>
class OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >

The Typebinder takes a template parameter: math_policy_. This template parameter passes along all math types to the mbd engine.

This class implements an optimized math policy using boost uBLAS and highly specialized for the non-linear projected Gauss-Seidel solver.


Member Typedef Documentation

template<typename real_type_ >
typedef OpenTissue::math::BasicMathTypes<real_type_,size_t> OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::basic_math_types
template<typename real_type_ >
typedef ublas::vector_range< idx_vector_type > OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::idx_vector_range
template<typename real_type_ >
typedef ublas::vector<index_type> OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::idx_vector_type
template<typename real_type_ >
typedef ublas::matrix_range< matrix_type > OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::matrix_range
template<typename real_type_ >
typedef ublas::compressed_matrix<real_type_> OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::matrix_type
template<typename real_type_ >
typedef vector_type::size_type OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::size_type
template<typename real_type_ >
typedef ublas::vector_range< vector_type > OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::vector_range
template<typename real_type_ >
typedef ublas::vector<real_type_> OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::vector_type

Member Function Documentation

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::assign_minus ( vector_type const &  y,
vector_type x 
) [inline, static]

computes: x = -y

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::compute_system_matrix ( matrix_type const &  invM,
matrix_type const &  J,
system_matrix_type A 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::get_dimension ( vector_type const &  v,
size_type n 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::get_dimensions ( matrix_type const &  A,
size_type m,
size_type n 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::init_system_matrix ( system_matrix_type A,
vector_type const &  x 
) [inline, static]

This method is specifically introduced to support the GaussSeidel NCP solver.

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod ( vector_type x,
real_type const &  s 
) [inline, static]

computes: x *= s

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod ( matrix_type const &  A,
vector_type const &  x,
vector_type const &  b,
vector_type y 
) [inline, static]

computes: y = prod(A,x) + b

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod ( system_matrix_type const &  A,
vector_type const &  x,
vector_type const &  b,
vector_type y 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod ( matrix_type const &  A,
vector_type const &  x,
vector_type y 
) [inline, static]

computes: y = prod(A,x)

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod ( matrix_type const &  A,
vector_type const &  x,
vector_type y,
real_type const &  s 
) [inline, static]

computes: y = prod(A,x)*s

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod_add ( matrix_type const &  A,
vector_type const &  x,
vector_type y 
) [inline, static]

computes: y += prod(A,x)

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod_add ( matrix_type const &  A,
vector_type const &  x,
vector_type y,
real_type const &  s 
) [inline, static]

computes: y += prod(A,x)*s

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod_minus ( matrix_type const &  A,
vector_type const &  x,
vector_type const &  b,
vector_type y 
) [inline, static]

computes: y = prod(A,x) - b

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod_trans ( matrix_type const &  A,
vector_type const &  x,
vector_type const &  b,
vector_type y 
) [inline, static]

computes: y = prod(trans(A),x) + b

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::prod_trans ( matrix_type const &  A,
vector_type const &  x,
vector_type y 
) [inline, static]

computes: y = prod(trans(A),x)

template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::resize ( matrix_type A,
size_type  m,
size_type  n 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::resize ( vector_type x,
size_type  n 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::resize ( idx_vector_type x,
size_type  n 
) [inline, static]
template<typename real_type_ >
static real_type OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::row_prod ( system_matrix_type const &  A,
size_type  i,
vector_type const &  x 
) [inline, static]

< Interface to support the GaussSeidel NCP solver.

template<typename real_type_ >
static idx_vector_range OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::subrange ( idx_vector_type v,
size_type  start,
size_type  stop 
) [inline, static]
template<typename real_type_ >
static matrix_range OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::subrange ( matrix_type M,
size_type  start1,
size_type  stop1,
size_type  start2,
size_type  stop2 
) [inline, static]
template<typename real_type_ >
static vector_range OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::subrange ( vector_type v,
size_type  start,
size_type  stop 
) [inline, static]
template<typename real_type_ >
static void OpenTissue::mbd::optimized_ublas_math_policy< real_type_ >::update_system_matrix ( system_matrix_type A,
size_type  i,
real_type const &  dx 
) [inline, static]

This method is specifically introduced to support the GaussSeidel NCP solver.


The documentation for this class was generated from the following file: