Changeset 48d20d for src/documentation


Ignore:
Timestamp:
May 3, 2013, 11:58:26 AM (12 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:
661d2d
Parents:
57f14c
git-author:
Frederik Heber <heber@…> (04/09/13 07:44:29)
git-committer:
Frederik Heber <heber@…> (05/03/13 11:58:26)
Message:

Added new action FitPotentialAction to fit empirical potentials.

  • moved functionality from levmartester into new Action.
  • removed levmartester.
  • needs both enable-levmar and path to libs/include with-levmar. This allows checking as distinct enable switch.
  • added regression test Fragmentation/FitPotential for morse and harmonic_angle fit to water molecule. Using awk to check on L2 error.
  • added take-best-of option such that fits is done as many times and best (in terms of l2 error) is used. This should make regression test FitPotential more stable (right now we take best of 5).
  • DOCU: extended construct documentation due to new PotentialTypes construct.
  • DOCU: made construct lists items appear alphabetically.
  • DOCU: extended installation documentation with VTK and levmar.
  • DOCU: also URLs for scafacos, VTK, and levmar.
Location:
src/documentation
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/documentation/constructs/constructs.dox

    r57f14c r48d20d  
    3131 *  \li \ref observers
    3232 *  \li \ref parameters
    33  *  \li \ref parsers
    34  *  \li \ref potentials
     33 *  \li \ref parsers "Parsers"
     34 *  \li \ref potentials "Potentials"
    3535 *  \li \ref qt-gui
    3636 *  \li \ref queries
     
    4747 *
    4848 *
    49  * \date 2013-02-07
     49 * \date 2013-04-09
    5050 *
    5151 */
  • src/documentation/constructs/potentials.dox

    r57f14c r48d20d  
    7171 *    perform the fit.
    7272 *
    73  * \section potentials-howto Howto use the potentials
     73 * \section potentials-howto-use Howto use the potentials
    7474 *
    7575 *  We just give a brief run-down in terms of code on how to use the potentials.
    76  *  Here, we just describe what to do in order to perform the fitting.
     76 *  Here, we just describe what to do in order to perform the fitting. This is
     77 *  basically what is implemented in FragmentationFitPotentialAction.
    7778 *
    7879 *  \code
     
    102103 *  // give initial parameter
    103104 *  FunctionModel::parameters_t params(PairPotential_Angle::MAXPARAMS, 0.);
    104  *  ... set some initial parameters
     105 *  // ... set some potential-specific initial parameters in params struct
    105106 *  angle.setParameters(params);
    106107 *
     
    123124 *  // evaluate
    124125 *  FunctionModel::arguments_t args;
    125  *  .. initialise args to the desired distances
     126 *  // .. initialise args to the desired distances
    126127 *  const double value = angle(args)[0]; // output is a vector!
    127128 *  \endcode
    128129 *
    129  * \date 2012-11-28
     130 * \section potentials-stability-of-fit note in stability of fit
     131 *
     132 *  As we always start from random initial parameters (within a certain sensible
     133 *  range at least), the non-linear fit does not always converge. For this case
     134 *  the FragmentationFitPotentialAction has the option "take-best-of" to allow
     135 *  for multiple fits where the best (in terms of l2 error) is taken eventually.
     136 *
     137 * \section potentials-howto-add Howto add new potentials
     138 *
     139 *  Adding a new potential requires the following:
     140 *  -# Add the new modules to Potentials/Specifics
     141 *  -# Add a unit test on the potential in Potentials/Specifics/unittests
     142 *  -# Give the potential a type name and add it to PotentialTypes.def. Note
     143 *     that the name must not contain white space.
     144 *  -# Add the potential name as case to PotentialFactory such that it knows
     145 *     how to instantiate your new potential when requested.
     146 *
     147 * PotentialTypes.def contains a boost::preprocessor sequence of all
     148 * potential names. PotentialFactory uses this sequence to build its enum to
     149 * type map and inverse which the user sees when specifying the potential to
     150 * fit via PotentialTypeValidator.
     151 *
     152 *
     153 * \date 2013-04-09
    130154 */
  • src/documentation/install.dox

    r57f14c r48d20d  
    5555 *    -# MPQC: see below for instructions
    5656 *    -# ScaFaCoS: see below for instructions
     57 *    -# VTK: see below for instructions
     58 *    -# levmar: see below for instructions
    5759 *
    5860 *  If you are programming with or for MoleCuilder, the following packages are
     
    109111 *  \subsubsection install-prerequisites-other-scafacos ScaFaCoS
    110112 *
    111  *  ScaFaCoS is a library of fast Coulomb solvers, created by the same-named BMBF
    112  *  funded project. The library contains Versatile MultiGrid (vmg) as one of its
    113  *  solvers which is used in the BOSSANOVA scheme for the calculation of
    114  *  long-range forces.
     113 *  ScaFaCoS (http://www.scafacos.org/) is a library of fast Coulomb solvers,
     114 *  created by the same-named BMBF funded project. The library contains Versatile
     115 *  MultiGrid (vmg) as one of its solvers which is used in the BOSSANOVA scheme
     116 *  for the calculation of long-range forces.
    115117 *
    116118 *  ScaFaCoS requires the following packages to compile:
     
    118120 *  -# F2C: libf2c2-dev
    119121 *  -# Fortran compiler: gfortan
     122 *  -# VTK >=5.10
     123 *
     124 *  Firstly, you should obtain a recent copy of the visualization tool kit (VTK)
     125 *  (http://www.vtk.org/) and compile as
     126 *  \code
     127 *  export MPI_HOME=$( which mpirun | sed 's#/bin/mpirun##g')
     128 *  export CXX_FLAGS=-fPIC
     129 *  cmake -DCMAKE_INSTALL_PREFIX:PATH=<install-path> \
     130 *        -DBUILD_SHARED_LIBS=TRUE \
     131 *        -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF \
     132 *        -DCMAKE_INSTALL_RPATH:PATH=<install-path>/lib/vtk-<install-version> \
     133 *        -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
     134 *        -DCMAKE_SKIP_BUILD_RPATH:BOOL=OFF \
     135 *        -DVTK_USE_PARALLEL:BOOL=ON \
     136 *        -DVTK_USE_MPI:BOOL=ON \
     137 *        -DMPI_LIBRARY:PATH=${MPI_HOME}/lib/libmpi.so \
     138 *        -DMPI_EXTRA_LIBRARY:PATH=${MPI_HOME}/lib/libmpi_cxx.so \
     139 *        -DMPI_INCLUDE_PATH:PATH=${MPI_HOME}/include/mpi \
     140 *        ..
     141 *  make -j4
     142 *  make install
     143 *  \endcode
     144 *  where we force rpath-linking and shared libraries (MPI is actually not
     145 *  required here).
     146 *
    120147 *  Compilation additionally required use of
    121148 *  \code CPPFLAGS="-fPIC" \endcode
     
    125152 *  for a debug compile you might want to use:
    126153 *  \code
    127  *  ../configure -C --prefix=<path> --enable-shared BSPLINE_DEG=3 MPICC=mpicc.openmpi
    128  *  MPICXX=mpicxx.openmpi MPIEXEC=mpirun.openmpi CPPFLAGS="-Wall -g3 -O0 -ggdb -fPIC"
    129  *  --enable-mpi --with-boost-libdir=/usr/lib --with-boost=/usr --enable-fcs-solvers=vmg
     154 *  ../configure \
     155 *    -C \
     156 *    --prefix=<path> \
     157 *    --enable-shared \
     158 *    BSPLINE_DEG=3 \
     159 *    MPICC=mpicc.openmpi \
     160 *    MPICXX=mpicxx.openmpi \
     161 *    MPIEXEC=mpirun.openmpi \
     162 *    CPPFLAGS="-Wall -g3 -O0 -ggdb -fPIC" \
     163 *    --enable-mpi \
     164 *    --with-boost-libdir=/usr/lib --with-boost=/usr \
     165 *    --with-vtk=<path-to-vtk> --with-vtk-version=<vtk-version path string, i.e. -5.10> \
     166 *    --enable-fcs-solvers=vmg
    130167 *  \endcode
     168 *  where we specify a recent boost and the installed VTK version from above.
     169 *
     170 *  \subsubsection install-prerequisites-other-levmar LevMar
     171 *
     172 *   We also require the levmar (http://www.ics.forth.gr/~lourakis/levmar/) which
     173 *   implements a Levenberg-Marquardt for non-linear regression which is employed
     174 *   for fitting empirical potentials to energies obtained from calculated
     175 *   fragment energies.
     176 *
     177 *   Compile and install as follows
     178 *   \code
     179 *    cmake \
     180 *      -DCMAKE_INSTALL_PREFIX:PATH=<install-path> \
     181 *      -DCMAKE_C_FLAGS="-fPIC" \
     182 *      ..
     183 *    make
     184 *    cp -f liblevmar.a <install-path>/lib
     185 *    cp -f levmar.h <install-path>/include
     186 *   \endcode
     187 *   where we have to copy the stuff by hand as no \a install target exists.
    131188 *
    132189 *  \subsubsection install-prerequisites-other-mpqc MPQC
     
    276333 *  from a distributed archive. This is checked for each release version.
    277334 *
    278  * \date 2012-12-20
     335 * \date 2013-04-09
    279336 */
Note: See TracChangeset for help on using the changeset viewer.