36 #ifndef EXTENDEDBIDOMAINNEUMANNSURFACETERMASSEMBLER_HPP_
37 #define EXTENDEDBIDOMAINNEUMANNSURFACETERMASSEMBLER_HPP_
39 #include "AbstractFeSurfaceIntegralAssembler.hpp"
49 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
73 c_vector<double,ELEMENT_DIM> &rPhi,
92 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
95 c_vector<double,ELEMENT_DIM> &rPhi,
99 double sigma_i_times_grad_phi_i_first_cell_dot_n = this->mpBoundaryConditions->GetNeumannBCValue(&rSurfaceElement, rX, 0);
100 double sigma_i_times_grad_phi_i_second_cell_dot_n = this->mpBoundaryConditions->GetNeumannBCValue(&rSurfaceElement, rX, 1);
101 double sigma_e_times_grad_phi_e_dot_n = this->mpBoundaryConditions->GetNeumannBCValue(&rSurfaceElement, rX, 2);
103 c_vector<double, 3*ELEMENT_DIM> ret;
111 for (
unsigned i=0; i<ELEMENT_DIM; i++)
113 ret(3*i) = rPhi(i)*sigma_i_times_grad_phi_i_first_cell_dot_n;
114 ret(3*i+1) = rPhi(i)*sigma_i_times_grad_phi_i_second_cell_dot_n;
115 ret(3*i+2) = rPhi(i)*(sigma_i_times_grad_phi_i_first_cell_dot_n + sigma_i_times_grad_phi_i_second_cell_dot_n + sigma_e_times_grad_phi_e_dot_n);
121 #endif // EXTENDEDBIDOMAINNEUMANNSURFACETERMASSEMBLER_HPP_
ExtendedBidomainNeumannSurfaceTermAssembler(AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, 3 > *pBoundaryConditions)
virtual c_vector< double, 3 *ELEMENT_DIM > ComputeVectorSurfaceTerm(const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, ELEMENT_DIM > &rPhi, ChastePoint< SPACE_DIM > &rX)