- Timestamp:
- Mar 2, 2010, 4:12:19 PM (15 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:
- c5805a
- Parents:
- 8db598
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/builder.cpp
r8db598 rcb85c2e 655 655 static void ManipulateAtoms(periodentafel *periode, MoleculeListClass *molecules, config *configuration) 656 656 { 657 atom *first, *second ;657 atom *first, *second, *third; 658 658 molecule *mol = NULL; 659 659 Vector x,y,z,n; // coordinates for absolute point in cell volume … … 667 667 Log() << Verbose(0) << "r - remove an atom" << endl; 668 668 Log() << Verbose(0) << "b - scale a bond between atoms" << endl; 669 Log() << Verbose(0) << "t - turn an atom round another bond" << endl; 669 670 Log() << Verbose(0) << "u - change an atoms element" << endl; 670 671 Log() << Verbose(0) << "l - measure lengths, angles, ... for an atom" << endl; … … 746 747 RemoveAtoms(mol); 747 748 } 749 break; 750 751 case 't': // turn/rotate atom 752 for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++) 753 if ((*ListRunner)->ActiveFlag) { 754 mol = *ListRunner; 755 Log() << Verbose(0) << "Turning atom around another bond - first is atom to turn, second (central) and third specify bond" << endl; 756 first = mol->AskAtom("Enter turning atom: "); 757 second = mol->AskAtom("Enter central atom: "); 758 third = mol->AskAtom("Enter bond atom: "); 759 cout << Verbose(0) << "Enter new angle in degrees: "; 760 double tmp = 0.; 761 cin >> tmp; 762 // calculate old angle 763 x.CopyVector((const Vector *)&first->x); 764 x.SubtractVector((const Vector *)&second->x); 765 y.CopyVector((const Vector *)&third->x); 766 y.SubtractVector((const Vector *)&second->x); 767 double alpha = (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.); 768 cout << Verbose(0) << "Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": "; 769 cout << Verbose(0) << alpha << " degrees" << endl; 770 // rotate 771 z.MakeNormalVector(&x,&y); 772 x.RotateVector(&z,(alpha-tmp)*M_PI/180.); 773 x.AddVector(&second->x); 774 first->x.CopyVector(&x); 775 // check new angle 776 x.CopyVector((const Vector *)&first->x); 777 x.SubtractVector((const Vector *)&second->x); 778 alpha = (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.); 779 cout << Verbose(0) << "new Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": "; 780 cout << Verbose(0) << alpha << " degrees" << endl; 781 } 748 782 break; 749 783 … … 1413 1447 Log() << Verbose(0) << "\t-B xx xy xz yy yz zz\tBound atoms by domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl; 1414 1448 Log() << Verbose(0) << "\t-c x1 x2 x3\tCenter atoms in domain with a minimum distance to boundary of (x1,x2,x3)." << endl; 1415 Log() << Verbose(0) << "\t-C <type> [params] <output> <bin output> <Bin Start> <BinEnd>\tPair Correlation analysis." << endl;1449 Log() << Verbose(0) << "\t-C <type> [params] <output> <bin output> <BinWidth> <BinStart> <BinEnd>\tPair Correlation analysis." << endl; 1416 1450 Log() << Verbose(0) << "\t-d x1 x2 x3\tDuplicate cell along each axis by given factor." << endl; 1417 1451 Log() << Verbose(0) << "\t-D <bond distance>\tDepth-First-Search Analysis of the molecule, giving cycles and tree/back edges." << endl; … … 1743 1777 case 'S': 1744 1778 { 1745 if ((argptr+ 5 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-')) {1779 if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-')) { 1746 1780 ExitFlag = 255; 1747 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C S <Z> <output> <bin output> " << endl;1781 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C S <Z> <output> <bin output> <BinWidth> <BinStart> <BinEnd>" << endl; 1748 1782 performCriticalExit(); 1749 1783 } else { … … 1751 1785 ofstream binoutput(argv[argptr+3]); 1752 1786 const double radius = 4.; 1753 const double BinStart = atof(argv[argptr+4]); 1754 const double BinEnd = atof(argv[argptr+5]); 1787 const double BinWidth = atof(argv[argptr+4]); 1788 const double BinStart = atof(argv[argptr+5]); 1789 const double BinEnd = atof(argv[argptr+6]); 1755 1790 double LCWidth = 20.; 1756 1791 if (BinEnd > 0) { … … 1792 1827 eLog() << Verbose(1) << "Linked Cell width is smaller than the found range of values! Bins can only be correct up to: " << radius << "." << endl; 1793 1828 } 1794 BinPairMap *binmap = BinData( surfacemap, 0.5, BinStart, BinEnd );1829 BinPairMap *binmap = BinData( surfacemap, BinWidth, BinStart, BinEnd ); 1795 1830 OutputCorrelation ( &binoutput, binmap ); 1796 1831 output.close(); … … 1803 1838 delete(binmap); 1804 1839 delete(surfacemap); 1805 argptr+= 6;1840 argptr+=7; 1806 1841 } 1807 1842 }
Note:
See TracChangeset
for help on using the changeset viewer.