### normal vector stored as a const function

124

views

0

Hello everyone,

I have a 3-component normal vector stored as a

however I do not know how to reach the rows/columns of _normals vector function and do the multiplication with b inside Expression. I can use _normals.vector(), but when I do _normals.vector().size() I get an error saying ‘class std::shared_ptr<const dolfin::GenericVector>’ has no member named ‘size’ which I believe generic vector has a member named size.

Anyone knows how to manage this generic vector in the expression ?

Thanks in advance

I have a 3-component normal vector stored as a

`const Function`

and I pass it as an input to my` Expression`

to make a multiplication with a constant field b defined as `const double b =((M_PI*cos(2*M_PI*x[1]))/25, 1/5, 0.0);`

like so: `class B : public Expression `

`{`

`public: `

`B (const Function &normals) : Expression(3), _normals(normals) {}; `

`void eval(Array<double>& values, const Array<double>& x) const`

` { const double b =((M_PI*cos(2*M_PI*x[1]))/25, 1/5, 0.0); `

` for (size_t i = 0; i < _normals.size(); ++i) { `

` if((b*_normals.vector())<0.0) `

` { values[0] = (M_PI*cos(2*M_PI*x[1]))/25; values[1] = 1/5 ; values[2] = 0.0; } `

` else if((b*_normals.vector())>0.0) `

` { values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; `

` } `

` } `

` } private: const Function &_normals;};`

however I do not know how to reach the rows/columns of _normals vector function and do the multiplication with b inside Expression. I can use _normals.vector(), but when I do _normals.vector().size() I get an error saying ‘class std::shared_ptr<const dolfin::GenericVector>’ has no member named ‘size’ which I believe generic vector has a member named size.

Anyone knows how to manage this generic vector in the expression ?

Thanks in advance

Community: FEniCS Project

### 1 Answer

Please login to add an answer/comment or follow this question.