57 #include "type_parite.h" 64 Tbl _solp_helmholtz_plus_pas_prevu (
const Matrice &,
const Matrice &,
65 const Tbl &,
double,
double) {
66 cout <<
" Solution homogene pas prevue ..... : "<< endl ;
78 Tbl _solp_helmholtz_plus_r_cheb (
const Matrice &lap,
const Matrice &nondege,
79 const Tbl &source,
double alpha,
double beta) {
82 int dege = n-nondege.get_dim(0) ;
85 Tbl source_aux(source*alpha*alpha) ;
87 Tbl xxso(source_aux) ;
88 multx_1d(n, &xso.t,
R_CHEB) ;
89 multx_1d(n, &xxso.t,
R_CHEB) ;
90 multx_1d(n, &xxso.t,
R_CHEB) ;
91 source_aux = beta*beta/alpha/alpha*source_aux+2*beta/alpha*xso+xxso ;
93 source_aux = cl_helmholtz_plus (source_aux,
R_CHEB) ;
97 for (
int i=0 ; i<n-dege ; i++)
98 so.set(i) = source_aux(i) ;
100 Tbl auxi(nondege.inverse(so)) ;
104 for (
int i=dege ; i<n ; i++)
105 res.set(i) = auxi(i-dege) ;
107 for (
int i=0 ; i<dege ; i++)
115 Tbl _solp_helmholtz_plus_r_chebp (
const Matrice &lap,
const Matrice &nondege,
116 const Tbl &source,
double alpha,
double) {
119 int dege = n-nondege.get_dim(0) ;
122 Tbl source_aux(source*alpha*alpha) ;
123 source_aux = cl_helmholtz_plus (source_aux,
R_CHEBP) ;
127 for (
int i=0 ; i<n-dege ; i++)
128 so.set(i) = source_aux(i) ;
130 Tbl auxi(nondege.inverse(so)) ;
134 for (
int i=dege ; i<n ; i++)
135 res.set(i) = auxi(i-dege) ;
137 for (
int i=0 ; i<dege ; i++)
146 Tbl solp_helmholtz_plus (
const Matrice &lap,
const Matrice &nondege,
147 const Tbl &source,
double alpha,
double beta,
151 static Tbl (*solp_helmholtz_plus[
MAX_BASE]) (
const Matrice&,
const Matrice&,
152 const Tbl&, double, double) ;
159 solp_helmholtz_plus[i] = _solp_helmholtz_plus_pas_prevu ;
162 solp_helmholtz_plus[
R_CHEB >>
TRA_R] = _solp_helmholtz_plus_r_cheb ;
163 solp_helmholtz_plus[
R_CHEBP >>
TRA_R] = _solp_helmholtz_plus_r_chebp ;
166 Tbl res(solp_helmholtz_plus[base_r] (lap, nondege, source, alpha, beta)) ;
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
#define R_CHEBP
base de Cheb. paire (rare) seulement
int get_dim(int i) const
Gives the i-th dimension (ie dim.dim[i])
#define MAX_BASE
Nombre max. de bases differentes.
#define R_CHEB
base de Chebychev ordinaire (fin)