source: src/defs.hpp@ 9cd807

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 9cd807 was 88b400, checked in by Frederik Heber <heber@…>, 14 years ago

converted #define's to enums, consts and typedefs [Meyers, "Effective C++", item 1].

basic changes:

  • #define bla 1.3 -> const double bla = 1.3
  • #define bla "test" -> const char * const bla = "test
  • use class specific constants! (HULLEPSILON)

const int Class::bla = 1.3; (in .cpp)
static const int bla; (in .hpp inside class private section)

  • "enum hack": #define bla 5 -> enum { bla = 5 };
    • if const int bla=5; impossible
    • e.g. necessary if constant is used in array declaration (int blabla[bla];)

details:

  • new file defs.cpp where const double reside in and are referenced by extern "C" const double
  • joiner.cpp: main() had to be changed due to concatenation of two #define possible, of two const char * not
  • class specific constants: HULLEPSILON, BONDTHRESHOLD, SPHERERADIUS
  • extended GetPathLengthonCircumCircle to additional parameter HULLEPSILON
  • Property mode set to 100755
File size: 5.1 KB
Line 
1/** \file defs.hpp
2 *
3 * Constant definitons and enumerations.
4 *
5 */
6
7#ifndef DEFS_HPP_
8#define DEFS_HPP_
9
10enum { NDIM = 3 }; //!< number of spatial dimensions
11enum { MAX_ELEMENTS = 128}; //!< maximum number of elements for certain lookup tables
12
13extern "C" const double MYEPSILON; //!< machine epsilon precision
14extern "C" const double AtomicLengthToAngstroem; //!< conversion factor from atomic length/bohrradius to angstroem
15extern "C" const double AtomicEnergyToKelvin; //!< conversion factor from atomic energy to kelvin via boltzmann factor
16extern "C" const double KelvinToAtomicTemperature; //!< conversion factor for Kelvin to atomic temperature (Hartree over k_B)
17extern "C" const double KelvinToeV; //!< conversion factor for Kelvin to Ht (k_B * T = energy), thus Boltzmann constant in eV/K
18extern "C" const double AtomicMassUnitsToeV; //!< conversion factor for atomic weight in units to mass in eV
19extern "C" const double AtomicMassUnitsToHt; //!< conversion factor for atomic weight in units to mass in Ht (protonmass/electronmass * electron_mass_in_Ht
20extern "C" const double ElectronMass_Ht; //!< electron mass in Ht
21extern "C" const double ElectronMass_eV; //!< electron mass in eV
22extern "C" const double Units2Electronmass; //!< atomic mass unit in eV/ electron mass in eV = 1 822.88863
23extern "C" const double Atomictime2Femtoseconds; //!< Atomictime in fs
24
25extern "C" const char* VERSIONSTRING;
26
27extern "C" const char* LocalPath;
28
29//enum BondOrderScheme { NoScheme, BottomUp, TopDown, ANOVA, Combined }; //!< Fragmentation scheme used in BOSS
30
31enum EdgeType { Undetermined, TreeEdge, BackEdge }; //!< edge type in a graph after Depth-First-Search analysis.
32
33enum Shading { white, lightgray, darkgray, black }; //!< color in Breadth-First-Search analysis
34
35
36
37//enum CutCyclicBond { KeepBond, SaturateBond }; //!< Saturation scheme either atom- or bondwise
38
39// Specifting whether a value in the parameter file must be specified or is optional
40enum necessity { optional, //!< parameter is optional, if not given sensible value is chosen
41 critical //!< parameter must be given or programme won't initiate
42 };
43
44// Specifying the status of the on command line given config file
45enum ConfigStatus { absent, empty, present };
46
47// Specifying the cast type to be read of a parameter, see ParseForParameter()
48enum value_type { string_type, double_type, int_type, row_int, row_double, grid, lower_trigrid, upper_trigrid};
49
50// maximum length of any char array
51enum { MAXSTRINGSIZE = 255 };
52
53// various standard filenames
54extern "C" const char *DEFAULTCONFIG; //!< default filename of config file
55extern "C" const char *CONVEXENVELOPE; //!< default filename of convex envelope tecplot data file
56extern "C" const char *KEYSETFILE; //!< default filename of BOSSANOVA key sets file
57extern "C" const char *ADJACENCYFILE; //!< default filename of BOSSANOVA adjacancy file
58extern "C" const char *TEFACTORSFILE; //!< default filename of BOSSANOVA total energy factors file
59extern "C" const char *FORCESFILE; //!< default filename of BOSSANOVA force factors file
60extern "C" const char *HCORRECTIONSUFFIX; //!< default filename of BOSSANOVA H correction file (unwanted saturation interaction)
61extern "C" const char *FITCONSTANTSUFFIX; //!< suffix of default filename of BOSSANOVA fit constants file (unwanted saturation interaction)
62extern "C" const char *SHIELDINGSUFFIX; //!< default filename of BOSSANOVA shieldings file
63extern "C" const char *SHIELDINGPASSUFFIX; //!< default filename of BOSSANOVA shieldings PAS file
64extern "C" const char *ORDERATSITEFILE; //!< default filename of BOSSANOVA Bond Order at each atom file
65extern "C" const char *ENERGYPERFRAGMENT; //!< default filename of BOSSANOVA Energy contribution Per Fragment file
66extern "C" const char *FRAGMENTPREFIX; //!< default filename prefix of BOSSANOVA fragment config and directories
67extern "C" const char *STANDARDCONFIG; //!< default filename of standard config file
68extern "C" const char *STANDARDELEMENTSDB; //!< default filename of elements data base with masses, Z, VanDerWaals radii, ...
69extern "C" const char *STANDARDVALENCEDB; //!< default filename of valence number per element database
70extern "C" const char *STANDARDORBITALDB; //!< default filename of orbitals per element database
71extern "C" const char *STANDARDHBONDDISTANCEDB; //!< default filename of typial bond distance to hydrogen database
72extern "C" const char *STANDARDHBONDANGLEDB; //!< default filename of typial bond angle to hydrogen database
73
74// some values
75extern "C" const double SOLVENTDENSITY_A;
76extern "C" const double SOLVENTDENSITY_a0;
77
78
79extern "C" const int UPDATECOUNT; //!< update ten sites per BOSSANOVA interval
80
81extern "C" const int STD_MENU_LENGTH;
82extern "C" const char STD_MENU_TITLE_SPACER;
83extern "C" const char STD_SEPERATOR_SPACER;
84
85extern "C" const char *MOLECUILDER_NAME;
86
87const extern unsigned int MAX_POOL_FRAGMENTATION;
88const extern unsigned int MAX_FRAGMENTATION_SKIPS;
89
90#endif /*DEFS_HPP_*/
Note: See TracBrowser for help on using the repository browser.