Changes in / [95e6b1:7aa3cf]
- Location:
- src
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/Views/QT4/QTStatusBar.cpp
r95e6b1 r7aa3cf 21 21 QStatusBar(_parent), 22 22 Observer("QTStatusBar"), 23 parent(_parent), 23 24 atomCount(World::getInstance().numAtoms()), 24 moleculeCount(World::getInstance().numMolecules()), 25 parent(_parent) 25 moleculeCount(World::getInstance().numMolecules()) 26 26 { 27 27 World::getInstance().signOn(this); -
src/UIElements/Views/QT4/QTWorldView.cpp
r95e6b1 r7aa3cf 20 20 // these attributes are skiped so far 21 21 const int QTWorldView::COLUMNCOUNT = COLUMNTYPES_MAX; 22 const char *QTWorldView::COLUMNNAMES[QTWorldView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*/ /*,"Size"*/};22 const char *QTWorldView::COLUMNNAMES[QTWorldView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*/,"Center"/*,"Size"*/}; 23 23 24 24 QTWorldView::QTWorldView(QWidget * _parent) : … … 81 81 setItem(i,ATOMS,countWidget); 82 82 83 const Vector center = (*iter)->Center; 84 QTableWidgetItem *centerWidget = new QTableWidgetItem(); 85 stringstream centersstr; 86 centersstr << center; 87 centerWidget->setText(QString(centersstr.str().c_str())); 88 setItem(i,CENTER,centerWidget); 89 centerWidget->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); 90 83 91 molSelection[i]=nameWidget->isSelected(); 84 92 } -
src/UIElements/Views/QT4/QTWorldView.hpp
r95e6b1 r7aa3cf 28 28 29 29 static const int COLUMNCOUNT; 30 enum {NAME,ATOMS,C OLUMNTYPES_MAX} COLUMNTYPES;30 enum {NAME,ATOMS,CENTER,COLUMNTYPES_MAX} COLUMNTYPES; 31 31 static const char *COLUMNNAMES[]; 32 32 -
src/boundary.cpp
r95e6b1 r7aa3cf 804 804 // Center filler at origin 805 805 filler->CenterEdge(&Inserter); 806 filler->Center.Zero(); 806 807 const int FillerCount = filler->getAtomCount(); 807 808 DoLog(2) && (Log() << Verbose(2) << "INFO: Filler molecule has the following bonds:" << endl); -
src/config.cpp
r95e6b1 r7aa3cf 1586 1586 for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++) { 1587 1587 src[N++] = (*ListRunner)->IndexNr; 1588 (*ListRunner)->Translate(&(*ListRunner)->Center); 1588 1589 } 1589 1590 mol = World::getInstance().createMolecule(); 1590 1591 mol->SetNameFromFilename(ConfigFileName); 1592 molecules->SimpleMultiMerge(mol, src, N); 1591 1593 //mol->CalculateOrbitals(*this); 1592 1594 delete[](src); -
src/molecule.hpp
r95e6b1 r7aa3cf 104 104 double BondDistance; //!< typical bond distance used in CreateAdjacencyList() and furtheron 105 105 bool ActiveFlag; //!< in a MoleculeListClass used to discern active from inactive molecules 106 //Vector Center; //!< Center of molecule in a global box106 Vector Center; //!< Center of molecule in a global box 107 107 int IndexNr; //!< index of molecule in a MoleculeListClass 108 108 char name[MAXSTRINGSIZE]; //!< arbitrary name … … 379 379 void eraseMolecule(); 380 380 381 382 // merging of molecules 383 bool SimpleMerge(molecule *mol, molecule *srcmol); 384 bool SimpleAdd(molecule *mol, molecule *srcmol); 385 bool SimpleMultiMerge(molecule *mol, int *src, int N); 386 bool SimpleMultiAdd(molecule *mol, int *src, int N); 387 bool ScatterMerge(molecule *mol, int *src, int N); 388 bool EmbedMerge(molecule *mol, molecule *srcmol); 389 381 390 private: 382 391 World *world; //!< The world this List belongs to. Needed to avoid deadlocks in the destructor -
src/molecule_geometry.cpp
r95e6b1 r7aa3cf 104 104 (*max) += (*min); 105 105 Translate(min); 106 Center.Zero(); 106 107 } 107 108 delete(min); … … 117 118 int Num = 0; 118 119 molecule::const_iterator iter = begin(); // start at first in list 119 Vector Center;120 120 121 121 Center.Zero(); 122 122 123 if (iter != end()) { //list not empty? 123 124 for (; iter != end(); ++iter) { // continue with second if present … … 127 128 Center.Scale(-1./(double)Num); // divide through total number (and sign for direction) 128 129 Translate(&Center); 130 Center.Zero(); 129 131 } 130 132 }; … … 195 197 void molecule::CenterPeriodic() 196 198 { 197 Vector NewCenter; 198 DeterminePeriodicCenter(NewCenter); 199 // go through all atoms 200 BOOST_FOREACH(atom* iter, atoms){ 201 *iter -= NewCenter; 202 } 199 DeterminePeriodicCenter(Center); 203 200 }; 204 201 … … 210 207 void molecule::CenterAtVector(Vector *newcenter) 211 208 { 212 // go through all atoms 213 BOOST_FOREACH(atom* iter, atoms){ 214 *iter -= *newcenter; 215 } 209 Center = *newcenter; 216 210 }; 217 211 … … 283 277 bool flag; 284 278 Vector Testvector, Translationvector; 285 Vector Center;286 279 287 280 do { … … 329 322 330 323 Center.Scale(1./static_cast<double>(getAtomCount())); 331 CenterAtVector(&Center);332 324 }; 333 325 -
src/moleculelist.cpp
r95e6b1 r7aa3cf 193 193 } 194 194 // Center and size 195 Vector *Center = (*ListRunner)->DetermineCenterOfAll(); 196 (*out) << "\t" << *Center << "\t" << sqrt(size) << endl; 197 delete(Center); 195 (*out) << "\t" << (*ListRunner)->Center << "\t" << sqrt(size) << endl; 198 196 } 199 197 } … … 212 210 }; 213 211 212 /** Simple merge of two molecules into one. 213 * \param *mol destination molecule 214 * \param *srcmol source molecule 215 * \return true - merge successful, false - merge failed (probably due to non-existant indices 216 */ 217 bool MoleculeListClass::SimpleMerge(molecule *mol, molecule *srcmol) 218 { 219 if (srcmol == NULL) 220 return false; 221 222 // put all molecules of src into mol 223 for (molecule::iterator iter = srcmol->begin(); !srcmol->empty(); iter=srcmol->begin()) { 224 atom * const Walker = *iter; 225 srcmol->UnlinkAtom(Walker); 226 mol->AddAtom(Walker); 227 } 228 229 // remove src 230 ListOfMolecules.remove(srcmol); 231 World::getInstance().destroyMolecule(srcmol); 232 return true; 233 }; 234 235 /** Simple add of one molecules into another. 236 * \param *mol destination molecule 237 * \param *srcmol source molecule 238 * \return true - merge successful, false - merge failed (probably due to non-existant indices 239 */ 240 bool MoleculeListClass::SimpleAdd(molecule *mol, molecule *srcmol) 241 { 242 if (srcmol == NULL) 243 return false; 244 245 // put all molecules of src into mol 246 atom *Walker = NULL; 247 for (molecule::iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) { 248 Walker = mol->AddCopyAtom((*iter)); 249 Walker->father = Walker; 250 } 251 252 return true; 253 }; 254 255 /** Simple merge of a given set of molecules into one. 256 * \param *mol destination molecule 257 * \param *src index of set of source molecule 258 * \param N number of source molecules 259 * \return true - merge successful, false - some merges failed (probably due to non-existant indices) 260 */ 261 bool MoleculeListClass::SimpleMultiMerge(molecule *mol, int *src, int N) 262 { 263 bool status = true; 264 // check presence of all source molecules 265 for (int i=0;i<N;i++) { 266 molecule *srcmol = ReturnIndex(src[i]); 267 status = status && SimpleMerge(mol, srcmol); 268 } 269 insert(mol); 270 return status; 271 }; 272 273 /** Simple add of a given set of molecules into one. 274 * \param *mol destination molecule 275 * \param *src index of set of source molecule 276 * \param N number of source molecules 277 * \return true - merge successful, false - some merges failed (probably due to non-existant indices) 278 */ 279 bool MoleculeListClass::SimpleMultiAdd(molecule *mol, int *src, int N) 280 { 281 bool status = true; 282 // check presence of all source molecules 283 for (int i=0;i<N;i++) { 284 molecule *srcmol = ReturnIndex(src[i]); 285 status = status && SimpleAdd(mol, srcmol); 286 } 287 return status; 288 }; 289 290 /** Scatter merge of a given set of molecules into one. 291 * Scatter merge distributes the molecules in such a manner that they don't overlap. 292 * \param *mol destination molecule 293 * \param *src index of set of source molecule 294 * \param N number of source molecules 295 * \return true - merge successful, false - merge failed (probably due to non-existant indices 296 * \TODO find scatter center for each src molecule 297 */ 298 bool MoleculeListClass::ScatterMerge(molecule *mol, int *src, int N) 299 { 300 // check presence of all source molecules 301 for (int i=0;i<N;i++) { 302 // get pointer to src molecule 303 molecule *srcmol = ReturnIndex(src[i]); 304 if (srcmol == NULL) 305 return false; 306 } 307 // adapt each Center 308 for (int i=0;i<N;i++) { 309 // get pointer to src molecule 310 molecule *srcmol = ReturnIndex(src[i]); 311 //srcmol->Center.Zero(); 312 srcmol->Translate(&srcmol->Center); 313 } 314 // perform a simple multi merge 315 SimpleMultiMerge(mol, src, N); 316 return true; 317 }; 318 319 /** Embedding merge of a given set of molecules into one. 320 * Embedding merge inserts one molecule into the other. 321 * \param *mol destination molecule (fixed one) 322 * \param *srcmol source molecule (variable one, where atoms are taken from) 323 * \return true - merge successful, false - merge failed (probably due to non-existant indices) 324 * \TODO linked cell dimensions for boundary points has to be as big as inner diameter! 325 */ 326 bool MoleculeListClass::EmbedMerge(molecule *mol, molecule *srcmol) 327 { 328 LinkedCell *LCList = NULL; 329 Tesselation *TesselStruct = NULL; 330 if ((srcmol == NULL) || (mol == NULL)) { 331 DoeLog(1) && (eLog()<< Verbose(1) << "Either fixed or variable molecule is given as NULL." << endl); 332 return false; 333 } 334 335 // calculate envelope for *mol 336 LCList = new LinkedCell(mol, 8.); 337 FindNonConvexBorder(mol, TesselStruct, (const LinkedCell *&)LCList, 4., NULL); 338 if (TesselStruct == NULL) { 339 DoeLog(1) && (eLog()<< Verbose(1) << "Could not tesselate the fixed molecule." << endl); 340 return false; 341 } 342 delete(LCList); 343 LCList = new LinkedCell(TesselStruct, 8.); // re-create with boundary points only! 344 345 // prepare index list for bonds 346 atom ** CopyAtoms = new atom*[srcmol->getAtomCount()]; 347 for(int i=0;i<srcmol->getAtomCount();i++) 348 CopyAtoms[i] = NULL; 349 350 // for each of the source atoms check whether we are in- or outside and add copy atom 351 int nr=0; 352 for (molecule::const_iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) { 353 DoLog(2) && (Log() << Verbose(2) << "INFO: Current Walker is " << **iter << "." << endl); 354 if (!TesselStruct->IsInnerPoint((*iter)->getPosition(), LCList)) { 355 CopyAtoms[(*iter)->nr] = (*iter)->clone(); 356 mol->AddAtom(CopyAtoms[(*iter)->nr]); 357 nr++; 358 } else { 359 // do nothing 360 } 361 } 362 DoLog(1) && (Log() << Verbose(1) << nr << " of " << srcmol->getAtomCount() << " atoms have been merged."); 363 364 // go through all bonds and add as well 365 for(molecule::iterator AtomRunner = srcmol->begin(); AtomRunner != srcmol->end(); ++AtomRunner) 366 for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner) 367 if ((*BondRunner)->leftatom == *AtomRunner) { 368 DoLog(3) && (Log() << Verbose(3) << "Adding Bond between " << *CopyAtoms[(*BondRunner)->leftatom->nr] << " and " << *CopyAtoms[(*BondRunner)->rightatom->nr]<< "." << endl); 369 mol->AddBond(CopyAtoms[(*BondRunner)->leftatom->nr], CopyAtoms[(*BondRunner)->rightatom->nr], (*BondRunner)->BondDegree); 370 } 371 delete(LCList); 372 return true; 373 }; 214 374 215 375 /** Simple output of the pointers in ListOfMolecules. -
src/periodentafel.cpp
r95e6b1 r7aa3cf 295 295 getline(input,header1tmp); 296 296 getline(input,header2tmp); // skip first two header lines 297 //cout << "First header: " << header1tmp << endl;298 //cout << "Second header: " << header2tmp << endl;297 cout << "First header: " << header1tmp << endl; 298 cout << "Second header: " << header2tmp << endl; 299 299 DoLog(0) && (Log() << Verbose(0) << "Parsed elements:"); 300 300 while (!input.eof()) {
Note:
See TracChangeset
for help on using the changeset viewer.