Changes in src/config.cpp [42af9e:112b09]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/config.cpp
r42af9e r112b09 4 4 * 5 5 */ 6 7 #include "Helpers/MemDebug.hpp" 6 8 7 9 #include <stdio.h> … … 1548 1550 int AtomNo = -1; 1549 1551 int MolNo = 0; 1550 atom *Walker = NULL;1551 1552 FILE *f = NULL; 1552 1553 … … 1561 1562 fprintf(f, "# Created by MoleCuilder\n"); 1562 1563 1563 for (MoleculeList::const_iterator Runner = MolList->ListOfMolecules.begin(); Runner != MolList->ListOfMolecules.end(); Runner++) { 1564 Walker = (*Runner)->start; 1564 for (MoleculeList::const_iterator MolRunner = MolList->ListOfMolecules.begin(); MolRunner != MolList->ListOfMolecules.end(); MolRunner++) { 1565 1565 int *elementNo = new int[MAX_ELEMENTS]; 1566 1566 for (int i=0;i<MAX_ELEMENTS;i++) 1567 1567 elementNo[i] = 0; 1568 1568 AtomNo = 0; 1569 while (Walker->next != (*Runner)->end) { 1570 Walker = Walker->next; 1571 sprintf(name, "%2s%2d",Walker->type->symbol, elementNo[Walker->type->Z]); 1572 elementNo[Walker->type->Z] = (elementNo[Walker->type->Z]+1) % 100; // confine to two digits 1569 for (molecule::const_iterator iter = (*MolRunner)->begin(); iter != (*MolRunner)->end(); ++iter) { 1570 sprintf(name, "%2s%2d",(*iter)->type->symbol, elementNo[(*iter)->type->Z]); 1571 elementNo[(*iter)->type->Z] = (elementNo[(*iter)->type->Z]+1) % 100; // confine to two digits 1573 1572 fprintf(f, 1574 1573 "ATOM %6u %-4s %4s%c%4u %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%2s\n", 1575 Walker->nr, /* atom serial number */1574 (*iter)->nr, /* atom serial number */ 1576 1575 name, /* atom name */ 1577 (* Runner)->name, /* residue name */1576 (*MolRunner)->name, /* residue name */ 1578 1577 'a'+(unsigned char)(AtomNo % 26), /* letter for chain */ 1579 1578 MolNo, /* residue sequence number */ 1580 Walker->node->at(0), /* position X in Angstroem */1581 Walker->node->at(1), /* position Y in Angstroem */1582 Walker->node->at(2), /* position Z in Angstroem */1583 (double) Walker->type->Valence, /* occupancy */1584 (double) Walker->type->NoValenceOrbitals, /* temperature factor */1579 (*iter)->node->at(0), /* position X in Angstroem */ 1580 (*iter)->node->at(1), /* position Y in Angstroem */ 1581 (*iter)->node->at(2), /* position Z in Angstroem */ 1582 (double)(*iter)->type->Valence, /* occupancy */ 1583 (double)(*iter)->type->NoValenceOrbitals, /* temperature factor */ 1585 1584 "0", /* segment identifier */ 1586 Walker->type->symbol, /* element symbol */1585 (*iter)->type->symbol, /* element symbol */ 1587 1586 "0"); /* charge */ 1588 1587 AtomNo++; … … 1604 1603 { 1605 1604 int AtomNo = -1; 1606 atom *Walker = NULL;1607 1605 FILE *f = NULL; 1608 1606 … … 1621 1619 fprintf(f, "# Created by MoleCuilder\n"); 1622 1620 1623 Walker = mol->start;1624 1621 AtomNo = 0; 1625 while (Walker->next != mol->end) { 1626 Walker = Walker->next; 1627 sprintf(name, "%2s%2d",Walker->type->symbol, elementNo[Walker->type->Z]); 1628 elementNo[Walker->type->Z] = (elementNo[Walker->type->Z]+1) % 100; // confine to two digits 1622 for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) { 1623 sprintf(name, "%2s%2d",(*iter)->type->symbol, elementNo[(*iter)->type->Z]); 1624 elementNo[(*iter)->type->Z] = (elementNo[(*iter)->type->Z]+1) % 100; // confine to two digits 1629 1625 fprintf(f, 1630 1626 "ATOM %6u %-4s %4s%c%4u %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%2s\n", 1631 Walker->nr, /* atom serial number */1627 (*iter)->nr, /* atom serial number */ 1632 1628 name, /* atom name */ 1633 1629 mol->name, /* residue name */ 1634 1630 'a'+(unsigned char)(AtomNo % 26), /* letter for chain */ 1635 1631 0, /* residue sequence number */ 1636 Walker->node->at(0), /* position X in Angstroem */1637 Walker->node->at(1), /* position Y in Angstroem */1638 Walker->node->at(2), /* position Z in Angstroem */1639 (double) Walker->type->Valence, /* occupancy */1640 (double) Walker->type->NoValenceOrbitals, /* temperature factor */1632 (*iter)->node->at(0), /* position X in Angstroem */ 1633 (*iter)->node->at(1), /* position Y in Angstroem */ 1634 (*iter)->node->at(2), /* position Z in Angstroem */ 1635 (double)(*iter)->type->Valence, /* occupancy */ 1636 (double)(*iter)->type->NoValenceOrbitals, /* temperature factor */ 1641 1637 "0", /* segment identifier */ 1642 Walker->type->symbol, /* element symbol */1638 (*iter)->type->symbol, /* element symbol */ 1643 1639 "0"); /* charge */ 1644 1640 AtomNo++; … … 1658 1654 bool config::SaveTREMOLO(const char * const filename, const molecule * const mol) const 1659 1655 { 1660 atom *Walker = NULL;1661 1656 ofstream *output = NULL; 1662 1657 stringstream * const fname = new stringstream; … … 1671 1666 1672 1667 // scan maximum number of neighbours 1673 Walker = mol->start;1674 1668 int MaxNeighbours = 0; 1675 while (Walker->next != mol->end) { 1676 Walker = Walker->next; 1677 const int count = Walker->ListOfBonds.size(); 1669 for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) { 1670 const int count = (*iter)->ListOfBonds.size(); 1678 1671 if (MaxNeighbours < count) 1679 1672 MaxNeighbours = count; 1680 1673 } 1681 *output << "# ATOMDATA Id name resName resSeq x=3 charge type neighbors=" << MaxNeighbours << endl; 1682 1683 Walker = mol->start; 1684 while (Walker->next != mol->end) { 1685 Walker = Walker->next; 1686 *output << Walker->nr << "\t"; 1687 *output << Walker->getName() << "\t"; 1674 *output << "# ATOMDATA Id name resName resSeq x=3 Charge type neighbors=" << MaxNeighbours << endl; 1675 1676 for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) { 1677 *output << (*iter)->nr << "\t"; 1678 *output << (*iter)->getName() << "\t"; 1688 1679 *output << mol->name << "\t"; 1689 1680 *output << 0 << "\t"; 1690 *output << Walker->node->at(0) << "\t" << Walker->node->at(1) << "\t" << Walker->node->at(2) << "\t";1691 *output << static_cast<double>( Walker->type->Valence) << "\t";1692 *output << Walker->type->symbol << "\t";1693 for (BondList::iterator runner = Walker->ListOfBonds.begin(); runner != Walker->ListOfBonds.end(); runner++)1694 *output << (*runner)->GetOtherAtom( Walker)->nr << "\t";1695 for(int i= Walker->ListOfBonds.size(); i < MaxNeighbours; i++)1681 *output << (*iter)->node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t"; 1682 *output << static_cast<double>((*iter)->type->Valence) << "\t"; 1683 *output << (*iter)->type->symbol << "\t"; 1684 for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++) 1685 *output << (*runner)->GetOtherAtom(*iter)->nr << "\t"; 1686 for(int i=(*iter)->ListOfBonds.size(); i < MaxNeighbours; i++) 1696 1687 *output << "-\t"; 1697 1688 *output << endl; … … 1714 1705 { 1715 1706 Info FunctionInfo(__func__); 1716 atom *Walker = NULL;1717 1707 ofstream *output = NULL; 1718 1708 stringstream * const fname = new stringstream; … … 1729 1719 int MaxNeighbours = 0; 1730 1720 for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) { 1731 Walker = (*MolWalker)->start; 1732 while (Walker->next != (*MolWalker)->end) { 1733 Walker = Walker->next; 1734 const int count = Walker->ListOfBonds.size(); 1721 for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) { 1722 const int count = (*iter)->ListOfBonds.size(); 1735 1723 if (MaxNeighbours < count) 1736 1724 MaxNeighbours = count; 1737 1725 } 1738 1726 } 1739 *output << "# ATOMDATA Id name resName resSeq x=3 charge type neighbors=" << MaxNeighbours << endl;1727 *output << "# ATOMDATA Id name resName resSeq x=3 Charge type neighbors=" << MaxNeighbours << endl; 1740 1728 1741 1729 // create global to local id map … … 1745 1733 int AtomNo = 1; 1746 1734 for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) { 1747 atom *Walker = (*MolWalker)->start; 1748 while (Walker->next != (*MolWalker)->end) { 1749 Walker = Walker->next; 1750 LocalNotoGlobalNoMap.insert( pair<int,int>(Walker->getId(), AtomNo++) ); 1735 for(molecule::iterator AtomRunner = (*MolWalker)->begin(); AtomRunner != (*MolWalker)->end(); ++AtomRunner) { 1736 LocalNotoGlobalNoMap.insert( pair<int,int>((*AtomRunner)->getId(), AtomNo++) ); 1751 1737 } 1752 1738 MolCounter++; … … 1760 1746 int AtomNo = 0; 1761 1747 for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) { 1762 Walker = (*MolWalker)->start; 1763 while (Walker->next != (*MolWalker)->end) { 1764 Walker = Walker->next; 1765 *output << LocalNotoGlobalNoMap[ Walker->getId() ] << "\t"; 1766 *output << Walker->getName() << "\t"; 1748 for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) { 1749 *output << LocalNotoGlobalNoMap[ (*iter)->getId() ] << "\t"; 1750 *output << (*iter)->getName() << "\t"; 1767 1751 *output << (*MolWalker)->name << "\t"; 1768 1752 *output << MolCounter+1 << "\t"; 1769 *output << Walker->node->at(0) << "\t" << Walker->node->at(1) << "\t" << Walker->node->at(2) << "\t";1770 *output << (double) Walker->type->Valence << "\t";1771 *output << Walker->type->symbol << "\t";1772 for (BondList::iterator runner = Walker->ListOfBonds.begin(); runner != Walker->ListOfBonds.end(); runner++)1773 *output << LocalNotoGlobalNoMap[ (*runner)->GetOtherAtom( Walker)->getId() ] << "\t";1774 for(int i= Walker->ListOfBonds.size(); i < MaxNeighbours; i++)1753 *output << (*iter)->node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t"; 1754 *output << (double)(*iter)->type->Valence << "\t"; 1755 *output << (*iter)->type->symbol << "\t"; 1756 for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++) 1757 *output << LocalNotoGlobalNoMap[ (*runner)->GetOtherAtom((*iter))->getId() ] << "\t"; 1758 for(int i=(*iter)->ListOfBonds.size(); i < MaxNeighbours; i++) 1775 1759 *output << "-\t"; 1776 1760 *output << endl; … … 1813 1797 if (output == NULL) 1814 1798 strcpy(filename,"main_pcp_linux"); 1815 Log() << Verbose(0) << "Saving as pdb input ";1799 Log() << Verbose(0) << "Saving as pdb input ... " << endl; 1816 1800 if (SavePDB(filename, molecules)) 1817 Log() << Verbose(0) << " done." << endl;1801 Log() << Verbose(0) << "\t... done." << endl; 1818 1802 else 1819 Log() << Verbose(0) << " failed." << endl;1803 Log() << Verbose(0) << "\t... failed." << endl; 1820 1804 1821 1805 // then save as tremolo data file … … 1824 1808 if (output == NULL) 1825 1809 strcpy(filename,"main_pcp_linux"); 1826 Log() << Verbose(0) << "Saving as tremolo data input ";1810 Log() << Verbose(0) << "Saving as tremolo data input ... " << endl; 1827 1811 if (SaveTREMOLO(filename, molecules)) 1828 Log() << Verbose(0) << " done." << endl;1812 Log() << Verbose(0) << "\t... done." << endl; 1829 1813 else 1830 Log() << Verbose(0) << " failed." << endl;1814 Log() << Verbose(0) << "\t... failed." << endl; 1831 1815 1832 1816 // translate each to its center and merge all molecules in MoleculeListClass into this molecule … … 1864 1848 output.close(); 1865 1849 output.clear(); 1866 Log() << Verbose(0) << "Saving of config file ";1850 Log() << Verbose(0) << "Saving of config file ... " << endl; 1867 1851 if (Save(filename, periode, mol)) 1868 Log() << Verbose(0) << " successful." << endl;1852 Log() << Verbose(0) << "\t... successful." << endl; 1869 1853 else 1870 Log() << Verbose(0) << " failed." << endl;1854 Log() << Verbose(0) << "\t... failed." << endl; 1871 1855 1872 1856 // and save to xyz file … … 1881 1865 output.open(filename, ios::trunc); 1882 1866 } 1883 Log() << Verbose(0) << "Saving of XYZ file ";1867 Log() << Verbose(0) << "Saving of XYZ file ... " << endl; 1884 1868 if (mol->MDSteps <= 1) { 1885 1869 if (mol->OutputXYZ(&output)) 1886 Log() << Verbose(0) << " successful." << endl;1870 Log() << Verbose(0) << "\t... successful." << endl; 1887 1871 else 1888 Log() << Verbose(0) << " failed." << endl;1872 Log() << Verbose(0) << "\t... failed." << endl; 1889 1873 } else { 1890 1874 if (mol->OutputTrajectoriesXYZ(&output)) 1891 Log() << Verbose(0) << " successful." << endl;1875 Log() << Verbose(0) << "\t... successful." << endl; 1892 1876 else 1893 Log() << Verbose(0) << " failed." << endl;1877 Log() << Verbose(0) << "\t... failed." << endl; 1894 1878 } 1895 1879 output.close(); … … 1901 1885 if (output == NULL) 1902 1886 strcpy(filename,"main_pcp_linux"); 1903 Log() << Verbose(0) << "Saving as mpqc input ";1887 Log() << Verbose(0) << "Saving as mpqc input .. " << endl; 1904 1888 if (SaveMPQC(filename, mol)) 1905 Log() << Verbose(0) << " done." << endl;1889 Log() << Verbose(0) << "\t... done." << endl; 1906 1890 else 1907 Log() << Verbose(0) << " failed." << endl;1891 Log() << Verbose(0) << "\t... failed." << endl; 1908 1892 1909 1893 if (!strcmp(configpath, GetDefaultPath())) {
Note:
See TracChangeset
for help on using the changeset viewer.