Changes in src/config.cpp [952f38:d74077]
- File:
-
- 1 edited
-
src/config.cpp (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/config.cpp
r952f38 rd74077 16 16 #include "ConfigFileBuffer.hpp" 17 17 #include "element.hpp" 18 #include " Helpers/helpers.hpp"19 #include " Helpers/Info.hpp"18 #include "helpers.hpp" 19 #include "info.hpp" 20 20 #include "lists.hpp" 21 #include " Helpers/Verbose.hpp"22 #include " Helpers/Log.hpp"21 #include "verbose.hpp" 22 #include "log.hpp" 23 23 #include "molecule.hpp" 24 24 #include "molecule.hpp" … … 26 26 #include "ThermoStatContainer.hpp" 27 27 #include "World.hpp" 28 #include " LinearAlgebra/Matrix.hpp"28 #include "Matrix.hpp" 29 29 #include "Box.hpp" 30 30 … … 439 439 map<int, atom *> LinearList; 440 440 atom *neues = NULL; 441 Vector position; 441 442 if (!FastParsing) { 442 443 // parse in trajectories … … 452 453 AtomList[i][j] = neues; 453 454 LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues; 454 neues-> type = elementhash[i]; // find element type455 neues->setType(elementhash[i]); // find element type 455 456 } else 456 457 neues = AtomList[i][j]; 457 458 status = (status && 458 ParseForParameter(verbose,FileBuffer, keyword, 0, 1, 1, double_type, & neues->x[0], 1, (repetition == 0) ? critical : optional) &&459 ParseForParameter(verbose,FileBuffer, keyword, 0, 2, 1, double_type, & neues->x[1], 1, (repetition == 0) ? critical : optional) &&460 ParseForParameter(verbose,FileBuffer, keyword, 0, 3, 1, double_type, & neues->x[2], 1, (repetition == 0) ? critical : optional) &&459 ParseForParameter(verbose,FileBuffer, keyword, 0, 1, 1, double_type, &position[0], 1, (repetition == 0) ? critical : optional) && 460 ParseForParameter(verbose,FileBuffer, keyword, 0, 2, 1, double_type, &position[1], 1, (repetition == 0) ? critical : optional) && 461 ParseForParameter(verbose,FileBuffer, keyword, 0, 3, 1, double_type, &position[2], 1, (repetition == 0) ? critical : optional) && 461 462 ParseForParameter(verbose,FileBuffer, keyword, 0, 4, 1, int_type, &neues->FixedIon, 1, (repetition == 0) ? critical : optional)); 462 if (!status) break; 463 if (!status) 464 break; 465 neues ->setPosition(position); 463 466 464 467 // check size of vectors … … 472 475 // put into trajectories list 473 476 for (int d=0;d<NDIM;d++) 474 neues->Trajectory.R.at(repetition)[d] = neues-> x[d];477 neues->Trajectory.R.at(repetition)[d] = neues->at(d); 475 478 476 479 // parse velocities if present 477 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 5, 1, double_type, &neues-> v[0], 1,optional))478 neues-> v[0] = 0.;479 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 6, 1, double_type, &neues-> v[1], 1,optional))480 neues-> v[1] = 0.;481 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 7, 1, double_type, &neues-> v[2], 1,optional))482 neues-> v[2] = 0.;480 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 5, 1, double_type, &neues->AtomicVelocity[0], 1,optional)) 481 neues->AtomicVelocity[0] = 0.; 482 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 6, 1, double_type, &neues->AtomicVelocity[1], 1,optional)) 483 neues->AtomicVelocity[1] = 0.; 484 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 7, 1, double_type, &neues->AtomicVelocity[2], 1,optional)) 485 neues->AtomicVelocity[2] = 0.; 483 486 for (int d=0;d<NDIM;d++) 484 neues->Trajectory.U.at(repetition)[d] = neues-> v[d];487 neues->Trajectory.U.at(repetition)[d] = neues->AtomicVelocity[d]; 485 488 486 489 // parse forces if present … … 531 534 AtomList[i][j] = neues; 532 535 LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues; 533 neues-> type = elementhash[i]; // find element type536 neues->setType(elementhash[i]); // find element type 534 537 } else 535 538 neues = AtomList[i][j]; 536 539 // then parse for each atom the coordinates as often as present 537 ParseForParameter(verbose,FileBuffer, keyword, 0, 1, 1, double_type, &neues->x[0], repetition,critical); 538 ParseForParameter(verbose,FileBuffer, keyword, 0, 2, 1, double_type, &neues->x[1], repetition,critical); 539 ParseForParameter(verbose,FileBuffer, keyword, 0, 3, 1, double_type, &neues->x[2], repetition,critical); 540 ParseForParameter(verbose,FileBuffer, keyword, 0, 1, 1, double_type, &position[0], repetition,critical); 541 ParseForParameter(verbose,FileBuffer, keyword, 0, 2, 1, double_type, &position[1], repetition,critical); 542 ParseForParameter(verbose,FileBuffer, keyword, 0, 3, 1, double_type, &position[2], repetition,critical); 543 neues->setPosition(position); 540 544 ParseForParameter(verbose,FileBuffer, keyword, 0, 4, 1, int_type, &neues->FixedIon, repetition,critical); 541 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 5, 1, double_type, &neues-> v[0], repetition,optional))542 neues-> v[0] = 0.;543 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 6, 1, double_type, &neues-> v[1], repetition,optional))544 neues-> v[1] = 0.;545 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 7, 1, double_type, &neues-> v[2], repetition,optional))546 neues-> v[2] = 0.;545 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 5, 1, double_type, &neues->AtomicVelocity[0], repetition,optional)) 546 neues->AtomicVelocity[0] = 0.; 547 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 6, 1, double_type, &neues->AtomicVelocity[1], repetition,optional)) 548 neues->AtomicVelocity[1] = 0.; 549 if(!ParseForParameter(verbose,FileBuffer, keyword, 0, 7, 1, double_type, &neues->AtomicVelocity[2], repetition,optional)) 550 neues->AtomicVelocity[2] = 0.; 547 551 // here we don't care if forces are present (last in trajectories is always equal to current position) 548 neues-> type = elementhash[i]; // find element type552 neues->setType(elementhash[i]); // find element type 549 553 mol->AddAtom(neues); 550 554 } … … 1009 1013 istringstream input2(zeile); 1010 1014 atom *neues = World::getInstance().createAtom(); 1011 input2 >> neues->x[0]; // x 1012 input2 >> neues->x[1]; // y 1013 input2 >> neues->x[2]; // z 1015 double tmp; 1016 for (int j=0;j<NDIM;j++) { 1017 input2 >> tmp; 1018 neues->set(j,tmp); 1019 } 1014 1020 input2 >> l; 1015 neues-> type = elementhash[No]; // find element type1021 neues->setType(elementhash[No]); // find element type 1016 1022 mol->AddAtom(neues); 1017 1023 } … … 1279 1285 AtomNo = 0; 1280 1286 for (molecule::const_iterator iter = (*MolRunner)->begin(); iter != (*MolRunner)->end(); ++iter) { 1281 sprintf(name, "%2s%2d",(*iter)-> type->symbol, elementNo[(*iter)->type->Z]);1282 elementNo[(*iter)-> type->Z] = (elementNo[(*iter)->type->Z]+1) % 100; // confine to two digits1287 sprintf(name, "%2s%2d",(*iter)->getType()->symbol, elementNo[(*iter)->getType()->Z]); 1288 elementNo[(*iter)->getType()->Z] = (elementNo[(*iter)->getType()->Z]+1) % 100; // confine to two digits 1283 1289 fprintf(f, 1284 1290 "ATOM %6u %-4s %4s%c%4u %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%2s\n", … … 1288 1294 'a'+(unsigned char)(AtomNo % 26), /* letter for chain */ 1289 1295 MolNo, /* residue sequence number */ 1290 (*iter)-> node->at(0), /* position X in Angstroem */1291 (*iter)-> node->at(1), /* position Y in Angstroem */1292 (*iter)-> node->at(2), /* position Z in Angstroem */1293 (double)(*iter)-> type->Valence, /* occupancy */1294 (double)(*iter)-> type->NoValenceOrbitals, /* temperature factor */1296 (*iter)->at(0), /* position X in Angstroem */ 1297 (*iter)->at(1), /* position Y in Angstroem */ 1298 (*iter)->at(2), /* position Z in Angstroem */ 1299 (double)(*iter)->getType()->Valence, /* occupancy */ 1300 (double)(*iter)->getType()->NoValenceOrbitals, /* temperature factor */ 1295 1301 "0", /* segment identifier */ 1296 (*iter)-> type->symbol, /* element symbol */1302 (*iter)->getType()->symbol, /* element symbol */ 1297 1303 "0"); /* charge */ 1298 1304 AtomNo++; … … 1332 1338 AtomNo = 0; 1333 1339 for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) { 1334 sprintf(name, "%2s%2d",(*iter)-> type->symbol, elementNo[(*iter)->type->Z]);1335 elementNo[(*iter)-> type->Z] = (elementNo[(*iter)->type->Z]+1) % 100; // confine to two digits1340 sprintf(name, "%2s%2d",(*iter)->getType()->symbol, elementNo[(*iter)->getType()->Z]); 1341 elementNo[(*iter)->getType()->Z] = (elementNo[(*iter)->getType()->Z]+1) % 100; // confine to two digits 1336 1342 fprintf(f, 1337 1343 "ATOM %6u %-4s %4s%c%4u %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%2s\n", … … 1341 1347 'a'+(unsigned char)(AtomNo % 26), /* letter for chain */ 1342 1348 0, /* residue sequence number */ 1343 (*iter)-> node->at(0), /* position X in Angstroem */1344 (*iter)-> node->at(1), /* position Y in Angstroem */1345 (*iter)-> node->at(2), /* position Z in Angstroem */1346 (double)(*iter)-> type->Valence, /* occupancy */1347 (double)(*iter)-> type->NoValenceOrbitals, /* temperature factor */1349 (*iter)->at(0), /* position X in Angstroem */ 1350 (*iter)->at(1), /* position Y in Angstroem */ 1351 (*iter)->at(2), /* position Z in Angstroem */ 1352 (double)(*iter)->getType()->Valence, /* occupancy */ 1353 (double)(*iter)->getType()->NoValenceOrbitals, /* temperature factor */ 1348 1354 "0", /* segment identifier */ 1349 (*iter)-> type->symbol, /* element symbol */1355 (*iter)->getType()->symbol, /* element symbol */ 1350 1356 "0"); /* charge */ 1351 1357 AtomNo++; … … 1390 1396 *output << mol->name << "\t"; 1391 1397 *output << 0 << "\t"; 1392 *output << (*iter)-> node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t";1393 *output << static_cast<double>((*iter)-> type->Valence) << "\t";1394 *output << (*iter)-> type->symbol << "\t";1398 *output << (*iter)->at(0) << "\t" << (*iter)->at(1) << "\t" << (*iter)->at(2) << "\t"; 1399 *output << static_cast<double>((*iter)->getType()->Valence) << "\t"; 1400 *output << (*iter)->getType()->symbol << "\t"; 1395 1401 for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++) 1396 1402 *output << (*runner)->GetOtherAtom(*iter)->nr << "\t"; … … 1462 1468 *output << (*MolWalker)->name << "\t"; 1463 1469 *output << MolCounter+1 << "\t"; 1464 *output << (*iter)-> node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t";1465 *output << (double)(*iter)-> type->Valence << "\t";1466 *output << (*iter)-> type->symbol << "\t";1470 *output << (*iter)->at(0) << "\t" << (*iter)->at(1) << "\t" << (*iter)->at(2) << "\t"; 1471 *output << (double)(*iter)->getType()->Valence << "\t"; 1472 *output << (*iter)->getType()->symbol << "\t"; 1467 1473 for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++) 1468 1474 *output << LocalNotoGlobalNoMap[ (*runner)->GetOtherAtom((*iter))->getId() ] << "\t";
Note:
See TracChangeset
for help on using the changeset viewer.
