som_tet.C

00001 /*
00002  *   Copyright (c) 1999-2000 Jean-Alain Marck
00003  *   Copyright (c) 1999-2001 Philippe Grandclement
00004  *   Copyright (c) 1999-2002 Eric Gourgoulhon
00005  *
00006  *   This file is part of LORENE.
00007  *
00008  *   LORENE is free software; you can redistribute it and/or modify
00009  *   it under the terms of the GNU General Public License as published by
00010  *   the Free Software Foundation; either version 2 of the License, or
00011  *   (at your option) any later version.
00012  *
00013  *   LORENE is distributed in the hope that it will be useful,
00014  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *   GNU General Public License for more details.
00017  *
00018  *   You should have received a copy of the GNU General Public License
00019  *   along with LORENE; if not, write to the Free Software
00020  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021  *
00022  */
00023 
00024 
00025 char som_tet_C[] = "$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/som_tet.C,v 1.6 2004/11/23 15:16:02 m_forot Exp $" ;
00026 
00027 /*
00028  * Ensemble des routine pour la sommation directe en theta
00029  * 
00030  *   SYNOPSYS:
00031  *     double som_tet_XX
00032  *  (double* ti, int nt, int np, double tet, double* to)
00033  * 
00034  *   ATTENTION: np est le vrai nombre de points (sans le +2)
00035  *      on suppose que les tableaux tiennent compte de ca.
00036  */
00037 
00038 
00039 /*
00040  * $Id: som_tet.C,v 1.6 2004/11/23 15:16:02 m_forot Exp $
00041  * $Log: som_tet.C,v $
00042  * Revision 1.6  2004/11/23 15:16:02  m_forot
00043  *
00044  * Added the bases for the cases without any equatorial symmetry
00045  *  (T_COSSIN_C, T_COSSIN_S, T_LEG, R_CHEBPI_P, R_CHEBPI_I).
00046  *
00047  * Revision 1.5  2002/10/16 14:36:59  j_novak
00048  * Reorganization of #include instructions of standard C++, in order to
00049  * use experimental version 3 of gcc.
00050  *
00051  * Revision 1.4  2002/05/11 12:36:54  e_gourgoulhon
00052  * Added basis T_COSSIN_SI.
00053  *
00054  * Revision 1.3  2002/05/05 16:20:40  e_gourgoulhon
00055  * Error message (in unknwon basis case) in English
00056  * Added the basis T_COSSIN_SP
00057  *
00058  * Revision 1.2  2002/05/01 07:41:05  e_gourgoulhon
00059  * Correction of an ERROR in som_tet_sin_p :
00060  *    sin(2*(j+1) * tet) --> sin(2*j * tet)
00061  * idem in som_tet_sin:
00062  *    sin( (j+1) * tet) --> sin(j * tet)
00063  *
00064  * Revision 1.1.1.1  2001/11/20 15:19:29  e_gourgoulhon
00065  * LORENE
00066  *
00067  * Revision 2.5  2000/09/08  16:26:32  eric
00068  * Ajout de la base T_SIN_I.
00069  *
00070  * Revision 2.4  2000/09/06  14:00:01  eric
00071  * Ajout de la base T_COS_I.
00072  *
00073  * Revision 2.3  2000/03/06  09:34:47  eric
00074  * Suppression des #include inutiles.
00075  *
00076  * Revision 2.2  1999/04/28  12:27:52  phil
00077  * Correction tailles des tableaux
00078  *
00079  * Revision 2.1  1999/04/26  14:31:17  phil
00080  * remplacement des malloc en new
00081  *
00082  * Revision 2.0  1999/04/12  15:42:03  phil
00083  * *** empty log message ***
00084  *
00085  * Revision 1.1  1999/04/12  15:41:20  phil
00086  * Initial revision
00087  *
00088  *
00089  * $Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/som_tet.C,v 1.6 2004/11/23 15:16:02 m_forot Exp $
00090  *
00091  */
00092 // Headers C
00093 #include <stdlib.h>
00094 #include <math.h>
00095 
00096 #include "headcpp.h"
00097 
00098             //--------------------
00099             //- Cas Non-Prevu ---
00100             //------------------
00101 
00102 void som_tet_pas_prevu
00103     (double* , const int, const int, const double, double*) {
00104     cout << "Mtbl_cf::val_point: theta basis not implemented yet ! "
00105          << endl ;
00106     abort () ;
00107 }
00108 
00109             //----------------
00110             //  Cas T_COS ---
00111             //----------------
00112 
00113 void som_tet_cos
00114     (double* ti, const int nt, const int np,
00115     const double tet, double* to) {
00116 
00117 // Variables diverses
00118 int j, k ;
00119 double* pi = ti ;       // Pointeur courant sur l'entree
00120 double* po = to ;       // Pointeur courant sur la sortie
00121 
00122     // Initialisation des tables trigo
00123     double* cosinus = new double [nt] ;
00124     for (j=0 ; j<nt ; j++) {
00125     cosinus[j] = cos(j * tet) ;
00126     }
00127     
00128     // Sommation sur le premier phi, k=0
00129     *po = 0 ;
00130     for (j=0 ; j<nt ; j++) {
00131     *po += (*pi) * cosinus[j] ;
00132     pi++ ;  // Theta suivant
00133     }
00134     po++ ;  // Phi suivant
00135     
00136     if (np > 1) {   
00137 
00138     // On saute le phi suivant (sin(0)), k=1
00139     pi += nt ;
00140     po++ ;
00141     
00142     // Sommation sur le reste des phi (pour k=2,...,np)
00143     for (k=2 ; k<np+1 ; k++) {
00144     (*po) = 0 ;
00145     for (j=0 ; j<nt ; j++) {
00146         *po += (*pi) * cosinus[j] ;
00147         pi++ ;  // Theta suivant
00148     }
00149     po++ ;      // Phi suivant
00150     }
00151 
00152     }   // fin du cas np > 1 
00153 
00154     // Menage
00155     delete [] cosinus ;
00156     
00157 }
00158 
00159             //-------------------
00160             //   Cas T_COS_P ---
00161             //------------------
00162 
00163 void som_tet_cos_p
00164     (double* ti, const int nt, const int np,
00165     const double tet, double* to) {
00166     
00167 // Variables diverses
00168 int j, k ;
00169 double* pi = ti ;       // Pointeur courant sur l'entree
00170 double* po = to ;       // Pointeur courant sur la sortie
00171 
00172     // Initialisation des tables trigo
00173     double* cosinus = new double [nt] ;
00174     for (j=0 ; j<nt ; j++) {
00175     cosinus[j] = cos(2*j * tet) ;
00176     }
00177     
00178     // Sommation sur le premier phi, k=0
00179     *po = 0 ;
00180     for (j=0 ; j<nt ; j++) {
00181     *po += (*pi) * cosinus[j] ;
00182     pi++ ;  // Theta suivant
00183     }
00184     po++ ;  // Phi suivant
00185     
00186     if (np > 1) {   
00187 
00188     // On saute le phi suivant (sin(0)), k=1
00189     pi += nt ;
00190     po++ ;
00191     
00192     // Sommation sur le reste des phi (pour k=2,...,np)
00193     for (k=2 ; k<np+1 ; k++) {
00194     (*po) = 0 ;
00195     for (j=0 ; j<nt ; j++) {
00196         *po += (*pi) * cosinus[j] ;
00197         pi++ ;  // Theta suivant
00198     }
00199     po++ ;      // Phi suivant
00200     }
00201 
00202     }   // fin du cas np > 1 
00203     // Menage
00204    delete [] cosinus ;
00205     
00206 }
00207 
00208             //----------------------
00209             //- Cas T_COS_I ---
00210             //---------------------
00211 
00212 void som_tet_cos_i
00213     (double* ti, const int nt, const int np,
00214     const double tet, double* to) {
00215     
00216 // Variables diverses
00217 int j, k ;
00218 double* pi = ti ;       // Pointeur courant sur l'entree
00219 double* po = to ;       // Pointeur courant sur la sortie
00220 
00221     // Initialisation des tables trigo
00222     double* cosinus = new double [nt] ;
00223     for (j=0 ; j<nt-1 ; j++) {
00224     cosinus[j] = cos((2*j+1) * tet) ;
00225     }
00226     cosinus[nt-1] = 0 ; 
00227     
00228     // Sommation sur le premier phi, k=0
00229     *po = 0 ;
00230     for (j=0 ; j<nt ; j++) {
00231     *po += (*pi) * cosinus[j] ;
00232     pi++ ;  // Theta suivant
00233     }
00234     po++ ;  // Phi suivant
00235     
00236     if (np > 1) {   
00237 
00238     // On saute le phi suivant (sin(0)), k=1
00239     pi += nt ;
00240     po++ ;
00241     
00242     // Sommation sur le reste des phi (pour k=2,...,np)
00243     for (k=2 ; k<np+1 ; k++) {
00244     (*po) = 0 ;
00245     for (j=0 ; j<nt ; j++) {
00246         *po += (*pi) * cosinus[j] ;
00247         pi++ ;  // Theta suivant
00248     }
00249     po++ ;      // Phi suivant
00250     }
00251     }   // fin du cas np > 1 
00252 
00253     // Menage
00254     delete [] cosinus ;
00255     
00256 }
00257 
00258 
00259 
00260 
00261 
00262             //---------------
00263             //  Cas T_SIN ---
00264             //---------------
00265 
00266 void som_tet_sin
00267     (double* ti, const int nt, const int np,
00268     const double tet, double* to) {
00269     
00270 // Variables diverses
00271 int j, k ;
00272 double* pi = ti ;       // Pointeur courant sur l'entree
00273 double* po = to ;       // Pointeur courant sur la sortie
00274 
00275     // Initialisation des tables trigo
00276     double* sinus = new double [nt] ;
00277     for (j=0 ; j<nt ; j++) {
00278     sinus[j] = sin(j * tet) ;
00279     }
00280     
00281     // Sommation sur le premier phi, k=0
00282     *po = 0 ;
00283     for (j=0 ; j<nt ; j++) {
00284     *po += (*pi) * sinus[j] ;
00285     pi++ ;  // Theta suivant
00286     }
00287     po++ ;  // Phi suivant
00288     
00289     if (np > 1) {   
00290 
00291     // On saute le phi suivant (sin(0)), k=1
00292     pi += nt ;
00293     po++ ;
00294     
00295     // Sommation sur le reste des phi (pour k=2,...,np)
00296     for (k=2 ; k<np+1 ; k++) {
00297     (*po) = 0 ;
00298     for (j=0 ; j<nt ; j++) {
00299         *po += (*pi) * sinus[j] ;
00300         pi++ ;  // Theta suivant
00301     }
00302     po++ ;      // Phi suivant
00303     }
00304     }   // fin du cas np > 1 
00305 
00306     // Menage
00307     delete [] sinus ;
00308     
00309 }
00310 
00311             //------------------
00312             //  Cas T_SIN_P ---
00313             //-----------------
00314 
00315 void som_tet_sin_p
00316     (double* ti, const int nt, const int np,
00317     const double tet, double* to) {
00318     
00319 // Variables diverses
00320 int j, k ;
00321 double* pi = ti ;       // Pointeur courant sur l'entree
00322 double* po = to ;       // Pointeur courant sur la sortie
00323 
00324     // Initialisation des tables trigo
00325     double* sinus = new double [nt] ;
00326     for (j=0 ; j<nt-1 ; j++) {
00327     sinus[j] = sin(2*j * tet) ;
00328     }
00329     sinus[nt-1] = 0 ;
00330 
00331     // Sommation sur le premier phi, k=0
00332     *po = 0 ;
00333     for (j=0 ; j<nt ; j++) {
00334     *po += (*pi) * sinus[j] ;
00335     pi++ ;  // Theta suivant
00336     }
00337     po++ ;  // Phi suivant
00338     
00339     if (np > 1) {   
00340 
00341     // On saute le phi suivant (sin(0)), k=1
00342     pi += nt ;
00343     po++ ;
00344     
00345     // Sommation sur le reste des phi (pour k=2,...,np)
00346     for (k=2 ; k<np+1 ; k++) {
00347     (*po) = 0 ;
00348     for (j=0 ; j<nt ; j++) {
00349         *po += (*pi) * sinus[j] ;
00350         pi++ ;  // Theta suivant
00351     }
00352     po++ ;      // Phi suivant
00353     }
00354     }   // fin du cas np > 1 
00355 
00356     // Menage
00357    delete [] sinus ;
00358     
00359 }
00360 
00361             //------------------
00362             //  Cas T_SIN_I ---
00363             //-----------------
00364 
00365 void som_tet_sin_i
00366     (double* ti, const int nt, const int np,
00367     const double tet, double* to) {
00368     
00369 // Variables diverses
00370 int j, k ;
00371 double* pi = ti ;       // Pointeur courant sur l'entree
00372 double* po = to ;       // Pointeur courant sur la sortie
00373 
00374     // Initialisation des tables trigo
00375     double* sinus = new double [nt] ;
00376     for (j=0 ; j<nt-1 ; j++) {
00377     sinus[j] = sin( (2*j+1) * tet) ;
00378     }
00379     sinus[nt-1] = 0 ; 
00380     
00381     // Sommation sur le premier phi, k=0
00382     *po = 0 ;
00383     for (j=0 ; j<nt ; j++) {
00384     *po += (*pi) * sinus[j] ;
00385     pi++ ;  // Theta suivant
00386     }
00387     po++ ;  // Phi suivant
00388     
00389     if (np > 1) {   
00390 
00391     // On saute le phi suivant (sin(0)), k=1
00392     pi += nt ;
00393     po++ ;
00394     
00395     // Sommation sur le reste des phi (pour k=2,...,np)
00396     for (k=2 ; k<np+1 ; k++) {
00397     (*po) = 0 ;
00398     for (j=0 ; j<nt ; j++) {
00399         *po += (*pi) * sinus[j] ;
00400         pi++ ;  // Theta suivant
00401     }
00402     po++ ;      // Phi suivant
00403     }
00404     }   // fin du cas np > 1 
00405 
00406     // Menage
00407    delete [] sinus ;
00408     
00409 }
00410 
00411 
00412             //---------------------
00413             //  Cas T_COSSIN_CP ---
00414             //---------------------
00415 
00416 void som_tet_cossin_cp
00417     (double* ti, const int nt, const int np,
00418     const double tet, double* to) {
00419     
00420 // Variables diverses
00421 int j, k ;
00422 double* pi = ti ;       // Pointeur courant sur l'entree
00423 double* po = to ;       // Pointeur courant sur la sortie
00424 
00425     // Initialisation des tables trigo
00426     double* cossin = new double [2*nt] ;
00427     for (j=0 ; j<2*nt ; j +=2) {
00428     cossin[j] = cos(j * tet) ;
00429     cossin[j+1] = sin((j+1) * tet) ;
00430     }
00431     
00432     // Sommation sur le premier phi -> cosinus, k=0
00433     *po = 0 ;
00434     for (j=0 ; j<nt ; j++) {
00435     *po += (*pi) * cossin[2*j] ;
00436     pi++ ;  // Theta suivant
00437     }
00438     po++ ;  // Phi suivant
00439     
00440     if (np > 1) {   
00441 
00442     // On saute le phi suivant (sin(0)), k=1
00443     pi += nt ;
00444     po++ ;
00445     
00446     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00447     for (k=2 ; k<np+1 ; k++) {
00448     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00449     (*po) = 0 ;
00450     for (j=0 ; j<nt ; j++) {
00451         *po += (*pi) * cossin[2*j + m] ;
00452         pi++ ;  // Theta suivant
00453     }
00454     po++ ;      // Phi suivant
00455     }
00456     }   // fin du cas np > 1 
00457 
00458     // Menage
00459     delete [] cossin ;
00460     
00461 }
00462 
00463 
00464             //----------------------
00465             //- Cas T_COSSIN_CI ---
00466             //---------------------
00467 
00468 void som_tet_cossin_ci
00469     (double* ti, const int nt, const int np,
00470     const double tet, double* to) {
00471     
00472 // Variables diverses
00473 int j, k ;
00474 double* pi = ti ;       // Pointeur courant sur l'entree
00475 double* po = to ;       // Pointeur courant sur la sortie
00476 
00477     // Initialisation des tables trigo
00478     double* cossin = new double [2*nt] ;
00479     for (j=0 ; j<2*nt ; j +=2) {
00480     cossin[j] = cos((j+1) * tet) ;
00481     cossin[j+1] = sin(j * tet) ;
00482     }
00483     
00484     // Sommation sur le premier phi -> cosinus, k=0
00485     *po = 0 ;
00486     for (j=0 ; j<nt ; j++) {
00487     *po += (*pi) * cossin[2*j] ;
00488     pi++ ;  // Theta suivant
00489     }
00490     po++ ;  // Phi suivant
00491     
00492     if (np > 1) {   
00493 
00494     // On saute le phi suivant (sin(0)), k=1
00495     pi += nt ;
00496     po++ ;
00497     
00498     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00499     for (k=2 ; k<np+1 ; k++) {
00500     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00501     (*po) = 0 ;
00502     for (j=0 ; j<nt ; j++) {
00503         *po += (*pi) * cossin[2*j + m] ;
00504         pi++ ;  // Theta suivant
00505     }
00506     po++ ;      // Phi suivant
00507     }
00508     }   // fin du cas np > 1 
00509 
00510     // Menage
00511     delete [] cossin ;
00512     
00513 }
00514 
00515 
00516             //---------------------
00517             //  Cas T_COSSIN_SP ---
00518             //---------------------
00519 
00520 void som_tet_cossin_sp
00521     (double* ti, const int nt, const int np,
00522     const double tet, double* to) {
00523 
00524 // Variables diverses
00525 int j, k ;
00526 double* pi = ti ;       // Pointeur courant sur l'entree
00527 double* po = to ;       // Pointeur courant sur la sortie
00528 
00529     // Initialisation des tables trigo
00530     double* cossin = new double [2*nt] ;
00531     for (j=0 ; j<2*nt ; j +=2) {
00532     cossin[j] = sin(j * tet) ;
00533     cossin[j+1] = cos((j+1) * tet) ;
00534     }
00535 
00536     // Sommation sur le premier phi -> cosinus, k=0
00537     *po = 0 ;
00538     for (j=0 ; j<nt ; j++) {
00539     *po += (*pi) * cossin[2*j] ;
00540     pi++ ;  // Theta suivant
00541     }
00542     po++ ;  // Phi suivant
00543 
00544     if (np > 1) {   
00545 
00546     // On saute le phi suivant (sin(0)), k=1
00547     pi += nt ;
00548     po++ ;
00549 
00550     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00551     for (k=2 ; k<np+1 ; k++) {
00552     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00553     (*po) = 0 ;
00554     for (j=0 ; j<nt ; j++) {
00555         *po += (*pi) * cossin[2*j + m] ;
00556         pi++ ;  // Theta suivant
00557     }
00558     po++ ;      // Phi suivant
00559     }
00560     }   // fin du cas np > 1
00561 
00562     // Menage
00563     delete [] cossin ;
00564 
00565 }
00566 
00567 
00568             //---------------------
00569             //  Cas T_COSSIN_SI ---
00570             //---------------------
00571 
00572 void som_tet_cossin_si
00573     (double* ti, const int nt, const int np,
00574     const double tet, double* to) {
00575 
00576 // Variables diverses
00577 int j, k ;
00578 double* pi = ti ;       // Pointeur courant sur l'entree
00579 double* po = to ;       // Pointeur courant sur la sortie
00580 
00581     // Initialisation des tables trigo
00582     double* cossin = new double [2*nt] ;
00583     for (j=0 ; j<2*nt ; j +=2) {
00584     cossin[j] = sin((j+1) * tet) ;
00585     cossin[j+1] = cos(j * tet) ;
00586     }
00587 
00588     // Sommation sur le premier phi -> cosinus, k=0
00589     *po = 0 ;
00590     for (j=0 ; j<nt ; j++) {
00591     *po += (*pi) * cossin[2*j] ;
00592     pi++ ;  // Theta suivant
00593     }
00594     po++ ;  // Phi suivant
00595 
00596     if (np > 1) {   
00597 
00598     // On saute le phi suivant (sin(0)), k=1
00599     pi += nt ;
00600     po++ ;
00601 
00602     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00603     for (k=2 ; k<np+1 ; k++) {
00604     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00605     (*po) = 0 ;
00606     for (j=0 ; j<nt ; j++) {
00607         *po += (*pi) * cossin[2*j + m] ;
00608         pi++ ;  // Theta suivant
00609     }
00610     po++ ;      // Phi suivant
00611     }
00612     }   // fin du cas np > 1
00613 
00614     // Menage
00615     delete [] cossin ;
00616 
00617 }
00618 
00619             //---------------------
00620             //  Cas T_COSSIN_C ---
00621             //---------------------
00622 
00623 void som_tet_cossin_c
00624     (double* ti, const int nt, const int np,
00625     const double tet, double* to) {
00626     
00627 // Variables diverses
00628 int j, k ;
00629 double* pi = ti ;       // Pointeur courant sur l'entree
00630 double* po = to ;       // Pointeur courant sur la sortie
00631 
00632     // Initialisation des tables trigo
00633     double* cossin = new double [2*nt] ;
00634     for (j=0 ; j<2*nt ; j +=2) {
00635     cossin[j] = cos(j/2 * tet) ;
00636     cossin[j+1] = sin(j/2 * tet) ;
00637     }
00638     
00639     // Sommation sur le premier phi -> cosinus, k=0
00640     *po = 0 ;
00641     for (j=0 ; j<nt ; j++) {
00642     *po += (*pi) * cossin[2*j] ;
00643     pi++ ;  // Theta suivant
00644     }
00645     po++ ;  // Phi suivant
00646     
00647     if (np > 1) {   
00648 
00649     // On saute le phi suivant (sin(0)), k=1
00650     pi += nt ;
00651     po++ ;
00652     
00653     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00654     for (k=2 ; k<np+1 ; k++) {
00655     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00656     (*po) = 0 ;
00657     for (j=0 ; j<nt ; j++) {
00658         *po += (*pi) * cossin[2*j + m] ;
00659         pi++ ;  // Theta suivant
00660     }
00661     po++ ;      // Phi suivant
00662     }
00663     }   // fin du cas np > 1 
00664 
00665     // Menage
00666     delete [] cossin ;
00667     
00668 }
00669 
00670             //---------------------
00671             //  Cas T_COSSIN_S ---
00672             //---------------------
00673 
00674 void som_tet_cossin_s
00675     (double* ti, const int nt, const int np,
00676     const double tet, double* to) {
00677     
00678 // Variables diverses
00679 int j, k ;
00680 double* pi = ti ;       // Pointeur courant sur l'entree
00681 double* po = to ;       // Pointeur courant sur la sortie
00682 
00683     // Initialisation des tables trigo
00684     double* cossin = new double [2*nt] ;
00685     for (j=0 ; j<2*nt ; j +=2) {
00686     cossin[j] = sin(j/2 * tet) ;
00687     cossin[j+1] = cos(j/2 * tet) ;
00688     }
00689     
00690     // Sommation sur le premier phi -> cosinus, k=0
00691     *po = 0 ;
00692     for (j=0 ; j<nt ; j++) {
00693     *po += (*pi) * cossin[2*j] ;
00694     pi++ ;  // Theta suivant
00695     }
00696     po++ ;  // Phi suivant
00697     
00698     if (np > 1) {   
00699 
00700     // On saute le phi suivant (sin(0)), k=1
00701     pi += nt ;
00702     po++ ;
00703     
00704     // Sommation sur le reste des phi (pour k=2,...,np), suivant parite de m
00705     for (k=2 ; k<np+1 ; k++) {
00706     int m = (k/2) % 2 ;     // parite: 0 <-> 1
00707     (*po) = 0 ;
00708     for (j=0 ; j<nt ; j++) {
00709         *po += (*pi) * cossin[2*j + m] ;
00710         pi++ ;  // Theta suivant
00711     }
00712     po++ ;      // Phi suivant
00713     }
00714     }   // fin du cas np > 1 
00715 
00716     // Menage
00717     delete [] cossin ;
00718     
00719 }
00720 

Generated on Tue Feb 7 01:35:19 2012 for LORENE by  doxygen 1.4.6