Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Member Functions | Private Attributes | Static Private Attributes
hp3D::SumFactorization Class Reference

Sum factorization for an element matrix. More...

#include <sumfact.hh>

Collaboration diagram for hp3D::SumFactorization:
Collaboration graph
[legend]

List of all members.

Public Member Functions

template<typename T >
void operator() (concepts::ElementMatrix< Real > &em, const concepts::Array< Real > &jacobian, T *coeff, const ShapeFunction3D< Real > &u, const ShapeFunction3D< Real > &v)
 Application operator.

Static Public Member Functions

Timing Interface

These functions are used to get timings from class internal computations.

The values are stored in a user defined concepts::InOutParameters structure in different arrays (see setTimings). These arrays can be grouped into a table for easier postprocessing with

    concepts::ResultsTable table;
    table.addMap(concepts::ResultsTable::DOUBLE, "jacobian", output);
    table.addMap(concepts::ResultsTable::DOUBLE, "whole_sumfact", output);
    std::ofstream ofs("table.gnuplot");
    ofs << std::setprecision(20);
    table.print<concepts::ResultsTable::GNUPLOT>(ofs);
static void setTimings (concepts::InOutParameters *timings)
 Sets the class to store the timing values in.
static bool timings ()
 Returns true if the class is able to do timings.

Private Attributes

concepts::Array< Real > sumfact1_
 Intermediate matrices for sum factorization.
concepts::Array< Real > sumfact2_

Static Private Attributes

static uint timeCntr_
 Counter for timing table.
static concepts::InOutParameterstimings_
 Place to store timing values.

Detailed Description

Sum factorization for an element matrix.

This class is equiped with an interface to get timings of internal computations if compiled accordingly (see bilinearForm.cc file), see setTimings() and timings().

Todo:
Implement changing order of sum factorization, possibility is there
Bug:
If the loops are reordered using a, b and c on line 58, coeff (by use of coeffTmp) is not accessed in the correct order in the first loop to fill sumfact1_.
Author:
Philipp Frauenfelder, 2002

Definition at line 40 of file sumfact.hh.


Member Function Documentation

template<typename T >
void hp3D::SumFactorization::operator() ( concepts::ElementMatrix< Real > &  em,
const concepts::Array< Real > &  jacobian,
T *  coeff,
const ShapeFunction3D< Real > &  u,
const ShapeFunction3D< Real > &  v 
)

Application operator.

Adds the contribution of coeff to em.

Parameters:
emElement matrix
jacobianJacobian
coeffCoefficients for the integration
uLeft shape functions
vRight shape functions
static void hp3D::SumFactorization::setTimings ( concepts::InOutParameters timings) [static]

Sets the class to store the timing values in.

Additionally, the timeCntr_ is reset to 0. This counter is used to fill in the values into the arrays listed below in subsequent calls. The following timings are taken and stored in timings:

  • computation of the first intermediate matrix in first_temp
  • computation of the second intermediate matrix in second_temp
  • computation of the element matrix in fill_em
static bool hp3D::SumFactorization::timings ( ) [static]

Returns true if the class is able to do timings.

The ability to do timings depends on a compiler switch in sumfact.cc file.


Member Data Documentation

Intermediate matrices for sum factorization.

Definition at line 90 of file sumfact.hh.

Definition at line 90 of file sumfact.hh.

uint hp3D::SumFactorization::timeCntr_ [static, private]

Counter for timing table.

Definition at line 95 of file sumfact.hh.

Place to store timing values.

Definition at line 93 of file sumfact.hh.


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

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)