27 #ifndef __SYM_TENSOR_H_ 28 #define __SYM_TENSOR_H_ 208 class Sym_tensor_trans ;
209 class Sym_tensor_tt ;
467 double alpha= -16.) ;
475 double alpha= -16.) ;
510 int method_poisson = 6)
const ;
523 int method_poisson = 6)
const ;
652 const Metric& met, FILE* fich) ;
726 const Param* par_bc = 0x0)
const ;
757 Param* par_mat=0x0)
const ;
764 Param* par_mat)
const ;
831 double precis = 1.e-14,
int it_max = 100) ;
848 double precis = 1.e-14,
int it_max = 100) ;
866 double precis = 1.e-14,
int it_max = 100) ;
888 Param* par_mat = 0x0,
double precis = 1.e-14,
971 const Metric& met, FILE* fich) ;
1061 Param* par3 = 0x0) ;
1071 Param* par_mat = 0x0) ;
virtual void exponential_filter_ylm(int lzmin, int lzmax, int p, double alpha=-16.)
Applies exponential filters to all components (see Scalar::exponential_filter_ylm )...
Scalar * p_mu
Field such that the components of the tensor are written (has only meaning with spherical component...
Sym_tensor_tt poisson(int dzfin=2) const
Computes the solution of a tensorial TT Poisson equation with *this as a source: ...
Metric for tensor calculation.
const Scalar & mu(Param *par=0x0) const
Gives the field (see member p_mu ).
Scalar * p_tilde_b
Field defined from and h insensitive to the longitudinal part of the Sym_tensor.
const Metric *const met_div
Metric with respect to which the divergence and the trace are defined.
Sym_tensor * inverse() const
Returns a pointer on the inverse of the Sym_tensor (seen as a matrix).
virtual void exponential_filter_r(int lzmin, int lzmax, int p, double alpha=-16.)
Applies exponential filters to all components (see Scalar::exponential_filter_r ).
void set_rr_eta_mu(const Scalar &hrr, const Scalar &eta_i, const Scalar &mu_i)
Sets the component , as well as the angular potentials and (see members p_eta and p_mu )...
virtual void del_derive_met(int i) const
Logical destructor of the derivatives depending on the i-th element of met_depend specific to the cla...
Tensor field of valence 0 (or component of a tensorial field).
const Scalar & xxx() const
Gives the field X (see member p_xxx ).
Base class for coordinate mappings.
void sol_Dirac_Abound(const Scalar &aaa, Scalar &tilde_mu, Scalar &x_new, Scalar bound_mu, const Param *par_bc)
Same resolution as sol_Dirac_A, but with inner boundary conditions added.
Sym_tensor_tt(const Map &map, const Base_vect &triad_i, const Metric &met)
Standard constructor.
Basic integer array class.
virtual void operator=(const Sym_tensor_tt &a)
Assignment to another Sym_tensor_tt.
void sol_Dirac_A(const Scalar &aaa, Scalar &tilde_mu, Scalar &xxx, const Param *par_bc=0x0) const
Solves a system of two coupled first-order PDEs obtained from the divergence-free condition (Dirac ga...
Scalar * p_trace
Trace with respect to the metric *met_div.
Scalar * p_www
Field W such that the components and of the tensor are written (has only meaning with spherical com...
void set_tt_trace(const Sym_tensor_tt &a, const Scalar &h, Param *par=0x0)
Assigns the derived members p_tt and p_trace and updates the components accordingly.
const Scalar & compute_tilde_C(bool output_ylm=true, Param *par=0x0) const
Gives the field (see member p_tilde_c ).
virtual void operator=(const Sym_tensor &a)
Assignment to another Sym_tensor.
Tensor field of valence 1.
Vectorial bases (triads) with respect to which the tensorial components are defined.
Scalar get_tilde_B_from_TT_trace(const Scalar &tilde_B_tt_in, const Scalar &trace) const
Computes (see Sym_tensor::p_tilde_b ) from its transverse-traceless part and the trace...
Sym_tensor(const Map &map, const Itbl &tipe, const Base_vect &triad_i)
Standard constructor.
const Scalar & ttt() const
Gives the field T (see member p_ttt ).
virtual void operator=(const Sym_tensor_trans &a)
Assignment to another Sym_tensor_trans.
Scalar trace() const
Trace on two different type indices for a valence 2 tensor.
virtual void del_deriv() const
Deletes the derived quantities.
void set_der_0x0() const
Sets the pointers on derived quantities to 0x0.
Scalar * p_eta
Field such that the components of the tensor are written (has only meaning with spherical component...
void set_A_tildeB(const Scalar &a_in, const Scalar &tb_in, Param *par_bc=0x0, Param *par_mat=0x0)
Assigns the derived members A and .
Scalar * p_aaa
Field A defined from X and insensitive to the longitudinal part of the Sym_tensor (only for )...
const Scalar & www() const
Gives the field W (see member p_www ).
const Sym_tensor_trans & transverse(const Metric &gam, Param *par=0x0, int method_poisson=6) const
Computes the transverse part of the tensor with respect to a given metric, transverse meaning diverg...
Sym_tensor_tt * p_tt
Traceless part with respect to the metric *met_div.
void set_der_0x0() const
Sets the pointers on derived quantities to 0x0.
void set_AtBtt_det_one(const Scalar &a_in, const Scalar &tbtt_in, const Scalar *h_prev=0x0, Param *par_bc=0x0, Param *par_mat=0x0, double precis=1.e-14, int it_max=100)
Assigns the derived member A and computes from its TT-part (see Sym_tensor::compute_tilde_B_tt() )...
const Vector & divergence(const Metric &) const
Returns the divergence of this with respect to a Metric .
void set_AtB_trace(const Scalar &a_in, const Scalar &tb_in, const Scalar &trace, Param *par_bc=0x0, Param *par_mat=0x0)
Assigns the derived members A , and the trace.
virtual void del_deriv() const
Deletes the derived quantities.
void sol_Dirac_l01(const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Param *par_mat) const
Solves the same system as Sym_tensor_trans::sol_Dirac_tilde_B but only for .
virtual void del_deriv() const
Deletes the derived quantities.
void set_der_0x0() const
Sets the pointers on derived quantities to 0x0.
void set_khi_eta_mu(const Scalar &khi_i, const Scalar &eta_i, const Scalar &mu_i)
Sets the component , as well as the angular potentials and (see members p_khi , p_eta and p_mu )...
const Scalar & khi() const
Gives the field such that the component .
virtual ~Sym_tensor()
Destructor.
void set_rr_mu(const Scalar &hrr, const Scalar &mu_i)
Sets the component , as well as the angular potential (see member p_mu ).
const Scalar & compute_A(bool output_ylm=true, Param *par=0x0) const
Gives the field A (see member p_aaa ).
virtual const Scalar & eta(Param *par=0x0) const
Gives the field (see member p_eta ).
void sol_Dirac_BC3(const Scalar &bb, const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Scalar &ww, Scalar bound_hrr, Scalar bound_eta, Param *par_bc, Param *par_mat)
Same resolution as sol_Dirac_Abound, but here the boundary conditions are the degenerate elliptic con...
const Sym_tensor_tt & tt_part(Param *par=0x0) const
Returns the transverse traceless part of the tensor, the trace being defined with respect to metric *...
Scalar * p_xxx
Field X such that the components and of the tensor are written (has only meaning with spherical com...
virtual ~Sym_tensor_trans()
Destructor.
const Scalar & compute_tilde_B(bool output_ylm=true, Param *par=0x0) const
Gives the field (see member p_tilde_b ).
void sol_Dirac_BC2(const Scalar &bb, const Scalar &cc, const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Scalar &ww, Scalar bound_eta, double dir, double neum, double rhor, Param *par_bc, Param *par_mat)
Same resolution as sol_Dirac_tilde_B, but with inner boundary conditions added.
Vector * p_longit_pot[N_MET_MAX]
Array of the vector potential of the longitudinal part of the tensor with respect to various metrics ...
void set_tt_part_det_one(const Sym_tensor_tt &hijtt, const Scalar *h_prev=0x0, Param *par_mat=0x0, double precis=1.e-14, int it_max=100)
Assignes the TT-part of the tensor.
const Metric & get_met_div() const
Returns the metric with respect to which the divergence and the trace are defined.
Scalar * p_tilde_c
Field defined from and h insensitive to the longitudinal part of the Sym_tensor.
void trace_from_det_one(const Sym_tensor_tt &htt, double precis=1.e-14, int it_max=100)
Assigns the derived member p_tt and computes the trace so that *this + the flat metric has a determin...
void set_khi_mu(const Scalar &khi_i, const Scalar &mu_i, int dzp=0, Param *par1=0x0, Param *par2=0x0, Param *par3=0x0)
Sets the component , as well as the angular potential (see member p_khi and p_mu )...
void set_der_met_0x0(int i) const
Sets all the i-th components of met_depend specific to the class Sym_tensor (p_transverse ...
void sol_Dirac_tilde_B(const Scalar &tilde_b, const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Scalar &www, Param *par_bc=0x0, Param *par_mat=0x0) const
Solves a system of three coupled first-order PDEs obtained from divergence-free conditions (Dirac gau...
Transverse symmetric tensors of rank 2.
virtual ~Sym_tensor_tt()
Destructor.
virtual const Scalar & eta(Param *par=0x0) const
Gives the field (see member p_eta ).
void set_auxiliary(const Scalar &trr, const Scalar &eta_over_r, const Scalar &mu_over_r, const Scalar &www, const Scalar &xxx, const Scalar &ttt)
Assigns the component and the derived members p_eta , p_mu , p_www, p_xxx and p_ttt ...
Scalar * p_ttt
Field T defined as .
void update(int dzp, Param *par1=0x0, Param *par2=0x0)
Computes the components , , , and , from and the potentials and .
void set_longit_trans(const Vector &v, const Sym_tensor_trans &a)
Assigns the derived members p_longit_pot and p_transverse and updates the components accordingly...
Scalar compute_tilde_B_tt(bool output_ylm=true, Param *par=0x0) const
Gives the field (see member p_tilde_b ) associated with the TT-part of the Sym_tensor ...
void sol_Dirac_A2(const Scalar &aaa, Scalar &tilde_mu, Scalar &x_new, Scalar bound_mu, const Param *par_bc)
Same resolution as sol_Dirac_Abound, but here the boundary conditions are the degenerate elliptic con...
Sym_tensor_trans poisson(const Scalar *h_guess=0x0) const
Computes the solution of a tensorial transverse Poisson equation with *this as a source: In particu...
Scalar * p_khi
Field such that the component .
Sym_tensor_trans(const Map &map, const Base_vect &triad_i, const Metric &met)
Standard constructor.
void set_hrr_mu_det_one(const Scalar &hrr, const Scalar &mu_in, double precis=1.e-14, int it_max=100)
Assigns the rr component and the derived member .
Symmetric tensors (with respect to two of their arguments).
const Vector & longit_pot(const Metric &gam, Param *par=0x0, int method_poisson=6) const
Computes the vector potential of longitudinal part of the tensor (see documentation of method transv...
const Scalar & the_trace() const
Returns the trace of the tensor with respect to metric *met_div.
Sym_tensor derive_lie(const Vector &v) const
Computes the Lie derivative of this with respect to some vector field v.
Class intended to describe valence-2 symmetric tensors.
Transverse and traceless symmetric tensors of rank 2.
Sym_tensor_trans * p_transverse[N_MET_MAX]
Array of the transverse part of the tensor with respect to various metrics, transverse meaning diver...