Example #1
0
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;   
}
Example #2
0
  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
Example #4
0
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 ();
}