KADATH
bispheric.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 __BISPHERIC_HPP_
21 #define __BISPHERIC_HPP_
22 
23 
24 #define STD_TYPE 0
25 #define LOG_TYPE 1
26 #define SURR_TYPE 2
27 
28 #include "space.hpp"
29 #include "spheric.hpp"
30 #include "list_comp.hpp"
31 
32 
33 namespace Kadath {
64 class Domain_bispheric_rect : public Domain {
65 
66  private:
67  double aa ;
68  double r_ext ;
69  double eta_minus ;
70  double eta_plus ;
71  double chi_min ;
72 
73  mutable Val_domain* p_eta ;
74  mutable Val_domain* p_chi ;
75  mutable Val_domain* p_phi ;
76 
77  // For derivatives
88  mutable Val_domain* p_detadx ;
99  mutable Val_domain* p_detady ;
110  mutable Val_domain* p_detadz ;
121  mutable Val_domain* p_dchidx ;
132  mutable Val_domain* p_dchidy ;
143  mutable Val_domain* p_dchidz ;
150  mutable Val_domain* p_dphidy ;
157  mutable Val_domain* p_dphidz ;
161  mutable Val_domain* p_dsint ;
162  public:
175  Domain_bispheric_rect (int nd, int ttype, double aa, double rext, double eta_minus, double eta_plus, double chi_min, const Dim_array& nbr) ;
182  Domain_bispheric_rect (int num, FILE* ff) ;
183 
184  virtual ~Domain_bispheric_rect() ;
185  virtual void save (FILE* fd) const ;
186 
187  private:
188  virtual void do_absol () const ;
189  virtual void do_radius () const ;
190  virtual void do_cart () const ;
191  void del_deriv() override;
192  void do_eta() const ;
193  void do_chi() const ;
194  void do_phi() const ;
195  void do_dsint() const ;
196 
201  void do_for_der() const ;
202 
203  public:
204  virtual const Val_domain & get_chi() const ;
205  virtual const Val_domain & get_eta() const ;
206 
207  private:
219  virtual void set_cheb_base(Base_spectral& so) const ;
231  virtual void set_legendre_base(Base_spectral& so) const ;
244  virtual void set_anti_cheb_base(Base_spectral& so) const ;
257  virtual void set_anti_legendre_base(Base_spectral& so) const ;
258 
259  virtual void do_coloc () ;
260  virtual int give_place_var (char*) const ;
261 
262  public:
269  virtual bool is_in(const Point& xx, double prec=1e-13) const ;
281  virtual const Point absol_to_num(const Point& xxx) const;
282 
283  virtual const Point absol_to_num_bound(const Point&, int) const;
284 
291  virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const ;
292 
293  virtual Base_spectral mult (const Base_spectral&, const Base_spectral&) const ;
294 
295  public:
296  virtual Val_domain mult_r (const Val_domain&) const ;
297  virtual Val_domain mult_cos_phi (const Val_domain&) const ;
298  virtual Val_domain mult_sin_phi (const Val_domain&) const ;
299  virtual Val_domain div_chi (const Val_domain&) const ;
300  virtual Val_domain div_sin_chi (const Val_domain&) const ;
301 
302  virtual double val_boundary (int, const Val_domain&, const Index&) const ;
303  virtual Val_domain der_normal (const Val_domain&, int) const ;
304  virtual double integ (const Val_domain&, int) const ;
305  virtual void find_other_dom (int, int, int&, int&) const ;
306 
307  virtual int nbr_points_boundary (int, const Base_spectral&) const ;
308  virtual void do_which_points_boundary (int, const Base_spectral&, Index**, int) const ;
309 
310  virtual int nbr_unknowns (const Tensor&, int) const ;
317  int nbr_unknowns_val_domain (const Val_domain& so) const ;
318  virtual Array<int> nbr_conditions (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
326  int nbr_conditions_val_domain (const Val_domain& eq, int order) const ;
327  virtual Array<int> nbr_conditions_boundary (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
336  int nbr_conditions_val_domain_boundary (const Val_domain& eq, int bound) const ;
337  virtual void export_tau (const Tensor&, int, int, Array<double>&, int&, const Array<int>&,int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
347  void export_tau_val_domain (const Val_domain& eq, int order, Array<double>& res, int& pos_res, int ncond) const ;
348  virtual void export_tau_boundary (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
358  void export_tau_val_domain_boundary (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
359  virtual void affecte_tau (Tensor&, int, const Array<double>&, int&) const ;
367  void affecte_tau_val_domain (Val_domain& so, const Array<double>& cf, int& pos_cf) const ;
368  virtual void affecte_tau_one_coef (Tensor&, int, int, int&) const ;
369 
377  void affecte_tau_one_coef_val_domain (Val_domain& so, int cc, int& pos_cf) const ;
378 
379  virtual Array<int> nbr_conditions_boundary_one_side (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
380 
389  int nbr_conditions_val_domain_boundary_one_side (const Val_domain& eq, int bound) const ;
390 
391  virtual void export_tau_boundary_one_side (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
401  void export_tau_val_domain_boundary_one_side (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
408  Term_eq fithor (const Term_eq& so) const ;
415  Val_domain fithor (const Val_domain&) const ;
416 
417  virtual Tensor import (int, int, int, const Array<int>&, Tensor**) const ;
418  virtual Term_eq derive_flat_cart (int, char, const Term_eq&, const Metric*) const ;
419 
420 public:
421  virtual ostream& print (ostream& o) const ;
422 } ;
423 
461 
462  private:
463  double aa ;
464  double eta_lim ;
465  double r_ext ;
466  double chi_max ;
467 
471  double eta_c ;
472 
482  mutable Val_domain* p_eta ;
483  mutable Val_domain* p_chi ;
484  mutable Val_domain* p_phi ;
485 
486  // For derivatives
501  mutable Val_domain* p_detadx ;
516  mutable Val_domain* p_detady ;
531  mutable Val_domain* p_detadz ;
542  mutable Val_domain* p_dchidx ;
553  mutable Val_domain* p_dchidy ;
564  mutable Val_domain* p_dchidz ;
571  mutable Val_domain* p_dphidy ;
578  mutable Val_domain* p_dphidz ;
582  mutable Val_domain* p_dsint ;
583 
584  public:
595  Domain_bispheric_chi_first (int num, int ttype, double aa, double etalim,
596  double rr, double chi_max, const Dim_array& nbr) ;
603  Domain_bispheric_chi_first (int num, FILE* fd) ;
604 
605  virtual ~Domain_bispheric_chi_first() ;
606  virtual void save(FILE*) const ;
607  private:
608  virtual void do_absol () const ;
609  virtual void do_radius () const ;
610  virtual void do_cart () const ;
611  void del_deriv() override;
616  void do_bound_eta() const ;
617  void do_eta() const ;
618  void do_chi() const ;
619  void do_phi() const ;
620  void do_dsint() const ;
625  void do_for_der() const ;
626 
627  public:
628  virtual const Val_domain & get_chi() const ;
629  virtual const Val_domain & get_eta() const ;
630 
631  private:
643  virtual void set_cheb_base(Base_spectral& so) const ;
655  virtual void set_legendre_base(Base_spectral& so) const ;
668  virtual void set_anti_cheb_base(Base_spectral& so) const ;
681  virtual void set_anti_legendre_base(Base_spectral& so) const ;
682 
683  virtual void do_coloc () ;
684  virtual int give_place_var (char*) const ;
685  public:
692  virtual bool is_in(const Point& xx,double prec=1e-13) const ;
704  virtual const Point absol_to_num(const Point& xxx) const;
705 
706  virtual const Point absol_to_num_bound(const Point&, int) const;
707 
714  virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const ;
715  virtual Base_spectral mult (const Base_spectral&, const Base_spectral&) const ;
716  virtual double integ (const Val_domain&, int) const ;
717 
718  public:
719  virtual Val_domain mult_r (const Val_domain&) const ;
720  virtual Val_domain mult_cos_phi (const Val_domain&) const ;
721  virtual Val_domain mult_sin_phi (const Val_domain&) const ;
722  virtual Val_domain div_chi (const Val_domain&) const ;
723  virtual Val_domain div_sin_chi (const Val_domain&) const ;
724 
725  virtual double val_boundary (int, const Val_domain&, const Index&) const ;
726  virtual void find_other_dom (int, int, int&, int&) const ;
727  virtual Val_domain der_normal (const Val_domain&, int) const ;
728  virtual int nbr_points_boundary (int, const Base_spectral&) const ;
729  virtual void do_which_points_boundary (int, const Base_spectral&, Index**, int) const ;
730 
731  virtual int nbr_unknowns (const Tensor&, int) const ;
738  int nbr_unknowns_val_domain (const Val_domain& so) const ;
739  virtual Array<int> nbr_conditions (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
747  int nbr_conditions_val_domain (const Val_domain& eq, int order) const ;
748  virtual Array<int> nbr_conditions_boundary (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
757  int nbr_conditions_val_domain_boundary (const Val_domain& eq, int bound) const ;
758  virtual void export_tau (const Tensor&, int, int, Array<double>&, int&, const Array<int>&,int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
768  void export_tau_val_domain (const Val_domain& eq, int order, Array<double>& res, int& pos_res, int ncond) const ;
769  virtual void export_tau_boundary (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
779  void export_tau_val_domain_boundary (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
780  virtual void affecte_tau (Tensor&, int, const Array<double>&, int&) const ;
788  void affecte_tau_val_domain (Val_domain& so, const Array<double>& cf, int& pos_cf) const ;
789  virtual void affecte_tau_one_coef (Tensor&, int, int, int&) const ;
797  void affecte_tau_one_coef_val_domain (Val_domain& so, int cc, int& pos_cf) const ;
798 
799  virtual Array<int> nbr_conditions_boundary_one_side (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
800 
809  int nbr_conditions_val_domain_boundary_one_side (const Val_domain& eq, int bound) const ;
810  virtual void export_tau_boundary_one_side (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
820  void export_tau_val_domain_boundary_one_side (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
827  Term_eq fithor (const Term_eq& so) const ;
834  Val_domain fithor (const Val_domain& so) const ;
835 
836  virtual Tensor import (int, int, int, const Array<int>&, Tensor**) const ;
837  virtual Term_eq derive_flat_cart (int, char, const Term_eq&, const Metric*) const ;
838 public:
839  virtual ostream& print (ostream& o) const ;
840 } ;
841 
879 
880  private:
881  double aa ;
882  double r_ext ;
883  double eta_min ;
884  double eta_max ;
885 
889  double chi_c ;
890 
900  mutable Val_domain* p_eta ;
901  mutable Val_domain* p_chi ;
902  mutable Val_domain* p_phi ;
903 
904  // For derivatives
915  mutable Val_domain* p_detadx ;
926  mutable Val_domain* p_detady ;
937  mutable Val_domain* p_detadz ;
951  mutable Val_domain* p_dchidx ;
965  mutable Val_domain* p_dchidy ;
979  mutable Val_domain* p_dchidz ;
986  mutable Val_domain* p_dphidy ;
993  mutable Val_domain* p_dphidz ;
994 
995  public:
1006  Domain_bispheric_eta_first (int num, int ttype, double aa, double rr, double eta_min, double eta_max, const Dim_array& nbr) ;
1013  Domain_bispheric_eta_first (int num, FILE* fd) ;
1014 
1015  virtual ~Domain_bispheric_eta_first() ;
1016  virtual void save (FILE*) const ;
1017 
1018  private:
1019  virtual void do_absol () const ;
1020  virtual void do_radius () const ;
1021  virtual void do_cart () const ;
1022  void del_deriv() override;
1027  void do_bound_chi() const ;
1028  void do_eta() const ;
1029  void do_chi() const ;
1030  void do_phi() const ;
1035  void do_for_der() const ;
1036 
1037  public:
1038  virtual const Val_domain & get_chi() const ;
1039  virtual const Val_domain & get_eta() const ;
1040 
1041  private:
1053  virtual void set_cheb_base(Base_spectral& so) const ;
1065  virtual void set_legendre_base(Base_spectral& so) const ;
1066 
1079  virtual void set_anti_cheb_base(Base_spectral& so) const ;
1092  virtual void set_anti_legendre_base(Base_spectral& so) const ;
1093  virtual void do_coloc () ;
1094  virtual int give_place_var (char*) const ;
1095  public:
1102  virtual bool is_in(const Point& xx,double prec=1e-13) const ;
1114  virtual const Point absol_to_num(const Point& xxx) const;
1115 
1116  virtual const Point absol_to_num_bound(const Point&, int) const;
1117 
1124  virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const ;
1125  virtual Base_spectral mult (const Base_spectral&, const Base_spectral&) const ;
1126 
1127  public:
1128  virtual Val_domain mult_r (const Val_domain&) const ;
1129  virtual Val_domain mult_cos_phi (const Val_domain&) const ;
1130  virtual Val_domain mult_sin_phi (const Val_domain&) const ;
1131  virtual Val_domain div_chi (const Val_domain&) const ;
1132  virtual Val_domain div_sin_chi (const Val_domain&) const ;
1133 
1134 
1135  virtual double val_boundary (int, const Val_domain&, const Index&) const ;
1136  virtual Val_domain der_normal (const Val_domain&, int) const ;
1137  virtual void find_other_dom (int, int, int&, int&) const ;
1138  virtual int nbr_points_boundary (int, const Base_spectral&) const ;
1139  virtual void do_which_points_boundary (int, const Base_spectral&, Index**, int) const ;
1140 
1141  virtual int nbr_unknowns (const Tensor&, int) const ;
1148  int nbr_unknowns_val_domain (const Val_domain& so) const ;
1149  virtual Array<int> nbr_conditions (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1157  int nbr_conditions_val_domain (const Val_domain& eq, int order) const ;
1158  virtual Array<int> nbr_conditions_boundary (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1167  int nbr_conditions_val_domain_boundary (const Val_domain& eq, int bound) const ;
1168  virtual void export_tau (const Tensor&, int, int, Array<double>&, int&, const Array<int>&,int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1178  void export_tau_val_domain (const Val_domain& eq, int order, Array<double>& res, int& pos_res, int ncond) const ;
1179  virtual void export_tau_boundary (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1189  void export_tau_val_domain_boundary (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
1190  virtual void affecte_tau (Tensor&, int, const Array<double>&, int&) const ;
1198  void affecte_tau_val_domain (Val_domain& so, const Array<double>& cf, int& pos_cf) const ;
1199  virtual void affecte_tau_one_coef (Tensor&, int, int, int&) const ;
1207  void affecte_tau_one_coef_val_domain (Val_domain& so, int cc, int& pos_cf) const ;
1208 
1209  virtual Array<int> nbr_conditions_boundary_one_side (const Tensor&, int, int, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1218  int nbr_conditions_val_domain_boundary_one_side (const Val_domain& eq, int bound) const ;
1219  virtual void export_tau_boundary_one_side (const Tensor&, int, int, Array<double>&, int&, const Array<int>&, int n_cmp=-1, Array<int>** p_cmp=0x0) const ;
1229  void export_tau_val_domain_boundary_one_side (const Val_domain& eq, int bound, Array<double>& res, int& pos_res, int ncond) const ;
1230 
1231  virtual Tensor import (int, int, int, const Array<int>&, Tensor**) const ;
1232  virtual Term_eq derive_flat_cart (int, char, const Term_eq&, const Metric*) const ;
1233 public:
1234  virtual ostream& print (ostream& o) const ;
1235 } ;
1236 
1241 class Space_bispheric : public Space {
1242  protected:
1243  double a_minus ;
1244  double a_plus ;
1245  int ndom_minus ;
1246  int ndom_plus ;
1247  int nshells ;
1248 
1249  public:
1253  int get_ndom_minus() const {return ndom_minus ;} ;
1257  int get_ndom_plus() const {return ndom_plus ;} ;
1261  int get_nshells() const {return nshells ;} ;
1262 
1263 
1264  public:
1299  Space_bispheric (int ttype, double dist, double r1, double r2, double rext, int nr) ;
1300 
1324  Space_bispheric (int ttype, double dist, double r1, double r2, int nshells, const Array<double>& rr, int nr) ;
1325 
1350  Space_bispheric (int ttype, double dist, double r1, double r2, int nshells, const Array<double>& rr, const Array<int>& type_r, int nr) ;
1351 
1382  Space_bispheric (int ttype, double dist, int nminus, const Array<double>& rminus, int nplus, const Array<double>& rplus, int nshells, const Array<double>& rr, const Array<int>& type_r, int nr, bool withnuc = true) ;
1383 
1416  Space_bispheric (int ttype, double dist, int nminus, const Array<double>& rminus, const Array<int>& type_r_minus, int nplus, const Array<double>& rplus, const Array<int>& type_r_plus, int nshells, const Array<double>& rr, const Array<int>& type_r, int nr, bool withnuc = true) ;
1417 
1431  Space_bispheric (int ttype, double dist, double rhor1, double rshell1, double rhor2, double rshell2, double rext, int nr) ;
1432 
1446  Space_bispheric (int ttype, double dist, double rhor1, double rshell1, double rhor2, double rshell2, double rext, Dim_array** resol) ;
1447 
1462  Space_bispheric (int ttype, double dist, double rhor1, double rshell1, double rhor2, double rshell2, int nshells, const Array<double>& rshells, int nr) ;
1463 
1464 
1471  Space_bispheric (FILE*, int shell_type = STD_TYPE, bool old = false) ;
1472 
1473 
1481  Space_bispheric (FILE*, int type_minus, int type_plus, int shell_type) ;
1482 
1490  void add_bc_sphere_one (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1498  void add_bc_sphere_two (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1499 
1507  void add_bc_outer_sphere (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1515  void add_bc_outer (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1516 
1524  void add_eq (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1525 
1533  void add_eq_full (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1534 
1542  void add_eq_one_side (System_of_eqs& syst, const char* eq, int nused=-1, Array<int>** pused=0x0) ;
1543 
1550  void add_matching (System_of_eqs& syst, const char* rac, const List_comp& list) ;
1551 
1559  void add_matching (System_of_eqs& syst, const char* rac, int nused=-1, Array<int>** pused=0x0) ;
1560 
1568  void add_matching_one_side (System_of_eqs& syst, const char* rac, int nused=-1, Array<int>** pused=0x0) ;
1569 
1579  void add_eq (System_of_eqs& syst, const char* eq, const char* rac, const char* rac_der, int nused=-1, Array<int>** pused=0x0) ;
1580 
1581 
1590  void add_eq (System_of_eqs& syst, const char* eq, const char* rac, const char* rac_der, const List_comp& list) ;
1591 
1601  void add_eq_no_nucleus (System_of_eqs& syst, const char* eq, const char* rac, const char* rac_der, int nused=-1, Array<int>** pused=0x0) ;
1602 
1603 
1612  void add_eq_no_nucleus (System_of_eqs& syst, const char* eq, const char* rac, const char* rac_der, const List_comp& list) ;
1618  void add_eq_int_inf (System_of_eqs& syst, const char* eq) ;
1624  void add_eq_int_sphere_one (System_of_eqs& syst, const char* eq) ;
1630  void add_eq_int_sphere_two (System_of_eqs& syst, const char* eq) ;
1631 
1639  void add_eq_zero_mode_inf (System_of_eqs& syst, const char* f, int jtarget, int ktarget) ;
1640 
1644  double get_a_minus() const {return a_minus ;} ;
1648  double get_a_plus() const {return a_plus ;} ;
1649 
1655  double int_sphere_one(const Scalar& so) const ;
1661  double int_sphere_two(const Scalar& so) const ;
1667  double int_inf (const Scalar& so) const ;
1668 
1669  virtual ~Space_bispheric() ;
1670  virtual void save(FILE*) const ;
1671 
1672  virtual Array<int> get_indices_matching_non_std(int, int) const ;
1673 } ;
1674 }
1675 #endif
Class for storing the basis of decompositions of a field.
Class for storing the dimensions of an array.
Definition: dim_array.hpp:34
Class for bispherical coordinates with a symmetry with respect to the plane .
Definition: bispheric.hpp:460
void export_tau_val_domain(const Val_domain &eq, int order, Array< double > &res, int &pos_res, int ncond) const
Exports a residual equation in the bulk.
Val_domain * p_chi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:483
virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const
Computes the derivative with respect to the absolute Cartesian coordinates from the derivative with r...
virtual Val_domain mult_cos_phi(const Val_domain &) const
Multiplication by .
void export_tau_val_domain_boundary_one_side(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary,...
virtual Val_domain div_chi(const Val_domain &) const
Division by .
Domain_bispheric_chi_first(int num, int ttype, double aa, double etalim, double rr, double chi_max, const Dim_array &nbr)
Standard constructor :
virtual Val_domain div_sin_chi(const Val_domain &) const
Division by .
int nbr_unknowns_val_domain(const Val_domain &so) const
Computes the number of true unknowns of a Val_domain.
virtual Array< int > nbr_conditions_boundary(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual double integ(const Val_domain &, int) const
Surface integral on a given boundary.
Val_domain * p_eta
Pointer on a Val_domain containing .
Definition: bispheric.hpp:482
void del_deriv() override
Destroys the derivated members (like coloc, cart and radius), when changing the type of colocation po...
virtual ostream & print(ostream &o) const
Delegate function to virtualize the << operator.
virtual void set_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials.
virtual Array< int > nbr_conditions_boundary_one_side(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
Val_domain * p_detadz
Pointer on a Val_domain containing .
Definition: bispheric.hpp:531
Val_domain * bound_eta_der
Pointer on a Val_domain containing the values of the derivative with respect to .
Definition: bispheric.hpp:481
Val_domain * p_dchidx
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:542
virtual Val_domain der_normal(const Val_domain &, int) const
Normal derivative with respect to a given surface.
virtual void do_cart() const
Computes the Cartesian coordinates.
Val_domain * p_dphidy
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:571
double chi_max
Upper bound for .
Definition: bispheric.hpp:466
virtual void affecte_tau(Tensor &, int, const Array< double > &, int &) const
Affects some coefficients to a Tensor.
double aa
Distance scale .
Definition: bispheric.hpp:463
virtual void save(FILE *) const
Saving function.
virtual Base_spectral mult(const Base_spectral &, const Base_spectral &) const
Method for the multiplication of two Base_spectral.
void export_tau_val_domain_boundary(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
Term_eq fithor(const Term_eq &so) const
Returns a fit in with respect to the inner spherical boundary.
Definition: fithor.cpp:165
virtual int nbr_unknowns(const Tensor &, int) const
Computes the number of true unknowns of a Tensor, in a given domain.
virtual const Val_domain & get_chi() const
Returns the variable .
double eta_lim
Lower bound for .
Definition: bispheric.hpp:464
virtual void export_tau_boundary(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
Val_domain * p_dchidy
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:553
virtual const Point absol_to_num_bound(const Point &, int) const
Computes the numerical coordinates from the physical ones for a point lying on a boundary.
virtual void set_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Legendre polynomials.
virtual void affecte_tau_one_coef(Tensor &, int, int, int &) const
Sets at most one coefficient of a Tensor to 1.
void do_dsint() const
Computes the surface element and stores it in *p_dsint.
virtual void do_coloc()
Computes the colocation points.
virtual Term_eq derive_flat_cart(int, char, const Term_eq &, const Metric *) const
Computes the flat derivative of a Term_eq, in Cartesian coordinates.
Val_domain * p_detadx
Pointer on a Val_domain containing .
Definition: bispheric.hpp:501
virtual void set_anti_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials and an astisymetric function with respect...
virtual void find_other_dom(int, int, int &, int &) const
Gives the informations corresponding the a touching neighboring domain.
void affecte_tau_one_coef_val_domain(Val_domain &so, int cc, int &pos_cf) const
Sets at most one coefficient of a Val_domain to 1.
virtual const Val_domain & get_eta() const
Returns the variable .
virtual Array< int > nbr_conditions(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual void set_anti_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Legendre polynomials and an astisymetric function with respect ...
Val_domain * p_dsint
Pointer on a Val_domain containing the surface element on the inner boundary of the domain (being sph...
Definition: bispheric.hpp:582
virtual Val_domain mult_r(const Val_domain &) const
Multiplication by .
virtual void export_tau_boundary_one_side(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary.
virtual int nbr_points_boundary(int, const Base_spectral &) const
Computes the number of relevant collocation points on a boundary.
virtual int give_place_var(char *) const
Translates a name of a coordinate into its corresponding numerical name.
virtual double val_boundary(int, const Val_domain &, const Index &) const
Computes the value of a field at a boundary.
virtual void export_tau(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one in the bulk.
Val_domain * p_detady
Pointer on a Val_domain containing .
Definition: bispheric.hpp:516
virtual const Point absol_to_num(const Point &xxx) const
Computes the numerical coordinates from the physical ones.
Val_domain * p_dphidz
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:578
Val_domain * p_phi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:484
int nbr_conditions_val_domain(const Val_domain &eq, int order) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual void do_which_points_boundary(int, const Base_spectral &, Index **, int) const
Lists all the indices corresponding to true collocation points on a boundary.
void do_bound_eta() const
Computes and its first derivative stored respectively in and .
void affecte_tau_val_domain(Val_domain &so, const Array< double > &cf, int &pos_cf) const
Affects some coefficients to a Val_domain.
virtual void do_radius() const
Computes the generalized radius.
virtual void do_absol() const
Computes the absolute coordinates.
Val_domain * p_dchidz
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:564
int nbr_conditions_val_domain_boundary_one_side(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary,...
Val_domain * bound_eta
Pointer on a Val_domain containing the values of .
Definition: bispheric.hpp:476
void do_for_der() const
Computes the partial derivatives of the numerical coordinates with respect to the Cartesian ones like...
virtual Val_domain mult_sin_phi(const Val_domain &) const
Multiplication by .
virtual bool is_in(const Point &xx, double prec=1e-13) const
Check whether a point lies inside Domain.
double r_ext
Radius of the outer boundary.
Definition: bispheric.hpp:465
int nbr_conditions_val_domain_boundary(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary.
Class for bispherical coordinates with a symmetry with respect to the plane .
Definition: bispheric.hpp:878
virtual void do_radius() const
Computes the generalized radius.
virtual Val_domain div_sin_chi(const Val_domain &) const
Division by .
void export_tau_val_domain_boundary_one_side(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary,...
virtual double val_boundary(int, const Val_domain &, const Index &) const
Computes the value of a field at a boundary.
void export_tau_val_domain_boundary(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
virtual Val_domain div_chi(const Val_domain &) const
Division by .
Val_domain * p_dchidz
Pointer on a Val_domain containing .
Definition: bispheric.hpp:979
virtual void export_tau_boundary(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
Domain_bispheric_eta_first(int num, int ttype, double aa, double rr, double eta_min, double eta_max, const Dim_array &nbr)
Standard constructor :
virtual void affecte_tau_one_coef(Tensor &, int, int, int &) const
Sets at most one coefficient of a Tensor to 1.
virtual void find_other_dom(int, int, int &, int &) const
Gives the informations corresponding the a touching neighboring domain.
virtual int nbr_points_boundary(int, const Base_spectral &) const
Computes the number of relevant collocation points on a boundary.
virtual void do_cart() const
Computes the Cartesian coordinates.
virtual void do_coloc()
Computes the colocation points.
virtual Val_domain mult_cos_phi(const Val_domain &) const
Multiplication by .
void do_for_der() const
Computes the partial derivatives of the numerical coordinates with respect to the Cartesian ones like...
virtual void affecte_tau(Tensor &, int, const Array< double > &, int &) const
Affects some coefficients to a Tensor.
virtual void set_anti_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Legendre polynomials and an astisymetric function with respect ...
void do_bound_chi() const
Computes and its first derivative stored respectively in and .
virtual void save(FILE *) const
Saving function.
virtual void do_which_points_boundary(int, const Base_spectral &, Index **, int) const
Lists all the indices corresponding to true collocation points on a boundary.
Val_domain * p_chi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:901
virtual int nbr_unknowns(const Tensor &, int) const
Computes the number of true unknowns of a Tensor, in a given domain.
void affecte_tau_val_domain(Val_domain &so, const Array< double > &cf, int &pos_cf) const
Affects some coefficients to a Val_domain.
virtual ostream & print(ostream &o) const
Delegate function to virtualize the << operator.
Val_domain * p_detadz
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:937
virtual const Val_domain & get_eta() const
Returns the variable .
Val_domain * p_detady
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:926
Val_domain * p_eta
Pointer on a Val_domain containing .
Definition: bispheric.hpp:900
int nbr_conditions_val_domain_boundary(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary.
virtual void set_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials.
void del_deriv() override
Destroys the derivated members (like coloc, cart and radius), when changing the type of colocation po...
virtual Val_domain mult_sin_phi(const Val_domain &) const
Multiplication by .
virtual Array< int > nbr_conditions(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual const Val_domain & get_chi() const
Returns the variable .
virtual void set_anti_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials and an astisymetric function with respect...
virtual int give_place_var(char *) const
Translates a name of a coordinate into its corresponding numerical name.
virtual Array< int > nbr_conditions_boundary_one_side(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
double r_ext
Radius of the outer boundary.
Definition: bispheric.hpp:882
virtual void export_tau(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one in the bulk.
Val_domain * p_dphidy
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:986
virtual void set_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials.
virtual const Point absol_to_num_bound(const Point &, int) const
Computes the numerical coordinates from the physical ones for a point lying on a boundary.
Val_domain * p_dphidz
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:993
virtual Val_domain mult_r(const Val_domain &) const
Multiplication by .
void affecte_tau_one_coef_val_domain(Val_domain &so, int cc, int &pos_cf) const
Sets at most one coefficient of a Val_domain to 1.
virtual Val_domain der_normal(const Val_domain &, int) const
Normal derivative with respect to a given surface.
virtual const Point absol_to_num(const Point &xxx) const
Computes the numerical coordinates from the physical ones.
Val_domain * p_dchidx
Pointer on a Val_domain containing .
Definition: bispheric.hpp:951
double aa
Distance scale .
Definition: bispheric.hpp:881
Val_domain * p_detadx
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:915
virtual Array< int > nbr_conditions_boundary(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual void do_absol() const
Computes the absolute coordinates.
Val_domain * p_dchidy
Pointer on a Val_domain containing .
Definition: bispheric.hpp:965
virtual Base_spectral mult(const Base_spectral &, const Base_spectral &) const
Method for the multiplication of two Base_spectral.
int nbr_conditions_val_domain(const Val_domain &eq, int order) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
Val_domain * bound_chi
Pointer on a Val_domain containing the values of .
Definition: bispheric.hpp:894
virtual void export_tau_boundary_one_side(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary.
virtual bool is_in(const Point &xx, double prec=1e-13) const
Check whether a point lies inside Domain.
double eta_max
Upper bound for .
Definition: bispheric.hpp:884
virtual Term_eq derive_flat_cart(int, char, const Term_eq &, const Metric *) const
Computes the flat derivative of a Term_eq, in Cartesian coordinates.
void export_tau_val_domain(const Val_domain &eq, int order, Array< double > &res, int &pos_res, int ncond) const
Exports a residual equation in the bulk.
Val_domain * bound_chi_der
Pointer on a Val_domain containing the values of the derivative with respect to .
Definition: bispheric.hpp:899
Val_domain * p_phi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:902
int nbr_unknowns_val_domain(const Val_domain &so) const
Computes the number of true unknowns of a Val_domain.
virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const
Computes the derivative with respect to the absolute Cartesian coordinates from the derivative with r...
int nbr_conditions_val_domain_boundary_one_side(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary,...
double eta_min
Lower bound for .
Definition: bispheric.hpp:883
Class for bispherical coordinates with a symmetry with respect to the plane .
Definition: bispheric.hpp:64
virtual void set_anti_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials and an astisymetric function with respect...
Val_domain * p_dsint
Pointer on a Val_domain containing the surface element on the inner boundary of the domain (being sph...
Definition: bispheric.hpp:161
Val_domain * p_dchidy
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:132
Val_domain * p_eta
Pointer on a Val_domain containing .
Definition: bispheric.hpp:73
void affecte_tau_one_coef_val_domain(Val_domain &so, int cc, int &pos_cf) const
Sets at most one coefficient of a Val_domain to 1.
void del_deriv() override
Destroys the derivated members (like coloc, cart and radius), when changing the type of colocation po...
double eta_plus
associated with .
Definition: bispheric.hpp:70
Val_domain * p_detadz
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:110
virtual Term_eq derive_flat_cart(int, char, const Term_eq &, const Metric *) const
Computes the flat derivative of a Term_eq, in Cartesian coordinates.
virtual void do_cart() const
Computes the Cartesian coordinates.
virtual Val_domain mult_sin_phi(const Val_domain &) const
Multiplication by .
virtual bool is_in(const Point &xx, double prec=1e-13) const
Check whether a point lies inside Domain.
int nbr_conditions_val_domain(const Val_domain &eq, int order) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
Val_domain * p_detady
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:99
int nbr_conditions_val_domain_boundary_one_side(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary,...
virtual void do_absol() const
Computes the absolute coordinates.
virtual const Val_domain & get_eta() const
Returns the variable .
int nbr_unknowns_val_domain(const Val_domain &so) const
Computes the number of true unknowns of a Val_domain.
double eta_minus
associated with .
Definition: bispheric.hpp:69
virtual void export_tau_boundary(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
virtual Val_domain der_normal(const Val_domain &, int) const
Normal derivative with respect to a given surface.
virtual void do_radius() const
Computes the generalized radius.
void do_for_der() const
Computes the partial derivatives of the numerical coordinates with respect to the Cartesian ones like...
virtual Array< int > nbr_conditions_boundary(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual double val_boundary(int, const Val_domain &, const Index &) const
Computes the value of a field at a boundary.
double aa
Distance scale .
Definition: bispheric.hpp:67
virtual void affecte_tau_one_coef(Tensor &, int, int, int &) const
Sets at most one coefficient of a Tensor to 1.
void do_chi() const
Computes in *p_chi.
virtual Val_domain div_chi(const Val_domain &) const
Division by .
Val_domain * p_dphidz
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:157
virtual void export_tau(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one in the bulk.
virtual Val_domain mult_r(const Val_domain &) const
Multiplication by .
Val_domain * p_chi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:74
virtual Base_spectral mult(const Base_spectral &, const Base_spectral &) const
Method for the multiplication of two Base_spectral.
virtual int give_place_var(char *) const
Translates a name of a coordinate into its corresponding numerical name.
virtual void find_other_dom(int, int, int &, int &) const
Gives the informations corresponding the a touching neighboring domain.
void affecte_tau_val_domain(Val_domain &so, const Array< double > &cf, int &pos_cf) const
Affects some coefficients to a Val_domain.
virtual ostream & print(ostream &o) const
Delegate function to virtualize the << operator.
Val_domain * p_dphidy
Pointer on a Val_domain containing The explicit expression is : .
Definition: bispheric.hpp:150
virtual int nbr_points_boundary(int, const Base_spectral &) const
Computes the number of relevant collocation points on a boundary.
virtual const Val_domain & get_chi() const
Returns the variable .
virtual const Point absol_to_num(const Point &xxx) const
Computes the numerical coordinates from the physical ones.
Val_domain * p_dchidx
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:121
void do_dsint() const
Computes the surface element and stores it in *p_dsint.
virtual void set_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Legendre polynomials.
Val_domain * p_dchidz
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:143
virtual void export_tau_boundary_one_side(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary.
virtual const Point absol_to_num_bound(const Point &, int) const
Computes the numerical coordinates from the physical ones for a point lying on a boundary.
Val_domain * p_detadx
Pointer on a Val_domain containing The explicit expression are : .
Definition: bispheric.hpp:88
virtual Val_domain div_sin_chi(const Val_domain &) const
Division by .
int nbr_conditions_val_domain_boundary(const Val_domain &eq, int bound) const
Computes number of discretized equations associated with a given equation on a boundary.
virtual void affecte_tau(Tensor &, int, const Array< double > &, int &) const
Affects some coefficients to a Tensor.
double chi_min
Lower bound for .
Definition: bispheric.hpp:71
virtual int nbr_unknowns(const Tensor &, int) const
Computes the number of true unknowns of a Tensor, in a given domain.
virtual Array< int > nbr_conditions(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const
Computes the derivative with respect to the absolute Cartesian coordinates from the derivative with r...
double r_ext
Radius of the outer boundary.
Definition: bispheric.hpp:68
void export_tau_val_domain_boundary(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
Term_eq fithor(const Term_eq &so) const
Returns a fit in with respect to the inner spherical boundary.
Definition: fithor.cpp:58
void export_tau_val_domain(const Val_domain &eq, int order, Array< double > &res, int &pos_res, int ncond) const
Exports a residual equation in the bulk.
virtual void set_cheb_base(Base_spectral &so) const
Sets the base to the standard one for Chebyshev polynomials.
virtual double integ(const Val_domain &, int) const
Surface integral on a given boundary.
virtual void save(FILE *fd) const
Saving function.
void do_phi() const
Computes in *p_phi
virtual void set_anti_legendre_base(Base_spectral &so) const
Sets the base to the standard one for Legendre polynomials and an astisymetric function with respect ...
virtual void do_which_points_boundary(int, const Base_spectral &, Index **, int) const
Lists all the indices corresponding to true collocation points on a boundary.
virtual void do_coloc()
Computes the colocation points.
virtual Val_domain mult_cos_phi(const Val_domain &) const
Multiplication by .
void export_tau_val_domain_boundary_one_side(const Val_domain &eq, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary,...
Domain_bispheric_rect(int nd, int ttype, double aa, double rext, double eta_minus, double eta_plus, double chi_min, const Dim_array &nbr)
Standard constructor :
virtual Array< int > nbr_conditions_boundary_one_side(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
void do_eta() const
Computes in *p_eta.
Val_domain * p_phi
Pointer on a Val_domain containing .
Definition: bispheric.hpp:75
Abstract class that implements the fonctionnalities common to all the type of domains.
Definition: space.hpp:60
Class that gives the position inside a multi-dimensional Array.
Definition: index.hpp:38
Class for storing a list of tensorial components.
Definition: list_comp.hpp:33
Purely abstract class for metric handling.
Definition: metric.hpp:39
The class Point is used to store the coordinates of a point.
Definition: point.hpp:30
The class Scalar does not really implements scalars in the mathematical sense but rather tensorial co...
Definition: scalar.hpp:67
The Space_bispheric class fills the space with bispherical coordinates (see the constructor for more ...
Definition: bispheric.hpp:1241
void add_eq_full(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets an equation inside every domains (assumed to be zeroth order).
int get_nshells() const
Accessor nshells.
Definition: bispheric.hpp:1261
int nshells
Number of shells outside the bispheric region.
Definition: bispheric.hpp:1247
void add_bc_outer_sphere(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets a boundary condition at the outer sphere of the bispheric coordinates.
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)
int ndom_minus
Number of spherical domains inside the first sphere.
Definition: bispheric.hpp:1245
double int_sphere_one(const Scalar &so) const
Computes the surface integral on the first sphere.
virtual void save(FILE *) const
Saving function.
virtual ~Space_bispheric()
Destructor.
void add_eq_one_side(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets an equation inside every domains (assumed to be first order).
int ndom_plus
Number of spherical domains inside the second sphere.
Definition: bispheric.hpp:1246
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.
double int_inf(const Scalar &so) const
Computes the surface integral at infinity.
int get_ndom_minus() const
Accessor ndom_minus.
Definition: bispheric.hpp:1253
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 sphere.
virtual Array< int > get_indices_matching_non_std(int, int) const
Gives the number of the other domains, touching a given boundary.
Space_bispheric(int ttype, double dist, double r1, double r2, double rext, int nr)
Standard constructor
double a_minus
X-absolute coordinate of the center of the first sphere.
Definition: bispheric.hpp:1243
double a_plus
X-absolute coordinate of the center of the second sphere.
Definition: bispheric.hpp:1244
void add_eq(System_of_eqs &syst, const char *eq, int nused=-1, Array< int > **pused=0x0)
Sets an equation inside every domains (assumed to be second order).
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 sphere.
int get_ndom_plus() const
Accessor ndom_plus.
Definition: bispheric.hpp:1257
void add_matching(System_of_eqs &syst, const char *rac, const List_comp &list)
Sets a matching condition accross all the bispheric domain (intended for a second order equation).
double int_sphere_two(const Scalar &so) const
Computes the surface integral on the second sphere.
double get_a_minus() const
Returns the location of the center of the first sphere.
Definition: bispheric.hpp:1644
void add_eq_int_sphere_one(System_of_eqs &syst, const char *eq)
Adds an equation being a surface integral on the first sphere.
void add_eq_no_nucleus(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 for a space without nucleii.
void add_matching_one_side(System_of_eqs &syst, const char *rac, int nused=-1, Array< int > **pused=0x0)
Sets a matching condition accross all the bispheric domain (intended for a first order equation).
double get_a_plus() const
Returns the location of the center of the second sphere.
Definition: bispheric.hpp:1648
void add_eq_int_sphere_two(System_of_eqs &syst, const char *eq)
Adds an equation being a surface integral on the second sphere.
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.
Tensor handling.
Definition: tensor.hpp:149
This class is intended to describe the manage objects appearing in the equations.
Definition: term_eq.hpp:62
Class for storing the basis of decompositions of a field and its values on both the configuration and...
Definition: val_domain.hpp:69