36 #ifndef NATURALNEUMANNSURFACETERMASSEMBLER_HPP
37 #define NATURALNEUMANNSURFACETERMASSEMBLER_HPP
39 #include "AbstractFeSurfaceIntegralAssembler.hpp"
61 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM,
unsigned PROBLEM_DIM>
85 c_vector<double, ELEMENT_DIM>& rPhi,
114 template <
unsigned ELEMENT_DIM,
unsigned SPACE_DIM,
unsigned PROBLEM_DIM>
117 c_vector<double, ELEMENT_DIM>& rPhi,
120 c_vector<double, ELEMENT_DIM*PROBLEM_DIM> ret;
121 c_vector<double, PROBLEM_DIM> neumann_bc_values;
123 for (
unsigned i=0; i<ELEMENT_DIM; i++)
125 for(
unsigned problem_dim = 0; problem_dim<PROBLEM_DIM; problem_dim++)
127 double neumann_bc_value = this->
mpBoundaryConditions->GetNeumannBCValue(&rSurfaceElement, rX, problem_dim);
129 ret(PROBLEM_DIM*i + problem_dim) =
mScaleFactor * rPhi(i) * neumann_bc_value;
void SetScaleFactor(double scaleFactor)
BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > * mpBoundaryConditions
virtual c_vector< double, PROBLEM_DIM *ELEMENT_DIM > ComputeVectorSurfaceTerm(const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, ELEMENT_DIM > &rPhi, ChastePoint< SPACE_DIM > &rX)
NaturalNeumannSurfaceTermAssembler(AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > *pBoundaryConditions)