23char dsdx_1d_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/dsdx_1d.C,v 1.9 2015/03/25 15:03:00 j_novak Exp $" ;
63#include "type_parite.h"
82void _dsdx_1d_pas_prevu(
int nr,
double* tb,
double *xo) {
83 cout <<
"dsdx pas prevu..." << endl ;
84 cout <<
"Nombre de points : " << nr << endl ;
85 cout <<
"Valeurs : " << tb <<
" " << xo <<endl ;
94void _dsdx_1d_r_chebu(
int nr,
double* tb,
double *xo)
100 som = 2*(nr-1) * tb[nr-1] ;
102 for (
int i = nr-4 ; i >= 0 ; i -= 2 ) {
103 som += 2*(i+1) * tb[i+1] ;
106 som = 2*(nr-2) * tb[nr-2] ;
108 for (
int i = nr-5 ; i >= 0 ; i -= 2 ) {
109 som += 2*(i+1) * tb[i+1] ;
121void _dsdx_1d_r_jaco02(
int nr,
double* tb,
double *xo)
127 for (
int i = 0 ; i < nr-1 ; i++ ) {
129 for (
int j = i+1 ; j < nr ; j++ ) {
130 som += (1 -
pow(
double(-1),(j-i))*(i+1)*(i+2)/double((j+1)*(j+2)))*tb[j] ;
132 xo[i] = (i+1.5)*som ;
141void _dsdx_1d_r_chebi(
int nr,
double* tb,
double *xo)
147 som = 2*(2*nr-3) * tb[nr-2] ;
149 for (
int i = nr-3 ; i >= 0 ; i -- ) {
150 som += 2*(2*i+1) * tb[i] ;
160void _dsdx_1d_r_chebp(
int nr,
double* tb,
double *xo)
166 som = 4*(nr-1) * tb[nr-1] ;
168 for (
int i = nr-3 ; i >= 0 ; i --) {
169 som += 4*(i+1) * tb[i+1] ;
178void _dsdx_1d_r_leg(
int nr,
double* tb,
double *xo)
184 xo[nr-2] = double(2*nr-3)*som ;
185 for (
int i = nr-4 ; i >= 0 ; i -= 2 ) {
187 xo[i] = double(2*i+1)*som ;
190 if (nr > 2) xo[nr-3] = double(2*nr-5)*som ;
191 for (
int i = nr-5 ; i >= 0 ; i -= 2 ) {
193 xo[i] = double(2*i+1)*som ;
201void _dsdx_1d_r_legi(
int nr,
double* tb,
double *xo)
208 if (nr > 1) xo[nr-2] = double(4*nr-7)*som ;
209 for (
int i = nr-3 ; i >= 0 ; i -- ) {
211 xo[i] = double(4*i+1)*som ;
219void _dsdx_1d_r_legp(
int nr,
double* tb,
double *xo)
226 if (nr > 1) xo[nr-2] = double(4*nr-5)*som ;
227 for (
int i = nr-3 ; i >= 0 ; i --) {
229 xo[i] = double(4*i+3)*som ;
238void dsdx_1d(
int nr,
double** tb,
int base_r)
242 static void (*dsdx_1d[
MAX_BASE])(int,
double*,
double *) ;
249 dsdx_1d[i] = _dsdx_1d_pas_prevu ;
263 double *result =
new double[nr] ;
265 dsdx_1d[base_r](nr, *tb, result) ;
Cmp pow(const Cmp &, int)
Power .
#define R_LEGP
base de Legendre paire (rare) seulement
#define MAX_BASE
Nombre max. de bases differentes.
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define R_LEGI
base de Legendre impaire (rare) seulement
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_LEG
base de Legendre ordinaire (fin)
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
#define R_CHEB
base de Chebychev ordinaire (fin)
#define R_CHEBP
base de Cheb. paire (rare) seulement