QuOc

 

Public Member Functions | Private Attributes

qc::DoubleCone3d< RealType > Class Template Reference

Class for the double cone anisotropy in 3d (Frank diagram is a cylinder aligned to the z-axis). More...

#include <anisotropies.h>

Inheritance diagram for qc::DoubleCone3d< RealType >:
qc::Anisotropy3dGraphInterface< RealType, DoubleCone3d< RealType > >

List of all members.

Public Member Functions

 DoubleCone3d (RealType delta)
RealType gammaNorm (const aol::Vec3< RealType > &z) const
void gammaFirstDerivative (const aol::Vec3< RealType > &, const aol::Vec3< RealType > &z, aol::Vec3< RealType > &v) const
 evaluating the first derivative: $ \gamma_z = \frac{z}{|z|_{\varepsilon}} $
void gammaFirstDerivative (const aol::Vec3< RealType > &z, aol::Vec3< RealType > &v) const
 evaluating the first derivative: $ \gamma_z = \frac{z}{|z|_{\varepsilon}} $
void implicitPart (const aol::Vec3< RealType > &z, aol::Matrix33< RealType > &mat) const
 this method computes $ gamma_zz $, it's called implicitPart just for technical reasons.

Private Attributes

RealType _delta
RealType _deltaSqr
 Regularization parameter.

Detailed Description

template<typename RealType>
class qc::DoubleCone3d< RealType >

Class for the double cone anisotropy in 3d (Frank diagram is a cylinder aligned to the z-axis).

Definition at line 722 of file anisotropies.h.


Constructor & Destructor Documentation

template<typename RealType >
qc::DoubleCone3d< RealType >::DoubleCone3d ( RealType  delta  )  [inline]

Definition at line 733 of file anisotropies.h.

                                  :
    Anisotropy3dGraphInterface<RealType, DoubleCone3d<RealType> > ( ), _delta ( delta ), _deltaSqr ( delta*delta ) { }


Member Function Documentation

template<typename RealType >
void qc::DoubleCone3d< RealType >::gammaFirstDerivative ( const aol::Vec3< RealType > &  ,
const aol::Vec3< RealType > &  z,
aol::Vec3< RealType > &  v 
) const [inline]

evaluating the first derivative: $ \gamma_z = \frac{z}{|z|_{\varepsilon}} $

Definition at line 744 of file anisotropies.h.

                                                                                                                  {
    gammaFirstDerivative ( z, v );
  }

template<typename RealType >
void qc::DoubleCone3d< RealType >::gammaFirstDerivative ( const aol::Vec3< RealType > &  z,
aol::Vec3< RealType > &  v 
) const [inline]

evaluating the first derivative: $ \gamma_z = \frac{z}{|z|_{\varepsilon}} $

Definition at line 749 of file anisotropies.h.

References qc::DoubleCone3d< RealType >::_delta.

                                                                                       {
    const RealType t1 = z[0]*z[0];
    const RealType t2 = z[1]*z[1];
    const RealType t3 = _delta*_delta;
    const RealType t5 = sqrt(t1+t2+t3);
    const RealType t6 = t5+z[2];
    const RealType t7 = t6*t6;
    const RealType t9 = sqrt(t7+t3);
    const RealType t10 = 1/t9;
    const RealType t11 = t10*t6;
    const RealType t12 = 1/t5;
    const RealType t13 = t12*z[0];
    const RealType t16 = t5-z[2];
    const RealType t17 = t16*t16;
    const RealType t19 = sqrt(t17+t3);
    const RealType t20 = 1/t19;
    const RealType t21 = t20*t16;
    const RealType t25 = t12*z[1];
    v[0] = 0.5*t11*t13+0.5*t21*t13;
    v[1] = 0.5*t11*t25+0.5*t21*t25;
    v[2] = 0.5*t10*t6-0.5*t20*t16;
  }

template<typename RealType >
RealType qc::DoubleCone3d< RealType >::gammaNorm ( const aol::Vec3< RealType > &  z  )  const [inline]

Evaluating the function itself, i.e. the regularization of $ \gamma(z) = \sqrt{z_0^2 + \epsilon^2} + \sqrt{z_1^2 + \epsilon^2} + \sqrt{z_2^2 + \epsilon^2} $.

Definition at line 738 of file anisotropies.h.

References qc::DoubleCone3d< RealType >::_deltaSqr, and aol::Sqr().

                                                          {
    return ( 0.5 * ( sqrt( aol::Sqr( sqrt ( z[0]*z[0] + z[1]*z[1] ) + z[2] ) + _deltaSqr ) 
                   + sqrt( aol::Sqr( sqrt ( z[0]*z[0] + z[1]*z[1] ) - z[2] ) + _deltaSqr ) ) );
  }

template<typename RealType >
void qc::DoubleCone3d< RealType >::implicitPart ( const aol::Vec3< RealType > &  z,
aol::Matrix33< RealType > &  mat 
) const [inline]

this method computes $ gamma_zz $, it's called implicitPart just for technical reasons.

Definition at line 773 of file anisotropies.h.

References qc::DoubleCone3d< RealType >::_delta.

                                                                                     {
    // maple part
    RealType x = z[0]; RealType y = z[1];
    
    const RealType t1 = x*x;
    const RealType t2 = y*y;
    const RealType t3 = _delta*_delta;
    const RealType t4 = t1+t2+t3;
    const RealType t5 = sqrt(t4);
    const RealType t6 = t5+z[2];
    const RealType t7 = t6*t6;
    const RealType t8 = t7+t3;
    const RealType t9 = sqrt(t8);
    const RealType t11 = 1/t9/t8;
    const RealType t12 = t11*t7;
    const RealType t13 = 1/t4;
    const RealType t14 = t13*t1;
    const RealType t17 = 1/t9;
    const RealType t18 = t17*t13;
    const RealType t21 = t17*t6;
    const RealType t23 = 1/t5/t4;
    const RealType t24 = t23*t1;
    const RealType t27 = 1/t5;
    const RealType t29 = 0.5*t21*t27;
    const RealType t30 = t5-z[2];
    const RealType t31 = t30*t30;
    const RealType t32 = t31+t3;
    const RealType t33 = sqrt(t32);
    const RealType t35 = 1/t33/t32;
    const RealType t36 = t35*t31;
    const RealType t39 = 1/t33;
    const RealType t40 = t39*t13;
    const RealType t43 = t39*t30;
    const RealType t47 = 0.5*t43*t27;
    const RealType t50 = t13*x*y;
    const RealType t53 = x*y;
    const RealType t57 = t23*x*y;
    const RealType t66 = -0.5*t12*t50+0.5*t18*t53-0.5*t21*t57-0.5*t36*t50+0.5*t40*t53-0.5*t43*t57;
    const RealType t68 = t27*x;
    const RealType t71 = 0.5*t11*t6*t6*t68;
    const RealType t72 = t17*t27;
    const RealType t73 = t72*x;
    const RealType t78 = -0.5*t35*t30*t30*t68;
    const RealType t79 = t39*t27;
    const RealType t80 = t79*x;
    const RealType t83 = t13*t2;
    const RealType t88 = t23*t2;
    const RealType t102 = 0.5*t11*t6*t6*t27*y;
    const RealType t103 = t72*y;
    const RealType t109 = -0.5*t35*t30*t30*t27*y;
    const RealType t110 = t79*y;
    mat[0][0] = -0.5*t12*t14+0.5*t18*t1-0.5*t21*t24+t29-0.5*t36*t14+0.5*t40*t1-0.5*t43*t24+t47;
    mat[0][1] = t66;
    mat[0][2] = -t71+0.5*t73-t78-0.5*t80;
    mat[1][0] = t66;
    mat[1][1] = -0.5*t12*t83+0.5*t18*t2-0.5*t21*t88+t29-0.5*t36*t83+0.5*t40*t2-0.5*t43*t88+t47;
    mat[1][2] = -t102+0.5*t103-t109-0.5*t110;
    mat[2][0] = -t71+0.5*t73-t78-0.5*t80;
    mat[2][1] = -t102+0.5*t103-t109-0.5*t110;
    mat[2][2] = -0.5*t11*t6*t6+0.5*t17-0.5*t35*t30*t30+0.5*t39;
  }


Member Data Documentation

template<typename RealType >
RealType qc::DoubleCone3d< RealType >::_delta [private]
template<typename RealType >
RealType qc::DoubleCone3d< RealType >::_deltaSqr [private]

Regularization parameter.

Definition at line 730 of file anisotropies.h.

Referenced by qc::DoubleCone3d< RealType >::gammaNorm().


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

Generated on Fri Sep 9 2011 21:09:36 for QuocMesh by doxygen 1.7.1