int main(int argc, char *argv[]) { Coefficient c1=Coefficient(4); Coefficient c2=Coefficient(5); Coefficient c3=Coefficient(6); Coefficient d=c1+c2+c3; std::cout<<c1<<std::endl; std::cout<<c2<<std::endl; std::cout<<c3<<std::endl; std::cout<<d<<std::endl; }
double ZernikeMom::R(int n,int m,double roo){ int l=(n-m)/2; double ret=0; for(int s=0;s<=l;s++) ret += Coefficient(s,m,n)*pow(roo,n-2*s); return ret; }
virtual void UpdatePotentialData(typename blitz::Array<cplx,Rank> data, typename Wavefunction<Rank>::Ptr psi, cplx timeStep, double curTime) { typedef CombinedRepresentation<Rank> CmbRepr; typedef SphericalHarmonicBasisRepresentation SphHarmRepr; typename CmbRepr::Ptr repr = boost::static_pointer_cast< CmbRepr > (psi->GetRepresentation()); SphHarmRepr::Ptr angRepr = boost::static_pointer_cast< SphHarmRepr > (repr->GetRepresentation(this->AngularRank)); int rCount = data.extent(this->RadialRank); int angCount= data.extent(this->AngularRank); blitz::Array<double, 1> localr = psi->GetRepresentation()-> GetLocalGrid(this->RadialRank); ClebschGordan cg; BasisPairList angBasisPairs = GetBasisPairList (this->AngularRank); if(data.extent(this->RadialRank) != rCount) throw std::runtime_error("Invalid r size"); if(data.extent(this->AngularRank) != angBasisPairs.extent(0)) throw std::runtime_error("Invalid ang size"); blitz::TinyVector<int, Rank> index; data = 0; double R_half = R/2.0; //Looping over angular indices for(int angIndex = 0; angIndex < angCount; angIndex++) { index(this->AngularRank) = angIndex; int leftIndex = angBasisPairs(angIndex, 0); int rightIndex= angBasisPairs(angIndex, 1); LmIndex left = angRepr->Range.GetLmIndex (leftIndex); LmIndex right =angRepr->Range.GetLmIndex (rightIndex); double cosTheta = std::cos(ThetaR); //"Left" quantum numbers int mp = left.m; int lp = left.l; //"Right" quantum numbers int m = right.m; int l = right.l; int minL3 = std::abs(l - lp); int maxL3 = l + lp; for(int l3 = minL3; l3<=maxL3; l3++) { //Selection rules if(l3 % 2 == 1) continue; double l3Coeff = 1.0; l3Coeff *= Coefficient(l,lp); l3Coeff *= cg(l, l3, 0, 0, lp, 0); double l3Sum = 0; for(int m3 = -l3; m3 <= l3; m3++) { //Angular matrix element double cur = 1; cur *= gsl_sf_legendre_sphPlm(l3,std::abs(m3),cosTheta); cur *= 2.0; cur *= CondonShortleyPhase(-m3); cur *= MultipoleCoeff(l3); cur *= cg(l,l3,m,m3,lp,mp); l3Sum += cur; } l3Sum *= l3Coeff; //Radial matrix elements double r, rmin, rmax, rfrac; for(int ri=0; ri < rCount; ri++) { r = localr(ri); index(this->RadialRank) = ri; rmin=std::min(r,R_half); rmax=std::max(r,R_half); rfrac = rmin / rmax; data(index) += -1. * l3Sum * std::pow(rfrac, l3) / rmax; } }//End l3 loop }//End angular index loop }//End UpdatePotentialData
SoS_primitive_result* sos_lambda5 (int i, int j, int k, int l, int m) /* Returns significant term of Lambda5 epsilon-determinant. Assumes indices in proper range, pairwise different, and sorted. */ { #ifdef __DEBUG__ if (sos_proto_e_flag) { lia_clear (); print ("sos_lambda5 (%d,%d,%d,%d,%d)", i, j, k, l, m); print (" ("); print ("%s,%s,%s,%s,1;", Pi(i,1), Pi(i,2), Pi(i,3), Pi(i,4)); print ("%s,%s,%s,%s,1;", Pi(j,1), Pi(j,2), Pi(j,3), Pi(j,4)); print ("%s,%s,%s,%s,1;", Pi(k,1), Pi(k,2), Pi(k,3), Pi(k,4)); print ("%s,%s,%s,%s,1;", Pi(l,1), Pi(l,2), Pi(l,3), Pi(l,4)); print ("%s,%s,%s,%s,1;", Pi(m,1), Pi(m,2), Pi(m,3), Pi(m,4)); print (")\n"); } #endif /* C code generated by 'ccode' from 'gee' file "Lambda5.out" */ Initialize (); Epsilon_Term (0); Positive_Coefficient (Minor5 (i, j, k, l, m, 1, 2, 3, 4, 0)); Epsilon_Term (1); Epsilon (i,4); Negative_Coefficient (Minor4 (j, k, l, m, 1, 2, 3, 0)); Epsilon_Term (2); Epsilon (i,3); Positive_Coefficient (Minor4 (j, k, l, m, 1, 2, 4, 0)); Epsilon_Term (3); Epsilon (i,2); Negative_Coefficient (Minor4 (j, k, l, m, 1, 3, 4, 0)); Epsilon_Term (4); Epsilon (i,1); Positive_Coefficient (Minor4 (j, k, l, m, 2, 3, 4, 0)); Epsilon_Term (5); Epsilon (j,4); Positive_Coefficient (Minor4 (i, k, l, m, 1, 2, 3, 0)); Epsilon_Term (6); Epsilon (j,4); Epsilon (i,3); Positive_Coefficient (Minor3 (k, l, m, 1, 2, 0)); Epsilon_Term (7); Epsilon (j,4); Epsilon (i,2); Negative_Coefficient (Minor3 (k, l, m, 1, 3, 0)); Epsilon_Term (8); Epsilon (j,4); Epsilon (i,1); Positive_Coefficient (Minor3 (k, l, m, 2, 3, 0)); Epsilon_Term (9); Epsilon (j,3); Negative_Coefficient (Minor4 (i, k, l, m, 1, 2, 4, 0)); Epsilon_Term (10); Epsilon (j,3); Epsilon (i,2); Positive_Coefficient (Minor3 (k, l, m, 1, 4, 0)); Epsilon_Term (11); Epsilon (j,3); Epsilon (i,1); Negative_Coefficient (Minor3 (k, l, m, 2, 4, 0)); Epsilon_Term (12); Epsilon (j,2); Positive_Coefficient (Minor4 (i, k, l, m, 1, 3, 4, 0)); Epsilon_Term (13); Epsilon (j,2); Epsilon (i,1); Positive_Coefficient (Minor3 (k, l, m, 3, 4, 0)); Epsilon_Term (14); Epsilon (j,1); Negative_Coefficient (Minor4 (i, k, l, m, 2, 3, 4, 0)); Epsilon_Term (15); Epsilon (k,4); Negative_Coefficient (Minor4 (i, j, l, m, 1, 2, 3, 0)); Epsilon_Term (16); Epsilon (k,4); Epsilon (i,3); Negative_Coefficient (Minor3 (j, l, m, 1, 2, 0)); Epsilon_Term (17); Epsilon (k,4); Epsilon (i,2); Positive_Coefficient (Minor3 (j, l, m, 1, 3, 0)); Epsilon_Term (18); Epsilon (k,4); Epsilon (i,1); Negative_Coefficient (Minor3 (j, l, m, 2, 3, 0)); Epsilon_Term (19); Epsilon (k,4); Epsilon (j,3); Positive_Coefficient (Minor3 (i, l, m, 1, 2, 0)); Epsilon_Term (20); Epsilon (k,4); Epsilon (j,3); Epsilon (i,2); Negative_Coefficient (Minor2 (l, m, 1, 0)); Epsilon_Term (21); Epsilon (k,4); Epsilon (j,3); Epsilon (i,1); Positive_Coefficient (Minor2 (l, m, 2, 0)); Epsilon_Term (22); Epsilon (k,4); Epsilon (j,2); Negative_Coefficient (Minor3 (i, l, m, 1, 3, 0)); Epsilon_Term (23); Epsilon (k,4); Epsilon (j,2); Epsilon (i,1); Negative_Coefficient (Minor2 (l, m, 3, 0)); Epsilon_Term (24); Epsilon (k,4); Epsilon (j,1); Positive_Coefficient (Minor3 (i, l, m, 2, 3, 0)); Epsilon_Term (25); Epsilon (k,3); Positive_Coefficient (Minor4 (i, j, l, m, 1, 2, 4, 0)); Epsilon_Term (26); Epsilon (k,3); Epsilon (i,2); Negative_Coefficient (Minor3 (j, l, m, 1, 4, 0)); Epsilon_Term (27); Epsilon (k,3); Epsilon (i,1); Positive_Coefficient (Minor3 (j, l, m, 2, 4, 0)); Epsilon_Term (28); Epsilon (k,3); Epsilon (j,2); Positive_Coefficient (Minor3 (i, l, m, 1, 4, 0)); Epsilon_Term (29); Epsilon (k,3); Epsilon (j,2); Epsilon (i,1); Positive_Coefficient (Minor2 (l, m, 4, 0)); Epsilon_Term (30); Epsilon (k,3); Epsilon (j,1); Negative_Coefficient (Minor3 (i, l, m, 2, 4, 0)); Epsilon_Term (31); Epsilon (k,2); Negative_Coefficient (Minor4 (i, j, l, m, 1, 3, 4, 0)); Epsilon_Term (32); Epsilon (k,2); Epsilon (i,1); Negative_Coefficient (Minor3 (j, l, m, 3, 4, 0)); Epsilon_Term (33); Epsilon (k,2); Epsilon (j,1); Positive_Coefficient (Minor3 (i, l, m, 3, 4, 0)); Epsilon_Term (34); Epsilon (k,1); Positive_Coefficient (Minor4 (i, j, l, m, 2, 3, 4, 0)); Epsilon_Term (35); Epsilon (l,4); Positive_Coefficient (Minor4 (i, j, k, m, 1, 2, 3, 0)); Epsilon_Term (36); Epsilon (l,4); Epsilon (i,3); Positive_Coefficient (Minor3 (j, k, m, 1, 2, 0)); Epsilon_Term (37); Epsilon (l,4); Epsilon (i,2); Negative_Coefficient (Minor3 (j, k, m, 1, 3, 0)); Epsilon_Term (38); Epsilon (l,4); Epsilon (i,1); Positive_Coefficient (Minor3 (j, k, m, 2, 3, 0)); Epsilon_Term (39); Epsilon (l,4); Epsilon (j,3); Negative_Coefficient (Minor3 (i, k, m, 1, 2, 0)); Epsilon_Term (40); Epsilon (l,4); Epsilon (j,3); Epsilon (i,2); Positive_Coefficient (Minor2 (k, m, 1, 0)); Epsilon_Term (41); Epsilon (l,4); Epsilon (j,3); Epsilon (i,1); Negative_Coefficient (Minor2 (k, m, 2, 0)); Epsilon_Term (42); Epsilon (l,4); Epsilon (j,2); Positive_Coefficient (Minor3 (i, k, m, 1, 3, 0)); Epsilon_Term (43); Epsilon (l,4); Epsilon (j,2); Epsilon (i,1); Positive_Coefficient (Minor2 (k, m, 3, 0)); Epsilon_Term (44); Epsilon (l,4); Epsilon (j,1); Negative_Coefficient (Minor3 (i, k, m, 2, 3, 0)); Epsilon_Term (45); Epsilon (l,4); Epsilon (k,3); Positive_Coefficient (Minor3 (i, j, m, 1, 2, 0)); Epsilon_Term (46); Epsilon (l,4); Epsilon (k,3); Epsilon (i,2); Negative_Coefficient (Minor2 (j, m, 1, 0)); Epsilon_Term (47); Epsilon (l,4); Epsilon (k,3); Epsilon (i,1); Positive_Coefficient (Minor2 (j, m, 2, 0)); Epsilon_Term (48); Epsilon (l,4); Epsilon (k,3); Epsilon (j,2); Positive_Coefficient (Minor2 (i, m, 1, 0)); Epsilon_Term (49); Epsilon (l,4); Epsilon (k,3); Epsilon (j,2); Epsilon (i,1); Coefficient (Integer (1)); Finish (); }