PDEScalarOperatorExpressionOrderOne Class Reference

#include <PDEOperatorExpression.hpp>

Inheritance diagram for PDEScalarOperatorExpressionOrderOne:

Inheritance graph
[legend]
Collaboration diagram for PDEScalarOperatorExpressionOrderOne:

Collaboration graph
[legend]

List of all members.

Public Types

enum  PDEScalarOperatorType { divMuGrad, secondOrder, firstOrder, zerothOrder }
enum  PDEOperatorType { scalar, vectorial }
enum  Type {
  boolean, boundary, boundaryCondition, boundaryConditionList,
  domain, field, fieldlist, function,
  ifstreamexpression, integrated, integratedOperator, insideExpression,
  insideListExpression, istreamexpression, istreamExpressionList, linearExp,
  mesh, multiLinearExp, multiLinearExpSum, multiLinearForm,
  multiLinearFormSum, ofstreamexpression, option, ostreamexpression,
  ostreamExpressionList, pdeEquation, pdeOperator, pdeOperatorSum,
  pdeProblem, problem, real, scene,
  solver, solverOptions, string, subOption,
  subOptionList, testFunctionList, unknown, unknownList,
  variationalFormula, variationalBilinearOperator, variationalLinearOperator, variationalDirichlet,
  vector3
}

Public Member Functions

bool __checkBoundaryExpression () const
void operator*= (ReferenceCounting< FunctionExpression > f)
virtual void preexec ()
ReferenceCounting
< FunctionExpression
nu (const size_t i) const
const std::string & unknownName () const
 PDEScalarOperatorExpressionOrderOne (const std::string &operatorName, const std::string &unknownName, ReferenceCounting< FunctionExpression > alpha)
 PDEScalarOperatorExpressionOrderOne (const std::string &unknownName)
 PDEScalarOperatorExpressionOrderOne (const PDEScalarOperatorExpressionOrderOne &re)
 ~PDEScalarOperatorExpressionOrderOne ()
ReferenceCounting< PDEOperatorpdeOperator ()
void execute ()
const PDEOperatorTypepdeOperatorType () const
const Expression::Typetype () const
 return the type.

Protected Member Functions

std::ostream & put (std::ostream &os) const
 Writes *this to the output os.
void __execute ()
virtual std::istream & _get (std::istream &is)
 Read *this to the input is.

Static Protected Member Functions

static Expression::Type getType (ReferenceCounting< Expression > e1, ReferenceCounting< Expression > e2)

Protected Attributes

ReferenceCounting
< FunctionExpression
__nu [3]
const std::string __unknownName
ReferenceCounting< PDEOperator__pdeOperator
PDEOperatorType __pdeOperatorType

Friends

std::ostream & operator<< (std::ostream &os, const Expression &e)
 this function allows to output expressions.
std::istream & operator>> (std::istream &is, Expression &e)
 this function allows to read expressions from streams


Detailed Description

Definition at line 217 of file PDEOperatorExpression.hpp.


Member Enumeration Documentation

Enumerator:
divMuGrad 
secondOrder 
firstOrder 
zerothOrder 

Definition at line 74 of file PDEOperatorExpression.hpp.

00074                              {
00075     divMuGrad,
00076     secondOrder,
00077     firstOrder,
00078     zerothOrder
00079   };

Enumerator:
scalar 
vectorial 

Definition at line 43 of file PDEOperatorExpression.hpp.

00043                        {
00044     scalar,
00045     vectorial
00046   };

enum Expression::Type [inherited]

Enumerator:
boolean 
boundary 
boundaryCondition 
boundaryConditionList 
domain 
field 
fieldlist 
function 
ifstreamexpression 
integrated 
integratedOperator 
insideExpression 
insideListExpression 
istreamexpression 
istreamExpressionList 
linearExp 
mesh 
multiLinearExp 
multiLinearExpSum 
multiLinearForm 
multiLinearFormSum 
ofstreamexpression 
option 
ostreamexpression 
ostreamExpressionList 
pdeEquation 
pdeOperator 
pdeOperatorSum 
pdeProblem 
problem 
real 
scene 
solver 
solverOptions 
string 
subOption 
subOptionList 
testFunctionList 
unknown 
unknownList 
variationalFormula 
variationalBilinearOperator 
variationalLinearOperator 
variationalDirichlet 
vector3 

Reimplemented in IFStreamExpression, OFStreamExpression, and UnknownExpression.

Definition at line 42 of file Expression.hpp.

00042              {
00043     boolean,
00044     boundary,
00045     boundaryCondition,
00046     boundaryConditionList,
00047 
00048     domain,
00049 
00050     field,
00051     fieldlist,
00052     function,
00053 
00054     ifstreamexpression,
00055     integrated,
00056     integratedOperator,
00057     insideExpression,
00058     insideListExpression,
00059     istreamexpression,
00060     istreamExpressionList,
00061 
00062     linearExp,
00063 
00064     mesh,
00065     multiLinearExp,
00066     multiLinearExpSum,
00067     multiLinearForm,
00068     multiLinearFormSum,
00069 
00070     ofstreamexpression,
00071     option,
00072     ostreamexpression,
00073     ostreamExpressionList,
00074 
00075     pdeEquation,
00076     pdeOperator,
00077     pdeOperatorSum,
00078     pdeProblem,
00079     problem,
00080 
00081     real,
00082 
00083     scene,
00084     solver,
00085     solverOptions,
00086     string,
00087     subOption,
00088     subOptionList,
00089 
00090     testFunctionList,
00091 
00092     unknown,
00093     unknownList,
00094 
00095     variationalFormula,
00096     variationalBilinearOperator,
00097     variationalLinearOperator,
00098     variationalDirichlet,
00099     vector3
00100   };


Constructor & Destructor Documentation

PDEScalarOperatorExpressionOrderOne::PDEScalarOperatorExpressionOrderOne ( const std::string &  operatorName,
const std::string &  unknownName,
ReferenceCounting< FunctionExpression alpha 
) [inline]

Definition at line 269 of file PDEOperatorExpression.hpp.

References __nu.

00272     : PDEScalarOperatorExpression(unknownName, PDEScalarOperatorExpression::firstOrder)
00273   {
00274     __nu[0] = 0; __nu[1] = 0; __nu[2] = 0;
00275 
00276     if (operatorName == "dx") {
00277       __nu[0] = alpha;
00278       return;
00279     }
00280     if (operatorName == "dy") {
00281       __nu[1] = alpha;
00282       return;
00283     }
00284 
00285     if (operatorName == "dz") {
00286       __nu[2] = alpha;
00287       return;
00288     }
00289   }

PDEScalarOperatorExpressionOrderOne::PDEScalarOperatorExpressionOrderOne ( const std::string &  unknownName  )  [inline]

Definition at line 291 of file PDEOperatorExpression.hpp.

References __nu.

00292     : PDEScalarOperatorExpression(unknownName, PDEScalarOperatorExpression::firstOrder)
00293   {
00294     for (size_t i=0; i<3; ++i)
00295       __nu[i] = 0;
00296   }

PDEScalarOperatorExpressionOrderOne::PDEScalarOperatorExpressionOrderOne ( const PDEScalarOperatorExpressionOrderOne re  )  [inline]

Definition at line 298 of file PDEOperatorExpression.hpp.

References __nu.

00299     : PDEScalarOperatorExpression(re)
00300   {
00301     for (size_t i=0; i<3; ++i)
00302       __nu[i] = re.__nu[i];
00303   }

PDEScalarOperatorExpressionOrderOne::~PDEScalarOperatorExpressionOrderOne (  )  [inline]

Definition at line 305 of file PDEOperatorExpression.hpp.

00306   {
00307     ;
00308   }


Member Function Documentation

std::ostream& PDEScalarOperatorExpressionOrderOne::put ( std::ostream &  os  )  const [inline, protected, virtual]

Writes *this to the output os.

Implements Expression.

Definition at line 223 of file PDEOperatorExpression.hpp.

References __nu, and PDEScalarOperatorExpression::__unknownName.

00224   {
00225     const char d[3] = { 'x', 'y', 'z'};
00226     bool plus = false;
00227     for (size_t i=0; i<3; ++i)
00228       if (__nu[i] != 0) {
00229         if (plus)
00230           os << '+';
00231         os << *(__nu[i]) << "*d" << d[i] << '(' << __unknownName << ')';
00232         plus = true;
00233       }
00234     return os;
00235   }

void PDEScalarOperatorExpressionOrderOne::__execute (  )  [protected, virtual]

Implements PDEOperatorExpression.

Definition at line 135 of file PDEOperatorExpression.cpp.

References __nu, PDEScalarOperatorExpression::__pdeOperator, nu(), and preexec().

00136 {
00137   this->preexec();
00138 
00139   ReferenceCounting<TinyVector<3, ConstReferenceCounting<ScalarFunctionBase> > > nu
00140     = new TinyVector<3, ConstReferenceCounting<ScalarFunctionBase> >;
00141 
00142   for (size_t i=0; i<3; ++i) {
00143     if(__nu[i] != 0) {
00144       (*nu)[i] = __nu[i]->function();
00145     } else {
00146       (*nu)[i] = 0;
00147     }
00148   }
00149 
00150   __pdeOperator = new FirstOrderOperator(nu);
00151 }

Here is the call graph for this function:

bool PDEScalarOperatorExpressionOrderOne::__checkBoundaryExpression (  )  const [virtual]

Implements PDEOperatorExpression.

Definition at line 123 of file PDEOperatorExpression.cpp.

References __nu.

00124 {
00125   for (size_t i=0; i<3; ++i) {
00126     if(__nu[i] != 0) {
00127       if (__nu[i]->hasBoundaryExpression()) {
00128         return true;
00129       }
00130     }
00131   }
00132   return false;
00133 }

void PDEScalarOperatorExpressionOrderOne::operator*= ( ReferenceCounting< FunctionExpression f  )  [inline]

Definition at line 242 of file PDEOperatorExpression.hpp.

References __nu, and BinaryOperation::product.

00243   {
00244     for (size_t i=0; i<3; ++i) {
00245       if (__nu[i] != 0)
00246         __nu[i] = new FunctionExpressionBinaryOperation(BinaryOperation::product,f,__nu[i]);
00247     }
00248   }

virtual void PDEScalarOperatorExpressionOrderOne::preexec (  )  [inline, virtual]

Definition at line 250 of file PDEOperatorExpression.hpp.

References __nu, and PDEOperatorExpression::execute().

Referenced by __execute().

00251   {
00252     for(size_t i=0; i<3; ++i) {
00253       if (__nu[i] != 0)
00254         (*__nu[i]).execute();
00255     }
00256   }

Here is the call graph for this function:

ReferenceCounting<FunctionExpression> PDEScalarOperatorExpressionOrderOne::nu ( const size_t  i  )  const [inline]

Definition at line 258 of file PDEOperatorExpression.hpp.

References __nu, and ASSERT.

Referenced by PDEVectorialOperatorExpressionOrderTwo::__execute(), and __execute().

00259   {
00260     ASSERT (i<3);
00261     return __nu[i];
00262   }

const std::string& PDEScalarOperatorExpressionOrderOne::unknownName (  )  const [inline]

Reimplemented from PDEScalarOperatorExpression.

Definition at line 264 of file PDEOperatorExpression.hpp.

References PDEScalarOperatorExpression::__unknownName.

00265   {
00266     return __unknownName;
00267   }

ReferenceCounting< PDEOperator > PDEScalarOperatorExpression::pdeOperator (  )  [inherited]

Definition at line 67 of file PDEOperatorExpression.cpp.

References PDEScalarOperatorExpression::__pdeOperator.

Referenced by PDEOperatorSumExpression::execute().

00068 {
00069   return __pdeOperator;
00070 }

void PDEOperatorExpression::execute (  )  [virtual, inherited]

Executes the expression.

Implements Expression.

Definition at line 54 of file PDEOperatorExpression.cpp.

References PDEOperatorExpression::__checkBoundaryExpression(), PDEOperatorExpression::__execute(), ErrorHandler::normal, and stringify().

Referenced by PDEOperatorSumExpression::execute(), and preexec().

00055 {
00056   this->__execute();
00057   if (this->__checkBoundaryExpression()) {
00058     throw ErrorHandler(__FILE__, __LINE__,
00059                        "cannot evaluate the expression \""
00060                        +stringify(*this)+
00061                        "\" in the volume",
00062                        ErrorHandler::normal);
00063   }
00064 }

Here is the call graph for this function:

const PDEOperatorType& PDEOperatorExpression::pdeOperatorType (  )  const [inline, inherited]

Definition at line 58 of file PDEOperatorExpression.hpp.

References PDEOperatorExpression::__pdeOperatorType.

Referenced by PDEOperatorSumExpression::execute().

00059   {
00060     return __pdeOperatorType;
00061   }

static Expression::Type Expression::getType ( ReferenceCounting< Expression e1,
ReferenceCounting< Expression e2 
) [inline, static, protected, inherited]

Traits conversion of types.

Todo:
IMPLEMENT IT.

Definition at line 112 of file Expression.hpp.

References Expression::real.

00114   {
00115     return Expression::real;
00116   }

virtual std::istream& Expression::_get ( std::istream &  is  )  [inline, protected, virtual, inherited]

Read *this to the input is.

Reimplemented in IStreamExpressionList, and RealExpressionVariable.

Definition at line 122 of file Expression.hpp.

References ErrorHandler::normal.

00123   {
00124     throw ErrorHandler(__FILE__,__LINE__,
00125                        "operator >> is not supported for this expression",
00126                        ErrorHandler::normal);
00127     return is;
00128   }

const Expression::Type& Expression::type (  )  const [inline, inherited]

return the type.

Reimplemented in FunctionExpression.

Definition at line 132 of file Expression.hpp.

References Expression::__type.

Referenced by MeshExpressionExtract::execute().

00133   {
00134     return __type;
00135   }


Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const Expression e 
) [friend, inherited]

this function allows to output expressions.

Definition at line 143 of file Expression.hpp.

00144   {
00145     return e.put(os);
00146   }

std::istream& operator>> ( std::istream &  is,
Expression e 
) [friend, inherited]

this function allows to read expressions from streams

Definition at line 149 of file Expression.hpp.

00150   {
00151     return e._get(is);
00152   }


Member Data Documentation

const std::string PDEScalarOperatorExpression::__unknownName [protected, inherited]

Reimplemented in PDEVectorialOperatorExpression.

Definition at line 49 of file PDEOperatorExpression.hpp.

Referenced by PDEOperatorExpression::pdeOperatorType().


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

Generated on Wed Nov 19 00:11:32 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6