Changeset 0286bc for src


Ignore:
Timestamp:
Jun 7, 2010, 11:53:44 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:
19c0e3
Parents:
3610bb
git-author:
Frederik Heber <heber@…> (06/07/10 23:48:31)
git-committer:
Frederik Heber <heber@…> (06/07/10 23:53:44)
Message:

BUGFIX: ListOfDoubles changed to Box and Vector.

Location:
src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/Makefile.am

    r3610bb r0286bc  
    3030  ${TESSELATIONACTIONHEADER} \
    3131  ${WORLDACTIONHEADER} \
    32   MapOfActions.hpp
     32  MapOfActions.hpp \
     33  Values.hpp
    3334 
    3435ANALYSISACTIONSOURCE = \
  • src/Actions/MapOfActions.cpp

    r3610bb r0286bc  
    1212#include "Helpers/Assert.hpp"
    1313
     14#include <boost/lexical_cast.hpp>
     15#include <boost/optional.hpp>
     16#include <boost/program_options.hpp>
     17
    1418#include "CommandLineParser.hpp"
    1519#include "log.hpp"
    1620#include "verbose.hpp"
     21
     22#include "Actions/Values.hpp"
     23
     24void validate(boost::any& v, const std::vector<std::string>& values, VectorValue *, int)
     25{
     26  VectorValue VV;
     27  if (values.size() != 3) {
     28    cerr <<  "Specified vector does not have three components but " << values.size() << endl;
     29    throw boost::program_options::validation_error("Specified vector does not have three components");
     30  }
     31  VV.x = boost::lexical_cast<double>(values.at(0));
     32  VV.y = boost::lexical_cast<double>(values.at(1));
     33  VV.z = boost::lexical_cast<double>(values.at(2));
     34  v = boost::any(VectorValue(VV));
     35}
     36
     37void validate(boost::any& v, const std::vector<std::string>& values, BoxValue *, int)
     38{
     39  BoxValue BV;
     40  if (values.size() != 6) {
     41    cerr <<  "Specified vector does not have three components but " << values.size() << endl;
     42    throw boost::program_options::validation_error("Specified symmetric box matrix does not have six components");
     43  }
     44  BV.xx = boost::lexical_cast<double>(values.at(0));
     45  BV.xy = boost::lexical_cast<double>(values.at(1));
     46  BV.xz = boost::lexical_cast<double>(values.at(2));
     47  BV.yy = boost::lexical_cast<double>(values.at(3));
     48  BV.yz = boost::lexical_cast<double>(values.at(4));
     49  BV.zz = boost::lexical_cast<double>(values.at(5));
     50  v = boost::any(BoxValue(BV));
     51}
     52
    1753
    1854/** Constructor of class MapOfActions.
     
    76112  DescriptionMap["distance"] = "distance in space";
    77113  DescriptionMap["distances"] = "list of three of distances in space, one for each axis direction";
     114  DescriptionMap["DoRotate"] = "whether to rotate or just report angles";
    78115  DescriptionMap["element"] = "set of elements";
    79116  DescriptionMap["end-mol"] = "last or end step";
     
    133170  TypeMap["bond-table"] = String;
    134171  TypeMap["boundary"] = Vector;
    135   TypeMap["center-in-box"] = ListOfDoubles;
    136   TypeMap["change-box"] = ListOfDoubles;
     172  TypeMap["center-in-box"] = Box;
     173  TypeMap["change-box"] = Box;
    137174  TypeMap["change-element"] = Element;
    138175  TypeMap["change-molname"] = String;
     
    171208  TypeMap["bin-start"] = Double;
    172209  TypeMap["distance"] = Double;
    173   TypeMap["distances"] = ListOfDoubles;
     210  TypeMap["distances"] = Vector;
     211  TypeMap["DoRotate"] = Boolean;
    174212  TypeMap["elements"] = Element;
    175213  TypeMap["elements"] = ListOfElements;
    176214  TypeMap["length"] = Double;
    177   TypeMap["lengths"] = ListOfDoubles;
     215  TypeMap["lengths"] = Vector;
    178216  TypeMap["MaxDistance"] = Double;
    179217  TypeMap["molecule-by-id"] = Molecule;
     
    202240//      generic.insert("element-db");
    203241//      generic.insert("fastparsing");
    204 //  generic.insert("fill-molecule");
     242  generic.insert("fill-molecule");
    205243//  generic.insert("fragment-mol");
    206244  generic.insert("help");
     
    215253//  generic.insert("remove-atom");
    216254//  generic.insert("remove-sphere");
    217     generic.insert("repeat-box");
     255  generic.insert("repeat-box");
    218256//  generic.insert("rotate-to-pas");
    219257//      generic.insert("save-adjacency");
     
    238276    generic.insert("input");
    239277//  generic.insert("length");
    240 //  generic.insert("lengths");
    241 //  generic.insert("MaxDistance");
    242 //  generic.insert("molecule-by-id");
    243278//  generic.insert("output-file");
    244279//  generic.insert("periodic");
     
    248283    // positional arguments
    249284    inputfile.insert("input");
     285
     286    // hidden arguments
     287//  generic.insert("distance");
     288    generic.insert("DoRotate");
     289    generic.insert("distances");
     290    generic.insert("lengths");
     291    generic.insert("MaxDistance");
     292    generic.insert("molecule-by-id");
    250293}
    251294
     
    284327              ;
    285328            break;
     329          case Box:
     330            ListRunner->second->add_options()
     331              (getKeyAndShortForm(*OptionRunner).c_str(),
     332                  po::value<BoxValue>()->multitoken(),
     333                  getDescription(*OptionRunner).c_str())
     334              ;
     335            break;
    286336          case Integer:
    287337            ListRunner->second->add_options()
     
    337387            ListRunner->second->add_options()
    338388              (getKeyAndShortForm(*OptionRunner).c_str(),
    339                   po::value< vector<double> >()->multitoken(),
    340                   getDescription(*OptionRunner).c_str())
    341               ;
    342             break;
    343           case Box:
    344             ListRunner->second->add_options()
    345               (getKeyAndShortForm(*OptionRunner).c_str(),
    346                   po::value< vector<double> >(),
     389                  po::value<VectorValue>()->multitoken(),
    347390                  getDescription(*OptionRunner).c_str())
    348391              ;
  • src/UIElements/CommandLineUI/CommandLineDialog.cpp

    r3610bb r0286bc  
    1515#include <Descriptors/MoleculeIdDescriptor.hpp>
    1616#include "CommandLineUI/CommandLineDialog.hpp"
     17
     18#include "Actions/Values.hpp"
    1719
    1820#include "element.hpp"
     
    116118
    117119bool CommandLineDialog::BooleanCommandLineQuery::handle() {
    118   bool badInput = false;
    119   char input = ' ';
    120   do{
    121     badInput = false;
    122     Log() << Verbose(0) << getTitle();
    123     cin >> input;
    124     if ((input == 'y' ) || (input == 'Y')) {
    125       tmp = true;
    126     } else if ((input == 'n' ) || (input == 'N')) {
    127       tmp = false;
    128     } else {
    129       badInput=true;
    130       cin.clear();
    131       cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
    132       Log() << Verbose(0) << "Input was not of [yYnN]!" << endl;
    133     }
    134   } while(badInput);
    135   // clear the input buffer of anything still in the line
    136   cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
    137   return true;
     120  if (CommandLineParser::getInstance().vm.count(getTitle())) {
     121    tmp = CommandLineParser::getInstance().vm[getTitle()].as<bool>();
     122    return true;
     123  } else
     124    return false;
    138125}
    139126
     
    210197
    211198bool CommandLineDialog::VectorCommandLineQuery::handle() {
    212   vector<double> temp;
    213   if (CommandLineParser::getInstance().vm.count(getTitle())) {
    214     temp = CommandLineParser::getInstance().vm[getTitle()].as<vector<double> >();
    215     assert((temp.size() == 3) && "Vector from command line does not have three components.");
    216     for (int i=0;i<NDIM;i++)
    217       tmp->at(i) = temp[i];
     199  VectorValue temp;
     200  if (CommandLineParser::getInstance().vm.count(getTitle())) {
     201    temp = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
     202    tmp->at(0) = temp.x;
     203    tmp->at(1) = temp.y;
     204    tmp->at(2) = temp.z;
    218205    return true;
    219206  } else
     
    230217
    231218bool CommandLineDialog::BoxCommandLineQuery::handle() {
    232   vector<double> temp;
    233   if (CommandLineParser::getInstance().vm.count(getTitle())) {
    234     temp = CommandLineParser::getInstance().vm[getTitle()].as<vector<double> >();
    235     assert((temp.size() == 6) && "Symmetric box matrix from command line does not have six components.");
    236     for (int i=0;i<6;i++) {
    237       tmp[i] = temp[i];
    238     }
     219  BoxValue temp;
     220  if (CommandLineParser::getInstance().vm.count(getTitle())) {
     221    temp = CommandLineParser::getInstance().vm[getTitle()].as< BoxValue >();
     222    tmp[0] = temp.xx;
     223    tmp[1] = temp.xy;
     224    tmp[2] = temp.xz;
     225    tmp[3] = temp.yy;
     226    tmp[4] = temp.yz;
     227    tmp[5] = temp.zz;
    239228    return true;
    240229  } else
Note: See TracChangeset for help on using the changeset viewer.