1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| void shauder( double ur[], double uw[], const double u[], const double uo[], int nbp, int nbni, int is) {
const double sqr2 = sqrt(2.);
const double dsqr2 = 2. * sqr2;
double c1 = sqr2 , c2 = sqr2 / 2.;
double d1 = 1. , d2 = -0.5 , d3 = sqr2 / 4.;
if ( is == 1 ) {
memcpy( uw , u , nbp*sizeof(*uw) ); memcpy( ur , u , nbp*sizeof(*ur) );
for ( int ni = 0 ; ni < nbni ; ++ni ) { // indices commencent à zéro en C
for ( int i = 0 ; i < nbp; ++i ) {
ur[i] = uw[i];
}
int nj = nbp / 2;
for ( int i2 = 0 ; i2 < nbp ; i2+=2 ) {
int i = i2 / 2;
uw[i] = ur[i2] * c1;
int i2p1 = i2+2;
if ( i2+1 >= nbp )
i2p1 = 0;
uw[nj+i] = ur[i2+1] + ur[i2p1] * d2 + ur[i2] * d2;
}
}
}
else {
// etc etc etc etc
}
} |
Partager