57 void Map_et::poisson_falloff(
const Cmp& source, Param& par, Cmp& uu,
int k_falloff)
const {
59 assert(source.get_etat() != ETATNONDEF) ;
60 assert(source.get_mp() ==
this) ;
62 assert(uu.get_mp() ==
this) ;
73 apre1.set_etat_qcq() ;
74 for (
int l=0; l<nz; l++) {
84 Tbl amax0 =
max(apre1) ;
88 amax1.set_etat_qcq() ;
89 for (
int l=0; l<nz; l++) {
90 *(amax1.t[l]) = amax0(l) ;
100 int nitermax = par.get_int() ;
101 int& niter = par.get_int_mod() ;
102 double lambda = par.get_double() ;
103 double unmlambda = 1. - lambda ;
104 double precis = par.get_double(1) ;
106 Cmp& ssj = par.get_cmp_mod() ;
111 Valeur& vuu = uu.va ;
114 if (uu.get_etat() == ETATZERO) {
116 vuujm1.set_base( vuu.base ) ;
124 Map_af mpaff(*
this) ;
127 cout <<
"Map_et::poisson : relat. diff. u^J <-> u^{J-1} : " << endl ;
150 Valeur duudx = (uu.va).dsdx() ;
152 const Valeur& d2uudtdx = duudx.dsdt() ;
154 const Valeur& std2uudpdx = duudx.stdsdp() ;
160 Valeur sxlapang = uu.va ;
164 sxlapang = sxlapang.lapang() ;
166 sxlapang = sxlapang.sx() ;
180 Valeur varduudx = duudx ;
184 Base_val sauve_base = varduudx.base ;
186 vuu = 2. *
dxdr * (
rsxdxdr * unjj - 1.) * varduudx
189 vuu.set_base(sauve_base) ;
200 sauve_base = vuu.base ;
211 vuu.set_base(sauve_base) ;
222 ssj = lambda * ssjm1 + unmlambda * ssjm2 ;
224 ssj = ( source + uu + (amax - apre) * ssj ) / amax ;
226 (ssj.va).set_base((source.va).base) ;
234 mpaff.poisson_falloff(ssj, par_nul, uu, k_falloff) ;
243 cout <<
" iter: " << niter <<
" : " ;
244 for (
int l=0; l<nz; l++) {
245 cout << tdiff(l) <<
" " ;
260 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.