Ignore:
Timestamp:
Oct 5, 2009, 4:05:53 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:
c26f44
Parents:
7dea7c (diff), c0917c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'ConcaveHull' into ConvexHull

Conflicts:

.gitignore
molecuilder/src/Makefile.am
molecuilder/src/atom.cpp
molecuilder/src/tesselation.cpp

no serious overlaps, just a free Frees that were not present in ConcaveHull were MemoryAllocator class was added.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/vectorunittest.cpp

    r7dea7c ra33931  
    5555void VectorTest::SimpleAlgebraTest()
    5656{
    57   Vector helper;
    5857  double factor;
     58  // copy vector
     59  fixture.Init(2.,3.,4.);
     60  CPPUNIT_ASSERT_EQUAL( Vector(2.,3.,4.), fixture );
    5961  // summation and scaling
    60   helper.CopyVector(&zero);
    61   helper.AddVector(&unit);
    62   CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );
    63   helper.CopyVector(&zero);
    64   helper.SubtractVector(&unit);
    65   CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );
    66   CPPUNIT_ASSERT_EQUAL( false, helper.IsZero() );
    67   helper.CopyVector(&zero);
    68   helper.AddVector(&zero);
    69   CPPUNIT_ASSERT_EQUAL( true, helper.IsZero() );
    70   helper.CopyVector(&notunit);
    71   helper.SubtractVector(&otherunit);
    72   CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );
    73   helper.CopyVector(&unit);
    74   helper.AddVector(&otherunit);
    75   CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );
    76   helper.CopyVector(&notunit);
    77   helper.SubtractVector(&unit);
    78   helper.SubtractVector(&otherunit);
    79   CPPUNIT_ASSERT_EQUAL( false, helper.IsZero() );
    80   helper.CopyVector(&unit);
    81   helper.Scale(0.98);
    82   CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );
    83   helper.CopyVector(&unit);
    84   helper.Scale(1.);
    85   CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );
    86   helper.CopyVector(&unit);
     62  fixture.CopyVector(&zero);
     63  fixture.AddVector(&unit);
     64  CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() );
     65  fixture.CopyVector(&zero);
     66  fixture.SubtractVector(&unit);
     67  CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() );
     68  CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() );
     69  fixture.CopyVector(&zero);
     70  fixture.AddVector(&zero);
     71  CPPUNIT_ASSERT_EQUAL( true, fixture.IsZero() );
     72  fixture.CopyVector(&notunit);
     73  fixture.SubtractVector(&otherunit);
     74  CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() );
     75  fixture.CopyVector(&unit);
     76  fixture.AddVector(&otherunit);
     77  CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() );
     78  fixture.CopyVector(&notunit);
     79  fixture.SubtractVector(&unit);
     80  fixture.SubtractVector(&otherunit);
     81  CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() );
     82  fixture.CopyVector(&unit);
     83  fixture.Scale(0.98);
     84  CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() );
     85  fixture.CopyVector(&unit);
     86  fixture.Scale(1.);
     87  CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() );
     88  fixture.CopyVector(&unit);
    8789  factor = 0.98;
    88   helper.Scale(factor);
    89   CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );
    90   helper.CopyVector(&unit);
     90  fixture.Scale(factor);
     91  CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() );
     92  fixture.CopyVector(&unit);
    9193  factor = 1.;
    92   helper.Scale(factor);
    93   CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );
     94  fixture.Scale(factor);
     95  CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() );
    9496};
    9597
     
    183185void VectorTest::LineIntersectionTest()
    184186{
    185   Vector helper;
    186187  // plane at (0,0,0) normal to (1,0,0) cuts line from (0,0,0) to (2,1,0) at ???
    187   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionWithPlane((ofstream *)&cout, &unit, &zero, &zero, &two) );
    188   CPPUNIT_ASSERT_EQUAL( zero, helper );
     188  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionWithPlane((ofstream *)&cout, &unit, &zero, &zero, &two) );
     189  CPPUNIT_ASSERT_EQUAL( zero, fixture );
    189190
    190191  // plane at (2,1,0) normal to (0,1,0) cuts line from (1,0,0) to (0,1,1) at ???
    191   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionWithPlane((ofstream *)&cout, &otherunit, &two, &unit, &notunit) );
    192   CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), helper );
     192  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionWithPlane((ofstream *)&cout, &otherunit, &two, &unit, &notunit) );
     193  CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), fixture );
    193194
    194195  // four vectors equal to zero
    195   CPPUNIT_ASSERT_EQUAL( false, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &zero, &zero, &zero, &zero, NULL) );
    196   CPPUNIT_ASSERT_EQUAL( zero, helper );
     196  CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &zero, &zero, &zero, &zero, NULL) );
     197  CPPUNIT_ASSERT_EQUAL( zero, fixture );
    197198
    198199  // four vectors equal to unit
    199   CPPUNIT_ASSERT_EQUAL( false, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &unit, &unit, &unit, NULL) );
    200   CPPUNIT_ASSERT_EQUAL( zero, helper );
     200  CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &unit, &unit, &unit, NULL) );
     201  CPPUNIT_ASSERT_EQUAL( zero, fixture );
    201202
    202203  // two equal lines
    203   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &two, NULL) );
    204   CPPUNIT_ASSERT_EQUAL( unit, helper );
     204  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &two, NULL) );
     205  CPPUNIT_ASSERT_EQUAL( unit, fixture );
    205206
    206207  // line from (1,0,0) to (2,1,0) cuts line from (1,0,0) to (0,1,0) at ???
    207   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &otherunit, NULL) );
    208   CPPUNIT_ASSERT_EQUAL( unit, helper );
     208  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &otherunit, NULL) );
     209  CPPUNIT_ASSERT_EQUAL( unit, fixture );
    209210
    210211  // line from (1,0,0) to (0,0,0) cuts line from (0,0,0) to (2,1,0) at ???
    211   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &zero, &zero, &two, NULL) );
    212   CPPUNIT_ASSERT_EQUAL( zero, helper );
     212  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &zero, &zero, &two, NULL) );
     213  CPPUNIT_ASSERT_EQUAL( zero, fixture );
    213214
    214215  // line from (1,0,0) to (2,1,0) cuts line from (0,0,0) to (0,1,0) at ???
    215   CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &zero, &otherunit, NULL) );
    216   CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), helper );
    217 };
     216  CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &zero, &otherunit, NULL) );
     217  CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), fixture );
     218};
     219
     220/** UnitTest for vector rotations.
     221 */
     222void VectorTest::VectorRotationTest()
     223{
     224  fixture.Init(-1.,0.,0.);
     225
     226  // zero vector does not change
     227  fixture.CopyVector(&zero);
     228  fixture.RotateVector(&unit, 1.);
     229  CPPUNIT_ASSERT_EQUAL( zero, fixture );
     230
     231  fixture.RotateVector(&two, 1.);
     232  CPPUNIT_ASSERT_EQUAL( zero,  fixture);
     233
     234  // vector on axis does not change
     235  fixture.CopyVector(&unit);
     236  fixture.RotateVector(&unit, 1.);
     237  CPPUNIT_ASSERT_EQUAL( unit, fixture );
     238
     239  fixture.RotateVector(&unit, 1.);
     240  CPPUNIT_ASSERT_EQUAL( unit, fixture );
     241
     242  // rotations
     243  fixture.CopyVector(&otherunit);
     244  fixture.RotateVector(&unit, M_PI);
     245  CPPUNIT_ASSERT_EQUAL( Vector(0.,-1.,0.), fixture );
     246
     247  fixture.CopyVector(&otherunit);
     248  fixture.RotateVector(&unit, 2. * M_PI);
     249  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     250
     251  fixture.CopyVector(&otherunit);
     252  fixture.RotateVector(&unit, 0);
     253  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     254
     255  fixture.Init(0.,0.,1.);
     256  fixture.RotateVector(&notunit, M_PI);
     257  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     258}
     259
     260/**
     261 * UnitTest for Vector::IsInParallelepiped().
     262 */
     263void VectorTest::IsInParallelepipedTest()
     264{
     265  double parallelepiped[NDIM*NDIM];
     266  parallelepiped[0] = 1;
     267  parallelepiped[1] = 0;
     268  parallelepiped[2] = 0;
     269  parallelepiped[3] = 0;
     270  parallelepiped[4] = 1;
     271  parallelepiped[5] = 0;
     272  parallelepiped[6] = 0;
     273  parallelepiped[7] = 0;
     274  parallelepiped[8] = 1;
     275
     276  fixture.CopyVector(zero);
     277  CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     278  fixture.Init(2.5,2.5,2.5);
     279  CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     280  fixture.Init(1.,1.,1.);
     281  CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     282  fixture.Init(3.5,3.5,3.5);
     283  CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     284  fixture.Init(2.,2.,2.);
     285  CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     286  fixture.Init(2.,3.,2.);
     287  CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     288  fixture.Init(-2.,2.,-1.);
     289  CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) );
     290}
     291
    218292
    219293/********************************************** Main routine **************************************/
Note: See TracChangeset for help on using the changeset viewer.