Changeset dbf8c8


Ignore:
Timestamp:
Feb 27, 2013, 12:39:03 PM (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:
caa00e9
Parents:
b760bc3
git-author:
Frederik Heber <heber@…> (11/30/12 08:41:39)
git-committer:
Frederik Heber <heber@…> (02/27/13 12:39:03)
Message:

FIX: Now default parameters are present for every potential and used for check_derivatives.

  • checking derivatives with exp() is numerically very unstable as large numbers may easily occur. Hence, rather check the derivatives at some fixed but nicely behaved spot that is probably not the minimum.
Location:
src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/LevMartester.cpp

    rb760bc3 rdbf8c8  
    249249      FunctionModel &model = angle;
    250250      FunctionApproximation approximator(AngleData, model);
    251       if (model.isBoxConstraint() && approximator.checkParameterDerivatives())
     251      if (model.isBoxConstraint() && approximator.checkParameterDerivatives()) {
     252        // we set parameters here because we want to test with default ones
     253        angle.setParameters(params);
    252254        approximator(FunctionApproximation::ParameterDerivative);
    253       else {
     255      } else {
    254256        ELOG(0, "We require parameter derivatives for a box constraint minimization.");
    255257        return 1;
     
    300302      FunctionModel &model = morse;
    301303      FunctionApproximation approximator(MorseData, model); // we only give CC distance, hence 1 input dim
    302       if (model.isBoxConstraint() && approximator.checkParameterDerivatives())
     304      if (model.isBoxConstraint() && approximator.checkParameterDerivatives()) {
     305        // we set parameters here because we want to test with default ones
     306        morse.setParameters(params);
    303307        approximator(FunctionApproximation::ParameterDerivative);
    304       else {
     308      } else {
    305309        ELOG(0, "We require parameter derivatives for a box constraint minimization.");
    306310        return 1;
     
    365369
    366370      SaturationPotential saturation(types, 2.5, triplefunction);
    367       saturation.setParameters(params);
    368371      FunctionModel &model = saturation;
    369372      FunctionApproximation approximator(TersoffData, model); // CH4 has 5 atoms, hence 5*4/2 distances
    370       if (model.isBoxConstraint() && approximator.checkParameterDerivatives())
     373      if (model.isBoxConstraint() && approximator.checkParameterDerivatives()) {
     374        // we set parameters here because we want to test with default ones
     375        saturation.setParameters(params);
    371376        approximator(FunctionApproximation::ParameterDerivative);
    372       else {
     377      } else {
    373378        ELOG(0, "We require parameter derivatives for a box constraint minimization.");
    374379        return 1;
  • TabularUnified src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp

    rb760bc3 rdbf8c8  
    8787    omega(1.),
    8888    triplefunction(_triplefunction)
    89 {}
     89{
     90  // have some decent defaults for parameter_derivative checking
     91  params[A] = 3000.;
     92  params[B] = 300.;
     93  params[lambda] = 5.;
     94  params[mu] = 3.;
     95  params[beta] = 2.;
     96  params[n] = 1.;
     97  params[c] = 0.01;
     98  params[d] = 1.;
     99  params[h] = 0.01;
     100  params[offset] = 0.01;
     101}
    90102
    91103ManyBodyPotential_Tersoff::ManyBodyPotential_Tersoff(
  • TabularUnified src/Potentials/Specifics/PairPotential_Angle.cpp

    rb760bc3 rdbf8c8  
    6262  SerializablePotential(_ParticleTypes),
    6363  params(parameters_t(MAXPARAMS, 0.))
    64 {}
     64{
     65  // have some decent defaults for parameter_derivative checking
     66  params[spring_constant] = 1.;
     67  params[equilibrium_distance] = 0.1;
     68  params[energy_offset] = 0.1;
     69}
    6570
    6671PairPotential_Angle::PairPotential_Angle(
  • TabularUnified src/Potentials/Specifics/PairPotential_Harmonic.cpp

    rb760bc3 rdbf8c8  
    6161    SerializablePotential(_ParticleTypes),
    6262  params(parameters_t(MAXPARAMS, 0.))
    63 {}
     63{
     64  // have some decent defaults for parameter_derivative checking
     65  params[spring_constant] = 1.;
     66  params[equilibrium_distance] = 1.;
     67  params[energy_offset] = 0.1;
     68}
    6469
    6570PairPotential_Harmonic::PairPotential_Harmonic(
  • TabularUnified src/Potentials/Specifics/PairPotential_Morse.cpp

    rb760bc3 rdbf8c8  
    6464  SerializablePotential(_ParticleTypes),
    6565  params(parameters_t(MAXPARAMS, 0.))
    66 {}
     66{
     67  // have some decent defaults for parameter_derivative checking
     68  params[spring_constant] = 1.;
     69  params[equilibrium_distance] = 1.;
     70  params[dissociation_energy] = 0.1;
     71  params[energy_offset] = 0.1;
     72}
    6773
    6874PairPotential_Morse::PairPotential_Morse(
  • TabularUnified src/Potentials/Specifics/SaturationPotential.cpp

    rb760bc3 rdbf8c8  
    7171  SerializablePotential(_ParticleTypes),
    7272  morse(_ParticleTypes),
    73   angle(_ParticleTypes),
     73  angle(symmetrizeTypes(_ParticleTypes)),
    7474  energy_offset(0.),
    7575  triplefunction(_triplefunction),
Note: See TracChangeset for help on using the changeset viewer.