source: src/Actions/Makefile.am@ 0275ad

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 0275ad was 3f9eba, checked in by Frederik Heber <heber@…>, 14 years ago

New classes for random number generation.

  • we use boost::random as a basis. It implements a lot of pseudo-random engines and various distributions. However, everything is templated and there are no base classes to store prototypes of the instances in a map. We need these such that we are able to offer the user at run-time every choice possible.
  • Hence, we need to encapsulate all engines, distributions and (engine, distribution) tuples: RandomNumber..._Encapsulation classes.
  • each with an abstract base class as the interface: RandomNumber... classes.
  • RandomNumberGeneratorFactory is then a singleton that contains all the Maps and tables:
    • from string (user input is string) to enum (storing enum is more efficient that a lengthy string)
    • from enum to instance (of the abstract class).
  • RandomNumberGeneratorFactory is a singleton to allow for global control of what kind of numbers are generated, hence there are also two new Actions:
  • The user in the end only uses two classes: RandomNumberGeneratorFactory and RandomNumberGenerator. The first only for obtaining a specific variant of the latter and the latter to generate the numbers (operator() is passed on to boost::variate_generator::operator()).
  • There is a unit test on the RandomNumberGeneratorFactory that checks some of the table entries and whether one of the RandomNumberGenerator is working (uniform_smallint so far).

Details:

  • As there are ~25 engines and ~15 distributions this makes an enormous amount of possible combinations. To automatically construct these, we use some stuff from boost::preprocessor in order to generate enums, tables and maps automatically just from a sequence of the typenames.
  • we have be-friended the unit test a lot to allow for easier testing, e.g. we need access to internal ..._type to test whether their type is correct.
  • cleanUp() purges the instance of RandomNumberGeneratorFactory.
  • in RandomNumber..._Encapsulation::name() functions are only used for the unit tests.
  • this all resides in its own subfolder RandomNumbers. So far, it is completely independent of everything else.
  • Property mode set to 100644
File size: 11.4 KB
Line 
1# PLEASE adhere to the alphabetical ordering in this Makefile!
2# Also indentation by a single tab
3
4INCLUDES = -I$(top_srcdir)/src
5
6AM_LDFLAGS = -ldl
7AM_CPPFLAGS = ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS}
8
9ACTIONSSOURCE = \
10 ${ANALYSISACTIONSOURCE} \
11 ${ATOMACTIONSOURCE} \
12 ${CMDACTIONSOURCE} \
13 ${FRAGMENTATIONACTIONSOURCE} \
14 ${MOLECULEACTIONSOURCE} \
15 ${PARSERACTIONSOURCE} \
16 ${RANDONNUMBERSSOURCE} \
17 ${SELECTIONATOMACTIONSOURCE} \
18 ${SELECTIONMOLECULEACTIONSOURCE} \
19 ${TESSELATIONACTIONSOURCE} \
20 ${WORLDACTIONSOURCE} \
21 RedoAction.cpp \
22 UndoAction.cpp \
23 ValueStorage.cpp
24
25ACTIONSHEADER = \
26 ${ANALYSISACTIONHEADER} \
27 ${ATOMACTIONHEADER} \
28 ${CMDACTIONHEADER} \
29 ${FRAGMENTATIONACTIONHEADER} \
30 ${MOLECULEACTIONHEADER} \
31 ${PARSERACTIONHEADER} \
32 ${RANDONNUMBERSHEADER} \
33 ${SELECTIONATOMACTIONHEADER} \
34 ${SELECTIONMOLECULEACTIONHEADER} \
35 ${TESSELATIONACTIONHEADER} \
36 ${WORLDACTIONHEADER} \
37 ValueStorage.hpp \
38 Values.hpp
39
40ANALYSISACTIONSOURCE = \
41 AnalysisAction/DipoleAngularCorrelationAction.cpp \
42 AnalysisAction/MolecularVolumeAction.cpp \
43 AnalysisAction/PairCorrelationAction.cpp \
44 AnalysisAction/PointCorrelationAction.cpp \
45 AnalysisAction/PrincipalAxisSystemAction.cpp \
46 AnalysisAction/SurfaceCorrelationAction.cpp
47ANALYSISACTIONHEADER = \
48 AnalysisAction/DipoleAngularCorrelationAction.hpp \
49 AnalysisAction/MolecularVolumeAction.hpp \
50 AnalysisAction/PairCorrelationAction.hpp \
51 AnalysisAction/PointCorrelationAction.hpp \
52 AnalysisAction/PrincipalAxisSystemAction.hpp \
53 AnalysisAction/SurfaceCorrelationAction.hpp
54
55ATOMACTIONSOURCE = \
56 AtomAction/AddAction.cpp \
57 AtomAction/ChangeElementAction.cpp \
58 AtomAction/RemoveAction.cpp \
59 AtomAction/RotateAroundOriginByAngleAction.cpp \
60 AtomAction/TranslateAction.cpp
61ATOMACTIONHEADER = \
62 AtomAction/AddAction.hpp \
63 AtomAction/ChangeElementAction.hpp \
64 AtomAction/RemoveAction.cpp \
65 AtomAction/RotateAroundOriginByAngleAction.hpp \
66 AtomAction/TranslateAction.hpp
67
68CMDACTIONSOURCE = \
69 CommandAction/BondLengthTableAction.cpp \
70 CommandAction/ElementDbAction.cpp \
71 CommandAction/FastParsingAction.cpp \
72 CommandAction/HelpAction.cpp \
73 CommandAction/VerboseAction.cpp \
74 CommandAction/VersionAction.cpp \
75 CommandAction/WarrantyAction.cpp
76CMDACTIONHEADER = \
77 CommandAction/BondLengthTableAction.hpp \
78 CommandAction/ElementDbAction.hpp \
79 CommandAction/FastParsingAction.hpp \
80 CommandAction/HelpAction.hpp \
81 CommandAction/VerboseAction.hpp \
82 CommandAction/VersionAction.hpp \
83 CommandAction/WarrantyAction.hpp
84
85FRAGMENTATIONACTIONSOURCE = \
86 FragmentationAction/ConstructBondGraphAction.cpp \
87 FragmentationAction/DepthFirstSearchAction.cpp \
88 FragmentationAction/FragmentationAction.cpp \
89 FragmentationAction/SubgraphDissectionAction.cpp
90FRAGMENTATIONACTIONHEADER = \
91 FragmentationAction/ConstructBondGraphAction.hpp \
92 FragmentationAction/DepthFirstSearchAction.hpp \
93 FragmentationAction/FragmentationAction.hpp \
94 FragmentationAction/SubgraphDissectionAction.hpp
95
96MOLECULEACTIONSOURCE = \
97 MoleculeAction/BondFileAction.cpp \
98 MoleculeAction/ChangeNameAction.cpp \
99 MoleculeAction/CopyAction.cpp \
100 MoleculeAction/FillWithMoleculeAction.cpp \
101 MoleculeAction/FillVoidWithMoleculeAction.cpp \
102 MoleculeAction/LinearInterpolationofTrajectoriesAction.cpp \
103 MoleculeAction/LoadAction.cpp \
104 MoleculeAction/RotateAroundSelfByAngleAction.cpp \
105 MoleculeAction/RotateToPrincipalAxisSystemAction.cpp \
106 MoleculeAction/SaveAction.cpp \
107 MoleculeAction/SaveAdjacencyAction.cpp \
108 MoleculeAction/SaveBondsAction.cpp \
109 MoleculeAction/SaveTemperatureAction.cpp \
110 MoleculeAction/SuspendInWaterAction.cpp \
111 MoleculeAction/VerletIntegrationAction.cpp
112MOLECULEACTIONHEADER = \
113 MoleculeAction/BondFileAction.hpp \
114 MoleculeAction/ChangeNameAction.hpp \
115 MoleculeAction/CopyAction.hpp \
116 MoleculeAction/FillWithMoleculeAction.hpp \
117 MoleculeAction/FillVoidWithMoleculeAction.hpp \
118 MoleculeAction/LinearInterpolationofTrajectoriesAction.hpp \
119 MoleculeAction/LoadAction.cpp \
120 MoleculeAction/RotateAroundSelfByAngleAction.hpp \
121 MoleculeAction/RotateToPrincipalAxisSystemAction.hpp \
122 MoleculeAction/SaveAction.hpp \
123 MoleculeAction/SaveAdjacencyAction.hpp \
124 MoleculeAction/SaveBondsAction.hpp \
125 MoleculeAction/SaveTemperatureAction.hpp \
126 MoleculeAction/SuspendInWaterAction.hpp \
127 MoleculeAction/VerletIntegrationAction.hpp
128
129RANDONNUMBERSSOURCE =\
130 RandomNumbersAction/SetRandomNumbersDistributionAction.cpp \
131 RandomNumbersAction/SetRandomNumbersEngineAction.cpp
132
133RANDONNUMBERSHEADER =\
134 RandomNumbersAction/SetRandomNumbersDistributionAction.hpp \
135 RandomNumbersAction/SetRandomNumbersEngineAction.hpp
136
137SELECTIONATOMACTIONSOURCE = \
138 SelectionAction/Atoms/AllAtomsAction.cpp \
139 SelectionAction/Atoms/AllAtomsInsideCuboidAction.cpp \
140 SelectionAction/Atoms/AllAtomsInsideSphereAction.cpp \
141 SelectionAction/Atoms/AllAtomsOfMoleculeAction.cpp \
142 SelectionAction/Atoms/AtomByElementAction.cpp \
143 SelectionAction/Atoms/AtomByIdAction.cpp \
144 SelectionAction/Atoms/ClearAllAtomsAction.cpp \
145 SelectionAction/Atoms/NotAllAtomsAction.cpp \
146 SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.cpp \
147 SelectionAction/Atoms/NotAllAtomsInsideSphereAction.cpp \
148 SelectionAction/Atoms/NotAllAtomsOfMoleculeAction.cpp \
149 SelectionAction/Atoms/NotAtomByElementAction.cpp \
150 SelectionAction/Atoms/NotAtomByIdAction.cpp
151SELECTIONATOMACTIONHEADER = \
152 SelectionAction/Atoms/AllAtomsAction.hpp \
153 SelectionAction/Atoms/AllAtomsInsideCuboidAction.hpp \
154 SelectionAction/Atoms/AllAtomsInsideSphereAction.hpp \
155 SelectionAction/Atoms/AllAtomsOfMoleculeAction.hpp \
156 SelectionAction/Atoms/AtomByElementAction.hpp \
157 SelectionAction/Atoms/AtomByIdAction.hpp \
158 SelectionAction/Atoms/ClearAllAtomsAction.hpp \
159 SelectionAction/Atoms/NotAllAtomsAction.hpp \
160 SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.hpp \
161 SelectionAction/Atoms/NotAllAtomsInsideSphereAction.hpp \
162 SelectionAction/Atoms/NotAllAtomsOfMoleculeAction.hpp \
163 SelectionAction/Atoms/NotAtomByElementAction.hpp \
164 SelectionAction/Atoms/NotAtomByIdAction.hpp
165
166SELECTIONMOLECULEACTIONSOURCE = \
167 SelectionAction/Molecules/AllMoleculesAction.cpp \
168 SelectionAction/Molecules/ClearAllMoleculesAction.cpp \
169 SelectionAction/Molecules/MoleculeByFormulaAction.cpp \
170 SelectionAction/Molecules/MoleculeByIdAction.cpp \
171 SelectionAction/Molecules/MoleculeByNameAction.cpp \
172 SelectionAction/Molecules/MoleculeByOrderAction.cpp \
173 SelectionAction/Molecules/MoleculeOfAtomAction.cpp \
174 SelectionAction/Molecules/NotAllMoleculesAction.cpp \
175 SelectionAction/Molecules/NotMoleculeByFormulaAction.cpp \
176 SelectionAction/Molecules/NotMoleculeByIdAction.cpp \
177 SelectionAction/Molecules/NotMoleculeByNameAction.cpp \
178 SelectionAction/Molecules/NotMoleculeByOrderAction.cpp \
179 SelectionAction/Molecules/NotMoleculeOfAtomAction.cpp
180SELECTIONMOLECULEACTIONHEADER = \
181 SelectionAction/Molecules/AllMoleculesAction.hpp \
182 SelectionAction/Molecules/ClearAllMoleculesAction.hpp \
183 SelectionAction/Molecules/MoleculeByFormulaAction.hpp \
184 SelectionAction/Molecules/MoleculeByIdAction.hpp \
185 SelectionAction/Molecules/MoleculeByNameAction.hpp \
186 SelectionAction/Molecules/MoleculeByOrderAction.hpp \
187 SelectionAction/Molecules/MoleculeOfAtomAction.hpp \
188 SelectionAction/Molecules/NotAllMoleculesAction.hpp \
189 SelectionAction/Molecules/NotMoleculeByFormulaAction.hpp \
190 SelectionAction/Molecules/NotMoleculeByIdAction.hpp \
191 SelectionAction/Molecules/NotMoleculeByNameAction.hpp \
192 SelectionAction/Molecules/NotMoleculeByOrderAction.hpp \
193 SelectionAction/Molecules/NotMoleculeOfAtomAction.hpp
194
195TESSELATIONACTIONSOURCE = \
196 TesselationAction/ConvexEnvelopeAction.cpp \
197 TesselationAction/NonConvexEnvelopeAction.cpp
198TESSELATIONACTIONHEADER = \
199 TesselationAction/ConvexEnvelopeAction.hpp \
200 TesselationAction/NonConvexEnvelopeAction.hpp
201
202WORLDACTIONSOURCE = \
203 WorldAction/AddEmptyBoundaryAction.cpp \
204 WorldAction/BoundInBoxAction.cpp \
205 WorldAction/CenterInBoxAction.cpp \
206 WorldAction/CenterOnEdgeAction.cpp \
207 WorldAction/ChangeBoxAction.cpp \
208 WorldAction/InputAction.cpp \
209 WorldAction/OutputAction.cpp \
210 WorldAction/RepeatBoxAction.cpp \
211 WorldAction/ScaleBoxAction.cpp \
212 WorldAction/SetDefaultNameAction.cpp \
213 WorldAction/SetGaussianBasisAction.cpp \
214 WorldAction/SetOutputFormatsAction.cpp
215WORLDACTIONHEADER = \
216 WorldAction/AddEmptyBoundaryAction.hpp \
217 WorldAction/BoundInBoxAction.hpp \
218 WorldAction/CenterInBoxAction.hpp \
219 WorldAction/CenterOnEdgeAction.hpp \
220 WorldAction/ChangeBoxAction.hpp \
221 WorldAction/InputAction.hpp \
222 WorldAction/OutputAction.hpp \
223 WorldAction/RepeatBoxAction.hpp \
224 WorldAction/ScaleBoxAction.hpp \
225 WorldAction/SetDefaultNameAction.hpp \
226 WorldAction/SetGaussianBasisAction.hpp \
227 WorldAction/SetOutputFormatsAction.hpp
228
229
230lib_LTLIBRARIES = libMolecuilderActions.la
231libMolecuilderActions_la_includedir = $(includedir)/MoleCuilder/Actions/
232libMolecuilderActions_la_LIBADD = \
233 ../Parser/libMolecuilderParser.la \
234 ../Shapes/libMolecuilderShapes.la \
235 ${CodePatterns_LIBS}
236# ../UIElements/libMolecuilderUI.la
237nobase_libMolecuilderActions_la_include_HEADERS = ${ACTIONSHEADER}
238
239## Define the source file list for the "libexample-@MOLECUILDER_API_VERSION@.la"
240## target. Note that @MOLECUILDER_API_VERSION@ is not interpreted by Automake and
241## will therefore be treated as if it were literally part of the target name,
242## and the variable name derived from that.
243## The file extension .cc is recognized by Automake, and makes it produce
244## rules which invoke the C++ compiler to produce a libtool object file (.lo)
245## from each source file. Note that it is not necessary to list header files
246## which are already listed elsewhere in a _HEADERS variable assignment.
247libMolecuilderActions_la_SOURCES = ${ACTIONSSOURCE}
248
249## Instruct libtool to include ABI version information in the generated shared
250## library file (.so). The library ABI version is defined in configure.ac, so
251## that all version information is kept in one place.
252libMolecuilderActions_la_LDFLAGS = -version-info $(MOLECUILDER_SO_VERSION)
253
254## The generated configuration header is installed in its own subdirectory of
255## $(libdir). The reason for this is that the configuration information put
256## into this header file describes the target platform the installed library
257## has been built for. Thus the file must not be installed into a location
258## intended for architecture-independent files, as defined by the Filesystem
259## Hierarchy Standard (FHS).
260## The nodist_ prefix instructs Automake to not generate rules for including
261## the listed files in the distribution on 'make dist'. Files that are listed
262## in _HEADERS variables are normally included in the distribution, but the
263## configuration header file is generated at configure time and should not be
264## shipped with the source tarball.
265#libMolecuilderActions_libincludedir = $(libdir)/MoleCuilder/include
266#nodist_libMolecuilderActions_libinclude_HEADERS = $(top_builddir)/libmolecuilder_config.h
267
268## Install the generated pkg-config file (.pc) into the expected location for
269## architecture-dependent package configuration information. Occasionally,
270## pkg-config files are also used for architecture-independent data packages,
271## in which case the correct install location would be $(datadir)/pkgconfig.
272#pkgconfigdir = $(libdir)/pkgconfig
273#pkgconfig_DATA = $(top_builddir)/MoleCuilder.pc
274
275unity.cpp:
276 echo "" > unity.cpp; \
277 list='$(ACTIONSSOURCE)'; for file in $$list; do \
278 echo "#include \"$(srcdir)/$$file\"" >> unity.cpp; \
279 done;
280
281MOSTLYCLEANFILES = unity.cpp
Note: See TracBrowser for help on using the repository browser.