26 char scalar_raccord_externe_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Tensor/Scalar/scalar_raccord_externe.C,v 1.4 2014/10/13 08:53:47 j_novak Exp $" ;
60 int cnp (
int n,
int p) ;
72 int base_r, m_quant, l_quant ;
83 cout <<
"Le mapping doit etre affine" << endl ;
89 double beta = map->
get_beta()[zone] ;
92 double new_alpha = -alpha/(beta*beta-alpha*alpha) ;
93 double new_beta = beta/(beta*beta-alpha*alpha) ;
96 double alpha_zec = map->
get_alpha()[zone+1] ;
104 tksi.
set(0, 0) =
sqrt(
double(2)) ;
105 for (
int i=1 ; i<nbre ; i++)
110 tksi.
set(1, 1) =
sqrt(
double(2)) ;
111 for (
int i=2 ; i<nbre ; i++)
115 for (
int lig=2 ; lig<nbre ; lig++) {
116 tksi.
set(lig, 0) = -tksi(lig-2, 0) ;
117 for (
int col=1 ; col<nbre ; col++)
118 tksi.
set(lig, col) = 2*tksi(lig-1, col-1)-tksi(lig-2, col) ;
125 for (
int lig=0 ; lig<nbre ; lig++) {
126 for (
int col=0 ; col<=lig ; col++)
127 ksiu.
set(lig, col) = cnp(lig, col)*
128 pow(-new_beta/new_alpha, lig-col) ;
129 for (
int col = lig+1 ; col<nbre ; col++)
130 ksiu.
set(lig, col) = 0 ;
137 for (
int lig=0 ; lig<nbre ; lig++)
138 for (
int col=0 ; col<nbre ; col++) {
140 for (
int m=0 ; m<nbre ; m++)
141 somme += tksi(lig, m)*ksiu(m, col) ;
142 tu.
set(lig, col) = somme ;
146 Tbl coef_u (nbre+lmax, nr) ;
148 int* dege =
new int [3] ;
149 dege[0] = 1 ; dege[1] = 1 ; dege[2] = nr ;
150 double* ti =
new double [nr] ;
152 for (
int puiss=0 ; puiss<nbre+lmax ; puiss++) {
153 for (
int i=0 ; i<nr ; i++)
154 ti[i] =
pow(-
cos(M_PI*i/(nr-1))-1, puiss) ;
155 cfrcheb (dege, dege, ti, dege, ti) ;
156 for (
int i=0 ; i<nr ; i++)
157 coef_u.
set(puiss, i) = ti[i] ;
162 double *coloc =
new double[nbre] ;
163 double *auxi =
new double [1] ;
165 Tbl coef_zec (np+2, nt, nr) ;
170 for (
int k=0 ; k<np+2 ; k++)
171 for (
int j=0 ; j<nt ; j++)
172 if (nullite_plm (j, nt, k, np, base_devel)==1) {
173 donne_lm (zone+2, zone+1, j, k, base_devel, m_quant,
175 if (l_quant <= lmax) {
180 for (
int i=0 ; i<nbre ; i++) {
181 ksi = -
cos(M_PI*i/(nbre-1)) ;
182 air = 1./(new_alpha*ksi+new_beta) ;
183 ksi = (air-beta)/alpha ;
184 for (
int m=0 ; m<nr ; m++)
185 ti[m] = (*
va.
c_cf)(zone, k, j, m) ;
186 som_r_cheb (ti, nr, 1, 1, ksi, auxi) ;
188 pow (-new_alpha*
cos(M_PI*i/(nbre-1))+new_beta, power+l_quant);
191 cfrcheb (dege, dege, coloc, dege, coloc) ;
193 Tbl expansion (nbre) ;
195 for (
int i=0 ; i<nbre ; i++) {
197 for (
int m=0 ; m<nbre ; m++)
198 somme += coloc[m]*tu(m, i) ;
199 expansion.
set(i) = somme ;
202 for (
int i=0 ; i<nr ; i++) {
204 for (
int m=0 ; m<nbre ; m++)
205 somme += coef_u(m+l_quant, i)*expansion(m)*
206 pow(alpha_zec, m+l_quant)/
208 coef_zec.
set(k, j, i) = somme ;
217 for (
int k=0 ; k<np+2 ; k++)
218 for (
int j=0 ; j<nt ; j++)
219 for (
int i=0 ; i<nr ; i++)
220 va.
c_cf->
set(zone+1, k, j, i) = coef_zec(k, j, i) ;