Changeset 5466f3 for src/molecules.cpp
- Timestamp:
- Jul 10, 2009, 2:29:56 PM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 6cb412
- Parents:
- 21c017
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecules.cpp
r21c017 r5466f3 1469 1469 bool molecule::Output(ofstream *out) 1470 1470 { 1471 element *runner;1472 1471 atom *walker = NULL; 1473 int ElementNo, AtomNo; 1472 int ElementNo[MAX_ELEMENTS], AtomNo[MAX_ELEMENTS]; 1473 int CurrentMaxElement = 0; 1474 1474 CountElements(); 1475 1475 1476 for (int i=0;i<MAX_ELEMENTS;++i) { 1477 AtomNo[i] = 0; 1478 ElementNo[i] = 0; 1479 } 1476 1480 if (out == NULL) { 1477 1481 return false; 1478 1482 } else { 1479 1483 *out << "#Ion_TypeNr._Nr.R[0] R[1] R[2] MoveType (0 MoveIon, 1 FixedIon)" << endl; 1480 ElementNo = 0; 1481 runner = elemente->start; 1482 while (runner->next != elemente->end) { // go through every element 1483 runner = runner->next; 1484 if (ElementsInMolecule[runner->Z]) { // if this element got atoms 1485 ElementNo++; 1486 AtomNo = 0; 1487 walker = start; 1488 while (walker->next != end) { // go through every atom of this element 1489 walker = walker->next; 1490 if (walker->type == runner) { // if this atom fits to element 1491 AtomNo++; 1492 walker->Output(ElementNo, AtomNo, out); // removed due to trajectories 1493 } 1494 } 1495 } 1496 } 1484 walker = start; 1485 while (walker->next != end) { // go through every atom of this element 1486 walker = walker->next; 1487 if (ElementNo[walker->type->Z] == 0) // new element 1488 ElementNo[walker->type->Z] = CurrentMaxElement++; 1489 AtomNo[walker->type->Z]++; 1490 walker->Output(ElementNo[walker->type->Z], AtomNo[walker->type->Z], out); // removed due to trajectories 1491 } 1497 1492 return true; 1498 1493 } … … 1504 1499 bool molecule::OutputTrajectories(ofstream *out) 1505 1500 { 1506 element *runner = NULL;1507 1501 atom *walker = NULL; 1508 int ElementNo, AtomNo; 1502 int ElementNo[MAX_ELEMENTS], AtomNo[MAX_ELEMENTS]; 1503 int CurrentMaxElement = 0; 1509 1504 CountElements(); 1510 1505 … … 1518 1513 *out << "# ====== MD step " << step << " =========" << endl; 1519 1514 } 1520 ElementNo = 0; 1521 runner = elemente->start; 1522 while (runner->next != elemente->end) { // go through every element 1523 runner = runner->next; 1524 if (ElementsInMolecule[runner->Z]) { // if this element got atoms 1525 ElementNo++; 1526 AtomNo = 0; 1527 walker = start; 1528 while (walker->next != end) { // go through every atom of this element 1529 walker = walker->next; 1530 if (walker->type == runner) { // if this atom fits to element 1531 AtomNo++; 1532 *out << "Ion_Type" << ElementNo << "_" << AtomNo << "\t" << fixed << setprecision(9) << showpoint; 1533 *out << Trajectories[walker].R.at(step).x[0] << "\t" << Trajectories[walker].R.at(step).x[1] << "\t" << Trajectories[walker].R.at(step).x[2]; 1534 *out << "\t" << walker->FixedIon; 1535 if (Trajectories[walker].U.at(step).Norm() > MYEPSILON) 1536 *out << "\t" << scientific << setprecision(6) << Trajectories[walker].U.at(step).x[0] << "\t" << Trajectories[walker].U.at(step).x[1] << "\t" << Trajectories[walker].U.at(step).x[2] << "\t"; 1537 if (Trajectories[walker].F.at(step).Norm() > MYEPSILON) 1538 *out << "\t" << scientific << setprecision(6) << Trajectories[walker].F.at(step).x[0] << "\t" << Trajectories[walker].F.at(step).x[1] << "\t" << Trajectories[walker].F.at(step).x[2] << "\t"; 1539 *out << "\t# Number in molecule " << walker->nr << endl; 1540 } 1541 } 1542 } 1543 } 1515 for (int i=0;i<MAX_ELEMENTS;++i) { 1516 AtomNo[i] = 0; 1517 ElementNo[i] = 0; 1518 } 1519 walker = start; 1520 while (walker->next != end) { // go through every atom of this element 1521 walker = walker->next; 1522 if (ElementNo[walker->type->Z] == 0) // new element 1523 ElementNo[walker->type->Z] = CurrentMaxElement++; 1524 AtomNo[walker->type->Z]++; 1525 *out << "Ion_Type" << ElementNo[walker->type->Z] << "_" << AtomNo[walker->type->Z] << "\t" << fixed << setprecision(9) << showpoint; 1526 *out << Trajectories[walker].R.at(step).x[0] << "\t" << Trajectories[walker].R.at(step).x[1] << "\t" << Trajectories[walker].R.at(step).x[2]; 1527 *out << "\t" << walker->FixedIon; 1528 if (Trajectories[walker].U.at(step).Norm() > MYEPSILON) 1529 *out << "\t" << scientific << setprecision(6) << Trajectories[walker].U.at(step).x[0] << "\t" << Trajectories[walker].U.at(step).x[1] << "\t" << Trajectories[walker].U.at(step).x[2] << "\t"; 1530 if (Trajectories[walker].F.at(step).Norm() > MYEPSILON) 1531 *out << "\t" << scientific << setprecision(6) << Trajectories[walker].F.at(step).x[0] << "\t" << Trajectories[walker].F.at(step).x[1] << "\t" << Trajectories[walker].F.at(step).x[2] << "\t"; 1532 *out << "\t# Number in molecule " << walker->nr << endl; 1533 } 1544 1534 } 1545 1535 return true; … … 1613 1603 { 1614 1604 atom *walker = NULL; 1615 int AtomNo = 0 , ElementNo;1605 int AtomNo = 0; 1616 1606 time_t now; 1617 element *runner = NULL;1618 1607 1619 1608 now = time((time_t *)NULL); // Get the system time and put it into 'now' as 'calender time' … … 1625 1614 if (out != NULL) { 1626 1615 *out << AtomNo << "\n\tCreated by molecuilder on " << ctime(&now); 1627 ElementNo = 0; 1628 runner = elemente->start; 1629 while (runner->next != elemente->end) { // go through every element 1630 runner = runner->next; 1631 if (ElementsInMolecule[runner->Z]) { // if this element got atoms 1632 ElementNo++; 1633 walker = start; 1634 while (walker->next != end) { // go through every atom of this element 1635 walker = walker->next; 1636 if (walker->type == runner) { // if this atom fits to element 1637 walker->OutputXYZLine(out); 1638 } 1639 } 1640 } 1641 } 1616 walker = start; 1617 while (walker->next != end) { // go through every atom of this element 1618 walker = walker->next; 1619 walker->OutputXYZLine(out); 1620 } 1642 1621 return true; 1643 1622 } else
Note:
See TracChangeset
for help on using the changeset viewer.