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,
108 mScaleFactor = scaleFactor;
112 template <
unsigned ELEMENT_DIM,
unsigned SPACE_DIM,
unsigned PROBLEM_DIM>
115 c_vector<double, ELEMENT_DIM>& rPhi,
118 c_vector<double, ELEMENT_DIM*PROBLEM_DIM> ret;
119 c_vector<double, PROBLEM_DIM> neumann_bc_values;
121 for (
unsigned i=0; i<ELEMENT_DIM; i++)
123 for (
unsigned problem_dim = 0; problem_dim<PROBLEM_DIM; problem_dim++)
125 double neumann_bc_value = this->
mpBoundaryConditions->GetNeumannBCValue(&rSurfaceElement, rX, problem_dim);
127 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)