Changeset 1756 in Sophya for trunk/SophyaLib/Samba/lambdaBuilder.cc
- Timestamp:
- Nov 13, 2001, 4:29:59 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/Samba/lambdaBuilder.cc
r1683 r1756 40 40 } 41 41 42 TriangularMatrix<r_8> * LambdaLMBuilder::a_recurrence_ = NULL;43 TriangularMatrix<r_8> * LambdaLMBuilder::lam_fact_ = NULL;42 TriangularMatrix<r_8> LambdaLMBuilder::a_recurrence_ = TriangularMatrix<r_8>(); 43 TriangularMatrix<r_8> LambdaLMBuilder::lam_fact_ = TriangularMatrix<r_8>(); 44 44 TVector<r_8>* LambdaLMBuilder::normal_l_ = NULL; 45 45 … … 81 81 void LambdaLMBuilder::array_init(int lmax, int mmax) 82 82 { 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>; 86 86 updateArrayRecurrence(lmax); 87 87 } 88 88 else 89 if ( lmax > ( *a_recurrence_).rowNumber()-1 )89 if ( lmax > (a_recurrence_).rowNumber()-1 ) 90 90 { 91 91 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; 93 93 updateArrayRecurrence(lmax); 94 94 } … … 110 110 r_8 lam_1=1. /bignorm2 ; 111 111 // 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); 113 113 r_8 b_rec = 0.; 114 114 for (int l=m+1; l<=lmax_; l++) … … 118 118 b_rec=1./a_rec; 119 119 // a_rec= LWK->a_recurr(l,m); 120 a_rec= (*a_recurrence_)(l,m);120 a_rec= a_recurrence_(l,m); 121 121 lam_0 = lam_1; 122 122 lam_1 = lam_2; … … 135 135 void LambdaLMBuilder::updateArrayRecurrence(int_4 lmax) 136 136 { 137 (*a_recurrence_).ReSizeRow(lmax+1);137 a_recurrence_.ReSizeRow(lmax+1); 138 138 for (int m=0; m<=lmax;m++) 139 139 { 140 (*a_recurrence_)(m,m) = sqrt( 2.*m +3.);140 a_recurrence_(m,m) = sqrt( 2.*m +3.); 141 141 for (int l=m+1; l<=lmax; l++) 142 142 { 143 143 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) ); 145 145 } 146 146 } … … 153 153 void LambdaLMBuilder::updateArrayLamNorm() 154 154 { 155 (*lam_fact_).ReSizeRow(lmax_+1);155 lam_fact_.ReSizeRow(lmax_+1); 156 156 for(int m = 0;m<= lmax_; m++) 157 157 { 158 158 for (int l=m; l<=lmax_; l++) 159 159 { 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) ); 161 161 } 162 162 } … … 214 214 void LambdaWXBuilder::array_init() 215 215 { 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>; 219 219 normal_l_ = new TVector<r_8>; 220 220 updateArrayLamNorm(); 221 221 } 222 222 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 ) 224 224 { 225 225 updateArrayLamNorm(); … … 247 247 r_8 lam_lm1m = LambdaLMBuilder::lamlm(l-1,m); 248 248 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); 250 250 r_8 a_w = 2. * (l - m*m) * one_on_s2 + l*(l-1.); 251 251 r_8 b_w = c_on_s2 * lam_fact_l_m; … … 284 284 void LambdaPMBuilder::array_init() 285 285 { 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>; 289 289 normal_l_ = new TVector<r_8>; 290 290 updateArrayLamNorm(); 291 291 } 292 292 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 ) 294 294 { 295 295 updateArrayLamNorm(); … … 318 318 r_8 lam_lm1m = LambdaLMBuilder::lamlm(l-1,m); 319 319 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); 321 321 r_8 a_w = 2. * (l - m*m) * one_on_s2 + l*(l-1.); 322 322 r_8 f_w = lam_fact_l_m/(sth_*sth_);
Note:
See TracChangeset
for help on using the changeset viewer.