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,
91 #define COVERAGE_IGNORE //no non-zero Neumann BC allowed at the moment in extended bidomain problems
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;
105 for (
unsigned i=0; i<3*ELEMENT_DIM; i = i + 3)
107 ret(i) = rPhi(i)*sigma_i_times_grad_phi_i_first_cell_dot_n;
108 ret(i+1) = rPhi(i)*sigma_i_times_grad_phi_i_second_cell_dot_n;
109 ret(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);
113 #undef COVERAGE_IGNORE
115 #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)