Changeset 7d8854
- Timestamp:
- Mar 11, 2013, 11:33:01 PM (13 years ago)
- Children:
- e00146
- Parents:
- 8b3553
- git-author:
- Frederik Heber <heber@…> (03/06/13 13:03:26)
- git-committer:
- Frederik Heber <heber@…> (03/11/13 23:33:01)
- File:
-
- 1 edited
-
src/bin/mpqc/mpqc.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/bin/mpqc/mpqc.cc
r8b3553 r7d8854 1699 1699 << " and ends at " << max 1700 1700 << " with a delta of " << delta 1701 << " to get " << samplepoints[0] << "," << samplepoints[1] << "," << samplepoints[2] << "," << " samplepoints." 1701 << " to get " 1702 << samplepoints[0] << "," 1703 << samplepoints[1] << "," 1704 << samplepoints[2] << " samplepoints." 1702 1705 << std::endl; 1703 1706 assert( data.sampled_grid.sampled_grid.size() == samplepoints[0]*samplepoints[1]*samplepoints[2]); … … 1707 1710 1./AtomicLengthToAngstroem/AtomicLengthToAngstroem/AtomicLengthToAngstroem; 1708 1711 SCVector3 r = min; 1712 1713 // taken from scf::density() 1714 RefSCMatrix nos 1715 = scf->integral()->petite_list()->evecs_to_AO_basis(scf->natural_orbitals()); 1716 RefDiagSCMatrix nd = scf->natural_density(); 1717 GaussianBasisSet::ValueData *valdat 1718 = new GaussianBasisSet::ValueData(scf->basis(), scf->integral()); 1709 1719 std::vector<double>::iterator griditer = data.sampled_grid.sampled_grid.begin(); 1720 const int nbasis = scf->basis()->nbasis(); 1721 double *bs_values = new double[nbasis]; 1722 1710 1723 for (size_t x = 0; x < samplepoints[0]; ++x, r.x() += delta(0)) { 1711 1724 std::cout << "Sampling now for x=" << r.x() << std::endl; 1712 1725 for (size_t y = 0; y < samplepoints[1]; ++y, r.y() += delta(1)) { 1713 1726 for (size_t z = 0; z < samplepoints[2]; ++z, r.z() += delta(2)) { 1714 const double dens_at_r = scf->density(r) * element_volume_conversion; 1727 scf->basis()->values(r,valdat,bs_values); 1728 1729 // loop over natural orbitals adding contributions to elec_density 1730 double elec_density=0.0; 1731 for (int i=0; i<nbasis; ++i) { 1732 double tmp = 0.0; 1733 for (int j=0; j<nbasis; ++j) { 1734 tmp += nos.get_element(j,i)*bs_values[j]; 1735 } 1736 elec_density += nd.get_element(i)*tmp*tmp; 1737 } 1738 const double dens_at_r = elec_density * element_volume_conversion; 1739 // const double dens_at_r = scf->density(r) * element_volume_conversion; 1740 1715 1741 // if (fabs(dens_at_r) > 1e-4) 1716 1742 // std::cout << "Electron density at " << r << " is " << dens_at_r << std::endl; … … 1724 1750 r.y() = min.y(); 1725 1751 } 1752 delete[] bs_values; 1753 delete valdat; 1726 1754 assert( griditer == data.sampled_grid.sampled_grid.end()); 1727 1755 // normalization of electron charge to equal electron number … … 1856 1884 do { 1857 1885 char filename_template[] = "mpqc_temp_XXXXXX"; 1858 char filename_suffix[] = ".in \0";1886 char filename_suffix[] = ".in"; 1859 1887 char *tempfilename = (char *) malloc ( (strlen(filename_template)+strlen(filename_suffix))*(sizeof(char))); 1860 1888 strncpy(tempfilename, mktemp(filename_template), strlen(filename_template)); 1861 tempfilename[strlen(filename_template)] = '\0';1862 1889 strncat(tempfilename, filename_suffix, strlen(filename_suffix)); 1863 1890 output = tempfilename;
Note:
See TracChangeset
for help on using the changeset viewer.
