KADATH
bin_bh.hpp
1 /*
2  Copyright 2017 Philippe Grandclement
3 
4  This file is part of Kadath.
5 
6  Kadath is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Kadath is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with Kadath. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef __BIN_BH_HPP_
21 #define __BIN_BH_HPP_
22 
23 #include "space.hpp"
24 #include "spheric.hpp"
25 #include "homothetic.hpp"
26 #include "bispheric.hpp"
27 namespace Kadath {
28 
35 class Space_bin_bh : public Space {
36 
37  protected:
38  double a_minus ;
39  double a_plus ;
40 
41  public:
42 
66  Space_bin_bh(int ttype, double dist, double rbh1, double rbh2, double rext, int nr) ;
67 
68  Space_bin_bh (FILE*) ;
69 
70  virtual ~Space_bin_bh() ;
71  virtual void save(FILE*) const ;
72 
73  virtual int nbr_unknowns_from_variable_domains() const ;
74  virtual void affecte_coef_to_variable_domains(int& , int, Array<int>&) const ;
75  virtual void xx_to_ders_variable_domains(const Array<double>&, int&) const ;
76  virtual void xx_to_vars_variable_domains(System_of_eqs*, const Array<double>&, int&) const ;
77  virtual Array<int> get_indices_matching_non_std(int dom, int bound) const ;
78 
89  void add_eq (System_of_eqs& syst, const char* eq, const char* rac, const char* rac_der, int nused=-1, Array<int>** pused=0x0) ;
97  void add_bc_sphere_one (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
105  void add_bc_sphere_two (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
113  void add_bc_outer (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
114 
120  void add_eq_int_inf (System_of_eqs& syst, const char* eq) ;
126  void add_eq_int_sphere_one (System_of_eqs& syst, const char* eq) ;
132  void add_eq_int_sphere_two (System_of_eqs& syst, const char* eq) ;
140  void add_eq_zero_mode_inf (System_of_eqs& syst, const char* f, int jtarget, int ktarget) ;
141 } ;
142 }
143 #endif
Spacetime intended for binary black hole configurations (see constructor for details about the domain...
Definition: bin_bh.hpp:35
void add_eq_zero_mode_inf(System_of_eqs &syst, const char *f, int jtarget, int ktarget)
Adds an equation saying that one coefficient of a field is zero (at infinity)
virtual void xx_to_vars_variable_domains(System_of_eqs *, const Array< double > &, int &) const
Update the variables of a system, from the variation of the shape of the domains.
virtual ~Space_bin_bh()
Destructor.
void add_eq_int_inf(System_of_eqs &syst, const char *eq)
Adds an equation being a surface integral at infinity.
void add_bc_sphere_two(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets a boundary condition at the inner radius of the second outer shell.
double a_minus
X-absolute coordinate of the center of the first sphere.
Definition: bin_bh.hpp:38
void add_bc_sphere_one(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets a boundary condition at the inner radius of the first outer shell.
virtual Array< int > get_indices_matching_non_std(int dom, int bound) const
Gives the number of the other domains, touching a given boundary.
virtual int nbr_unknowns_from_variable_domains() const
Gives the number of unknowns coming from the variable shape of the domain.
void add_bc_outer(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets a boundary condition at the outer boundary.
void add_eq_int_sphere_two(System_of_eqs &syst, const char *eq)
Adds an equation being a surface integral on the first sphere.
double a_plus
X-absolute coordinate of the center of the second sphere.
Definition: bin_bh.hpp:39
virtual void affecte_coef_to_variable_domains(int &, int, Array< int > &) const
The variation of the functions describing the shape of the Domain are affected from the unknowns of t...
void add_eq_int_sphere_one(System_of_eqs &syst, const char *eq)
Adds an equation being a surface integral on the first sphere.
Space_bin_bh(int ttype, double dist, double rbh1, double rbh2, double rext, int nr)
Standard constructor
void add_eq(System_of_eqs &syst, const char *eq, const char *rac, const char *rac_der, int nused=-1, Array< int > **pused=0x0)
Adds a bulk equation and two matching conditions.
virtual void save(FILE *) const
Saving function.
virtual void xx_to_ders_variable_domains(const Array< double > &, int &) const
Update the vairable domains from a set of values.
The Space class is an ensemble of domains describing the whole space of the computation.
Definition: space.hpp:1362
Class used to describe and solve a system of equations.