Changeset 58bbd3 for src/builder.cpp
- Timestamp:
- Jun 9, 2010, 3:08:46 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:
- 31b09e
- Parents:
- 1e6913
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/builder.cpp
r1e6913 r58bbd3 1763 1763 switch(argv[argptr][0]) { 1764 1764 case 'E': 1765 { 1766 if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+2])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-')) { 1767 ExitFlag = 255; 1768 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C E <Z1> <Z2> <output> <bin output> <binstart> <binend>" << endl); 1769 performCriticalExit(); 1770 } else { 1771 ofstream output(argv[argptr+3]); 1772 ofstream binoutput(argv[argptr+4]); 1773 const double BinStart = atof(argv[argptr+5]); 1774 const double BinEnd = atof(argv[argptr+6]); 1775 1776 std::vector<element *> elements; 1777 elements.push_back(periode->FindElement((const int) atoi(argv[argptr+1]))); 1778 elements.push_back(periode->FindElement((const int) atoi(argv[argptr+2]))); 1779 PairCorrelationMap *correlationmap = NULL; 1780 if (periodic) 1781 correlationmap = PeriodicPairCorrelation(molecules, elements, ranges); 1782 else 1783 correlationmap = PairCorrelation(molecules, elements); 1784 OutputPairCorrelation(&output, correlationmap); 1785 BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd ); 1786 OutputCorrelation ( &binoutput, binmap ); 1787 output.close(); 1788 binoutput.close(); 1789 delete(binmap); 1790 delete(correlationmap); 1791 argptr+=7; 1792 } 1793 } 1765 ArgcList.insert(argptr-1); 1766 ArgcList.insert(argptr); 1767 ArgcList.insert(argptr+1); 1768 ArgcList.insert(argptr+2); 1769 ArgcList.insert(argptr+3); 1770 ArgcList.insert(argptr+4); 1771 ArgcList.insert(argptr+5); 1772 ArgcList.insert(argptr+6); 1773 ArgcList.insert(argptr+7); 1774 ArgcList.insert(argptr+8); 1775 ArgcList.insert(argptr+9); 1776 ArgcList.insert(argptr+10); 1777 ArgcList.insert(argptr+11); 1778 argptr+=12; 1794 1779 break; 1795 1780 1796 1781 case 'P': 1797 { 1798 if ((argptr+8 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+7])) || (!IsValidNumber(argv[argptr+8])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-') || (argv[argptr+5][0] == '-') || (argv[argptr+6][0] == '-')) { 1799 ExitFlag = 255; 1800 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C P <Z1> <x> <y> <z> <output> <bin output> <binstart> <binend>" << endl); 1801 performCriticalExit(); 1802 } else { 1803 ofstream output(argv[argptr+5]); 1804 ofstream binoutput(argv[argptr+6]); 1805 const double BinStart = atof(argv[argptr+7]); 1806 const double BinEnd = atof(argv[argptr+8]); 1807 1808 std::vector<element *> elements; 1809 elements.push_back(periode->FindElement((const int) atoi(argv[argptr+1]))); 1810 Vector *Point = new Vector((const double) atof(argv[argptr+1]),(const double) atof(argv[argptr+2]),(const double) atof(argv[argptr+3])); 1811 CorrelationToPointMap *correlationmap = NULL; 1812 if (periodic) 1813 correlationmap = PeriodicCorrelationToPoint(molecules, elements, Point, ranges); 1814 else 1815 correlationmap = CorrelationToPoint(molecules, elements, Point); 1816 OutputCorrelationToPoint(&output, correlationmap); 1817 BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd ); 1818 OutputCorrelation ( &binoutput, binmap ); 1819 output.close(); 1820 binoutput.close(); 1821 delete(Point); 1822 delete(binmap); 1823 delete(correlationmap); 1824 argptr+=9; 1825 } 1826 } 1782 ArgcList.insert(argptr-1); 1783 ArgcList.insert(argptr); 1784 ArgcList.insert(argptr+1); 1785 ArgcList.insert(argptr+2); 1786 ArgcList.insert(argptr+3); 1787 ArgcList.insert(argptr+4); 1788 ArgcList.insert(argptr+5); 1789 ArgcList.insert(argptr+6); 1790 ArgcList.insert(argptr+7); 1791 ArgcList.insert(argptr+8); 1792 ArgcList.insert(argptr+9); 1793 ArgcList.insert(argptr+10); 1794 ArgcList.insert(argptr+11); 1795 ArgcList.insert(argptr+12); 1796 ArgcList.insert(argptr+13); 1797 ArgcList.insert(argptr+14); 1798 argptr+=15; 1827 1799 break; 1828 1800 1829 1801 case 'S': 1830 { 1831 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] == '-')) { 1832 ExitFlag = 255; 1833 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C S <Z> <output> <bin output> <BinWidth> <BinStart> <BinEnd>" << endl); 1834 performCriticalExit(); 1835 } else { 1836 ofstream output(argv[argptr+2]); 1837 ofstream binoutput(argv[argptr+3]); 1838 const double radius = 4.; 1839 const double BinWidth = atof(argv[argptr+4]); 1840 const double BinStart = atof(argv[argptr+5]); 1841 const double BinEnd = atof(argv[argptr+6]); 1842 double LCWidth = 20.; 1843 if (BinEnd > 0) { 1844 if (BinEnd > 2.*radius) 1845 LCWidth = BinEnd; 1846 else 1847 LCWidth = 2.*radius; 1848 } 1849 1850 // get the boundary 1851 class molecule *Boundary = NULL; 1852 class Tesselation *TesselStruct = NULL; 1853 const LinkedCell *LCList = NULL; 1854 // find biggest molecule 1855 int counter = 0; 1856 for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) { 1857 if ((Boundary == NULL) || (Boundary->getAtomCount() < (*BigFinder)->getAtomCount())) { 1858 Boundary = *BigFinder; 1859 } 1860 counter++; 1861 } 1862 bool *Actives = new bool[counter]; 1863 counter = 0; 1864 for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) { 1865 Actives[counter++] = (*BigFinder)->ActiveFlag; 1866 (*BigFinder)->ActiveFlag = (*BigFinder == Boundary) ? false : true; 1867 } 1868 LCList = new LinkedCell(Boundary, LCWidth); 1869 std::vector<element *> elements; 1870 elements.push_back(periode->FindElement((const int) atoi(argv[argptr+1]))); 1871 FindNonConvexBorder(Boundary, TesselStruct, LCList, radius, NULL); 1872 CorrelationToSurfaceMap *surfacemap = NULL; 1873 if (periodic) 1874 surfacemap = PeriodicCorrelationToSurface( molecules, elements, TesselStruct, LCList, ranges); 1875 else 1876 surfacemap = CorrelationToSurface( molecules, elements, TesselStruct, LCList); 1877 OutputCorrelationToSurface(&output, surfacemap); 1878 // check whether radius was appropriate 1879 { 1880 double start; double end; 1881 GetMinMax( surfacemap, start, end); 1882 if (LCWidth < end) 1883 DoeLog(1) && (eLog()<< Verbose(1) << "Linked Cell width is smaller than the found range of values! Bins can only be correct up to: " << radius << "." << endl); 1884 } 1885 BinPairMap *binmap = BinData( surfacemap, BinWidth, BinStart, BinEnd ); 1886 OutputCorrelation ( &binoutput, binmap ); 1887 output.close(); 1888 binoutput.close(); 1889 counter = 0; 1890 for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) 1891 (*BigFinder)->ActiveFlag = Actives[counter++]; 1892 delete[](Actives); 1893 delete(LCList); 1894 delete(TesselStruct); 1895 delete(binmap); 1896 delete(surfacemap); 1897 argptr+=7; 1898 } 1899 } 1802 ArgcList.insert(argptr-1); 1803 ArgcList.insert(argptr); 1804 ArgcList.insert(argptr+1); 1805 ArgcList.insert(argptr+2); 1806 ArgcList.insert(argptr+3); 1807 ArgcList.insert(argptr+4); 1808 ArgcList.insert(argptr+5); 1809 ArgcList.insert(argptr+6); 1810 ArgcList.insert(argptr+7); 1811 ArgcList.insert(argptr+8); 1812 ArgcList.insert(argptr+9); 1813 ArgcList.insert(argptr+10); 1814 ArgcList.insert(argptr+11); 1815 ArgcList.insert(argptr+12); 1816 ArgcList.insert(argptr+13); 1817 ArgcList.insert(argptr+14); 1818 argptr+=15; 1900 1819 break; 1901 1820
Note:
See TracChangeset
for help on using the changeset viewer.