LORENE
|
Transverse symmetric tensors of rank 2. More...
#include <sym_tensor.h>
Public Member Functions | |
Sym_tensor_trans (const Map &map, const Base_vect &triad_i, const Metric &met) | |
Standard constructor. | |
Sym_tensor_trans (const Sym_tensor_trans &) | |
Copy constructor. | |
Sym_tensor_trans (const Map &map, const Base_vect &triad_i, const Metric &met, FILE *fich) | |
Constructor from a file (see Tensor::sauve(FILE*) ). | |
virtual | ~Sym_tensor_trans () |
Destructor. | |
const Metric & | get_met_div () const |
Returns the metric with respect to which the divergence and the trace are defined. | |
virtual void | operator= (const Sym_tensor_trans &a) |
Assignment to another Sym_tensor_trans . | |
virtual void | operator= (const Sym_tensor &a) |
Assignment to a Sym_tensor . | |
virtual void | operator= (const Tensor_sym &a) |
Assignment to a Tensor_sym . | |
virtual void | operator= (const Tensor &a) |
Assignment to a Tensor . | |
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 & | the_trace () const |
Returns the trace of the tensor with respect to metric *met_div . | |
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 *met_div . | |
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. | |
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 conditions encontered when solving the Kerr problem. | |
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. | |
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 conditions encontered when solving the Kerr problem. | |
void | sol_Dirac_l01_bound (const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Scalar &bound_hrr, Scalar &bound_eta, Param *par_mat) |
void | sol_Dirac_l01_2 (const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Param *par_mat) |
void | sol_elliptic_ABC (Sym_tensor &source, Scalar aaa, Scalar bbb, Scalar ccc) |
Finds spectral potentials A, B, C of solution of an tensorial TT elliptic equation, given the source. | |
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 determinant equal to 1. | |
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 ![]() | |
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. | |
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 ![]() Sym_tensor::compute_tilde_B_tt() ). | |
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 , ![]() | |
Sym_tensor_trans | poisson (const Scalar *h_guess=0x0) const |
Computes the solution of a tensorial transverse Poisson equation with *this ![]() | |
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. | |
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 ![]() p_eta , p_mu , p_www , p_xxx and p_ttt , fro, their values and ![]() ![]() | |
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 ). | |
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 ). | |
const Vector & | divergence (const Metric &) const |
Returns the divergence of this with respect to a Metric . | |
Sym_tensor | derive_lie (const Vector &v) const |
Computes the Lie derivative of this with respect to some vector field v . | |
const Sym_tensor_trans & | transverse (const Metric &gam, Param *par=0x0, int method_poisson=6) const |
Computes the transverse part ![]() | |
const Vector & | longit_pot (const Metric &gam, Param *par=0x0, int method_poisson=6) const |
Computes the vector potential ![]() transverse() above). | |
virtual const Scalar & | eta (Param *par=0x0) const |
Gives the field ![]() p_eta ). | |
const Scalar & | mu (Param *par=0x0) const |
Gives the field ![]() p_mu ). | |
const Scalar & | www () const |
Gives the field W (see member p_www ). | |
const Scalar & | xxx () const |
Gives the field X (see member p_xxx ). | |
const Scalar & | ttt () const |
Gives the field T (see member p_ttt ). | |
const Scalar & | compute_A (bool output_ylm=true, Param *par=0x0) const |
Gives the field A (see member p_aaa ). | |
const Scalar & | compute_tilde_B (bool output_ylm=true, Param *par=0x0) const |
Gives the field ![]() p_tilde_b ). | |
Scalar | compute_tilde_B_tt (bool output_ylm=true, Param *par=0x0) const |
Gives the field ![]() p_tilde_b ) associated with the TT-part of the Sym_tensor . | |
const Scalar & | compute_tilde_C (bool output_ylm=true, Param *par=0x0) const |
Gives the field ![]() p_tilde_c ). | |
int | sym_index1 () const |
Number of the first symmetric index (0<= id_sym1 < valence ) | |
int | sym_index2 () const |
Number of the second symmetric index (id_sym1 < id_sym2 < valence ) | |
virtual int | position (const Itbl &ind) const |
Returns the position in the array cmp of a component given by its indices. | |
virtual Itbl | indices (int pos) const |
Returns the indices of a component given by its position in the array cmp . | |
virtual void | sauve (FILE *) const |
Save in a binary file. | |
const Tensor_sym & | derive_cov (const Metric &gam) const |
Returns the covariant derivative of this with respect to some metric ![]() | |
const Tensor_sym & | derive_con (const Metric &gam) const |
Returns the "contravariant" derivative of this with respect to some metric ![]() | |
virtual void | set_etat_nondef () |
Sets the logical state of all components to ETATNONDEF (undefined state). | |
virtual void | set_etat_zero () |
Sets the logical state of all components to ETATZERO (zero state). | |
virtual void | set_etat_qcq () |
Sets the logical state of all components to ETATQCQ (ordinary state). | |
virtual void | allocate_all () |
Performs the memory allocation of all the elements, down to the double arrays of the Tbl s. | |
virtual void | change_triad (const Base_vect &new_triad) |
Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly. | |
void | set_triad (const Base_vect &new_triad) |
Assigns a new vectorial basis (triad) of decomposition. | |
Scalar & | set (const Itbl &ind) |
Returns the value of a component (read/write version). | |
Scalar & | set (int i1, int i2) |
Returns the value of a component for a tensor of valence 2 (read/write version). | |
Scalar & | set (int i1, int i2, int i3) |
Returns the value of a component for a tensor of valence 3 (read/write version). | |
Scalar & | set (int i1, int i2, int i3, int i4) |
Returns the value of a component for a tensor of valence 4 (read/write version). | |
void | annule_domain (int l) |
Sets the Tensor to zero in a given domain. | |
virtual void | annule (int l_min, int l_max) |
Sets the Tensor to zero in several domains. | |
void | annule_extern_cn (int l_0, int deg) |
Performs a smooth (C^n) transition in a given domain to zero. | |
virtual void | std_spectral_base () |
Sets the standard spectal bases of decomposition for each component. | |
virtual void | std_spectral_base_odd () |
Sets the standard odd spectal bases of decomposition for each component. | |
virtual void | dec_dzpuis (int dec=1) |
Decreases by dec units the value of dzpuis and changes accordingly the values in the compactified external domain (CED). | |
virtual void | inc_dzpuis (int inc=1) |
Increases by inc units the value of dzpuis and changes accordingly the values in the compactified external domain (CED). | |
Tensor | up (int ind, const Metric &gam) const |
Computes a new tensor by raising an index of *this . | |
Tensor | down (int ind, const Metric &gam) const |
Computes a new tensor by lowering an index of *this . | |
Tensor | up_down (const Metric &gam) const |
Computes a new tensor by raising or lowering all the indices of *this . | |
Tensor | trace (int ind1, int ind2) const |
Trace on two different type indices. | |
Tensor | trace (int ind1, int ind2, const Metric &gam) const |
Trace with respect to a given metric. | |
Scalar | trace () const |
Trace on two different type indices for a valence 2 tensor. | |
Scalar | trace (const Metric &gam) const |
Trace with respect to a given metric for a valence 2 tensor. | |
const Map & | get_mp () const |
Returns the mapping. | |
const Base_vect * | get_triad () const |
Returns the vectorial basis (triad) on which the components are defined. | |
int | get_valence () const |
Returns the valence. | |
int | get_n_comp () const |
Returns the number of stored components. | |
int | get_index_type (int i) const |
Gives the type (covariant or contravariant) of the index number i . | |
Itbl | get_index_type () const |
Returns the types of all the indices. | |
int & | set_index_type (int i) |
Sets the type of the index number i . | |
Itbl & | set_index_type () |
Sets the types of all the indices. | |
const Scalar & | operator() (const Itbl &ind) const |
Returns the value of a component (read-only version). | |
const Scalar & | operator() (int i1, int i2) const |
Returns the value of a component for a tensor of valence 2 (read-only version). | |
const Scalar & | operator() (int i1, int i2, int i3) const |
Returns the value of a component for a tensor of valence 3 (read-only version). | |
const Scalar & | operator() (int i1, int i2, int i3, int i4) const |
Returns the value of a component for a tensor of valence 4 (read-only version). | |
void | operator+= (const Tensor &) |
+= Tensor | |
void | operator-= (const Tensor &) |
-= Tensor | |
virtual void | spectral_display (const char *comment=0x0, double threshold=1.e-7, int precision=4, ostream &ostr=cout) const |
Displays the spectral coefficients and the associated basis functions of each component. | |
Protected Member Functions | |
virtual void | del_deriv () const |
Deletes the derived quantities. | |
void | set_der_0x0 () const |
Sets the pointers on derived quantities to 0x0. | |
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 gauge) and the requirement that the potential A (see Sym_tensor::p_aaa ) has a given value. | |
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 gauge) and the requirement that the potential ![]() Sym_tensor::p_tilde_b ) has a given value. | |
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_derive_met (int i) const |
Logical destructor of the derivatives depending on the i-th element of met_depend specific to the class Sym_tensor (p_transverse , etc...). | |
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 , etc...) to 0x0. | |
Scalar | get_tilde_B_from_TT_trace (const Scalar &tilde_B_tt_in, const Scalar &trace) const |
Computes ![]() Sym_tensor::p_tilde_b ) from its transverse-traceless part and the trace. | |
Sym_tensor * | inverse () const |
Returns a pointer on the inverse of the Sym_tensor (seen as a matrix). | |
void | set_dependance (const Metric &) const |
To be used to describe the fact that the derivatives members have been calculated with met . | |
int | get_place_met (const Metric &) const |
Returns the position of the pointer on metre in the array met_depend . | |
void | compute_derive_lie (const Vector &v, Tensor &resu) const |
Computes the Lie derivative of this with respect to some vector field v (protected method; the public interface is method derive_lie ). | |
Protected Attributes | |
const Metric *const | met_div |
Metric with respect to which the divergence and the trace are defined. | |
Scalar * | p_trace |
Trace with respect to the metric *met_div | |
Sym_tensor_tt * | p_tt |
Traceless part with respect to the metric *met_div | |
Sym_tensor_trans * | p_transverse [N_MET_MAX] |
Array of the transverse part ![]() | |
Vector * | p_longit_pot [N_MET_MAX] |
Array of the vector potential of the longitudinal part of the tensor with respect to various metrics (see documentation of member p_transverse . | |
Scalar * | p_eta |
Field ![]() ![]() | |
Scalar * | p_mu |
Field ![]() ![]() | |
Scalar * | p_www |
Field W such that the components ![]() ![]() | |
Scalar * | p_xxx |
Field X such that the components ![]() ![]() | |
Scalar * | p_ttt |
Field T defined as ![]() | |
Scalar * | p_aaa |
Field A defined from X and ![]() Sym_tensor (only for ![]() | |
Scalar * | p_tilde_b |
Field ![]() ![]() Sym_tensor . | |
Scalar * | p_tilde_c |
Field ![]() ![]() Sym_tensor . | |
int | id_sym1 |
Number of the first symmetric index (0<= id_sym1 < valence ) | |
int | id_sym2 |
Number of the second symmetric index (id_sym1 < id_sym2 < valence ) | |
const Map *const | mp |
Mapping on which the numerical values at the grid points are defined. | |
int | valence |
Valence of the tensor (0 = scalar, 1 = vector, etc...) | |
const Base_vect * | triad |
Vectorial basis (triad) with respect to which the tensor components are defined. | |
Itbl | type_indice |
1D array of integers (class Itbl ) of size valence containing the type of each index: COV for a covariant one and CON for a contravariant one. | |
int | n_comp |
Number of stored components, depending on the symmetry. | |
Scalar ** | cmp |
Array of size n_comp of pointers onto the components. | |
const Metric * | met_depend [N_MET_MAX] |
Array on the Metric 's which were used to compute derived quantities, like p_derive_cov , etc... The i-th element of this array is the Metric used to compute the i-th element of p_derive_cov , etc. | |
Tensor * | p_derive_cov [N_MET_MAX] |
Array of pointers on the covariant derivatives of this with respect to various metrics. | |
Tensor * | p_derive_con [N_MET_MAX] |
Array of pointers on the contravariant derivatives of this with respect to various metrics. | |
Tensor * | p_divergence [N_MET_MAX] |
Array of pointers on the divergence of this with respect to various metrics. | |
Transverse symmetric tensors of rank 2.
()
This class is designed to store transverse (divergence-free) symmetric contravariant tensors of rank 2, with the component expressed in an orthonormal spherical basis
Definition at line 608 of file sym_tensor.h.
Lorene::Sym_tensor_trans::Sym_tensor_trans | ( | const Map & | map, |
const Base_vect & | triad_i, | ||
const Metric & | met | ||
) |
Standard constructor.
map | the mapping |
triad_i | vectorial basis (triad) with respect to which the tensor components are defined |
met | the metric with respect to which the divergence is defined |
Definition at line 114 of file sym_tensor_trans.C.
References set_der_0x0().
Lorene::Sym_tensor_trans::Sym_tensor_trans | ( | const Sym_tensor_trans & | source | ) |
Copy constructor.
Definition at line 125 of file sym_tensor_trans.C.
References p_trace, p_tt, and set_der_0x0().
Lorene::Sym_tensor_trans::Sym_tensor_trans | ( | const Map & | map, |
const Base_vect & | triad_i, | ||
const Metric & | met, | ||
FILE * | fich | ||
) |
Constructor from a file (see Tensor::sauve(FILE*)
).
map | the mapping |
triad_i | vectorial basis (triad) with respect to which the tensor components are defined. It will be checked that it coincides with the basis saved in the file. |
met | the metric with respect to which the divergence is defined |
fich | file which has been used by the function sauve(FILE*) . |
Definition at line 139 of file sym_tensor_trans.C.
References set_der_0x0().
|
virtual |
|
inherited |
Gives the field A (see member p_aaa
).
output_ylm | a flag to control the spectral decomposition base of the result: if true (default) the spherical harmonics base is used. |
Definition at line 316 of file sym_tensor_aux.C.
References Lorene::Scalar::annule_l(), Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_aaa, Lorene::Scalar::set_spectral_va(), Lorene::Tensor::triad, Lorene::Sym_tensor::xxx(), Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().
|
inherited |
Gives the field p_tilde_b
).
output_ylm | a flag to control the spectral decomposition base of the result: if true (default) the spherical harmonics base is used. |
Definition at line 362 of file sym_tensor_aux.C.
References Lorene::Mtbl_cf::annule_hard(), Lorene::Valeur::c_cf, Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_tilde_b, Lorene::Mtbl_cf::set(), Lorene::Scalar::set_dzpuis(), Lorene::Valeur::set_etat_cf_qcq(), Lorene::Scalar::set_etat_qcq(), Lorene::Scalar::set_etat_zero(), Lorene::Scalar::set_spectral_base(), Lorene::Scalar::set_spectral_va(), Lorene::Tensor::triad, Lorene::Sym_tensor::ttt(), Lorene::Sym_tensor::www(), Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().
|
inherited |
Gives the field p_tilde_b
) associated with the TT-part of the Sym_tensor
.
output_ylm | a flag to control the spectral decomposition base of the result: if true (default) the spherical harmonics base is used. |
Definition at line 478 of file sym_tensor_aux.C.
References Lorene::Sym_tensor::compute_tilde_B(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Tensor::operator()(), and Lorene::Sym_tensor::ttt().
|
inherited |
Gives the field p_tilde_c
).
output_ylm | a flag to control the spectral decomposition base of the result: if true (default) the spherical harmonics base is used. |
Definition at line 596 of file sym_tensor_aux.C.
References Lorene::Mtbl_cf::annule_hard(), Lorene::Valeur::c_cf, Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_tilde_c, Lorene::Mtbl_cf::set(), Lorene::Scalar::set_dzpuis(), Lorene::Valeur::set_etat_cf_qcq(), Lorene::Scalar::set_etat_qcq(), Lorene::Scalar::set_etat_zero(), Lorene::Scalar::set_spectral_base(), Lorene::Scalar::set_spectral_va(), Lorene::Tensor::triad, Lorene::Sym_tensor::ttt(), Lorene::Sym_tensor::www(), Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().
|
protectedvirtual |
Deletes the derived quantities.
Reimplemented from Lorene::Sym_tensor.
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 164 of file sym_tensor_trans.C.
References Lorene::Sym_tensor::del_deriv(), p_trace, p_tt, and set_der_0x0().
Logical destructor of the derivatives depending on the i-th element of met_depend
specific to the class Sym_tensor
(p_transverse
, etc...).
Reimplemented from Lorene::Tensor.
Definition at line 320 of file sym_tensor.C.
References Lorene::Tensor::del_derive_met(), Lorene::Tensor::met_depend, Lorene::Sym_tensor::p_longit_pot, Lorene::Sym_tensor::p_transverse, and Lorene::Sym_tensor::set_der_met_0x0().
|
inherited |
Computes the Lie derivative of this
with respect to some vector field v
.
Definition at line 360 of file sym_tensor.C.
References Lorene::Tensor::compute_derive_lie(), Lorene::Tensor::mp, Lorene::Tensor::triad, and Lorene::Tensor::type_indice.
Returns the divergence of this
with respect to a Metric
.
The indices are assumed to be contravariant.
Definition at line 349 of file sym_tensor.C.
References Lorene::Tensor::divergence().
Gives the field p_eta
).
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 111 of file sym_tensor_aux.C.
References Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_eta, and Lorene::Tensor::triad.
|
virtualinherited |
Applies exponential filters to all components (see Scalar::exponential_filter_r
).
Does a loop for Cartesian components, and works in terms of the rr-component, W
, X
, T
for spherical components.
Reimplemented from Lorene::Tensor.
Definition at line 446 of file sym_tensor.C.
References Lorene::Tensor::cmp, Lorene::Sym_tensor::eta(), Lorene::Sym_tensor::exponential_filter_r(), Lorene::Tensor::mp, Lorene::Sym_tensor::mu(), Lorene::Tensor::n_comp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::set_auxiliary(), Lorene::Tensor::triad, Lorene::Sym_tensor::ttt(), Lorene::Sym_tensor::www(), and Lorene::Sym_tensor::xxx().
|
virtualinherited |
Applies exponential filters to all components (see Scalar::exponential_filter_ylm
).
Does a loop for Cartesian components, and works in terms of the r-component, W
, X
, T
for spherical components.
Reimplemented from Lorene::Tensor.
Definition at line 471 of file sym_tensor.C.
References Lorene::Tensor::cmp, Lorene::Sym_tensor::eta(), Lorene::Sym_tensor::exponential_filter_ylm(), Lorene::Tensor::mp, Lorene::Sym_tensor::mu(), Lorene::Tensor::n_comp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::set_auxiliary(), Lorene::Tensor::triad, Lorene::Sym_tensor::ttt(), Lorene::Sym_tensor::www(), and Lorene::Sym_tensor::xxx().
Returns the metric with respect to which the divergence and the trace are defined.
Definition at line 669 of file sym_tensor.h.
References met_div.
|
protectedinherited |
Computes Sym_tensor::p_tilde_b
) from its transverse-traceless part and the trace.
Definition at line 531 of file sym_tensor_aux.C.
References Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Base_val::mult_x(), Lorene::Tensor::operator()(), and Lorene::Tensor::triad.
|
protectedinherited |
Returns a pointer on the inverse of the Sym_tensor
(seen as a matrix).
Definition at line 372 of file sym_tensor.C.
References Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Tensor::triad, and Lorene::Tensor::type_indice.
|
inherited |
Computes the vector potential transverse()
above).
gam | metric with respect to the transverse decomposition is performed |
par | parameters for the vector Poisson equation |
method_poisson | type of method for solving the vector Poisson equation to get the longitudinal part (see method Vector::poisson ) |
Definition at line 143 of file sym_tensor_decomp.C.
References Lorene::Tensor::dec_dzpuis(), Lorene::Tensor::derive_con(), Lorene::Tensor_sym::derive_con(), Lorene::diffrel(), Lorene::Sym_tensor::divergence(), Lorene::Vector::divergence(), Lorene::Tensor::get_place_met(), Lorene::maxabs(), Lorene::Tensor::mp, Lorene::Sym_tensor::p_longit_pot, Lorene::Vector::poisson(), and Lorene::Tensor::set_dependance().
Gives the field p_mu
).
Definition at line 151 of file sym_tensor_aux.C.
References Lorene::Tensor::mp, Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_mu, and Lorene::Tensor::triad.
|
virtual |
Assignment to a Sym_tensor
.
Reimplemented from Lorene::Sym_tensor.
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 202 of file sym_tensor_trans.C.
References del_deriv(), and Lorene::Sym_tensor::operator=().
|
virtual |
Assignment to another Sym_tensor_trans
.
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 186 of file sym_tensor_trans.C.
References del_deriv(), met_div, Lorene::Sym_tensor::operator=(), p_trace, and p_tt.
Assignment to a Tensor
.
Reimplemented from Lorene::Sym_tensor.
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 225 of file sym_tensor_trans.C.
References del_deriv(), and Lorene::Sym_tensor::operator=().
|
virtual |
Assignment to a Tensor_sym
.
Reimplemented from Lorene::Sym_tensor.
Reimplemented in Lorene::Sym_tensor_tt.
Definition at line 213 of file sym_tensor_trans.C.
References del_deriv(), and Lorene::Sym_tensor::operator=().
Sym_tensor_trans Lorene::Sym_tensor_trans::poisson | ( | const Scalar * | h_guess = 0x0 | ) | const |
Computes the solution of a tensorial transverse Poisson equation with *this
In particular, it makes an iteration on the trace of the result, using Sym_tensor::set_WX_det_one
.
h_guess | a pointer on a guess for the trace of the result; it is passed to Sym_tensor::set_WX_det_one . |
Definition at line 99 of file sym_tensor_trans_pde.C.
References Lorene::maxabs(), met_div, Lorene::Tensor::mp, Lorene::Tensor::operator()(), and Lorene::Tensor::triad.
void Lorene::Sym_tensor_trans::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
,
Other derived members are deduced from the divergence-free condition.
a_in | the A potential (see Sym_tensor::p_aaa ) |
tb_in | the ![]() Sym_tensor::p_tilde_b ) |
trace | the trace of the Sym_tensor . |
Definition at line 302 of file sym_tensor_trans_aux.C.
References Lorene::Scalar::check_dzpuis(), Lorene::Tensor::mp, Lorene::Sym_tensor::p_aaa, Lorene::Sym_tensor::p_tilde_b, Lorene::Sym_tensor::set_auxiliary(), sol_Dirac_A(), sol_Dirac_tilde_B(), and Lorene::Tensor::triad.
void Lorene::Sym_tensor_trans::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 Sym_tensor::compute_tilde_B_tt()
).
Other derived members are deduced from the divergence-free condition. Finally, it computes the trace so that *this
+ the flat metric has a determinant equal to 1. It then updates the components accordingly. This function makes an iteration until the relative difference in the trace between two steps is lower than precis
.
a_in | the A potential (see Sym_tensor::p_aaa ) |
tbtt_in | the TT-part of ![]() Sym_tensor::p_tilde_b and Sym_tensor::compute_tilde_B_tt() ) |
h_prev | a pointer on a guess for the trace of *this ; if null, then the iteration starts from 0. |
precis | relative difference in the trace computation to end the iteration. |
it_max | maximal number of iterations. |
Definition at line 137 of file sym_tensor_trans_aux.C.
References Lorene::abs(), Lorene::Sym_tensor::get_tilde_B_from_TT_trace(), Lorene::Tensor::inc_dzpuis(), Lorene::max(), met_div, Lorene::Tensor::mp, Lorene::Sym_tensor::p_aaa, Lorene::Sym_tensor::p_tilde_b, p_trace, p_tt, Lorene::Sym_tensor::set_auxiliary(), sol_Dirac_A(), sol_Dirac_tilde_B(), and Lorene::Tensor::triad.
|
inherited |
Assigns the component p_eta
, p_mu
, p_www
, p_xxx
and p_ttt
, fro, their values and
It updates the other components accordingly.
Definition at line 266 of file sym_tensor_aux.C.
References Lorene::Sym_tensor::del_deriv(), Lorene::Scalar::mult_r_dzpuis(), Lorene::Sym_tensor::p_eta, Lorene::Sym_tensor::p_mu, Lorene::Sym_tensor::p_ttt, Lorene::Sym_tensor::p_www, Lorene::Sym_tensor::p_xxx, Lorene::Tensor::set(), and Lorene::Tensor::triad.
|
protected |
Sets the pointers on derived quantities to 0x0.
Definition at line 174 of file sym_tensor_trans.C.
Sets all the i-th components of met_depend
specific to the class Sym_tensor
(p_transverse
, etc...) to 0x0.
Definition at line 335 of file sym_tensor.C.
References Lorene::Sym_tensor::p_longit_pot, and Lorene::Sym_tensor::p_transverse.
void Lorene::Sym_tensor_trans::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
Other derived members are deduced from the divergence-free condition. Finally, it computes T
(Sym_tensor::p_ttt
) so that *this
+ the flat metric has a determinant equal to 1. It then updates the components accordingly. This function makes an iteration until the relative difference in T
between two steps is lower than precis
.
hrr | the rr component of the tensor, |
mu_in | the ![]() |
precis | relative difference in the trace computation to end the iteration. |
it_max | maximal number of iterations. |
Definition at line 117 of file sym_tensor_trans_aux.C.
References Lorene::Tensor::dec_dzpuis(), met_div, Lorene::Tensor::mp, Lorene::Sym_tensor::p_mu, trace_from_det_one(), and Lorene::Tensor::triad.
|
inherited |
Assigns the derived members p_longit_pot
and p_transverse
and updates the components accordingly.
(see the documentation of these derived members for details)
Definition at line 88 of file sym_tensor_decomp.C.
References Lorene::Tensor::dec_dzpuis(), Lorene::Sym_tensor::del_deriv(), Lorene::Tensor::get_place_met(), Lorene::Sym_tensor::p_longit_pot, Lorene::Sym_tensor::p_transverse, and Lorene::Tensor::set_dependance().
void Lorene::Sym_tensor_trans::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.
The trace is deduced from the divergence-free condition, through the Dirac system on *this
+ the flat metric has a determinant equal to 1. It then updates the components accordingly. This function makes an iteration until the relative difference in the trace between two steps is lower than precis
.
hijtt | the TT part for this . |
h_prev | a pointer on a guess for the trace of *this ; if null, then the iteration starts from 0. |
precis | relative difference in the trace computation to end the iteration. |
it_max | maximal number of iterations. |
Definition at line 226 of file sym_tensor_trans_aux.C.
References Lorene::abs(), Lorene::Sym_tensor::get_tilde_B_from_TT_trace(), Lorene::Tensor::inc_dzpuis(), Lorene::max(), Lorene::Tensor::mp, p_trace, p_tt, Lorene::Sym_tensor::set_auxiliary(), sol_Dirac_tilde_B(), and Lorene::Tensor::triad.
void Lorene::Sym_tensor_trans::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.
(see the documentation of these derived members for details)
Definition at line 235 of file sym_tensor_trans.C.
References Lorene::Tensor::dec_dzpuis(), del_deriv(), Lorene::Tensor_sym::derive_con(), met_div, Lorene::Tensor::mp, p_trace, and p_tt.
|
protected |
Solves a system of two coupled first-order PDEs obtained from the divergence-free condition (Dirac gauge) and the requirement that the potential A (see Sym_tensor::p_aaa
) has a given value.
The system reads:
Note that this is solved only for Sym_tensor::p_mu
).
aaa | [input] the source A |
tilde_mu | [output] the solution ![]() |
xxx | [output] the solution X |
par_bc | [input] Param to control the boundary conditions |
Definition at line 82 of file sym_tensor_trans_dirac.C.
References Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Map::get_mg(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Base_val::mult_x(), and R_CHEBP.
void Lorene::Sym_tensor_trans::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 conditions encontered when solving the Kerr problem.
Definition at line 83 of file sym_tensor_trans_dirac_boundfree.C.
References Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Map::get_mg(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, and Lorene::Base_val::mult_x().
void Lorene::Sym_tensor_trans::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.
For now, only Robyn-type boundary conditions on
Definition at line 81 of file sym_tensor_trans_dirac_bound2.C.
References Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Map::get_mg(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, and Lorene::Base_val::mult_x().
void Lorene::Sym_tensor_trans::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.
The difference is here, one has to put B and C values in (and not only
Definition at line 580 of file sym_tensor_trans_dirac_bound2.C.
References Lorene::Mtbl_cf::annule_hard(), Lorene::Scalar::annule_hard(), Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Scalar::check_dzpuis(), Lorene::Scalar::dsdr(), Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Scalar::get_etat(), Lorene::Map::get_mg(), Lorene::Base_val::give_lmax(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, R_CHEBP, Lorene::Valeur::set_etat_cf_qcq(), Lorene::Scalar::set_spectral_base(), Lorene::Scalar::set_spectral_va(), sol_Dirac_l01(), and Lorene::Valeur::ylm_i().
void Lorene::Sym_tensor_trans::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 conditions encontered when solving the Kerr problem.
Definition at line 603 of file sym_tensor_trans_dirac_boundfree.C.
References Lorene::Mtbl_cf::annule_hard(), Lorene::Scalar::annule_hard(), Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Scalar::check_dzpuis(), Lorene::Scalar::dsdr(), Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Scalar::get_etat(), Lorene::Map::get_mg(), Lorene::Base_val::give_lmax(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, R_CHEBP, Lorene::Valeur::set_etat_cf_qcq(), Lorene::Scalar::set_spectral_base(), Lorene::Scalar::set_spectral_va(), and Lorene::Valeur::ylm_i().
|
protected |
Solves the same system as Sym_tensor_trans::sol_Dirac_tilde_B
but only for
In these particular cases, W =0 the system is simpler and homogeneous solutions are different.
Definition at line 1438 of file sym_tensor_trans_dirac.C.
References Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Scalar::get_etat(), Lorene::Map::get_mg(), Lorene::Base_val::give_lmax(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Base_val::mult_x(), and R_CHEBP.
void Lorene::Sym_tensor_trans::sol_Dirac_l01_2 | ( | const Scalar & | hh, |
Scalar & | hrr, | ||
Scalar & | tilde_eta, | ||
Param * | par_mat | ||
) |
Definition at line 1559 of file sym_tensor_trans_dirac_bound2.C.
void Lorene::Sym_tensor_trans::sol_Dirac_l01_bound | ( | const Scalar & | hh, |
Scalar & | hrr, | ||
Scalar & | tilde_eta, | ||
Scalar & | bound_hrr, | ||
Scalar & | bound_eta, | ||
Param * | par_mat | ||
) |
Definition at line 1583 of file sym_tensor_trans_dirac_boundfree.C.
|
protected |
Solves a system of three coupled first-order PDEs obtained from divergence-free conditions (Dirac gauge) and the requirement that the potential Sym_tensor::p_tilde_b
) has a given value.
The system reads:
Note that Sym_tensor
).
tilde_b | [input] the source ![]() |
hh | [input] the trace of the tensor |
hrr | [output] the rr component of the result |
tilde_eta | [output] the solution ![]() |
www | [output] the solution W |
par_bc | [input] Param to control the boundary conditions |
par_mat | [input/output] Param in which the operator matrix is stored. |
Definition at line 583 of file sym_tensor_trans_dirac.C.
References Lorene::Mtbl_cf::annule_hard(), Lorene::Scalar::annule_hard(), Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Scalar::check_dzpuis(), Lorene::Scalar::dsdr(), Lorene::Map_af::get_alpha(), Lorene::Map_af::get_beta(), Lorene::Scalar::get_etat(), Lorene::Map::get_mg(), Lorene::Base_val::give_lmax(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, Lorene::Base_val::mult_x(), R_CHEBP, Lorene::Valeur::set_etat_cf_qcq(), Lorene::Scalar::set_spectral_base(), Lorene::Scalar::set_spectral_va(), sol_Dirac_l01(), and Lorene::Valeur::ylm_i().
void Lorene::Sym_tensor_trans::sol_elliptic_ABC | ( | Sym_tensor & | source, |
Scalar | aaa, | ||
Scalar | bbb, | ||
Scalar | ccc | ||
) |
Finds spectral potentials A, B, C of solution of an tensorial TT elliptic equation, given the source.
Returns the trace of the tensor with respect to metric *met_div
.
Definition at line 270 of file sym_tensor_trans.C.
References met_div, p_trace, Lorene::Tensor::trace(), and Lorene::Tensor::type_indice.
void Lorene::Sym_tensor_trans::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 determinant equal to 1.
It then updates the components accordingly, with a dzpuis
= 2. This function makes an iteration until the relative difference in the trace between two steps is lower than precis
.
htt | the transverse traceless part; all components must have dzpuis = 2. |
precis | relative difference in the trace computation to end the iteration. |
it_max | maximal number of iterations. |
Definition at line 315 of file sym_tensor_trans.C.
References Lorene::abs(), Lorene::max(), met_div, Lorene::Tensor::mp, and set_tt_trace().
|
inherited |
Computes the transverse part
Denoting *this
by
where longit_pot()
below)
gam | metric with respect to the transverse decomposition is performed |
par | parameters for the vector Poisson equation |
method_poisson | type of method for solving the vector Poisson equation to get the longitudinal part (see method Vector::poisson ) |
Definition at line 110 of file sym_tensor_decomp.C.
References Lorene::Tensor::cmp, Lorene::Tensor::get_place_met(), Lorene::Sym_tensor::longit_pot(), Lorene::Tensor::mp, Lorene::Tensor::n_comp, Lorene::Vector::ope_killing(), Lorene::Sym_tensor::p_transverse, Lorene::Tensor::set_dependance(), Lorene::Tensor::triad, and Lorene::Tensor::type_indice.
const Sym_tensor_tt & Lorene::Sym_tensor_trans::tt_part | ( | Param * | par = 0x0 | ) | const |
Returns the transverse traceless part of the tensor, the trace being defined with respect to metric *met_div
.
Definition at line 284 of file sym_tensor_trans.C.
References Lorene::Tensor_sym::derive_con(), met_div, Lorene::Tensor::mp, p_tt, the_trace(), and Lorene::Tensor::triad.
Gives the field T (see member p_ttt
).
Definition at line 190 of file sym_tensor_aux.C.
References Lorene::Sym_tensor::p_ttt, and Lorene::Tensor::triad.
Gives the field W (see member p_www
).
Definition at line 209 of file sym_tensor_aux.C.
References Lorene::Scalar::dsdt(), Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_www, Lorene::Scalar::stdsdp(), and Lorene::Tensor::triad.
Gives the field X (see member p_xxx
).
Definition at line 240 of file sym_tensor_aux.C.
References Lorene::Scalar::dsdt(), Lorene::Tensor::operator()(), Lorene::Sym_tensor::p_xxx, and Lorene::Tensor::triad.
Metric with respect to which the divergence and the trace are defined.
Definition at line 614 of file sym_tensor.h.
|
mutableprotectedinherited |
Field A defined from X and Sym_tensor
(only for
Its definition reads
Definition at line 322 of file sym_tensor.h.
|
mutableprotectedinherited |
Field
Definition at line 260 of file sym_tensor.h.
|
mutableprotectedinherited |
Array of the vector potential of the longitudinal part of the tensor with respect to various metrics (see documentation of member p_transverse
.
Definition at line 246 of file sym_tensor.h.
|
mutableprotectedinherited |
Field
Definition at line 274 of file sym_tensor.h.
|
mutableprotectedinherited |
Field Sym_tensor
.
It is defined for each multipolar momentum
Definition at line 334 of file sym_tensor.h.
|
mutableprotectedinherited |
Field Sym_tensor
.
It is defined for each multipolar momentum
Definition at line 346 of file sym_tensor.h.
|
mutableprotected |
Trace with respect to the metric *met_div
Definition at line 617 of file sym_tensor.h.
|
mutableprotectedinherited |
Array of the transverse part
Denoting *this
by
where p_longit_pot
below)
Definition at line 239 of file sym_tensor.h.
|
mutableprotected |
Traceless part with respect to the metric *met_div
Definition at line 620 of file sym_tensor.h.
|
mutableprotectedinherited |
Field T defined as
Definition at line 315 of file sym_tensor.h.
|
mutableprotectedinherited |
Field W such that the components
Definition at line 293 of file sym_tensor.h.
|
mutableprotectedinherited |
Field X such that the components
Definition at line 312 of file sym_tensor.h.