source: src/Fragmentation/Summation/SetValues/SamplingGridProperties.hpp@ e0ae58d

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
Last change on this file since e0ae58d was b5f548, checked in by Frederik Heber <heber@…>, 11 years ago

FIX: Shifted all helper functions from SamplingGrid to ..Properties.

  • these functions just rely on member values of ..Properties and allow for using the properties as replacement to the full grid when its values (and the window) are of no more interest.
  • Property mode set to 100644
File size: 3.7 KB
Line 
1/*
2 * SamplingGridProperties.hpp
3 *
4 * Created on: 25.07.2012
5 * Author: heber
6 */
7
8#ifndef SAMPLINGGRIDPROPERTIES_HPP_
9#define SAMPLINGGRIDPROPERTIES_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "boost/serialization/export.hpp"
17#include "boost/serialization/array.hpp"
18
19/** This class stores a sample function on a three-dimensional grid.
20 *
21 */
22class SamplingGridProperties {
23public:
24 /** Constructor for class SamplingGridProperties.
25 *
26 * \param _begin offset of grid
27 * \param _end edge length per axis
28 * \param _level number of gridpoints as \f$2^{\mathrm{level}}\f$ per unit(!) length
29 */
30 SamplingGridProperties(
31 const double _begin[3],
32 const double _end[3],
33 const int _level);
34
35 /** Copy constructor for class SamplingGridProperties.
36 *
37 * \param _props instance to copy from
38 */
39 SamplingGridProperties(const SamplingGridProperties &_props);
40
41 /** Default constructor.
42 */
43 SamplingGridProperties();
44
45 virtual ~SamplingGridProperties();
46
47 /** Checks whether another instance is compatible with this one.
48 *
49 * \note Compatibility implies only that both grids have same grid spacing.
50 *
51 * \param _props other properties to check against
52 * \return true - are compatible, false - else
53 */
54 bool isCompatible(const SamplingGridProperties &_props) const
55 {
56 return level == _props.level;
57 }
58
59 /** Assignment operator.
60 *
61 * \param other other instance to assign ourselves to
62 */
63 SamplingGridProperties& operator=(const SamplingGridProperties& other);
64
65 /** Equality operator for class SamplingGridProperties.
66 *
67 * \param _props other object to compare to
68 */
69 bool operator==(const SamplingGridProperties &_props) const;
70
71 /** Inequality operator for class SamplingGridProperties.
72 *
73 * \param _props other object to compare to
74 */
75 bool operator!=(const SamplingGridProperties &_props) const
76 {
77 return (!(*this == _props));
78 }
79
80 /** Returns the volume of the domain for this sampled function.
81 *
82 * @return volume
83 */
84 const double getVolume() const;
85
86 /** Returns the total number of gridpoints of the discrete mesh covering the volume.
87 *
88 * @return number of gridpoints sampled_values should have
89 */
90 const size_t getTotalGridPoints() const;
91
92 /** Returns the number of grid points per axis.
93 *
94 * @return number of grid points per unit length
95 */
96 const size_t getGridPointsPerAxis() const;
97
98 /** Returns the length of the domain for the given \a axis.
99 *
100 * \param axis axis for which to get step length
101 * \return domain length for the given axis, i.e. end - begin
102 */
103 const double getTotalLengthPerAxis(const size_t axis) const;
104
105 /** Returns the real step length from one discrete grid point to the next.
106 *
107 * \param axis axis for which to get step length
108 * \return step length for the given axis, as domain length over getGridPointsPerAxis()
109 */
110 const double getDeltaPerAxis(const size_t axis) const;
111
112
113public:
114 //!> offset of grid
115 double begin[3];
116 //!> size of grid, i.e. edge length per axis of domain
117 double end[3];
118 //!> level, i.e. \f$2^{\mathrm{level}}\f$ grid points per axis per unit(!) length
119 int level;
120
121private:
122
123 friend class boost::serialization::access;
124 // serialization
125 template <typename Archive>
126 void serialize(Archive& ar, const unsigned int version)
127 {
128 int i;
129 for (i=0; i<3; ++i)
130 ar & begin[i];
131 for (i=0; i<3; ++i)
132 ar & end[i];
133 ar & level;
134 }
135
136};
137
138// we need to give this class a unique key for serialization
139// its is only serialized through its base class FragmentJob
140BOOST_CLASS_EXPORT_KEY(SamplingGridProperties)
141
142// define inline functions
143#include "SamplingGridProperties_inline.hpp"
144
145#endif /* SAMPLINGGRIDPROPERTIES_HPP_ */
Note: See TracBrowser for help on using the repository browser.