Changeset 58bbd3 for src/builder.cpp


Ignore:
Timestamp:
Jun 9, 2010, 3:08:46 PM (15 years ago)
Author:
Frederik Heber <heber@…>
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
Message:

Cases 'C' are now handled by CommandLineUI.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/builder.cpp

    r1e6913 r58bbd3  
    17631763                  switch(argv[argptr][0]) {
    17641764                    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;
    17941779                      break;
    17951780
    17961781                    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;
    18271799                      break;
    18281800
    18291801                    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;
    19001819                      break;
    19011820
Note: See TracChangeset for help on using the changeset viewer.