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;
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);
115 #endif // EXTENDEDBIDOMAINNEUMANNSURFACETERMASSEMBLER_HPP_
ExtendedBidomainNeumannSurfaceTermAssembler(AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, 3 > *pBoundaryConditions)
BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > * mpBoundaryConditions
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)