Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config.cpp

    r42af9e r112b09  
    44 *
    55 */
     6
     7#include "Helpers/MemDebug.hpp"
    68
    79#include <stdio.h>
     
    15481550  int AtomNo = -1;
    15491551  int MolNo = 0;
    1550   atom *Walker = NULL;
    15511552  FILE *f = NULL;
    15521553
     
    15611562  fprintf(f, "# Created by MoleCuilder\n");
    15621563
    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++) {
    15651565    int *elementNo = new int[MAX_ELEMENTS];
    15661566    for (int i=0;i<MAX_ELEMENTS;i++)
    15671567      elementNo[i] = 0;
    15681568    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
    15731572      fprintf(f,
    15741573             "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 */
    15761575             name,         /* atom name */
    1577              (*Runner)->name,      /* residue name */
     1576             (*MolRunner)->name,      /* residue name */
    15781577             'a'+(unsigned char)(AtomNo % 26),           /* letter for chain */
    15791578             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 */
    15851584             "0",            /* segment identifier */
    1586              Walker->type->symbol,    /* element symbol */
     1585             (*iter)->type->symbol,    /* element symbol */
    15871586             "0");           /* charge */
    15881587      AtomNo++;
     
    16041603{
    16051604  int AtomNo = -1;
    1606   atom *Walker = NULL;
    16071605  FILE *f = NULL;
    16081606
     
    16211619  fprintf(f, "# Created by MoleCuilder\n");
    16221620
    1623   Walker = mol->start;
    16241621  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
    16291625    fprintf(f,
    16301626           "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 */
    16321628           name,         /* atom name */
    16331629           mol->name,      /* residue name */
    16341630           'a'+(unsigned char)(AtomNo % 26),           /* letter for chain */
    16351631           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 */
    16411637           "0",            /* segment identifier */
    1642            Walker->type->symbol,    /* element symbol */
     1638           (*iter)->type->symbol,    /* element symbol */
    16431639           "0");           /* charge */
    16441640    AtomNo++;
     
    16581654bool config::SaveTREMOLO(const char * const filename, const molecule * const mol) const
    16591655{
    1660   atom *Walker = NULL;
    16611656  ofstream *output = NULL;
    16621657  stringstream * const fname = new stringstream;
     
    16711666
    16721667  // scan maximum number of neighbours
    1673   Walker = mol->start;
    16741668  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();
    16781671    if (MaxNeighbours < count)
    16791672      MaxNeighbours = count;
    16801673  }
    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";
    16881679    *output << mol->name << "\t";
    16891680    *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++)
    16961687      *output << "-\t";
    16971688    *output << endl;
     
    17141705{
    17151706  Info FunctionInfo(__func__);
    1716   atom *Walker = NULL;
    17171707  ofstream *output = NULL;
    17181708  stringstream * const fname = new stringstream;
     
    17291719  int MaxNeighbours = 0;
    17301720  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();
    17351723      if (MaxNeighbours < count)
    17361724        MaxNeighbours = count;
    17371725    }
    17381726  }
    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;
    17401728
    17411729  // create global to local id map
     
    17451733    int AtomNo = 1;
    17461734    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++) );
    17511737      }
    17521738      MolCounter++;
     
    17601746    int AtomNo = 0;
    17611747    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";
    17671751        *output << (*MolWalker)->name << "\t";
    17681752        *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++)
    17751759          *output << "-\t";
    17761760        *output << endl;
     
    18131797  if (output == NULL)
    18141798    strcpy(filename,"main_pcp_linux");
    1815   Log() << Verbose(0) << "Saving as pdb input ";
     1799  Log() << Verbose(0) << "Saving as pdb input ... " << endl;
    18161800  if (SavePDB(filename, molecules))
    1817     Log() << Verbose(0) << "done." << endl;
     1801    Log() << Verbose(0) << "\t... done." << endl;
    18181802  else
    1819     Log() << Verbose(0) << "failed." << endl;
     1803    Log() << Verbose(0) << "\t... failed." << endl;
    18201804
    18211805  // then save as tremolo data file
     
    18241808  if (output == NULL)
    18251809    strcpy(filename,"main_pcp_linux");
    1826   Log() << Verbose(0) << "Saving as tremolo data input ";
     1810  Log() << Verbose(0) << "Saving as tremolo data input ... " << endl;
    18271811  if (SaveTREMOLO(filename, molecules))
    1828     Log() << Verbose(0) << "done." << endl;
     1812    Log() << Verbose(0) << "\t... done." << endl;
    18291813  else
    1830     Log() << Verbose(0) << "failed." << endl;
     1814    Log() << Verbose(0) << "\t... failed." << endl;
    18311815
    18321816  // translate each to its center and merge all molecules in MoleculeListClass into this molecule
     
    18641848  output.close();
    18651849  output.clear();
    1866   Log() << Verbose(0) << "Saving of config file ";
     1850  Log() << Verbose(0) << "Saving of config file ... " << endl;
    18671851  if (Save(filename, periode, mol))
    1868     Log() << Verbose(0) << "successful." << endl;
     1852    Log() << Verbose(0) << "\t... successful." << endl;
    18691853  else
    1870     Log() << Verbose(0) << "failed." << endl;
     1854    Log() << Verbose(0) << "\t... failed." << endl;
    18711855
    18721856  // and save to xyz file
     
    18811865    output.open(filename, ios::trunc);
    18821866  }
    1883   Log() << Verbose(0) << "Saving of XYZ file ";
     1867  Log() << Verbose(0) << "Saving of XYZ file ... " << endl;
    18841868  if (mol->MDSteps <= 1) {
    18851869    if (mol->OutputXYZ(&output))
    1886       Log() << Verbose(0) << "successful." << endl;
     1870      Log() << Verbose(0) << "\t... successful." << endl;
    18871871    else
    1888       Log() << Verbose(0) << "failed." << endl;
     1872      Log() << Verbose(0) << "\t... failed." << endl;
    18891873  } else {
    18901874    if (mol->OutputTrajectoriesXYZ(&output))
    1891       Log() << Verbose(0) << "successful." << endl;
     1875      Log() << Verbose(0) << "\t... successful." << endl;
    18921876    else
    1893       Log() << Verbose(0) << "failed." << endl;
     1877      Log() << Verbose(0) << "\t... failed." << endl;
    18941878  }
    18951879  output.close();
     
    19011885  if (output == NULL)
    19021886    strcpy(filename,"main_pcp_linux");
    1903   Log() << Verbose(0) << "Saving as mpqc input ";
     1887  Log() << Verbose(0) << "Saving as mpqc input .. " << endl;
    19041888  if (SaveMPQC(filename, mol))
    1905     Log() << Verbose(0) << "done." << endl;
     1889    Log() << Verbose(0) << "\t... done." << endl;
    19061890  else
    1907     Log() << Verbose(0) << "failed." << endl;
     1891    Log() << Verbose(0) << "\t... failed." << endl;
    19081892
    19091893  if (!strcmp(configpath, GetDefaultPath())) {
Note: See TracChangeset for help on using the changeset viewer.