BEM_Poisson_Boltzmann.h
Go to the documentation of this file.
1 //
2 // This file is part of the FFEA simulation package
3 //
4 // Copyright (c) by the Theory and Development FFEA teams,
5 // as they appear in the README.md file.
6 //
7 // FFEA is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // FFEA is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with FFEA. If not, see <http://www.gnu.org/licenses/>.
19 //
20 // To help us fund FFEA development, we humbly ask that you cite
21 // the research papers on the package.
22 //
23 
24 /*
25  * BEM_Poisson_Boltzmann.h
26  * Author: Robin Richardson, University of Leeds
27  * Email: pyrar@leeds.ac.uk
28  */
29 
30 #ifndef BEM_POISSON_BOLTZMANN_H_INCLUDED
31 #define BEM_POISSON_BOLTZMANN_H_INCLUDED
32 
33 #include <math.h>
34 
35 #include "FFEA_return_codes.h"
38 
39 #include "GaussianQuadrature_tri.h"
40 #include "GaussianQuadrature_1d.h"
41 
43 public:
48  void set_kappa(scalar kappa);
49  void build_BEM_matrices();
51  void perform_integrals_for_lookup_cell_relative(LinkedListNode<Face> *l_i, vector3 gqp[4], int dx, int dy, int dz);
52  void print_matrices();
55 
56 private:
57 
60 
62  int num_faces;
63 
65 
68 
71 
73  scalar u_4pi(scalar r);
74 
77 
78  /*
79  scalar screened_R_theta(scalar r_perp_mag, scalar half_theta_max, scalar theta_bar, scalar xi);
80  */
81 
82  void gauss_quadrature_4_point(vector3 gqp[4], vector3 *p, scalar *int_u, scalar *int_du, Face *f);
83 
84  scalar self_term(vector3 *n0, vector3 *n1, vector3 *n2, int precision);
85 
86  scalar f_1d(scalar r);
87 
88  scalar f_3d(vector3 *p, vector3 *q);
89 };
90 
91 #endif
scalar f_1d(scalar r)
Definition: BEM_Poisson_Boltzmann.cpp:271
SparseMatrixUnknownPattern * mat_C
Definition: BEM_Poisson_Boltzmann.h:66
void set_kappa(scalar kappa)
Definition: BEM_Poisson_Boltzmann.cpp:86
scalar u_4pi(scalar r)
Definition: BEM_Poisson_Boltzmann.cpp:200
Definition: GaussianQuadrature_tri.h:127
scalar grad_u_4pi(scalar r, scalar r2)
Definition: BEM_Poisson_Boltzmann.cpp:205
scalar kappa
Definition: BEM_Poisson_Boltzmann.h:70
Definition: SparseMatrixUnknownPattern.h:35
void gauss_quadrature_4_point(vector3 gqp[4], vector3 *p, scalar *int_u, scalar *int_du, Face *f)
Definition: BEM_Poisson_Boltzmann.cpp:216
void perform_integrals_for_lookup_cell_self(LinkedListNode< Face > *l_i, vector3 gqp[4])
Definition: BEM_Poisson_Boltzmann.cpp:145
SparseMatrixUnknownPattern * get_D()
Definition: BEM_Poisson_Boltzmann.cpp:195
scalar f_3d(vector3 *p, vector3 *q)
Definition: BEM_Poisson_Boltzmann.cpp:275
SparseMatrixUnknownPattern * mat_D
Definition: BEM_Poisson_Boltzmann.h:66
scalar self_term(vector3 *n0, vector3 *n1, vector3 *n2, int precision)
Definition: BEM_Poisson_Boltzmann.cpp:237
BEM_Poisson_Boltzmann()
Definition: BEM_Poisson_Boltzmann.cpp:40
Definition: BEM_Poisson_Boltzmann.h:42
void build_BEM_matrices()
Definition: BEM_Poisson_Boltzmann.cpp:93
void perform_integrals_for_lookup_cell_relative(LinkedListNode< Face > *l_i, vector3 gqp[4], int dx, int dy, int dz)
Definition: BEM_Poisson_Boltzmann.cpp:165
void print_matrices()
Definition: BEM_Poisson_Boltzmann.cpp:183
SparseMatrixUnknownPattern * get_C()
Definition: BEM_Poisson_Boltzmann.cpp:191
int init(NearestNeighbourLinkedListCube *lookup)
Definition: BEM_Poisson_Boltzmann.cpp:59
NearestNeighbourLinkedListCube * lookup
Definition: BEM_Poisson_Boltzmann.h:59
int num_faces
Definition: BEM_Poisson_Boltzmann.h:62
Definition: NearestNeighbourLinkedListCube.h:34
Definition: GaussianQuadrature_1d.h:85
Definition: mat_vec_types.h:90
double scalar
Definition: mat_vec_types.h:36
Definition: Face.h:38
~BEM_Poisson_Boltzmann()
Definition: BEM_Poisson_Boltzmann.cpp:48