73 const Param* par_bc)
const {
76 assert(mp_aff != 0x0) ;
85 assert(aaa.
get_etat() != ETATNONDEF) ;
88 bool ced = (mgrid.
get_type_r(nzm1) == UNSURR) ;
89 int n_shell = ced ? nz-2 : nzm1 ;
93 n_shell = (nz_bc < n_shell ? nz_bc : n_shell) ;
100 int nt = mgrid.
get_nt(0) ;
101 int np = mgrid.
get_np(0) ;
125 int l_q, m_q, base_r ;
131 int nr = mgrid.
get_nr(lz) ;
136 for (
int k=0 ; k<np+1 ; k++) {
137 for (
int j=0 ; j<nt ; j++) {
140 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q > 0)) {
144 for (
int lin=0; lin<nr; lin++)
145 for (
int col=0; col<nr; col++)
146 ope.
set(lin,col) = md(lin,col) + 2*ms(lin,col) ;
147 for (
int lin=0; lin<nr; lin++)
148 for (
int col=0; col<nr; col++)
149 ope.
set(lin,col+nr) = -l_q*(l_q+1)*ms(lin,col) ;
150 for (
int lin=0; lin<nr; lin++)
151 for (
int col=0; col<nr; col++)
152 ope.
set(lin+nr,col) = -ms(lin,col) ;
153 for (
int lin=0; lin<nr; lin++)
154 for (
int col=0; col<nr; col++)
155 ope.
set(lin+nr,col+nr) = md(lin,col) + ms(lin,col) ;
163 for (
int col=0 ; col<nr; col++) {
164 ope.
set(nr-1,col) = pari ;
165 ope.
set(nr-1,col+nr) = -pari ;
168 for (
int col=0 ; col<nr ; col++) {
169 ope.
set(2*nr-1,col+nr)=1 ;
174 for (
int col=0; col<2*nr; col++) {
175 ope.
set(ind1+nr-2, col) = 0 ;
177 for (
int col=nr; col<2*nr; col++)
178 ope.
set(ind1+nr-2, col) = 1 ;
179 for (
int col=0; col<2*nr; col++) {
180 ope.
set(nr-1, col) = 0 ;
181 ope.
set(2*nr-1, col) = 0 ;
185 for (
int col=0; col<nr; col++) {
186 ope.
set(nr-1, col) = pari ;
187 ope.
set(2*nr-1, col+nr) = pari ;
192 ope.
set(nr-1, nr-1) = 1 ;
193 ope.
set(2*nr-1, 2*nr-1) = 1 ;
202 for (
int lin=0; lin<nr; lin++)
204 for (
int lin=0; lin<nr; lin++)
207 sec.
set(2*nr-1) = 0 ;
220 for (
int i=0; i<nr; i++) {
221 sol_vr.
set(lz, k, j, i) = sol(i) ;
222 sol_eta.
set(lz, k, j, i) = sol(i+nr) ;
224 if ((l_q==2)&&(k==3)) {
225 cout <<
" ========================== " << endl ;
226 cout <<
" Operateur " << endl ;
227 cout <<
" ========================== " << endl ;
228 cout << ope << endl ;
229 cout <<
" ========================== " << endl ;
230 cout <<
" Second membre " << endl ;
231 cout <<
" ========================== " << endl ;
232 cout << sec << endl ;
233 cout <<
" ========================== " << endl ;
234 cout <<
" Solution " << endl ;
235 cout <<
" ========================== " << endl ;
236 cout << sol << endl ;
253 for (
int k=0 ; k<np+1 ; k++)
254 for (
int j=0 ; j<nt ; j++) {
256 if ((nullite_plm(j, nt, k, np, base) == 1) && (l_q > 0)) {
259 int nr = mgrid.
get_nr(0) ;
260 for (
int i=0 ; i<nr ; i++) {
261 mvr.
set(0, k, j, i) = sol_vr(0, k, j, i) ;
262 meta.
set(0, k, j, i) = sol_eta(0, k, j, i) ;
const Base_val & get_spectral_base() const
Returns the spectral bases of the Valeur va.
virtual const Matrice & get_matrice() const
Returns the matrix associated with the operator.
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
const double * get_alpha() const
Returns the pointer on the array alpha.
void mult_r()
Multiplication by r everywhere; dzpuis is not changed.
void ylm_i()
Inverse of ylm()
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
void set_etat_cf_qcq()
Sets the logical state to ETATQCQ (ordinary state) for values in the configuration space (Mtbl_cf c_c...
void give_quant_numbers(int, int, int, int &, int &, int &) const
Computes the various quantum numbers and 1d radial base.
void set_lu() const
Calculate the LU-representation, assuming the band-storage has been done.
Tbl & set(int l)
Read/write of the Tbl containing the coefficients in a given domain.
Tbl inverse(const Tbl &sec_membre) const
Solves the linear system represented by the matrix.
void ylm()
Computes the coefficients of *this.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
double & set(int i)
Read/write of a particular element (index i) (1D case)
virtual const Matrice & get_matrice() const
Returns the matrix associated with the operator.
Tensor field of valence 0 (or component of a tensorial field).
Class for the elementary differential operator (see the base class Diff ).
int get_etat() const
Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).
void annule_hard()
Sets the Scalar to zero in a hard way.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
int get_n_int() const
Returns the number of stored int 's addresses.
const int & get_int(int position=0) const
Returns the reference of a int stored in the list.
#define R_CHEBP
base de Cheb. paire (rare) seulement
Mtbl * c
Values of the function at the points of the multi-grid.
int get_nzone() const
Returns the number of domains.
double & set(int j, int i)
Read/write of a particuliar element.
void set_spectral_base(const Base_val &)
Sets the spectral bases of the Valeur va
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
Bases of the spectral expansions.
void annule_hard()
Sets the Mtbl_cf to zero in a hard way.
void mult_x()
The basis is transformed as with a multiplication by .
Coefficients storage for the multi-domain spectral method.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
void sol_Dirac_A_1z(const Scalar &aaa, Scalar &eta, Scalar &vr, const Param *par_bc=0x0) const
Solves a one-domain system of two-coupled first-order PDEs obtained from the divergence-free conditio...
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
Valeur & set_spectral_va()
Returns va (read/write version)
Class for the elementary differential operator division by (see the base class Diff )...
int get_type_r(int l) const
Returns the type of sampling in the radial direction in domain no.
const Map *const mp
Mapping on which the numerical values at the grid points are defined.
const Valeur & get_spectral_va() const
Returns va (read only version)