23 #include "headcpp.hpp"
24 #include "base_spectral.hpp"
37 #define ETA_MINUS_BC 5
60 class Domain :
public Memory_mapped {
75 Memory_mapped_array<Array<double>*>
coloc ;
76 mutable Memory_mapped_array<Val_domain*>
absol ;
77 mutable Memory_mapped_array<Val_domain*>
cart ;
79 mutable Memory_mapped_array<Val_domain*>
cart_surr ;
82 explicit Domain (
int, FILE*) ;
88 virtual void save (FILE*)
const ;
127 virtual void do_cart ()
const ;
372 virtual
bool is_in(const
Point& xx,
double prec=1e-13) const ;
1035 virtual void find_other_dom (
int dom,
int bound,
int& otherdom,
int& otherbound)
const ;
1198 const Param& param,
int type_exception,
const Tensor& exception,
int n_cmp=-1,
Array<int>** p_cmp=0x0)
const ;
1258 int n_cmp=-1,
Array<int>** p_cmp=0x0)
const ;
1322 Term_eq import (
int numdom,
int bound,
int n_ope,
Term_eq** parts)
const ;
1334 virtual Tensor import (
int numdom,
int bound,
int n_ope,
const Array<int>& other_doms,
Tensor** parts)
const ;
1343 virtual void filter (
Tensor& tt,
int dom,
double treshold)
const ;
1350 virtual ostream &
print(ostream &o)
const = 0;
1379 virtual void save (FILE*)
const ;
1430 num_dom{num}, ndim{res.get_ndim()}, nbr_points{res}, nbr_coefs{ndim}, type_base{ttype} , coloc{ndim,initialize},
1431 absol{ndim,initialize}, cart{ndim,initialize}, radius{nullptr}, cart_surr{ndim,initialize}
1435 num_dom{so.num_dom}, ndim{so.ndim}, nbr_points{std::move(so.nbr_points)}, nbr_coefs{std::move(so.nbr_coefs)},
1436 type_base{so.type_base}, coloc{std::move(so.coloc)}, absol{std::move(so.absol)}, cart{std::move(so.cart)},
1437 radius{so.radius}, cart_surr{std::move(so.cart_surr)}
1439 so.radius =
nullptr;
1443 num_dom = so.num_dom;
1445 nbr_points = std::move(so.nbr_points);
1446 nbr_coefs = std::move(so.nbr_coefs);
1447 type_base = so.type_base;
1448 coloc = std::move(so.coloc);
1449 absol = std::move(so.absol);
1450 cart = std::move(so.cart);
1451 std::swap(radius,so.radius);
1452 cart_surr = std::move(so.cart_surr);
1458 assert ((i>0) && (i<=
ndim)) ;
1459 if (
absol[i-1]==
nullptr)
1461 return *
absol[i-1] ;
1472 assert ((i>0) && (i<=
ndim)) ;
1473 if (
cart[i-1]==
nullptr)
1480 assert ((i>0) && (i<=
ndim)) ;
1487 assert ((i>0) && (i<=
ndim)) ;
1488 assert (
coloc[i-1] !=
nullptr) ;
1489 return *
coloc[i-1] ;
Class for storing the basis of decompositions of a field.
Class for storing the dimensions of an array.
Abstract class that implements the fonctionnalities common to all the type of domains.
virtual void del_deriv()
Destroys the derivated members (like coloc, cart and radius), when changing the type of colocation po...
virtual void export_tau_array(const Tensor &eq, int dom, const Array< int > &order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one in the bulk.
Val_domain * radius
The generalized radius.
virtual Val_domain div_cos_theta(const Val_domain &) const
Division by .
virtual const Val_domain & get_T() const
Returns the variable .
virtual void set_legendre_base_odd(Base_spectral &so) const
Gives the base using odd Legendre polynomials$.
virtual Point get_center() const
Returns the center.
virtual void set_cheb_base_yz_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain laplacian(const Val_domain &so, int m) const
Computes the ordinary flat Laplacian for a scalar field with an harmonic index m.
virtual void xx_to_ders_from_adapted(const Array< double > &xx, int &conte) const
Affects the derivative part of variable a Domain from a set of values.
virtual Val_domain ddr(const Val_domain &so) const
Compute the second radial derivative w of a scalar field.
virtual void set_cheb_base_r_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the radial component of a vector in the MTZ setting.
virtual Term_eq derive_flat_spher(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in spherical orthonormal coordinates.
Memory_mapped_array< Val_domain * > cart
Cartesian coordinates.
virtual Term_eq partial_mtz(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in orthonormal coor...
virtual void set_val_inf(Val_domain &so, double xx) const
Sets the value at infinity of a Val_domain : not implemented for this type of Domain.
virtual void filter(Tensor &tt, int dom, double treshold) const
Puts to zero all the coefficients below a given treshold.
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 der_p(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
Memory_mapped_array< Val_domain * > absol
Asbolute coordinates (if defined ; usually Cartesian-like)
virtual void set_anti_legendre_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for functions antisymetric with respect to .
int get_ndim() const
Returns the number of dimensions.
virtual int nbr_unknowns_from_adapted() const
Gives the number of unknowns coming from the variable shape of the domain.
virtual Base_spectral mult(const Base_spectral &, const Base_spectral &) const
Method for the multiplication of two Base_spectral.
virtual Val_domain mult_sin_theta(const Val_domain &) const
Multiplication by .
int ndim
Number of dimensions.
virtual void vars_to_terms() const
The Term_eq describing the variable shape of the Domain are updated.
virtual Term_eq radial_part_sym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for symmetric scalar function.
virtual Val_domain mult_cos_phi(const Val_domain &) const
Multiplication by .
virtual Val_domain div_xm1(const Val_domain &) const
Division by .
Term_eq do_comp_by_comp(const Term_eq &so, Val_domain(Domain::*pfunc)(const Val_domain &) const) const
Function used to apply the same operation to all the components of a tensor, in the current domain.
virtual Val_domain div_sin_chi(const Val_domain &) const
Division by .
virtual Val_domain div_1mrsL(const Val_domain &so) const
Division by .
virtual ~Domain()
Destructor.
virtual Val_domain mult_cos_time(const Val_domain &) const
Multiplication by .
virtual Term_eq integ_term_eq(const Term_eq &so, int bound) const
Surface integral of a Term_eq.
virtual double get_rmax() const
Returns the maximum radius.
virtual Array< int > nbr_conditions_array(const Tensor &eq, int dom, const Array< int > &order, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
Dim_array const & get_nbr_coefs() const
Returns the number of coefficients.
virtual Val_domain ddp(const Val_domain &so) const
Compute the second derivative with respect to of a scalar field.
int get_num() const
Returns the index of the curent domain.
virtual Val_domain der_r(const Val_domain &so) const
Compute the radial derivative of a scalar field.
virtual Val_domain der_partial_var(const Val_domain &so, int ind) const
Partial derivative with respect to a coordinate.
virtual const Term_eq * give_normal(int bound, int tipe) const
Returns the vector normal to a surface.
Memory_mapped_array< Val_domain * > cart_surr
Cartesian coordinates divided by the radius.
virtual void update_term_eq(Term_eq *so) const
Update the value of a field, after the shape of the Domain has been changed by the system.
virtual void set_cheb_base_rt_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
virtual Val_domain dtime(const Val_domain &so) const
Computes the time derivative of a field.
virtual void set_legendre_base_t_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector in the MTZ context.
virtual Val_domain div_xp1(const Val_domain &) const
Division by .
virtual double val_boundary(int bound, const Val_domain &so, const Index &ind) const
Computes the value of a field at a boundary.
virtual Val_domain mult_xm1(const Val_domain &) const
Multiplication by .
virtual void affecte_coef(int &conte, int cc, bool &found) const
The variation of the functions describing the shape of the Domain are affected from the unknowns of t...
virtual Term_eq div_r_term_eq(const Term_eq &) const
Division by of a Term_eq.
Val_domain const & get_absol(int i) const
Returns the absolute coordinates.
virtual void set_cheb_base_xz_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain dt(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
virtual void set_cheb_xodd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in (critic space case)
virtual int nbr_unknowns(const Tensor &so, int dom) const
Computes the number of true unknowns of a Tensor, in a given domain.
virtual Val_domain div_r(const Val_domain &so) const
Division by .
virtual void do_cart_surr() const
Computes the Cartesian coordinates over the radius.
virtual void set_cheb_base_p_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain der_r_rtwo(const Val_domain &so) const
Compute the radial derivative multiplied by of a scalar field.
virtual void update_variable(const Val_domain &shape, const Scalar &oldval, Scalar &newval) const
Update the value of a scalar, after the shape of the Domain has been changed by the system.
virtual void set_cheb_base_t_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual void xx_to_vars_from_adapted(Val_domain &shape, const Array< double > &xx, int &conte) const
Computes the new boundary of a Domain from a set of values.
Domain(int num, int ttype, const Dim_array &res)
Constructor from a number of points and a type of base.
virtual void update_mapping(const Val_domain &shape)
Updates the variables parts of the Domain.
virtual void export_tau(const Tensor &eq, int dom, int order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one in the bulk.
virtual void update_constante(const Val_domain &shape, const Scalar &oldval, Scalar &newval) const
Update the value of a scalar, after the shape of the Domain has been changed by the system.
virtual void set_legendre_base_r_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the radial component of a vector.
virtual int nbr_points_boundary(int bound, const Base_spectral &base) const
Computes the number of relevant collocation points on a boundary.
int num_dom
Number of the current domain (used by the Space)
virtual void set_cheb_r_base(Base_spectral &so) const
Gives the base using odd Chebyshev polynomials$ for the radius.
virtual void set_cheb_base(Base_spectral &so) const
Gives the standard base for Chebyshev polynomials.
virtual bool is_in(const Point &xx, double prec=1e-13) const
Check whether a point lies inside Domain.
Term_eq do_comp_by_comp_with_int(const Term_eq &so, int val, Val_domain(Domain::*pfunc)(const Val_domain &, int) const) const
Function used to apply the same operation to all the components of a tensor, in the current domain.
virtual void set_cheb_base_z_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
Dim_array nbr_coefs
Number of coefficients.
virtual void set_cheb_base_rp_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
Dim_array const & get_nbr_points() const
Returns the number of points.
virtual Val_domain mult_x(const Val_domain &so) const
Multiplication by .
virtual Term_eq div_1mx2_term_eq(const Term_eq &) const
Returns the division by of a Term_eq.
virtual void set_legendre_base_y_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Val_domain div_sin_theta(const Val_domain &) const
Division by .
virtual Term_eq partial_cart(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in Cartesian coordi...
virtual void set_cheb_base_tp_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
virtual void set_legendre_xodd_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for odd functions in (critic space case)
virtual const Val_domain & get_chi() const
Returns the variable .
virtual void set_legendre_base_with_m(Base_spectral &so, int m) const
Gives the stnadard base using Legendre polynomials.
friend ostream & operator<<(ostream &o, const Domain &so)
Display.
virtual Array< int > nbr_conditions_boundary_array(const Tensor &eq, int dom, int bound, const Array< int > &order, 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 const Point absol_to_num_bound(const Point &xxx, int bound) const
Computes the numerical coordinates from the physical ones for a point lying on a boundary.
virtual Val_domain mult_1mrsL(const Val_domain &so) const
Multiplication by .
virtual Term_eq der_harmonics_asym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for the radial derivative of an anti-symmetric functio...
virtual void set_cheb_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in (critic space case)
virtual ostream & print(ostream &o) const =0
Delegate function to virtualize the << operator.
virtual Val_domain der_t(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
virtual Term_eq der_harmonics_sym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for the radial derivative of a symmetric function.
virtual double get_rmin() const
Returns the minimum radius.
virtual Val_domain mult_r(const Val_domain &so) const
Multiplication by .
virtual void set_cheb_base_y_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual void save(FILE *) const
Saving function.
virtual Array< int > nbr_conditions_boundary_one_side(const Tensor &eq, int dom, int bound, 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 Val_domain mult_sin_time(const Val_domain &) const
Multiplication by .
virtual double multipoles_sym(int k, int j, int bound, const Val_domain &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for a symmetric scalar function.
virtual Val_domain srdr(const Val_domain &so) const
Compute the of a scalar field .
virtual Term_eq dtime_term_eq(const Term_eq &so) const
Time derivative of a Term_eq.
void operator=(const Domain &)=delete
Sylvain's stuff.
virtual double multipoles_asym(int k, int j, int bound, const Val_domain &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for a anti-symmetric scalar function.
virtual Term_eq der_multipoles_asym(int k, int j, int bound, const Term_eq &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for the radial derivative of an anti-symmetric sca...
virtual Term_eq connection_spher(const Term_eq &so) const
Computes the part of the gradient involving the connections, in spherical orthonormal coordinates.
virtual const Val_domain & get_X() const
Returns the variable .
virtual Val_domain div_1mx2(const Val_domain &) const
Division by .
virtual void set_anti_legendre_base_with_m(Base_spectral &so, int m) const
Gives the base using Legendre polynomials, for functions antisymetric with respect to .
virtual void export_tau_boundary(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, 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 const & get_radius() const
Returns the generalized radius.
virtual Term_eq lap2_term_eq(const Term_eq &so, int m) const
Returns the flat 2d-Laplacian of Term_eq, for a given harmonic.
virtual void affecte_tau_one_coef(Tensor &so, int dom, int cc, int &pos_cf) const
Sets at most one coefficient of a Tensor to 1.
virtual Term_eq dr_term_eq(const Term_eq &so) const
Radial derivative of a Term_eq.
virtual void update_mapping(double bound)
Updates the variables parts of the Domain.
virtual Val_domain ddt(const Val_domain &so) const
Compute the second derivative with respect to of a scalar field.
virtual void xx_to_vars_from_adapted(double bound, const Array< double > &xx, int &conte) const
Computes the new boundary of a Domain from a set of values.
virtual void set_cheb_base_t_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector in the MTZ setting.
virtual Term_eq derive_flat_cart(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in Cartesian coordinates.
virtual Term_eq grad_term_eq(const Term_eq &so) const
Gradient of Term_eq.
virtual Term_eq der_radial_part_asym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for the radial derivative of an anti-symmetric ...
virtual void set_legendre_todd_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for odd functions in (critic space case)
virtual void set_legendre_base_r_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the radial component of a vector in the MTZ context.
virtual Tensor change_basis_cart_to_spher(int dd, const Tensor &so) const
Changes the tensorial basis from Cartsian to spherical in a given domain.
virtual void set_legendre_base_z_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Val_domain mult_sin_phi(const Val_domain &) const
Multiplication by .
virtual void set_cheb_base_r_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the radial component of a vector.
virtual Term_eq der_normal_term_eq(const Term_eq &so, int bound) const
Returns the normal derivative of a Term_eq.
int get_type_base() const
Returns the type of the basis.
virtual void update_constante(double bound, const Scalar &oldval, Scalar &newval) const
Update the value of a scalar, after the shape of the Domain has been changed by the system.
virtual Term_eq partial_spher(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in spherical orthon...
virtual void do_which_points_boundary(int bound, const Base_spectral &base, Index **ind, int start) const
Lists all the indices corresponding to true collocation points on a boundary.
Dim_array nbr_points
Number of colocation points.
virtual void set_cheb_base_odd(Base_spectral &so) const
Gives the base using odd Chebyshev polynomials$.
virtual Array< int > nbr_conditions_boundary(const Tensor &eq, int dom, int bound, 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 set_cheb_xodd_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in and in (critic space case)
virtual void set_legendre_base_p_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Term_eq der_radial_part_sym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param ¶m), const Param ¶m) const
Gives some radial fit for a given multipole, intended for the radial derivative of a symmetric scalar...
virtual Term_eq lap_term_eq(const Term_eq &so, int m) const
Returns the flat Laplacian of Term_eq, for a given harmonic.
virtual void set_legendre_base_t_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual void export_tau_boundary_array(const Tensor &eq, int dom, int bound, const Array< int > &order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary It makes us...
virtual Val_domain laplacian2(const Val_domain &so, int m) const
Computes the ordinary flat 2dè- Laplacian for a scalar field with an harmonic index m.
virtual Term_eq derive_flat_mtz(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in spherical coordinates where the constant radii sections...
int type_base
Type of colocation point :
virtual void set_legendre_base_x_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Tensor change_basis_spher_to_cart(int dd, const Tensor &so) const
Changes the tensorial basis from spherical to Cartesian in a given domain.
virtual double integ_volume(const Val_domain &so) const
Volume integral.
virtual void set_cheb_base_x_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual void set_legendre_base_p_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector in the MTZ context.
virtual void update_variable(double bound, const Scalar &oldval, Scalar &newval) const
Update the value of a scalar, after the shape of the Domain has been changed by the system.
virtual Val_domain der_normal(const Val_domain &so, int bound) const
Normal derivative with respect to a given surface.
virtual void set_legendre_base(Base_spectral &so) const
Gives the standard base for Legendre polynomials.
virtual Term_eq harmonics_asym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for an anti-symmetric function.
virtual void do_cart() const
Computes the Cartesian coordinates.
virtual void set_cheb_base_xy_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Term_eq harmonics_sym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for a symmetric function.
virtual void export_tau_boundary_one_side(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, 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 Val_domain div_chi(const Val_domain &) const
Division by .
virtual void set_anti_cheb_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for functions antisymetric with respect to .
virtual void export_tau_boundary_exception(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, const Param ¶m, int type_exception, const Tensor &exception, 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 give_place_var(char *name) const
Translates a name of a coordinate into its corresponding numerical name.
virtual void set_legendre_xodd_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in and in (critic space case)
Val_domain const & get_cart(int i) const
Returns a Cartesian coordinates.
virtual const Val_domain & get_eta() const
Returns the variable .
virtual Term_eq connection_mtz(const Term_eq &so) const
Computes the part of the gradient involving the connections, in spherical coordinates where the const...
virtual void affecte_tau(Tensor &so, int dom, const Array< double > &cf, int &pos_cf) const
Affects some coefficients to a Tensor.
virtual void set_cheb_base_p_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector in the MTZ setting.
Memory_mapped_array< Array< double > * > coloc
Colocation points in each dimension (stored in ndim 1d- arrays)
virtual void find_other_dom(int dom, int bound, int &otherdom, int &otherbound) const
Gives the informations corresponding the a touching neighboring domain.
virtual void do_radius() const
Computes the generalized radius.
virtual Val_domain ddtime(const Val_domain &so) const
Computes the second time derivative of a field.
virtual Val_domain div_x(const Val_domain &) const
Division by .
virtual void set_legendre_r_base(Base_spectral &so) const
Gives the base using odd Legendre polynomials$ for the radius.
virtual Term_eq der_multipoles_sym(int k, int j, int bound, const Term_eq &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for the radial derivative a symmetric scalar funct...
virtual void set_cheb_base_with_m(Base_spectral &so, int m) const
Gives the standard base using Chebyshev polynomials.
virtual Val_domain mult_cos_theta(const Val_domain &) const
Multiplication by .
virtual void set_anti_cheb_base_with_m(Base_spectral &so, int m) const
Gives the base using Chebyshev polynomials, for functions antisymetric with respect to .
virtual Term_eq integ_volume_term_eq(const Term_eq &so) const
Volume integral of a Term_eq.
virtual void do_coloc()
Computes the colocation points.
Array< double > const & get_coloc(int) const
Returns the colocation points for a given variable.
virtual void do_absol() const
Computes the absolute coordinates.
virtual Term_eq radial_part_asym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for anti-symmetric scalar function.
virtual Term_eq mult_r_term_eq(const Term_eq &so) const
Multiplication by of a Term_eq.
virtual double integ(const Val_domain &so, int bound) const
Surface integral on a given boundary.
virtual Term_eq ddtime_term_eq(const Term_eq &so) const
Second time derivative of a Term_eq.
virtual const Point absol_to_num(const Point &xxx) const
Computes the numerical coordinates from the physical ones.
virtual Array< int > nbr_conditions(const Tensor &eq, int dom, int order, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
Val_domain const & get_cart_surr(int i) const
Returns a Cartesian coordinates divided by the radius.
virtual double integrale(const Val_domain &so) const
Volume integral.
Class that gives the position inside a multi-dimensional Array.
Class to manage asymptotically anti de Sitter metrics.
Class to manage anti de Sitter metrics.
Purely abstract class for metric handling.
The class Point is used to store the coordinates of a point.
The class Scalar does not really implements scalars in the mathematical sense but rather tensorial co...
The Space class is an ensemble of domains describing the whole space of the computation.
virtual void xx_to_ders_variable_domains(const Array< double > &xx, int &conte) const
Update the vairable domains from a set of values.
virtual ~Space()
Destructor.
virtual Array< int > get_indices_matching_non_std(int dom, int bound) const
Gives the number of the other domains, touching a given boundary.
friend ostream & operator<<(ostream &o, const Space &so)
Display.
int type_base
Type of basis used (i.e. using either Chebyshev or Legendre polynomials).
virtual void save(FILE *) const
Saving function.
Space()
Standard constructor.
const Domain * get_domain(int i) const
returns a pointer on the domain.
virtual void xx_to_vars_variable_domains(System_of_eqs *syst, const Array< double > &xx, int &conte) const
Update the variables of a system, from the variation of the shape of the domains.
virtual int nbr_unknowns_from_variable_domains() const
Gives the number of unknowns coming from the variable shape of the domain.
int get_ndim() const
Returns the number of dimensions.
int get_type_base() const
Returns the type of basis.
int ndim
Number of dimensions (should be the same for all the Domains).
int get_nbr_domains() const
Returns the number of Domains.
Domain ** domains
Pointers on the various Domains.
int nbr_domains
Number od Domains.
virtual void affecte_coef_to_variable_domains(int &conte, int cc, Array< int > &doms) const
The variation of the functions describing the shape of the Domain are affected from the unknowns of t...
Class used to describe and solve a system of equations.
This class is intended to describe the manage objects appearing in the equations.
Class for storing the basis of decompositions of a field and its values on both the configuration and...