123 assert (lambda != -1) ;
132 assert (
etat != ETATNONDEF) ;
135 if (
etat == ETATZERO) {
140 for (
int i=0; i<3; i++) {
150 for (
int i=0 ; i<3 ; i++)
151 assert ((*
this)(i).check_dzpuis(4)) ;
154 for (
int i=0 ; i<3 ; i++) {
157 (*this)(i).poisson(*par, vecteur.
set(i)) ;
167 assert (source_scal().check_dzpuis(3)) ;
171 source_scal().poisson(*par, scalaire.
set()) ;
192 for (
int i=0 ; i<3 ; i++)
193 shift.
set(i) = (lambda+2)/2/(lambda+1) * vecteur(i)
194 - (lambda/2/(lambda+1)) * (dxsi(i) + dp(i)) ;
225 assert (lambda != -1) ;
232 assert (
etat != ETATNONDEF) ;
235 if (
etat == ETATZERO) {
242 for (
int i=0 ; i<3 ; i++)
243 assert ((*
this)(i).check_dzpuis(3) ||
244 (*
this)(i).check_dzpuis(4)) ;
249 if ((*
this)(0).check_dzpuis(4))
259 source_scal().poisson(*par, chi.
set());
264 if ((*
this)(0).check_dzpuis(4))
269 for (
int i=0 ; i<3 ; i++)
270 source_vect.
set(i) -= lambda*chi_grad(i) ;
275 for (
int i=0 ; i<3 ; i++)
279 for (
int i=0 ; i<3 ; i++) {
281 source_vect(i).poisson(*par, shift.
set(i)) ;
309 void Tenseur::poisson_vect_tau(
double lambda,
Param& para,
Tenseur& shift
311 assert (lambda != -1) ;
320 assert (
etat != ETATNONDEF) ;
323 if (
etat == ETATZERO) {
328 for (
int i=0; i<3; i++) {
338 for (
int i=0 ; i<3 ; i++)
339 assert ((*
this)(i).check_dzpuis(4)) ;
342 for (
int i=0 ; i<3 ; i++) {
345 (*this)(i).poisson_tau(*par, vecteur.
set(i)) ;
355 assert (source_scal().check_dzpuis(3)) ;
359 source_scal().poisson_tau(*par, scalaire.
set()) ;
366 Tenseur dxsi (auxiliaire.gradient()) ;
380 for (
int i=0 ; i<3 ; i++)
381 shift.
set(i) = (lambda+2)/2/(lambda+1) * vecteur(i)
382 - (lambda/2/(lambda+1)) * (dxsi(i) + dp(i)) ;
391 Tenseur Tenseur::poisson_vect_tau(
double lambda, Tenseur& vecteur,
392 Tenseur& scalaire)
const {
396 resu.set_etat_qcq() ;
397 poisson_vect_tau(lambda, bidon, resu, vecteur, scalaire) ;
409 void Tenseur::poisson_vect_oohara_tau(
double lambda, Param& para, Tenseur& shift,
410 Tenseur& chi)
const {
413 assert (lambda != -1) ;
417 assert (shift.get_valence() == 1) ;
418 assert (shift.get_type_indice(0) ==
type_indice(0)) ;
419 assert (chi.get_valence() == 0) ;
420 assert (
etat != ETATNONDEF) ;
423 if (
etat == ETATZERO) {
424 shift.set_etat_zero() ;
430 for (
int i=0 ; i<3 ; i++)
431 assert ((*
this)(i).check_dzpuis(3) ||
432 (*
this)(i).check_dzpuis(4)) ;
436 copie.dec2_dzpuis() ;
437 if ((*
this)(0).check_dzpuis(4))
438 copie.dec2_dzpuis() ;
443 source_scal.inc2_dzpuis() ;
447 source_scal().poisson_tau(*par, chi.set());
453 if ((*
this)(0).check_dzpuis(4))
454 source_vect.dec_dzpuis() ;
456 Tenseur chi_grad (chi.gradient()) ;
457 chi_grad.inc_dzpuis() ;
459 for (
int i=0 ; i<3 ; i++)
460 source_vect.set(i) -= lambda*chi_grad(i) ;
462 assert( *(source_vect.triad) == *((chi.gradient()).
get_triad()) ) ;
464 for (
int i=0 ; i<3 ; i++) {
467 source_vect(i).poisson_tau(*par, shift.set(i)) ;
472 shift.set_triad( *(source_vect.triad) ) ;
479 Tenseur Tenseur::poisson_vect_oohara_tau(
double lambda, Tenseur& scalaire)
const {
483 resu.set_etat_qcq() ;
484 poisson_vect_oohara_tau(lambda, bidon, resu, scalaire) ;
Itbl type_indice
Array of size valence contening the type of each index, COV for a covariant one and CON for a contrav...
const Map *const mp
Reference mapping.
const Base_vect * triad
Vectorial basis (triad) with respect to which the tensor components are defined.
int get_type_indice(int i) const
Returns the type of the index number i .
void dec2_dzpuis()
dzpuis -= 2 ;
void poisson_vect(double lambda, Param &par, Tenseur &shift, Tenseur &vect, Tenseur &scal) const
Solves the vectorial Poisson equation : .
void set_triad(const Base_vect &new_triad)
Assigns a new vectorial basis (triad) of decomposition.
void poisson_vect_oohara(double lambda, Param &par, Tenseur &shift, Tenseur &scal) const
Solves the vectorial Poisson equation .
int etat
Logical state ETATZERO , ETATQCQ or ETATNONDEF.
void inc_dzpuis()
dzpuis += 1 ;
void inc2_dzpuis()
dzpuis += 2 ;
int get_valence() const
Returns the valence.
Cmp & set()
Read/write for a scalar (see also operator=(const Cmp&) ).
const Base_vect * get_triad() const
Returns the vectorial basis (triad) on which the components are defined.
double poids
For tensor densities: the weight.
int get_etat() const
Returns the logical state.
friend Tenseur contract(const Tenseur &, int id1, int id2)
Self contraction of two indices of a Tenseur .
virtual Param * donne_para_poisson_vect(Param ¶, int i) const =0
Function intended to be used by Map::poisson_vect and Map::poisson_vect_oohara .
friend Tenseur skxk(const Tenseur &)
Contraction of the last index of (*this) with or , depending on the type of S .
Tenseur(const Map &map, const Metrique *met=0x0, double weight=0)
Constructor for a scalar field.
void dec_dzpuis()
dzpuis -= 1 ;
const Metrique * metric
For tensor densities: the metric defining the conformal factor.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
void set_etat_zero()
Sets the logical state to ETATZERO (zero state).
Tensor handling *** DEPRECATED : use class Tensor instead ***.
const Tenseur & gradient() const
Returns the gradient of *this (Cartesian coordinates)