20 #ifndef __TERM_EQ_HPP_
21 #define __TERM_EQ_HPP_
24 #include "metric_tensor.hpp"
25 #include "tensor_impl.hpp"
32 ostream& operator<< (ostream&,
const Term_eq&) ;
33 Term_eq operator+ (
const Term_eq&,
const Term_eq&) ;
34 Term_eq operator- (
const Term_eq&,
const Term_eq&) ;
35 Term_eq operator* (
const Term_eq&,
const Term_eq&) ;
36 Term_eq operator/ (
const Term_eq&,
const Term_eq&) ;
38 Term_eq pow (
const Term_eq&,
int) ;
39 Term_eq operator* (
int,
const Term_eq&) ;
40 Term_eq operator* (
const Term_eq&,
int) ;
41 Term_eq operator* (
double,
const Term_eq&) ;
42 Term_eq operator* (
const Term_eq&,
double) ;
43 Term_eq operator/ (
const Term_eq&,
double) ;
44 Term_eq partial (
const Term_eq&,
char) ;
45 Term_eq bessel_jl (
const Term_eq&,
int) ;
46 Term_eq bessel_yl (
const Term_eq&,
int) ;
47 Term_eq bessel_djl (
const Term_eq&,
int) ;
48 Term_eq bessel_dyl (
const Term_eq&,
int) ;
49 Term_eq sqrt (
const Term_eq&) ;
50 Term_eq div_1mx2 (
const Term_eq&) ;
52 Term_eq scalar_product (
const Term_eq&,
const Term_eq&) ;
251 friend class Domain_polar_shell_inner_homothetic ;
252 friend class Domain_polar_shell_outer_homothetic ;
290 dom{dd}, val_d{nullptr}, der_d{nullptr}, val_t{nullptr}, der_t{nullptr}, type_data {tipe}
292 assert ((tipe==TERM_D) || (tipe==TERM_T)) ;
296 dom{dd}, val_d{new double{vx}}, der_d{nullptr}, val_t{nullptr}, der_t{nullptr}, type_data {TERM_D}
300 dom{dd}, val_d{new double{vx}}, der_d{new double{dx}} , val_t{nullptr}, der_t{nullptr}, type_data {TERM_D}
309 type_data{so.type_data}
319 assert(dom == so.dom && type_data == so.type_data);
320 std::swap(val_d,so.val_d);
321 std::swap(der_d,so.der_d);
322 std::swap(val_t,so.val_t);
323 std::swap(der_t,so.der_t);
328 #ifndef REMOVE_ALL_CHECKS
330 cerr <<
"Wrong type of data in Term_eq" << endl ;
333 if (
val_d ==
nullptr) {
334 cerr <<
"val_d uninitialised in Term_eq" << endl ;
342 #ifndef REMOVE_ALL_CHECKS
344 cerr <<
"Wrong type of data in Term_eq" << endl ;
347 if (
der_d ==
nullptr) {
348 cerr <<
"der_d uninitialised in Term_eq" << endl ;
356 #ifndef REMOVE_ALL_CHECKS
358 cerr <<
"Wrong type of data in Term_eq" << endl ;
361 if (
val_t ==
nullptr) {
362 cerr <<
"val_t uninitialised in Term_eq" << endl ;
370 #ifndef REMOVE_ALL_CHECKS
372 cerr <<
"Wrong type of data in Term_eq" << endl ;
375 if (
der_t ==
nullptr) {
376 cerr <<
"der_t uninitialised in Term_eq" << endl ;
384 #ifndef REMOVE_ALL_CHECKS
386 cerr <<
"Wrong type of data in Term_eq" << endl ;
392 val_d =
new double(so) ;
396 #ifndef REMOVE_ALL_CHECKS
398 cerr <<
"Wrong type of data in Term_eq" << endl ;
404 der_d =
new double(so) ;
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 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 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 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 and an quadrant symmetry wrt .
Class for a spherical shell and a symmetry with respect to the plane .
Abstract class that implements the fonctionnalities common to all the type of domains.
Class to manage asymptotically anti de Sitter metrics.
Class to manage anti de Sitter metrics.
Class to deal with a metric with a conformaly flat metric.
Class to deal with a metric with a conformal decomposition (mainly used for AADS spacetimes) The true...
Class to deal with a metric which determinant is 1.
Class to deal with arbitrary type of metric but that is constant.
Class to deal with a conformal metric in the Dirac gauge.
Class to deal with a conformal metric in the Dirac gauge.
Class that deals with flat metric assuming a axisymmetric setting (nothing depends on ).
Class that deals with flat metric.
Class to deal with arbitrary type of metric.
Class to deal with a metric in the spatial harmonic gauge.
Class to deal with a metric independant of with a conformal decomposition and constant.
Class to deal with a metric independant of with a conformal decomposition (mainly used for AADS spac...
Class to deal with a metric independant of and constant.
Class to deal with a metric independant of .
Purely abstract class for metric handling.
Operator inverse hyperbolic tangent (only defined for a scalar field or a double)
Operator changin the tensorial basis of a field.
Complex conjugate (only changes the m_quant parameter so far).
Operator cosine (only defined for a scalar field or a double)
Operator hyperbolic cosine (only defined for a scalar field or a double)
The operator second derivative wrt .
The operator second radial derivative.
The operator second derivative wrt .
Second time derivative Computes the second time derivative.
Operator for a global definition (i.e.
The operator covariant derivative with respect to the background metric.
The operator covariant derivative with respect to the flat metric.
The operator covariant derivative.
The operator determinant.
The operator division by (for AADS spacetimes).
The operator division by .
The operator division by .
The operator division by .
The operator division by .
The operator division by .
The operator division by .
The operator normal derivative Computes the derivative in the direction normal to a given boundary.
The operator first radial derivative.
The operator first derivative wrt .
The operator time derivative.
Operator exponential (only defined for a scalar field or a double)
Operator that fits a field to outgoing waves (highly specialized stuff)
The operator flat gradient Intended for systems where no metric has been defined.
The operator volume integral (in a given Domain)
The operator surface integral.
The operator inverse (of a Metric_tensor ; i.e.
The operator inverse (of a Metric_tensor ; i.e.
The operator Laplacian 2D.
The operator Laplacian 3D.
Operator logarithm (only defined for a scalar field or a double)
This operator gives the value of one coefficient of a field, on a given boundary.
The operator multiplication by (for AADS spacetimes).
The operator multiplication by .
The operator multiplication by .
The operator multiplication by .
The operator multiplication by (what it means depend on the Space considered).
The operator partial derivative wrt one variable (same thing as Ope_partial ??)
The operator partial derivative.
This operator gives the value of a field at a point (arbitrary not necesseraly a collocation one)
Operator sine (only defined for a scalar field or a double)
Operator hyperbolic sine (only defined for a scalar field or a double)
Operator square-root (only defined for a scalar field or a double).
Operator square-root (only defined for a scalar field or a double).
Operator square-root (only defined for a scalar field or a double)
The operator multiplication by .
This operator gives the value of one coefficient of a field.
This operator gives the value of a field at the origin.
This operator gives the value of a field at a given collocation point.
The class Scalar does not really implements scalars in the mathematical sense but rather tensorial co...
The Space_spheric_adapted class fills the space with one shell adapted on the inside,...
Spacetime intended for binary black hole configurations in full general relativity (see constructor f...
Spacetime intended for binary black hole configurations (see constructor for details about the domain...
Spacetime intended for binary neutron stars configurations (see constructor for details about the dom...
The Space_polar_adapted class fills the space with one polar nucleus, one polar shell adapted on the ...
The Space_polar_periodic class fills the space with one polar nucleus and several polar shells,...
The Space_spheric_adapted class fills the space with one nucleus, one shell adapted on the outside,...
The Space class is an ensemble of domains describing the whole space of the computation.
Class used to describe and solve a system of equations.
This class is intended to describe the manage objects appearing in the equations.
friend Term_eq bessel_jl(const Term_eq &, int)
Bessel function.
Tensor * set_val_t()
Read/write accessor to the tensorial value.
Tensor * der_t
Pointer on the variation, if the Term_eq is a Tensor.
const int type_data
Flag describing the type of data :
double * val_d
Pointer on the value, if the Term_eq is a double.
friend Term_eq fyl(const Space &, int, int, const Term_eq &, const Param &)
Bessel function.
void set_der_d(double)
Sets the double variation.
friend Term_eq fjl(const Space &, int, int, const Term_eq &, const Param &)
Bessel function.
friend Term_eq scalar_product(const Term_eq &, const Term_eq &)
Operator scalar product.
friend Term_eq sqrt(const Term_eq &)
Operator square root.
Term_eq & operator=(Term_eq &&) noexcept
Move assignment operator.
const Tensor * get_p_val_t() const
void set_der_zero()
Sets the variation of the approriate type to zero.
int get_type_data() const
const int dom
Index of the Domain where the Term_eq is defined.
Term_eq der_abs(int i) const
Computes the derivative wrt to an absolute coordinate (i.e.
friend Term_eq operator-(const Term_eq &, const Term_eq &)
Operator -.
void set_val_d(double)
Sets the double value.
double * der_d
Pointer on the variation if the Term_eq is a double.
friend Term_eq bessel_djl(const Term_eq &, int)
Bessel function.
const Tensor * get_p_der_t() const
Tensor const & get_val_t() const
friend Term_eq partial(const Term_eq &, char)
Operator partial derivative.
friend Term_eq bessel_dyl(const Term_eq &, int)
Bessel function.
friend Term_eq operator+(const Term_eq &, const Term_eq &)
Operator +.
Tensor const & get_der_t() const
friend Term_eq operator/(const Term_eq &, const Term_eq &)
Operator /.
Term_eq(int dom, int val)
Constructor for a double type Term_eq.
friend Term_eq bessel_yl(const Term_eq &, int)
Bessel function.
Tensor * set_der_t()
Read/write accessor to the tensorial derivative.
friend Term_eq div_1mx2(const Term_eq &)
Division by .
friend Term_eq operator*(const Term_eq &, const Term_eq &)
Operator *.
friend ostream & operator<<(ostream &, const Term_eq &)
Display.
Tensor * val_t
Pointer on the value, if the Term_eq is a Tensor.