Changeset 528b3e for src


Ignore:
Timestamp:
Feb 10, 2011, 7:09:30 PM (14 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:
23d7ff
Parents:
b6b3b2
git-author:
Frederik Heber <heber@…> (02/10/11 18:31:41)
git-committer:
Frederik Heber <heber@…> (02/10/11 19:09:30)
Message:

Added conversion functions to VectorValue and BoxValue and changed internals.

Location:
src
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/Actions/Makefile.am

    rb6b3b2 r528b3e  
    2121  RedoAction.cpp \
    2222  UndoAction.cpp \
     23  Values.cpp \
    2324  ValueStorage.cpp
    2425
     
    3536  ${TESSELATIONACTIONHEADER} \
    3637  ${WORLDACTIONHEADER} \
    37   ValueStorage.hpp \
    38   Values.hpp
     38  Values.hpp \
     39  ValueStorage.hpp
    3940 
    4041ANALYSISACTIONSOURCE = \
  • TabularUnified src/Actions/Values.hpp

    rb6b3b2 r528b3e  
    1414#endif
    1515
     16#include "Helpers/defs.hpp"
    1617
     18class Box;
     19class BoxVector;
     20class Vector;
     21
     22/** This is just a temporary container for values parsed from the command line.
     23 * I.e. this is only used within CommandLineParser, where VectorType and alikes
     24 * are registered as VectorValue and lateron inside the CommandLineQuery placed
     25 * into the real vector.
     26 */
    1727struct VectorValue
    1828{
    19   double x;
    20   double y;
    21   double z;
     29  double vector[NDIM];
     30
     31  Vector toVector() const;
     32  BoxVector toBoxVector(Box &_box) const;
    2233};
    2334
     35/** This is just a temporary container for values parsed from the command line.
     36 * I.e. this is only used within CommandLineParser, where BoxType is registered
     37 * as BoxValue and lateron inside the CommandLineQuery placed into the real Box.
     38 */
    2439struct BoxValue
    2540{
    26   double xx;
    27   double yx;
    28   double yy;
    29   double zx;
    30   double zy;
    31   double zz;
     41  double matrix[(NDIM*(NDIM+1))/2];
     42
     43  Box toBox() const;
    3244};
    3345
  • TabularUnified src/Box.cpp

    rb6b3b2 r528b3e  
    3838using namespace std;
    3939
    40 Box::Box()
    41 {
    42   M= new RealSpaceMatrix();
     40Box::Box() :
     41    M(new RealSpaceMatrix()),
     42    Minv(new RealSpaceMatrix())
     43{
    4344  M->setIdentity();
    44   Minv = new RealSpaceMatrix();
    4545  Minv->setIdentity();
    4646  conditions.resize(3);
     
    4848}
    4949
    50 Box::Box(const Box& src){
    51   M=new RealSpaceMatrix(*src.M);
    52   Minv = new RealSpaceMatrix(*src.Minv);
    53   conditions = src.conditions;
     50Box::Box(const Box& src) :
     51  conditions(src.conditions),
     52  M(new RealSpaceMatrix(*src.M)),
     53  Minv(new RealSpaceMatrix(*src.Minv))
     54{}
     55
     56Box::Box(RealSpaceMatrix _M) :
     57    M(new RealSpaceMatrix(_M)),
     58    Minv(new RealSpaceMatrix())
     59{
     60  ASSERT(M->determinant()!=0,"Matrix in Box construction was not invertible");
     61  *Minv = M->invert();
    5462}
    5563
     
    295303  return *this;
    296304}
     305
     306ostream & operator << (ostream& ost, const Box &m)
     307{
     308  ost << m.getM();
     309  return ost;
     310}
  • TabularUnified src/Box.hpp

    rb6b3b2 r528b3e  
    4545  Box();
    4646  Box(const Box&);
     47  Box(RealSpaceMatrix _M);
    4748  virtual ~Box();
    4849
     
    126127};
    127128
     129ostream & operator << (ostream& ost, const Box &m);
     130
    128131#endif /* BOX_HPP_ */
  • TabularUnified src/UIElements/CommandLineUI/CommandLineParser_validate.cpp

    rb6b3b2 r528b3e  
    7979#endif
    8080  }
    81   VV.x = boost::lexical_cast<double>(components.at(0));
    82   VV.y = boost::lexical_cast<double>(components.at(1));
    83   VV.z = boost::lexical_cast<double>(components.at(2));
     81  for (size_t i=0;i<NDIM;++i)
     82    VV.vector[i] = boost::lexical_cast<double>(components.at(i));
    8483  v = boost::any(VectorValue(VV));
    8584}
     
    129128#endif
    130129  }
    131   BV.xx = boost::lexical_cast<double>(components.at(0));
    132   BV.yx = boost::lexical_cast<double>(components.at(1));
    133   BV.yy = boost::lexical_cast<double>(components.at(2));
    134   BV.zx = boost::lexical_cast<double>(components.at(3));
    135   BV.zy = boost::lexical_cast<double>(components.at(4));
    136   BV.zz = boost::lexical_cast<double>(components.at(5));
     130  for (size_t i=0;i<(NDIM*(NDIM+1))/2; ++i)
     131    BV.matrix[i] = boost::lexical_cast<double>(components.at(i));
    137132  v = boost::any(BoxValue(BV));
    138133}
  • TabularUnified src/UIElements/CommandLineUI/Query/BoxCommandLineQuery.cpp

    rb6b3b2 r528b3e  
    3838  if (CommandLineParser::getInstance().vm.count(getTitle())) {
    3939    temp = CommandLineParser::getInstance().vm[getTitle()].as< BoxValue >();
    40     RealSpaceMatrix M;
    41     M.set(0,0, temp.xx);
    42     M.set(0,1, temp.yx);
    43     M.set(0,2, temp.zx);
    44     M.set(1,0, temp.yx);
    45     M.set(1,1, temp.yy);
    46     M.set(1,2, temp.zy);
    47     M.set(2,0, temp.zx);
    48     M.set(2,1, temp.zy);
    49     M.set(2,2, temp.zz);
    50     tmp.setM(M);
     40    tmp = temp.toBox();
    5141    return true;
    5242  } else {
  • TabularUnified src/UIElements/CommandLineUI/Query/VectorCommandLineQuery.cpp

    rb6b3b2 r528b3e  
    4040  if (CommandLineParser::getInstance().vm.count(getTitle())) {
    4141    temp = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
    42     tmp[0] = temp.x;
    43     tmp[1] = temp.y;
    44     tmp[2] = temp.z;
     42    tmp = temp.toVector();
    4543    if ((check) && (!World::getInstance().getDomain().isInside(tmp))) {
    4644      DoeLog(1) && (eLog() << Verbose(1) << "Vector " << tmp << " would be outside of box domain." << endl);
  • TabularUnified src/UIElements/CommandLineUI/Query/VectorsCommandLineQuery.cpp

    rb6b3b2 r528b3e  
    4141    temporary = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<VectorValue> >();
    4242    for(std::vector<VectorValue>::iterator iter = temporary.begin(); iter != temporary.end(); ++iter) {
    43       temp[0] = (*iter).x;
    44       temp[1] = (*iter).y;
    45       temp[2] = (*iter).z;
     43      temp = (*iter).toVector();
    4644      if ((!check) || (World::getInstance().getDomain().isInside(temp)))
    4745        tmp.push_back(temp);
Note: See TracChangeset for help on using the changeset viewer.