20 #ifndef __VAL_DOMAIN_HPP_
21 #define __VAL_DOMAIN_HPP_
24 #include "dim_array.hpp"
25 #include "base_spectral.hpp"
28 Val_domain sin(
const Val_domain& ) ;
29 Val_domain cos(
const Val_domain& ) ;
30 Val_domain operator+ (
const Val_domain&) ;
31 Val_domain operator- (
const Val_domain&) ;
32 Val_domain operator+ (
const Val_domain&,
const Val_domain&) ;
33 Val_domain operator+ (
const Val_domain&,
double) ;
34 Val_domain operator+ (
double,
const Val_domain&) ;
35 Val_domain operator- (
const Val_domain&,
const Val_domain&) ;
36 Val_domain operator- (
const Val_domain&,
double) ;
37 Val_domain operator- (
double,
const Val_domain&) ;
38 Val_domain operator* (
const Val_domain&,
const Val_domain&) ;
39 Val_domain operator* (
const Val_domain&,
double) ;
40 Val_domain operator* (
double,
const Val_domain&) ;
41 Val_domain operator* (
const Val_domain&,
int) ;
42 Val_domain operator* (
int,
const Val_domain&) ;
43 Val_domain operator* (
const Val_domain&,
long int) ;
44 Val_domain operator* (
long int,
const Val_domain&) ;
45 Val_domain operator/ (
const Val_domain&,
const Val_domain&) ;
46 Val_domain operator/ (
const Val_domain&,
double) ;
47 Val_domain operator/ (
double,
const Val_domain&) ;
48 Val_domain pow (
const Val_domain&,
int) ;
49 Val_domain pow (
const Val_domain&,
double) ;
50 Val_domain sqrt (
const Val_domain&) ;
51 Val_domain exp (
const Val_domain&) ;
52 Val_domain log (
const Val_domain&) ;
53 Val_domain atanh(
const Val_domain&);
54 double diffmax (
const Val_domain&,
const Val_domain&) ;
55 Val_domain bessel_jl (
const Val_domain&,
int) ;
56 Val_domain bessel_yl (
const Val_domain&,
int) ;
57 Val_domain bessel_djl (
const Val_domain&,
int) ;
58 Val_domain bessel_dyl (
const Val_domain&,
int) ;
59 Val_domain atan (
const Val_domain&) ;
60 double maxval (
const Val_domain&) ;
81 mutable Memory_mapped_array<Val_domain*>
p_der_var ;
82 mutable Memory_mapped_array<Val_domain*>
p_der_abs ;
106 void save (FILE*) const ;
115 void operator= (
double) ;
Class for storing the basis of decompositions of a field.
Class for bispherical coordinates with a symmetry with respect to the plane .
Class for bispherical coordinates with a symmetry with respect to the plane .
Class for bispherical coordinates with a symmetry with respect to the plane .
Class for a spherical compactified domain and a symmetry with respect to the plane and a quadrant sy...
Class for a spherical compactified domain and a symmetry with respect to the plane .
Class for a 2-dimensional cylindrical type domain.
Class for a 2-dimensional cylindrical type domain.
Class for a spherical nucleus.
Class for a spherical shell.
Class for a spherical domain containing the origin a symmetry with respect to the plane and an quadr...
Class for a spherical domain containing the origin and a symmetry with respect to the plane .
Class for a 1-dimensional compactified spherical domain.
Class for a 1-dimensional spherical domain containing the origin.
Class for a 1-dimensional spherical domain bounded between two raii.
Class for a 2-dimensional spherical shell and a symmetry with respect to the plane .
Class for a 2-dimensional spherical domain containing the origin and a symetry with respect to the pl...
Class for a spherical nucleus with a symmetry in .
Class for a spherical shell with a symmetry in .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a 2-dimensional spherical shell and a symmetry with respect to the plane .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a spherical shell and a symmetry with respect to the plane .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a spherical-like domain, having a symmetry with respect to the plane .
Class for a spherical shell and a symmetry with respect to the plane .
Class for a spherical shell and a symmetry with respect to the plane and an quadrant symmetry wrt .
Class for a spherical shell and a symmetry with respect to the plane .
Class for a 2-dimensional compactified spherical domain and a symetry with respect to the plane .
Class for a 2-dimensional spherical domain containing the origin and a symetry with respect to the pl...
Class for a 2-dimensional spherical domain bounded between two fixed radii and a symetry with respect...
Class for a 2-dimensional compactified spherical domain and a symetry with respect to the plane .
Class for a 2-dimensional spherical domain containing the origin and a symetry with respect to the pl...
Class for a 2-dimensional spherical domain bounded between two finite radii and a symetry with respec...
Abstract class that implements the fonctionnalities common to all the type of domains.
Class for an equation representing the matching of quantities accross a boundary.
Class that gives the position inside a multi-dimensional Array.
The class Scalar does not really implements scalars in the mathematical sense but rather tensorial co...
The Space_spheric class fills the space with one nucleus, several shells and a compactified domain,...
The Space class is an ensemble of domains describing the whole space of the computation.
Class for storing the basis of decompositions of a field and its values on both the configuration and...
double operator()(const Index &pos) const
Read only value of the field in the configuration space.
friend Val_domain bessel_yl(const Val_domain &, int)
Operator Bessel function.
Val_domain mult_sin_phi() const
Multiplication by .
void std_base_r_spher()
Sets the basis for the radial component of a vector in orthonormal spherical coordinates.
void operator/=(const Val_domain &)
Operator /=.
friend Val_domain log(const Val_domain &)
Operator logarithm.
void std_base_p_mtz()
Sets the basis for the component of a vector in orthonormal coordinates in the MTZ context.
Base_spectral base
Spectral basis of the field.
friend double diffmax(const Val_domain &, const Val_domain &)
Maximal difference.
Val_domain div_cos_theta() const
Division by .
void set_in_conf()
Destroys the values in the coefficient space.
void std_todd_base()
Sets the basis for an odd function in (Critic case).
void std_base_t_mtz()
Sets the basis for the component of a vector in orthonormal coordinates in the MTZ context.
void operator=(const Val_domain &)
Assignement to another Val_domain.
void save(FILE *) const
Saving on a file.
void set_in_coef()
Destroys the values in the configuration space.
double & set_coef(const Index &pos)
Read/write the value of the field in the coefficient space.
friend Val_domain atanh(const Val_domain &)
Operator atanh.
void swap(Val_domain &so) noexcept
Swaps the content with the source.
void set_zero()
Sets the Val_domain to zero (logical state to zero and arrays destroyed).
void std_base_y_cart()
Sets the basis for the Y-component of a vector in Cartesian coordinates.
Val_domain div_r() const
Division by the radius.
Val_domain div_xm1() const
Division by .
void allocate_coef()
Allocates the values in the coefficient space and destroys the values in the configuration space.
void std_base_tp_spher()
Sets the basis for the component of a 2-tensor in orthonormal spherical coordinates.
bool check_if_zero() const
Check whether the logical state is zero or not.
friend Val_domain sinh(const Val_domain &)
Hyperbolic sine operator.
friend Val_domain pow(const Val_domain &, int)
Operator power (integer version)
Array< double > get_conf() const
Val_domain mult_sin_theta() const
Multiplication by .
bool in_conf
Is the field known in the configuration space ?
Val_domain div_chi() const
Division by .
Val_domain div_xp1() const
Division by .
void compute_der_abs() const
Computes the derivatives with respect to the absolute Cartesian coordinates.
void std_base_xy_cart()
Sets the basis for the XY component of a 2-tensor in Cartesian coordinates.
Val_domain mult_cos_phi() const
Multiplication by .
Array< double > * cf
Pointer on the Array of the values in the coefficients space.
void del_deriv() const
Delete the derived quantities.
void std_r_base()
Sets the basis for the radius.
Val_domain div_x() const
Division by .
void coef_i() const
Computes the values in the configuration space.
friend Val_domain exp(const Val_domain &)
Operator exponential.
friend Val_domain cos(const Val_domain &)
Cosine operator.
friend Val_domain sqrt(const Val_domain &)
Operator square root.
friend Val_domain sin(const Val_domain &)
Sine operator.
void std_base_x_cart()
Sets the basis for the X-component of a vector in Cartesian coordinates.
double & set(const Index &pos)
Read/write the value of the field in the configuration space.
void std_base_xz_cart()
Sets the basis for the XZ component of a 2-tensor in Cartesian coordinates.
void std_xodd_base()
Sets the basis for an odd function in (Critic case).
friend Val_domain atan(const Val_domain &)
Operator arctangent.
bool is_zero
Indicator used for null fields (for speed issues).
Val_domain div_1mrsL() const
Division by .
void std_base()
Sets the standard basis of decomposition.
Val_domain div_sin_theta() const
Division by .
Val_domain mult_cos_theta() const
Multiplication by .
void std_base_yz_cart()
Sets the basis for the YZ component of a 2-tensor in Cartesian coordinates.
friend Val_domain operator*(const Val_domain &, const Val_domain &)
Operator *.
friend Val_domain operator+(const Val_domain &)
Operator + (unitary version)
void operator*=(const Val_domain &)
Operator *=.
Val_domain der_r_rtwo() const
friend Val_domain operator-(const Val_domain &)
Operator - (unitary version)
Val_domain mult_xm1() const
Multiplication by .
friend ostream & operator<<(ostream &, const Val_domain &)
Output operator.
bool in_coef
Is the field known in the coefficient space ?
void coef() const
Computes the coefficients.
Val_domain der_var(int i) const
Computes the derivative with respect to a numerical coordinate.
Memory_mapped_array< Val_domain * > p_der_var
Pointers on the derivatives of the field with respect to the numerical coordinates.
double integ_volume() const
void std_base_z_cart()
Sets the basis for the Z-component of a vector in Cartesian coordinates.
void operator-=(const Val_domain &)
Operator -=.
void annule_hard_coef()
Sets all the arrays to zero in the coefficient space (the logical state is NOT set to zero).
Base_spectral & set_base()
Sets the basis of decomposition.
Val_domain mult_r() const
Multiplication by the radius.
void std_base_t_spher()
Sets the basis for the component of a vector in orthonormal spherical coordinates.
Val_domain mult_sin_time() const
void std_anti_base()
Sets the standard, anti-symetric, basis of decomposition.
Array< double > get_coef() const
void std_base_r_mtz()
Sets the basis for the radial component of a vector in orthonormal coordinates in the MTZ context.
void std_base_p_spher()
Sets the basis for the component of a vector in orthonormal spherical coordinates.
void std_xodd_todd_base()
Sets the basis for an odd function in and (Critic case).
Val_domain div_1mx2() const
Division by .
Array< double > * c
Pointer on the Array of the values in the configuration space.
Val_domain der_spher(int i) const
Computes the derivative with respect to the spherical coordinates (if defined).
friend Val_domain operator/(const Val_domain &, const Val_domain &)
Operator /.
Memory_mapped_array< Val_domain * > p_der_abs
Pointers on the derivatives of the field with respect to the absolute Cartesian coordinates.
void std_base_odd()
Sets the basis in odd polynomials.
void std_base_rp_spher()
Sets the basis for the component of a 2-tensor in orthonormal spherical coordinates.
Val_domain(const Domain *so)
Constructor from a Domain.
friend double maxval(const Val_domain &)
Maximal value.
Val_domain mult_cos_time() const
Val_domain der_abs(int i) const
Computes the derivative with respect to an absolute coordinate (typically Cartesian).
void annule_hard()
Sets all the arrays to zero (the logical state is NOT set to zero).
friend Val_domain cosh(const Val_domain &)
Hyperbolic cosine operator.
void compute_der_var() const
Computes the derivatives with respect to the numerical coordinates.
void allocate_conf()
Allocates the values in the configuration space and destroys the values in the coefficients space.
Val_domain div_sin_chi() const
Division by .
void operator+=(const Val_domain &)
Operator +=.
const Domain * get_domain() const
friend Val_domain bessel_jl(const Val_domain &, int)
Operator Bessel function.
void std_base_rt_spher()
Sets the basis for the component of a 2-tensor in orthonormal spherical coordinates.
const Base_spectral & get_base() const
Returns the basis of decomposition.
const Domain * zone
Pointer to the associated Domain.