123 int dzp_resu = ((dzp == 0) ? 0 : dzp-1) ;
132 if (
dynamic_cast<const Map_af*
>(
mp) != 0x0) {
138 mp->poisson_angu(source_eta, *par, resu) ;
169 int dzp_resu = ((dzp == 0) ? 0 : dzp-1) ;
174 if (
dynamic_cast<const Map_af*
>(
mp) != 0x0) {
180 mp->poisson_angu(source_mu, *par, resu) ;
200 p_ttt =
new Scalar(
operator()(2,2) +
operator()(3,3) ) ;
226 source_w += 2*tmp.
stdsdp() ;
258 source_x -= 2*tmp.
stdsdp() ;
276 int dzeta = (dzp == 0 ? 0 : dzp - 1) ;
284 assert(&w_in !=
p_www) ;
285 assert(&x_in !=
p_xxx) ;
286 assert(&t_in !=
p_ttt) ;
299 set(2,2) = 0.5*t_in + ppp ;
300 set(3,3) = 0.5*t_in - ppp ;
327 int dzp_resu = ((dzp == 0) ? 2 : dzp+1) ;
340 if (
dynamic_cast<const Map_af*
>(
mp) != 0x0) {
345 mp->poisson_angu(source_mu, *par, tilde_mu) ;
350 p_aaa->annule_l(0, 1, output_ylm) ;
353 if (output_ylm)
p_aaa->set_spectral_va().ylm() ;
354 else p_aaa->set_spectral_va().ylm_i() ;
373 int dzp_resu = ((dzp == 0) ? 2 : dzp+1) ;
387 if (
dynamic_cast<const Map_af*
>(
mp) != 0x0) {
391 assert (par != 0x0) ;
392 mp->poisson_angu(source_eta, *par, tilde_eta) ;
400 Scalar etasr2 = tilde_eta ;
412 int nz =
mp->get_mg()->get_nzone() ;
420 if (etasr2.
get_etat() != ETATZERO) {
440 p_tilde_b->set_spectral_va().set_etat_cf_qcq() ;
441 p_tilde_b->set_spectral_va().c_cf->annule_hard() ;
450 int m_q, l_q, base_r ;
451 for (
int lz=0; lz<nz; lz++) {
452 int np =
mp->get_mg()->get_np(lz) ;
453 int nt =
mp->get_mg()->get_nt(lz) ;
454 int nr =
mp->get_mg()->get_nr(lz) ;
455 for (
int k=0; k<np+1; k++)
456 for (
int j=0; j<nt; j++) {
458 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q > 1))
460 for (
int i=0; i<nr; i++)
461 p_tilde_b->set_spectral_va().c_cf->set(lz, k, j, i)
465 + 0.5*
double(l_q+2)/double(l_q+1)*(*tsr.
get_spectral_va().c_cf)(lz, k, j, i)
474 if (output_ylm)
p_tilde_b->set_spectral_va().ylm() ;
475 else p_tilde_b->set_spectral_va().ylm_i() ;
484 if (resu.
get_etat() == ETATZERO)
return resu ;
486 assert(resu.
get_etat() == ETATQCQ) ;
489 int dzp_resu = ((dzp == 0) ? 2 : dzp+1) ;
492 if (hsr.
get_etat() == ETATZERO)
return resu ;
498 int nz =
mp->get_mg()->get_nzone() ;
504 int m_q, l_q, base_r ;
505 for (
int lz=0; lz<nz; lz++) {
506 int np =
mp->get_mg()->get_np(lz) ;
507 int nt =
mp->get_mg()->get_nt(lz) ;
508 int nr =
mp->get_mg()->get_nr(lz) ;
509 for (
int k=0; k<np+1; k++)
510 for (
int j=0; j<nt; j++) {
512 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q > 1))
514 for (
int i=0; i<nr; i++)
542 if (tras.
get_etat() == ETATZERO)
return resu ;
552 int dzp_resu = ((dzp == 0) ? 2 : dzp+1) ;
555 if (hsr.
get_etat() == ETATZERO)
return resu ;
563 int nz =
mp->get_mg()->get_nzone() ;
566 int m_q, l_q, base_r ;
567 for (
int lz=0; lz<nz; lz++) {
570 int np =
mp->get_mg()->get_np(lz) ;
571 int nt =
mp->get_mg()->get_nt(lz) ;
572 int nr =
mp->get_mg()->get_nr(lz) ;
573 for (
int k=0; k<np+1; k++)
574 for (
int j=0; j<nt; j++) {
576 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q > 1))
578 for (
int i=0; i<nr; i++)
607 int dzp_resu = ((dzp == 0) ? 2 : dzp+1) ;
621 if (
dynamic_cast<const Map_af*
>(
mp) != 0x0) {
625 assert (par != 0x0) ;
626 mp->poisson_angu(source_eta, *par, tilde_eta) ;
634 Scalar etasr2 = tilde_eta ;
646 int nz =
mp->get_mg()->get_nzone() ;
654 if (etasr2.
get_etat() != ETATZERO) {
674 p_tilde_c->set_spectral_va().set_etat_cf_qcq() ;
675 p_tilde_c->set_spectral_va().c_cf->annule_hard() ;
684 int m_q, l_q, base_r ;
685 for (
int lz=0; lz<nz; lz++) {
686 int np =
mp->get_mg()->get_np(lz) ;
687 int nt =
mp->get_mg()->get_nt(lz) ;
688 int nr =
mp->get_mg()->get_nr(lz) ;
689 for (
int k=0; k<np+1; k++)
690 for (
int j=0; j<nt; j++) {
692 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q > 1))
694 for (
int i=0; i<nr; i++)
695 p_tilde_c->set_spectral_va().c_cf->set(lz, k, j, i)
699 + 0.5*
double(l_q-1)/double(l_q)*(*tsr.
get_spectral_va().c_cf)(lz, k, j, i)
708 if (output_ylm)
p_tilde_c->set_spectral_va().ylm() ;
709 else p_tilde_c->set_spectral_va().ylm_i() ;
Bases of the spectral expansions.
void mult_x()
The basis is transformed as with a multiplication by .
void give_quant_numbers(int, int, int, int &, int &, int &) const
Computes the various quantum numbers and 1d radial base.
Spherical orthonormal vectorial bases (triads).
Tbl & set(int l)
Read/write of the Tbl containing the coefficients in a given domain.
Tensor field of valence 0 (or component of a tensorial field).
const Scalar & lapang() const
Returns the angular Laplacian of *this , where .
void div_r_dzpuis(int ced_mult_r)
Division by r everywhere but with the output flag dzpuis set to ced_mult_r .
const Scalar & dsdt() const
Returns of *this .
int get_dzpuis() const
Returns dzpuis.
Scalar poisson_angu(double lambda=0) const
Solves the (generalized) angular Poisson equation with *this as source.
const Scalar & stdsdp() const
Returns of *this .
bool check_dzpuis(int dzi) const
Returns false if the last domain is compactified and *this is not zero in this domain and dzpuis is n...
void div_tant()
Division by .
const Scalar & dsdr() const
Returns of *this .
Valeur & set_spectral_va()
Returns va (read/write version).
const Valeur & get_spectral_va() const
Returns va (read only version).
void annule_hard()
Sets the Scalar to zero in a hard way.
int get_etat() const
Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).
const Base_val & get_spectral_base() const
Returns the spectral bases of the Valeur va.
void set_dzpuis(int)
Modifies the dzpuis flag.
void mult_r_dzpuis(int ced_mult_r)
Multiplication by r everywhere but with the output flag dzpuis set to ced_mult_r .
void set_spectral_base(const Base_val &)
Sets the spectral bases of the Valeur va.
const Scalar & xxx() const
Gives the field X (see member p_xxx ).
const Scalar & compute_tilde_C(bool output_ylm=true, Param *par=0x0) const
Gives the field (see member p_tilde_c ).
Scalar * p_ttt
Field T defined as .
Scalar * p_aaa
Field A defined from X and insensitive to the longitudinal part of the Sym_tensor (only for ).
const Scalar & compute_A(bool output_ylm=true, Param *par=0x0) const
Gives the field A (see member p_aaa ).
Scalar * p_tilde_b
Field defined from and h insensitive to the longitudinal part of the Sym_tensor.
Scalar * p_mu
Field such that the components of the tensor are written (has only meaning with spherical component...
Scalar * p_tilde_c
Field defined from and h insensitive to the longitudinal part of the Sym_tensor.
const Scalar & ttt() const
Gives the field T (see member p_ttt ).
virtual const Scalar & eta(Param *par=0x0) const
Gives the field (see member p_eta ).
const Scalar & www() const
Gives the field W (see member p_www ).
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.
const Scalar & mu(Param *par=0x0) const
Gives the field (see member p_mu ).
virtual void del_deriv() const
Deletes the derived quantities.
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 .
Scalar * p_eta
Field such that the components of the tensor are written (has only meaning with spherical component...
Scalar * p_xxx
Field X such that the components and of the tensor are written (has only meaning with spherical co...
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_www
Field W such that the components and of the tensor are written (has only meaning with spherical co...
const Scalar & compute_tilde_B(bool output_ylm=true, Param *par=0x0) const
Gives the field (see member p_tilde_b ).
void annule_hard()
Sets the Tbl to zero in a hard way.
void ylm()
Computes the coefficients of *this.
Mtbl * c
Values of the function at the points of the multi-grid.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
void ylm_i()
Inverse of ylm().
const Map *const mp
Mapping on which the numerical values at the grid points are defined.
const Scalar & operator()(const Itbl &ind) const
Returns the value of a component (read-only version).
Scalar & set(const Itbl &ind)
Returns the value of a component (read/write version).
const Base_vect * triad
Vectorial basis (triad) with respect to which the tensor components are defined.
virtual void dsdr(const Cmp &ci, Cmp &resu) const =0
Computes of a Cmp .