57 void Map_et::poisson_ylm(
const Cmp& source, Param& par, Cmp& uu,
int nylm,
double* intvec)
const {
59 assert(source.get_etat() != ETATNONDEF) ;
60 assert(source.get_mp() ==
this) ;
62 assert(uu.get_mp() ==
this) ;
74 apre1.set_etat_qcq() ;
75 for (
int l=0; l<nz; l++) {
85 Tbl amax0 =
max(apre1) ;
89 amax1.set_etat_qcq() ;
90 for (
int l=0; l<nz; l++) {
91 *(amax1.t[l]) = amax0(l) ;
101 int nitermax = par.get_int() ;
102 int& niter = par.get_int_mod() ;
103 double lambda = par.get_double() ;
105 double unmlambda = 1. - lambda ;
106 double precis = par.get_double(1) ;
108 cout <<
"relax in map_et:"<<lambda<<
" "<<unmlambda<<endl;
110 Cmp& ssj = par.get_cmp_mod() ;
115 Valeur& vuu = uu.va ;
118 if (uu.get_etat() == ETATZERO) {
120 vuujm1.set_base( vuu.base ) ;
128 Map_af mpaff(*
this) ;
131 cout <<
"Map_et::poisson : relat. diff. u^J <-> u^{J-1} : " << endl ;
154 Valeur duudx = (uu.va).dsdx() ;
156 const Valeur& d2uudtdx = duudx.dsdt() ;
158 const Valeur& std2uudpdx = duudx.stdsdp() ;
164 Valeur sxlapang = uu.va ;
168 sxlapang = sxlapang.lapang() ;
170 sxlapang = sxlapang.sx() ;
184 Valeur varduudx = duudx ;
188 Base_val sauve_base = varduudx.base ;
190 vuu = 2. *
dxdr * (
rsxdxdr * unjj - 1.) * varduudx
193 vuu.set_base(sauve_base) ;
204 sauve_base = vuu.base ;
215 vuu.set_base(sauve_base) ;
226 ssj = lambda * ssjm1 + unmlambda * ssjm2 ;
228 ssj = ( source + uu + (amax - apre) * ssj ) / amax ;
230 (ssj.va).set_base((source.va).base) ;
238 mpaff.poisson_ylm(ssj, par_nul, uu, nylm, intvec) ;
247 cout <<
" iter: " << niter <<
" : " ;
248 for (
int l=0; l<nz; l++) {
249 cout << tdiff(l) <<
" " ;
264 while ( (diff > precis) && (niter < nitermax) ) ;
Coord d2rdx2
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Coord sr2stdrdp
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
double * alpha
Array (size: mg->nzone ) of the values of in each domain.
Coord sr2drdt
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Tbl diffrel(const Cmp &a, const Cmp &b)
Relative difference between two Cmp (norme version).
Coord srstdrdp
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Coord dxdr
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
int get_nzone() const
Returns the number of domains.
Tbl max(const Cmp &)
Maximum values of a Cmp in each domain.
Coord sstd2rdpdx
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Coord xsr
in the nucleus; \ 1/R in the non-compactified shells; \ in the compactified outer domain...
Coord rsxdxdr
in the nucleus; \ in the shells; \ in the outermost compactified domain.
const Mg3d * mg
Pointer on the multi-grid Mgd3 on which this is defined.
Coord lapr_tp
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Coord srdrdt
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.
Coord d2rdtdx
in the nucleus and in the non-compactified shells; \ in the compactified outer domain.