Tests the Jacobian for anisotropic and isotropic refinements of quadrilaterals in two dimensions. More...

#include <testJacobian.hh>

Inheritance diagram for test::TestJacobian2D:
test::TestCase

Public Member Functions

void _succeed ()
 Explicitly succeds a test. More...
 
long getNumFailed () const
 Returns number of failed tests. More...
 
long getNumPassed () const
 Returns number of passed tests. More...
 
const ostream * getStream () const
 Returns output stream. More...
 
long report () const
 Prints a report on the number of passed and failed tests to the output stream. More...
 
virtual void reset ()
 Resets the counters for the failed and passed tests. More...
 
virtual void run ()
 Runs the tests. Must be overwritten by the specialization. More...
 
void setStream (ostream *osptr)
 Sets the output stream. More...
 
virtual ~TestJacobian2D ()
 

Protected Member Functions

void do_fail (const string &lbl, const char *fname, long lineno)
 Internal function to report a failed test (besides increasing the failed counter) More...
 
bool do_numtest (double num, double orig, const string &lbl, const string &lbl2, const char *fname, long lineno, const double tol=1e-10)
 Internal function to do a numerical test. More...
 
bool do_numtest (std::complex< double > num, std::complex< double > orig, const string &lbl, const string &lbl2, const char *fname, long lineno, const double tol=1e-10)
 
bool do_test (bool cond, const string &lbl, const char *fname, long lineno)
 Internal function to do a test. More...
 

Private Attributes

long m_nFail
 
long m_nPass
 
ostream * m_osptr
 

Test routines

void testRot0Isotropic ()
 Tests Jacobians for isotropic subdivisions. More...
 
void testRot0Horizontal ()
 Tests Jacobians for anisotropic, horizontal subdivisions. More...
 
void testRot0Vertical ()
 Tests Jacobians for anisotropic, vertical subdivisions. More...
 
void testRot1Isotropic ()
 Tests Jacobians for isotropic subdivisions. More...
 
void testRot1Horizontal ()
 Tests Jacobians for anisotropic, horizontal subdivisions. More...
 
void testRot1Vertical ()
 Tests Jacobians for anisotropic, vertical subdivisions. More...
 
void testRot2Isotropic ()
 Tests Jacobians for isotropic subdivisions. More...
 
void testRot2Horizontal ()
 Tests Jacobians for anisotropic, horizontal subdivisions. More...
 
void testRot2Vertical ()
 Tests Jacobians for anisotropic, vertical subdivisions. More...
 
void testRot3Isotropic ()
 Tests Jacobians for isotropic subdivisions. More...
 
void testRot3Horizontal ()
 Tests Jacobians for anisotropic, horizontal subdivisions. More...
 
void testRot3Vertical ()
 Tests Jacobians for anisotropic, vertical subdivisions. More...
 
void recTest_ (concepts::Quad2d *q, Real guess, Real div, Real guess00, Real div00, Real guess01, Real div01, Real guess10, Real div10, Real guess11, Real div11, uint rec, const concepts::Quad2dSubdivision *ref=0)
 Recursively test the Jacobian of the children of q to be equal to guess. More...
 

Detailed Description

Tests the Jacobian for anisotropic and isotropic refinements of quadrilaterals in two dimensions.

The tested element map is VertexQuad2d, the tests are preformed in four different orientations.

See also
concepts::VertexQuad2d
Author
Philipp Frauenfelder, 2004

Definition at line 31 of file testJacobian.hh.

Constructor & Destructor Documentation

◆ ~TestJacobian2D()

virtual test::TestJacobian2D::~TestJacobian2D ( )
virtual

Member Function Documentation

◆ _succeed()

void test::TestCase::_succeed ( )
inlineinherited

Explicitly succeds a test.

Definition at line 112 of file testcase.hh.

◆ do_fail()

void test::TestCase::do_fail ( const string &  lbl,
const char *  fname,
long  lineno 
)
protectedinherited

Internal function to report a failed test (besides increasing the failed counter)

◆ do_numtest() [1/2]

bool test::TestCase::do_numtest ( double  num,
double  orig,
const string &  lbl,
const string &  lbl2,
const char *  fname,
long  lineno,
const double  tol = 1e-10 
)
protectedinherited

Internal function to do a numerical test.

◆ do_numtest() [2/2]

bool test::TestCase::do_numtest ( std::complex< double >  num,
std::complex< double >  orig,
const string &  lbl,
const string &  lbl2,
const char *  fname,
long  lineno,
const double  tol = 1e-10 
)
protectedinherited

◆ do_test()

bool test::TestCase::do_test ( bool  cond,
const string &  lbl,
const char *  fname,
long  lineno 
)
protectedinherited

Internal function to do a test.

◆ getNumFailed()

long test::TestCase::getNumFailed ( ) const
inlineinherited

Returns number of failed tests.

Definition at line 105 of file testcase.hh.

◆ getNumPassed()

long test::TestCase::getNumPassed ( ) const
inlineinherited

Returns number of passed tests.

Definition at line 103 of file testcase.hh.

◆ getStream()

const ostream* test::TestCase::getStream ( ) const
inlineinherited

Returns output stream.

Definition at line 107 of file testcase.hh.

◆ recTest_()

void test::TestJacobian2D::recTest_ ( concepts::Quad2d q,
Real  guess,
Real  div,
Real  guess00,
Real  div00,
Real  guess01,
Real  div01,
Real  guess10,
Real  div10,
Real  guess11,
Real  div11,
uint  rec,
const concepts::Quad2dSubdivision ref = 0 
)
private

Recursively test the Jacobian of the children of q to be equal to guess.

Parameters
qTest children of this quad
guessGuessed value of the determinant of the Jacobian of the children of q
divguess needs to be divided by div for the next level
guess00Guessed value of the 0,0 entry of the Jacobian
div00Divisor for guess00
guess01Guessed value of the 0,1 entry of the Jacobian
div01Divisor for guess01
guess10Guessed value of the 1,0 entry of the Jacobian
div10Divisor for guess10
guess11Guessed value of the 1,1 entry of the Jacobian
div11Divisor for guess11
recRecusion depth
refRefinement strategy

◆ report()

long test::TestCase::report ( ) const
inherited

Prints a report on the number of passed and failed tests to the output stream.

Returns
Number of failed tests.

◆ reset()

virtual void test::TestCase::reset ( )
inlinevirtualinherited

Resets the counters for the failed and passed tests.

Definition at line 119 of file testcase.hh.

◆ run()

virtual void test::TestJacobian2D::run ( )
virtual

Runs the tests. Must be overwritten by the specialization.

Implements test::TestCase.

◆ setStream()

void test::TestCase::setStream ( ostream *  osptr)
inlineinherited

Sets the output stream.

Definition at line 109 of file testcase.hh.

◆ testRot0Horizontal()

void test::TestJacobian2D::testRot0Horizontal ( )

Tests Jacobians for anisotropic, horizontal subdivisions.

The initial cell is (0,1)2 with the vertices (0,0), (1,0), (1,1), (0,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 1 & 0 \\ 0 & 1/2 \end{pmatrix}$

◆ testRot0Isotropic()

void test::TestJacobian2D::testRot0Isotropic ( )

Tests Jacobians for isotropic subdivisions.

The initial cell is (0,1)2 with the vertices (0,0), (1,0), (1,1), (0,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 1/2 & 0 \\ 0 & 1/2 \end{pmatrix}$

◆ testRot0Vertical()

void test::TestJacobian2D::testRot0Vertical ( )

Tests Jacobians for anisotropic, vertical subdivisions.

The initial cell is (0,1)2 with the vertices (0,0), (1,0), (1,1), (0,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 1/2 & 0 \\ 0 & 1 \end{pmatrix}$

◆ testRot1Horizontal()

void test::TestJacobian2D::testRot1Horizontal ( )

Tests Jacobians for anisotropic, horizontal subdivisions.

The initial cell is (0,1)2 with the vertices (1,0), (1,1), (0,1), (0,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & -1/2 \\ 1 & 0 \end{pmatrix}$

◆ testRot1Isotropic()

void test::TestJacobian2D::testRot1Isotropic ( )

Tests Jacobians for isotropic subdivisions.

The initial cell is (0,1)2 with the vertices (1,0), (1,1), (0,1), (0,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & -1/2 \\ 1/2 & 0 \end{pmatrix}$

◆ testRot1Vertical()

void test::TestJacobian2D::testRot1Vertical ( )

Tests Jacobians for anisotropic, vertical subdivisions.

The initial cell is (0,1)2 with the vertices (1,0), (1,1), (0,1), (0,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & -1 \\ 1/2 & 0 \end{pmatrix}$

◆ testRot2Horizontal()

void test::TestJacobian2D::testRot2Horizontal ( )

Tests Jacobians for anisotropic, horizontal subdivisions.

The initial cell is (0,1)2 with the vertices (1,1), (0,1), (0,0), (1,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} -1 & 0 \\ 0 & -1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} -1 & 0 \\ 0 & -1/2 \end{pmatrix}$

◆ testRot2Isotropic()

void test::TestJacobian2D::testRot2Isotropic ( )

Tests Jacobians for isotropic subdivisions.

The initial cell is (0,1)2 with the vertices (1,1), (0,1), (0,0), (1,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} -1 & 0 \\ 0 & -1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} -1/2 & 0 \\ 0 & -1/2 \end{pmatrix}$

◆ testRot2Vertical()

void test::TestJacobian2D::testRot2Vertical ( )

Tests Jacobians for anisotropic, vertical subdivisions.

The initial cell is (0,1)2 with the vertices (1,1), (0,1), (0,0), (1,0) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} -1 & 0 \\ 0 & -1 \end{pmatrix}$ and one of the children has $\begin{pmatrix} -1/2 & 0 \\ 0 & -1 \end{pmatrix}$

◆ testRot3Horizontal()

void test::TestJacobian2D::testRot3Horizontal ( )

Tests Jacobians for anisotropic, horizontal subdivisions.

The initial cell is (0,1)2 with the vertices (0,1), (0,0), (1,0), (1,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & 1/2 \\ -1 & 0 \end{pmatrix}$

◆ testRot3Isotropic()

void test::TestJacobian2D::testRot3Isotropic ( )

Tests Jacobians for isotropic subdivisions.

The initial cell is (0,1)2 with the vertices (0,1), (0,0), (1,0), (1,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & 1/2 \\ -1/2 & 0 \end{pmatrix}$

◆ testRot3Vertical()

void test::TestJacobian2D::testRot3Vertical ( )

Tests Jacobians for anisotropic, vertical subdivisions.

The initial cell is (0,1)2 with the vertices (0,1), (0,0), (1,0), (1,1) (in this order). The Jacobian in the initial cell is $\begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}$ and one of the children has $\begin{pmatrix} 0 & 1 \\ -1/2 & 0 \end{pmatrix}$

Member Data Documentation

◆ m_nFail

long test::TestCase::m_nFail
privateinherited

Definition at line 139 of file testcase.hh.

◆ m_nPass

long test::TestCase::m_nPass
privateinherited

Definition at line 138 of file testcase.hh.

◆ m_osptr

ostream* test::TestCase::m_osptr
privateinherited

Definition at line 137 of file testcase.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich