Ignore:
Timestamp:
Nov 13, 2001, 4:29:59 PM (24 years ago)
Author:
lemeur
Message:

adaptation aus spheres theta-phi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/Samba/lambdaBuilder.cc

    r1683 r1756  
    4040}
    4141
    42 TriangularMatrix<r_8>* LambdaLMBuilder::a_recurrence_ = NULL;
    43 TriangularMatrix<r_8>* LambdaLMBuilder::lam_fact_     = NULL;
     42TriangularMatrix<r_8> LambdaLMBuilder::a_recurrence_ = TriangularMatrix<r_8>();
     43TriangularMatrix<r_8> LambdaLMBuilder::lam_fact_     = TriangularMatrix<r_8>();
    4444TVector<r_8>* LambdaLMBuilder::normal_l_     = NULL;
    4545
     
    8181void LambdaLMBuilder::array_init(int lmax, int mmax)
    8282   {
    83      if (a_recurrence_ == NULL)
    84        {
    85          a_recurrence_ = new TriangularMatrix<r_8>;
     83     if (a_recurrence_.Size() == 0)
     84       {
     85         //      a_recurrence_ = new TriangularMatrix<r_8>;
    8686         updateArrayRecurrence(lmax);
    8787       }
    8888     else
    89        if ( lmax > (*a_recurrence_).rowNumber()-1     )
     89       if ( lmax > (a_recurrence_).rowNumber()-1     )
    9090         {
    9191           cout << " WARNING : The classes LambdaXXBuilder will be more efficient if instanciated with parameter lmax = maximum value of l index which will be needed in the whole application (arrays not recomputed) " << endl;
    92            cout << "lmax= " << lmax << " previous instanciation with lmax= " <<  (*a_recurrence_).rowNumber() << endl;
     92           cout << "lmax= " << lmax << " previous instanciation with lmax= " <<  (a_recurrence_).rowNumber() << endl;
    9393         updateArrayRecurrence(lmax);
    9494         }
     
    110110         r_8 lam_1=1. /bignorm2 ;
    111111         //      r_8 a_rec = LWK->a_recurr(m,m);
    112          r_8 a_rec = (*a_recurrence_)(m,m);
     112         r_8 a_rec = a_recurrence_(m,m);
    113113         r_8 b_rec = 0.;
    114114         for (int l=m+1; l<=lmax_; l++)
     
    118118           b_rec=1./a_rec;
    119119           //      a_rec= LWK->a_recurr(l,m);
    120            a_rec= (*a_recurrence_)(l,m);
     120           a_rec= a_recurrence_(l,m);
    121121           lam_0 = lam_1;
    122122           lam_1 = lam_2;
     
    135135void  LambdaLMBuilder::updateArrayRecurrence(int_4 lmax)
    136136   {
    137      (*a_recurrence_).ReSizeRow(lmax+1);
     137     a_recurrence_.ReSizeRow(lmax+1);
    138138     for (int m=0; m<=lmax;m++)
    139139     {
    140        (*a_recurrence_)(m,m) = sqrt( 2.*m +3.);
     140       a_recurrence_(m,m) = sqrt( 2.*m +3.);
    141141       for (int l=m+1; l<=lmax; l++)
    142142         {
    143143           r_8 fl2 = (l+1.)*(l+1.);
    144            (*a_recurrence_)(l,m)=sqrt( (4.*fl2-1.)/(fl2-m*m) );
     144           a_recurrence_(l,m)=sqrt( (4.*fl2-1.)/(fl2-m*m) );
    145145         }
    146146     }
     
    153153void  LambdaLMBuilder::updateArrayLamNorm()
    154154     {
    155        (*lam_fact_).ReSizeRow(lmax_+1);
     155       lam_fact_.ReSizeRow(lmax_+1);
    156156       for(int m = 0;m<= lmax_; m++)
    157157         {
    158158           for (int l=m; l<=lmax_; l++)
    159159             {
    160                (*lam_fact_)(l,m) =2.*(r_8)sqrt( (2.*l+1)*(l+m)*(l-m)/(2.*l-1)  );
     160               lam_fact_(l,m) =2.*(r_8)sqrt( (2.*l+1)*(l+m)*(l-m)/(2.*l-1)  );
    161161             }
    162162         }
     
    214214void LambdaWXBuilder::array_init()
    215215   {
    216      if (lam_fact_ == NULL || normal_l_ == NULL)
    217        {
    218          lam_fact_ = new  TriangularMatrix<r_8>;
     216     if (lam_fact_.Size() < 1 || normal_l_ == NULL)
     217       {
     218         //      lam_fact_ = new  TriangularMatrix<r_8>;
    219219         normal_l_ = new TVector<r_8>;
    220220         updateArrayLamNorm();
    221221       }
    222222     else
    223        if ( lmax_ > (*lam_fact_).rowNumber()-1  || lmax_ >  (*normal_l_).NElts()-1 )
     223       if ( lmax_ > lam_fact_.rowNumber()-1  || lmax_ >  (*normal_l_).NElts()-1 )
    224224         {
    225225           updateArrayLamNorm();
     
    247247          r_8 lam_lm1m = LambdaLMBuilder::lamlm(l-1,m);
    248248          r_8 lam_lm = LambdaLMBuilder::lamlm(l,m);
    249           r_8 lam_fact_l_m = (*lam_fact_)(l,m);
     249          r_8 lam_fact_l_m = lam_fact_(l,m);
    250250          r_8  a_w =  2. * (l - m*m) * one_on_s2 + l*(l-1.);
    251251          r_8  b_w =  c_on_s2 * lam_fact_l_m;
     
    284284void LambdaPMBuilder::array_init()
    285285   {
    286      if (lam_fact_ == NULL || normal_l_ == NULL)
    287        {
    288          lam_fact_ = new  TriangularMatrix<r_8>;
     286     if (lam_fact_.Size() < 1 || normal_l_ == NULL)
     287       {
     288         //      lam_fact_ = new  TriangularMatrix<r_8>;
    289289         normal_l_ = new TVector<r_8>;
    290290         updateArrayLamNorm();
    291291       }
    292292     else
    293        if ( lmax_ > (*lam_fact_).rowNumber()-1  || lmax_ >  (*normal_l_).NElts()-1 )
     293       if ( lmax_ > lam_fact_.rowNumber()-1  || lmax_ >  (*normal_l_).NElts()-1 )
    294294         {
    295295           updateArrayLamNorm();
     
    318318             r_8 lam_lm1m = LambdaLMBuilder::lamlm(l-1,m);
    319319             r_8 lam_lm = LambdaLMBuilder::lamlm(l,m);
    320              r_8 lam_fact_l_m = (*lam_fact_)(l,m);
     320             r_8 lam_fact_l_m = lam_fact_(l,m);
    321321             r_8  a_w =  2. * (l - m*m) * one_on_s2 + l*(l-1.);
    322322             r_8 f_w =  lam_fact_l_m/(sth_*sth_);
Note: See TracChangeset for help on using the changeset viewer.