32 #include "ope_elementary.h" 39 Matrice _poisson_pseudo_1d_mat_pas_prevu(
int,
int,
double,
double) {
40 cout <<
"Operator pas prevu..." << endl ;
53 Matrice _poisson_pseudo_1d_mat_r_chebp (
int n,
int l,
double,
double) {
60 double* vect =
new double[n] ;
62 for (
int i=0 ; i<n ; i++) {
63 for (
int j=0 ; j<n ; j++)
68 for (
int j=0 ; j<n ; j++)
69 dd.set(j, i) = vect[j] ;
72 for (
int i=0 ; i<n ; i++) {
73 for (
int j=0 ; j<n ; j++)
77 for (
int j=0 ; j<n ; j++)
78 xx.set(j, i) = vect[j] ;
95 Matrice _poisson_pseudo_1d_mat_r_chebi (
int n,
int l,
103 double* vect =
new double[n] ;
105 for (
int i=0 ; i<n ; i++) {
106 for (
int j=0 ; j<n ; j++)
109 d2sdx2_1d (n, &vect,
R_CHEBI) ;
110 for (
int j=0 ; j<n ; j++)
111 dd.set(j, i) = vect[j] ;
114 for (
int i=0 ; i<n ; i++) {
115 for (
int j=0 ; j<n ; j++)
119 for (
int j=0 ; j<n ; j++)
120 xx.set(j, i) = vect[j] ;
126 res = dd-l*(l-1)*xx ;
135 Matrice _poisson_pseudo_1d_mat_r_cheb (
int n,
int l,
136 double alf,
double bet) {
138 double echelle = bet / alf ;
146 double* vect =
new double[n] ;
148 for (
int i=0 ; i<n ; i++) {
149 for (
int j=0 ; j<n ; j++)
152 d2sdx2_1d (n, &vect,
R_CHEB) ;
153 for (
int j=0 ; j<n ; j++)
154 dd.set(j, i) = vect[j]*echelle*echelle ;
157 for (
int i=0 ; i<n ; i++) {
158 for (
int j=0 ; j<n ; j++)
161 d2sdx2_1d (n, &vect,
R_CHEB) ;
162 multx_1d (n, &vect,
R_CHEB) ;
163 for (
int j=0 ; j<(n>i+1 ? i+1 : n) ; j++)
164 dd.set(j, i) += 2*echelle*vect[j] ;
167 for (
int i=0 ; i<n ; i++) {
168 for (
int j=0 ; j<n ; j++)
171 d2sdx2_1d (n, &vect,
R_CHEB) ;
172 multx_1d (n, &vect,
R_CHEB) ;
173 multx_1d (n, &vect,
R_CHEB) ;
174 for (
int j=0 ; j<(n>i+1 ? i+1 : n) ; j++)
175 dd.set(j, i) += vect[j] ;
178 for (
int i=0 ; i<n ; i++) {
179 for (
int j=0 ; j<n ; j++)
182 sx2_1d (n, &vect,
R_CHEB) ;
183 for (
int j=0 ; j<n ; j++)
184 xx.set(j, i) = vect[j] ;
190 res = dd-l*(l-1)*xx ;
200 static Matrice (*poisson_pseudo_1d_mat[
MAX_BASE])(int, int, double, double);
207 poisson_pseudo_1d_mat[i] = _poisson_pseudo_1d_mat_pas_prevu ;
210 poisson_pseudo_1d_mat[
R_CHEB >>
TRA_R] = _poisson_pseudo_1d_mat_r_cheb ;
211 poisson_pseudo_1d_mat[
R_CHEBP >>
TRA_R] = _poisson_pseudo_1d_mat_r_chebp ;
212 poisson_pseudo_1d_mat[
R_CHEBI >>
TRA_R] = _poisson_pseudo_1d_mat_r_chebi ;
double alpha
Parameter of the associated mapping.
double beta
Parameter of the associated mapping.
Matrice * ope_mat
Pointer on the matrix representation of the operator.
int base_r
Radial basis of decomposition.
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
virtual void do_ope_mat() const
Computes the matrix of the operator.
int nr
Number of radial points.
#define MAX_BASE
Nombre max. de bases differentes.
int l_quant
quantum number
#define R_CHEB
base de Chebychev ordinaire (fin)