50 Matrix invK (
static_cast<UInt> (3),
static_cast<UInt> (3) );
53 const Real Entry00 = 1.;
54 const Real Entry01 = -1.;
55 const Real Entry02 = 0.;
58 const Real Entry11 = 2.;
59 const Real Entry12 = 0.;
62 const Real Entry22 = 1.;
65 invK (
static_cast<UInt> (0),
static_cast<UInt> (0) ) = Entry00;
66 invK (
static_cast<UInt> (0),
static_cast<UInt> (1) ) = Entry01;
67 invK (
static_cast<UInt> (0),
static_cast<UInt> (2) ) = Entry02;
68 invK (
static_cast<UInt> (1),
static_cast<UInt> (0) ) = Entry01;
69 invK (
static_cast<UInt> (1),
static_cast<UInt> (1) ) = Entry11;
70 invK (
static_cast<UInt> (1),
static_cast<UInt> (2) ) = Entry12;
71 invK (
static_cast<UInt> (2),
static_cast<UInt> (0) ) = Entry02;
72 invK (
static_cast<UInt> (2),
static_cast<UInt> (1) ) = Entry12;
73 invK (
static_cast<UInt> (2),
static_cast<UInt> (2) ) = Entry22;
81 return (P
[0
] * P
[1
] - 0.5 * P
[2
]);
87 return - 4. * P
[1
] * P
[1
] + 4. * P
[0
] * P
[0
] - 8. * P
[0
] * P
[1
] + 6. +
94 Vector source (
static_cast<
UInt> (3) );
96 const Real Entry0 = std::pow ( P
[0
], 3 );
97 const Real Entry1 = 2. * P
[1
];
98 const Real Entry2 = 4. * P
[2
];
100 source (
static_cast<UInt> (0) ) = Entry0;
101 source (
static_cast<UInt> (1) ) = Entry1;
102 source (
static_cast<UInt> (2) ) = Entry2;
116 dirichletBDfun.setFunction ( dirichlet );
117 neumannBDfun1.setFunction ( neumann1 );
118 neumannBDfun2.setFunction ( neumann2 );
120 robinBDfun.setFunctions_Robin ( robin, robinMass );
122 bcDarcy->addBC (
"Top", BCFlags::TOP, Natural, Full, neumannBDfun1, 1);
123 bcDarcy->addBC (
"Bottom", BCFlags::BOTTOM, Robin, Scalar, robinBDfun );
124 bcDarcy->addBC (
"Left", BCFlags::LEFT, Essential, Scalar, dirichletBDfun );
125 bcDarcy->addBC (
"Right", BCFlags::RIGHT, Essential, Scalar, dirichletBDfun );
126 bcDarcy->addBC (
"Back", BCFlags::BACK, Essential, Scalar, dirichletBDfun );
127 bcDarcy->addBC (
"Front", BCFlags::FRONT, Natural, Full, neumannBDfun2, 1);
191 return x * x * y * y + 6. * x + 5. * z;
204 return -1. * ( 4. * x * y * y + 2. * x * x * y + 12. - 2. * x * x * x - 2. * y );
207 return -1. * ( 2. * y * x * x + 2. * x * y * y + 6. - 2. * y - x * x * x );
210 return -1. * ( 5. - 4. * z );
Real dirichlet(const Real &t, const Real &x, const Real &y, const Real &z, const ID &ic)
Real neumann1(const Real &, const Real &, const Real &, const Real &, const ID &)
Real robinMass(const Real &, const Real &, const Real &, const Real &, const ID &)
darcySolverLinear_Type::bcHandlerPtr_Type bcHandlerPtr_Type
Real const & operator[](UInt const &i) const
Operator [].
virtual Matrix eval(const UInt &iElem, const Vector3D &P, const Real &time=0.) const
Abstract virtual eval function.
BCFunctionRobin - class that holds the function used for prescribing Robin boundary conditions...
BCFunctionBase - class that holds the function used for prescribing boundary conditions.
Real analyticalFlux(const Real &, const Real &, const Real &, const Real &, const ID &)
virtual Vector eval(const UInt &iElem, const Vector3D &P, const Real &time=0.) const
Abstract virtual eval function.
Real analyticalSolution(const Real &t, const Real &x, const Real &y, const Real &, const ID &)
Analytical solution.
double Real
Generic real data.
Real robin(const Real &, const Real &, const Real &, const Real &, const ID &)
Real neumann2(const Real &, const Real &, const Real &, const Real &, const ID &)
virtual Real eval(const UInt &iElem, const Vector3D &P, const Real &time=0.) const
Abstract virtual eval function.
VectorSmall< 3 > Vector3D
void setBoundaryConditions(bcHandlerPtr_Type &bcDarcy)
Boundary data.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
virtual Real eval(const UInt &iElem, const Vector3D &P, const Real &time=0.) const
Abstract virtual eval function.