Data::Data() { namChart = new QNetworkAccessManager(this); QObject::connect(namChart, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlotChart(QNetworkReply*))); QFile filer("goldapp.txt"); filer.deleteLater(); filer.open(QIODevice::ReadOnly | QIODevice::Text); QTextStream stream(&filer); QString line = stream.readLine(); filer.close(); // optional, as QFile destructor will already do it if(!line.trimmed().isEmpty()) { QStringListIterator inputIterator(line.split("/")); cstyle = Constants::getStyleIndexByKey(inputIterator.next()); cmetal = Constants::getMetalIndexByKey(inputIterator.next()); ccurrency = Constants::getCurrencyIndexByKey(inputIterator.next()); cdateRange = Constants::getDateRangeIndexByKey(inputIterator.next()); urlChart->setUrl("http://www.galmarley.com/prices/"+line); } else { urlChart->setUrl("http://www.galmarley.com/prices/CHART_BAR_HLC/AUX/USD/172800/Full"); } }
virtual Value* eval(Environment& env) { FileInterpreter filer(file->data() + ".scheme"); filer.interpret(cout, env); return NULL; }
// #include"reaction.h" int main() { ////////Input Parameters of the potential (fit parameters) ///// std::string parameters_filename="Input.inp"; NuclearParameters Nu = read_nucleus_parameters( "Input/pca40.inp" ); double Ef=Nu.Ef; int lmax=5; double z0=20.0; double zp0; double A0=40.0; double tz=0.5; int type=1; int mvolume = 4; int AsyVolume = 1; double A = 40.0; if (tz>0) { zp0=1;} else {zp0=0;} double ph_gap = Nu.ph_gap; double rStart = .05; double rmax = 12.; double ham_pts = 180; double rdelt = rmax / ham_pts; // Construct Parameters Object Parameters p = get_parameters( parameters_filename, Nu.A, Nu.Z, zp0 ); // Construct Potential Object pot pottt = get_bobs_pot2( type, mvolume, AsyVolume, tz, Nu, p ); pot * pott = &pottt; // store coulomb potential in order to compare with boundRspace initiate(rmax , ham_pts , Ef, ph_gap , lmax , Nu.Z , zp0 , Nu.A , pott); double Elower = -11.61818; double Eupper = -9.4; double jj = .5; int ll = 0; int Ifine = 1; initiate.searchNonLoc( Elower, Eupper, jj, ll, Ifine); initiate.exteriorWaveFunct(ll); initiate.normalizeWF(); double tol=.01; double estart=Ef; ///// Making rmesh/// // std::vector<double> rmesh_p= initiate.make_rmesh_point(); std::vector<double> rmesh_p= initiate.make_rmesh_point(); std::vector<double> rmesh= initiate.make_rmesh(); //////////////////////////// //// s and d wave functions//// /////////////////////////// int N = 0; int L = 1; double J = 0.5; double Emax=2*-4.7; double Emin=-200.0 + Emax; eigen_t waves0=initiate.find_boundstate(rmesh_p, estart,0,L,J,tol); eigen_t waves1=initiate.find_boundstate(rmesh_p, estart,1,L,J,tol); eigen_t waves2=initiate.find_boundstate(rmesh_p, estart,2,L,J,tol); eigen_t waves3=initiate.find_boundstate(rmesh_p, estart,3,L,J,tol); eigen_t waves4=initiate.find_boundstate(rmesh_p, estart,4,L,J,tol); eigen_t waves5=initiate.find_boundstate(rmesh_p, estart,5,L,J,tol); eigen_t waves6=initiate.find_boundstate(rmesh_p, estart,6,0,0.5,tol); std::ofstream filee("waves/wave.out"); std::cout<<Elower<<std::endl; ////////// //////////// // Plottinge Pot and wavefuntionsa and their log// // and also the derivitaves ////////////////////// double norm0=0,norm1=0,norm2=0,norm3=0,norm4=0,norm5=0,norm6=0; double normAsymp_s = 0.; double normAsymp_d = 0.; double Mproton = 931.5;// 937.27; double normbob= 0.; //double Ed = -waves_d.first; //double Es = -waves_s.first; //double bbetta_d = std::sqrt(2. * Mproton * (40./41.) * Ed /(197. * 197.)); //double bbetta_s = std::sqrt(2. * Mproton * (40./41.) * Es /(197. * 197.)); //double llambbda = 2.0 * Mproton * (40./41.) * 1.44 * 19. /(197. * 197.); for(int ii=0;ii<rmesh_p.size();++ii){ norm0 += rdelt * std::pow(rmesh_p[ii] * waves0.second[ii],2) ; norm1 += rdelt * std::pow(rmesh_p[ii] * waves1.second[ii],2) ; norm2 += rdelt * std::pow(rmesh_p[ii] * waves2.second[ii],2) ; norm3 += rdelt * std::pow(rmesh_p[ii] * waves3.second[ii],2) ; norm4 += rdelt * std::pow(rmesh_p[ii] * waves4.second[ii],2) ; norm5 += rdelt * std::pow(rmesh_p[ii] * waves5.second[ii],2) ; norm6 += rdelt * std::pow(rmesh_p[ii] * waves6.second[ii],2) ; //normAsymp_s += rdelt * std::pow((exp(-bbetta_s * rmesh_p[ii]) * std::pow(rmesh_p[ii], -llambbda /( 2.0 * bbetta_s))) ,2); //normAsymp_d += rdelt * std::pow((exp(-bbetta_d * rmesh_p[ii]) * std::pow(rmesh_p[ii], -llambbda /( 2.0 * bbetta_d))) ,2); //normbob += rdelt * std::pow(rmesh_p[ii] * initiate.WaveArray[ii],2); } /////////////////////// ADDING CODE FOR SPECTRAL FUNCTION FOLDING WITH SKYRME //////////////////////// int index=initiate.index_from_LJ(L,J); std::vector< lj_eigen_t > bound_levels = initiate.get_bound_levels( rmesh, tol ); std::vector< mesh_t > emesh_vec = initiate.get_emeshes( rmesh, Emin, Emax, bound_levels ); cout<<"emesh_vec = "<<emesh_vec.size()<<endl; std::vector< prop_t > prop_vec = initiate.get_propagators( rmesh, emesh_vec ); const prop_t &propE = prop_vec.at(index); const mesh_t &emesh = emesh_vec.at(index); std::vector< double > bspec = initiate.spectral_strength( L, J, rmesh, emesh_vec, prop_vec ); mesh_t energym = initiate.get_lj_emesh(L,J,emesh_vec ); eigen_t bound_info = initiate.find_boundstate( rmesh, estart, N, L, J, tol ); std::vector< double > &QPF = bound_info.second; double QPE = bound_info.first; double S = initiate.sfactor( rmesh, QPE, L, J, QPF ); std::vector< double > chd = initiate.charge_density(rmesh, Emax, emesh_vec, prop_vec, bound_levels); vector <double> pdist = initiate.point_distribution(rmesh_p,Emax,emesh_vec,prop_vec,bound_levels); matrix_t d_mtx( rmesh.size(), rmesh.size() ); // density matrix d_mtx.clear(); //making it so that wavefunction takes skyrme wavefunction as the input and finds the skyrme spectral function std::ifstream filein("waves/upp12.txt"); double skyrme[rmesh.size()]; std::string line; double part=0; double part2=0; for(int i=0;i<rmesh.size();i++){ part += chd[i] * rdelt * pow(rmesh[i],2) * 4 * M_PI; part2 += pdist[i] * rdelt * pow(rmesh[i],2) * 4 * M_PI; } cout<<"Particle Number = "<<part<<endl; cout<<"Particle Number2 = "<<part2<<endl; int iii; iii=0; while(getline(filein,line)){ skyrme[iii]=atof(line.c_str()); iii++; } filein.close(); int esize; esize=emesh.size(); std::vector<double> spec; std::vector<double> spec2; std::vector <double> dom0,dom1,dom2,dom3,dom4,dom5,dom6; double dwave0,dwave1,dwave2,dwave3,dwave4,dwave5,dwave6; for(int i=0;i<rmesh.size();i++){ dwave0=rmesh[i]*waves0.second[i]/norm0; dom0.push_back(dwave0); dwave1=rmesh[i]*waves1.second[i]/norm1; dom1.push_back(dwave1); dwave2=rmesh[i]*waves2.second[i]/norm2; dom2.push_back(dwave2); dwave3=rmesh[i]*waves3.second[i]/norm3; dom3.push_back(dwave3); dwave4=rmesh[i]*waves4.second[i]/norm4; dom4.push_back(dwave4); dwave5=rmesh[i]*waves5.second[i]/norm5; dom5.push_back(dwave5); dwave6=rmesh[i]*waves6.second[i]/norm6; dom6.push_back(dwave6); } //Remember that propE is actually G*r*r'*rdelt for(unsigned int n=0;n<emesh.size();++n){ double spf=0.0; double spf2=0.0; double Edelt=emesh[n].second; for( unsigned int i = 0; i < rmesh.size(); ++i ) { for( unsigned int j = 0; j < rmesh.size(); ++j ) { //d_mtx(i,j) += Edelt * imag(propE[n](i,j)) / (M_PI * rmesh[i] * rmesh[j] * rdelt); d_mtx(i,j) += Edelt * imag(propE[n](i,j)) / M_PI; spf -= rdelt * skyrme[i] * skyrme[j] *imag( propE[n]( i, j ) ) / M_PI; spf2 -= rdelt * dom0[i]*dom0[j] *imag( propE[n]( i, j ) ) / M_PI; //spf -= rmesh[i] * rmesh[j] * rdelt / M_PI // * QPF[i] * QPF[j] * imag( propE[n]( i, j ) ); } } spec.push_back(spf); spec2.push_back(spf2); } std::ofstream fmtx("waves/dmtx.txt"); for(int i=0;i<rmesh.size();i++){ for(int j=0;j<rmesh.size();j++){ fmtx<<d_mtx(i,j)<<" "; } fmtx<<endl; } fmtx.close(); std::vector <eigen_t> eig = initiate.real_eigvecs(d_mtx); double norme=0.0; double norm=0.0; double eigsum=0.0; double maxeig=0.0; norm0=0,norm1=0,norm2=0,norm3=0,norm4=0,norm5=0,norm6=0; for(int i=0;i<rmesh.size();++i){ norm0 += rdelt * pow( eig[0].second[i],2); norm1 += rdelt * pow( eig[1].second[i],2); norm2 += rdelt * pow( eig[2].second[i],2); norm3 += rdelt * pow( eig[3].second[i],2); norm4 += rdelt * pow( eig[4].second[i],2); } double occ=0.0; for (int i=0;i<rmesh.size();++i){ for (int j=0;j<rmesh.size();++j){ occ += rdelt*rdelt * d_mtx(i,j) * eig[N].second[i]/std::sqrt(norm) * eig[N].second[j]/std::sqrt(norm) * pow(rmesh[i],2) * pow(rmesh[j],2); } } //cout<<"QP OCCUPATION NUMBER = "<<initiate.occupation(rmesh,d_mtx,QPF)<<endl; //cout<<"occupation number = "<<occ<<endl; ofstream fval("waves/i13 2.txt"); fval<<eig[0].first*-1<<std::endl; fval<<eig[1].first*-1<<std::endl; fval<<eig[2].first*-1<<endl; fval<<eig[3].first*-1<<endl; fval<<eig[4].first*-1<<endl; std::ofstream feig("waves/eig.out"); //std::cout<<"Here is an eigenvector"<<std::endl; double esum=0.0; for(int i=0;i<rmesh.size();++i){ //want to give R(r), so print out u(r)/r feig<<rmesh[i]<<" "<<eig[0].second[i]/sqrt(norm0)/rmesh[i]; feig<<" "<<eig[1].second[i]/sqrt(norm1)/rmesh[i]; feig<<" "<<eig[2].second[i]/sqrt(norm2)/rmesh[i]; feig<<" "<<eig[3].second[i]/sqrt(norm3)/rmesh[i]; feig<<" "<<eig[4].second[i]/sqrt(norm4)/rmesh[i]<<endl;; // esum += rdelt*pow(rmesh[i]*eig[N].second[i]/sqrt(norme),2); } //std::cout<<"esum = "<<esum<<std::endl; //This is where I will find rhobar, ask houssein how to put in clebsch gordon and spherical harmonics double dens=0.0; int nt=50; int np=25; double dt=2*M_PI/nt; double dp=M_PI/np; for(int i=0;i<rmesh.size();i++){ for(int j=0;j<nt;j++){ for(int k=0;k<np;k++){ dens+= rdelt*rdelt * skyrme[i]*skyrme[i] * chd[i]; //* spherical harmonics and clebsch gordon * sin(theta) } } } std::vector< double > s_of_Eqh = initiate.spectral_strength_QH( L, J, rmesh, emesh_vec, prop_vec, QPF); std::ofstream fden("waves/chd.out"); ofstream fpoint("waves/p.out"); std::ofstream fileout("waves/spec.out"); std::ofstream files("waves/skyrme.out"); std::ofstream fileq("waves/quasi.out"); std::ofstream filef("waves/fold.out"); std::ofstream filed("waves/dom.out"); std::ofstream filer("waves/r.out"); //std::ofstream filep("waves/prop.out"); for(int i=0;i<rmesh.size();i++){ files<<skyrme[i]<<endl; fileq<<QPF[i]<<endl; filer<<rmesh[i]<<" "<<rmesh_p[i]<<endl; fden<<rmesh[i]<<" "<<chd[i]<<endl; fpoint<<rmesh[i]<<" "<<pdist[i]<<endl; } for(int i=0;i<bspec.size();i++){ fileout<<energym[i].first<<" "<<energym[i].second<<" "<<spec[i]<<endl; filed<<energym[i].first<<" "<<energym[i].second<<" "<<spec2[i]<<endl; filef<<energym[i].first<<" "<<energym[i].second<<" "<<s_of_Eqh[i]<<endl; } filed.close(); filer.close(); filef.close(); fileq.close(); files.close(); fileout.close(); /////////// END OF ADDED CODE /////////////////////////////////////// //////// //normalizing wavefunctions at 4.008 to s wave to compare the asymptotic behaviour and energy //the value of s at 4.008 is .023309//d is .132997 , s_asymp is .000271922 , d_asymp i s .000336918 ///////// for(int ii=0;ii<rmesh.size();++ii){ filee<<dom0[ii]/rmesh[ii]<<" "<<dom1[ii]<<" "<<dom2[ii]<<" "<<dom3[ii]<<" "<<dom4[ii]<<" "<<dom5[ii]<<std::endl; } //std::cout <<"Es =" << waves_s.first << " " << "Ed= " << waves_d.first <<std::endl; //std::cout << zp0 << " " << tz<<" "<<norm_s<<" "<< norm_d<<" "<< normAsymp_s<<" norm bob=" << normbob<< std::endl; //std::cout <<"Elower = "<< Elower <<" " << "Eupper = " << Eupper<<std::endl; filee.close(); std::cout<<"Spectral Factor = "<<S<<endl; std::cout<<"Quasi-hole Energy = "<<QPE<<endl; return 0; }