1 /*
2 XLiFE++ is an extended library of finite elements written in C++
3     Copyright (C) 2014  Lunéville, Eric; Kielbasiewicz, Nicolas; Lafranche, Yvon; Nguyen, Manh-Ha; Chambeyron, Colin
4 
5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13     You should have received a copy of the GNU General Public License
14     along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16 /*!
17   \file Laplace3dKernel.hpp
18   \author E. Lunéville
19   \since 17 jul 2014
20   \date  17 jul 2014
21 
22   \brief Definition of Laplace 3D kernels
23 
24   Header to deal with Laplace 3D kernel : K(k; x, y)=(1/4 pi*|x-y|)
25 */
26 #ifndef LAPLACE3DKERNEL_HPP
27 #define LAPLACE3DKERNEL_HPP
28 
29 #include "utils.h"
30 
31 namespace xlifepp
32 {
33 
34 Kernel Laplace3dKernel(Parameters& pars = defaultParameters ); //!< construct a Laplace3d kernel
35 
36 //main computation functions
37 real_t Laplace3d(const Point& x, const Point& y,Parameters& pars); //!< value
38 Vector<real_t> Laplace3dGradx(const Point& x, const Point& y,Parameters& pars); //!< gradx
39 Vector<real_t> Laplace3dGrady(const Point& x, const Point& y,Parameters& pars); //!< grady
40 real_t Laplace3dNxdotGradx(const Point& x, const Point& y, Parameters& pars);    //!< nx dot grad_x
41 real_t Laplace3dNydotGrady(const Point& x, const Point& y, Parameters& pars);    //!< ny dot grad_y
42 
43 } // end of namespace xlifepp
44 
45 #endif // LAPLACE3DKERNEL_HPP
46