Changeset 9b0dcd


Ignore:
Timestamp:
May 19, 2021, 7:06:29 PM (4 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
Candidate_v1.7.0, stable
Children:
20fc6f
Parents:
c98620
git-author:
Frederik Heber <frederik.heber@…> (05/19/21 19:03:24)
git-committer:
Frederik Heber <frederik.heber@…> (05/19/21 19:06:29)
Message:

Added potential-list argument to GeneratePotentialsAction.

  • DOCU: Extended documentation on new option.
  • TEST: Added a test case on this.
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • doc/userguide/userguide.xml

    rc98620 r9b0dcd  
    24702470          particle types the following action can be called:
    24712471          <programlisting>
    2472                   ... --generate-potentials
     2472                  ... --generate-potentials \
    24732473                  --fragment-charges 8 1 1
    24742474          </programlisting>
     
    24782478          subgraphs do not exists for the molecule H-O-H), and tersoff for the
    24792479          types O and H.
    2480         </para>
     2480          <programlisting>
     2481                  ... --generate-potentials \
     2482                  --fragment-charges 8 1 1 \
     2483                  --potential-list constant harmonic_bond harmonic_angle
     2484          </programlisting>
     2485          This would generate the potentials taken from the restricted set of
     2486          listed potential names. If the give list is empty (i.e. the parameter
     2487          is unset), then by default all available potentials are used.</para>
    24812488        </section>
    24822489        <section xml:id="potentials.save-potential">
  • src/Actions/PotentialAction/GeneratePotentialsAction.cpp

    rc98620 r9b0dcd  
    4343#include <string>
    4444
     45#include <boost/foreach.hpp>
     46
    4547#include "Actions/PotentialAction/GeneratePotentialsAction.hpp"
    4648
     
    8082  }
    8183
     84  // gather list of potential candidates
     85  std::vector<std::string> potentials;
     86  if (!params.potential_list.isSet()) {
     87    for (unsigned int i=0; i<PotentialTypesMax; ++i)
     88      potentials.push_back(PotentialFactory::getNameForType((enum PotentialTypes)i));
     89  } else
     90    potentials = params.potential_list.get();
     91
    8292  // go through all potential potentials :)4
    8393  const PotentialFactory& factory = PotentialFactory::getConstInstance();
     
    8696  typedef std::set<BindingModel> unique_models_t;
    8797  unique_models_t unique_models;
    88   for (unsigned int i=0; i<PotentialTypesMax; ++i) {
    89     const std::string potential_name = PotentialFactory::getNameForType((enum PotentialTypes)i);
     98  BOOST_FOREACH(std::string &potential_name, potentials) {
    9099    unique_models.clear();
    91100
     
    102111
    103112    // first need to construct potential, then may access it
    104     EmpiricalPotential const * const defaultPotential = factory.getDefaultPotential((enum PotentialTypes)i);
     113    const enum PotentialTypes potential_type = factory.getTypeForName(potential_name);
     114    EmpiricalPotential const * const defaultPotential = factory.getDefaultPotential(potential_type);
    105115    /// 1. get its number of particles
    106116    const unsigned int num_particles = defaultPotential->getParticleTypeNumber();
  • src/Actions/PotentialAction/GeneratePotentialsAction.def

    rc98620 r9b0dcd  
    99#include "Parameters/Validators/STLVectorValidator.hpp"
    1010#include "Parameters/Validators/Specific/ElementValidator.hpp"
     11#include "Parameters/Validators/Specific/PotentialTypeValidator.hpp"
     12#include <string>
     13#include <vector>
    1114
    1215// i.e. there is an integer with variable name Z that can be found in
    1316// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1417// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    15 #define paramtypes (std::vector<const element *>)
    16 #define paramtokens ("fragment-charges")
    17 #define paramdescriptions ("charges specifying the fragment")
    18 #define paramdefaults (NOPARAM_DEFAULT)
    19 #define paramreferences (fragment)
     18#define paramtypes (std::vector<const element *>)(std::vector<std::string>)
     19#define paramtokens ("fragment-charges")("potential-list")
     20#define paramdescriptions ("charges specifying the fragment")("list of potentials to generate or empty for all")
     21#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)
     22#define paramreferences (fragment)(potential_list)
    2023#define paramvalids \
    21 (STLVectorValidator< std::vector<const element *> >(0,99, ElementValidator()))
     24(STLVectorValidator< std::vector<const element *> >(0,99, ElementValidator())) \
     25(STLVectorValidator< std::vector<std::string> >(0,99, PotentialTypeValidator()))
    2226
    2327#undef statetypes
  • tests/Python/AllActions/options.dat

    rc98620 r9b0dcd  
    161161potential_charges       "1 1"
    162162potential_type  "morse"
     163potential_list  "angle harmonic_bond"
    163164radius  "20."
    164165random_atom_displacement        "0."
  • tests/regression/Potential/GeneratePotentials/testsuite-potential-generate-potentials.at

    rc98620 r9b0dcd  
    3232
    3333AT_CLEANUP
     34
     35AT_SETUP([Potential - generate potentials for water, restricted set])
     36AT_KEYWORDS([potential parse-homologies generate-potentials water])
     37
     38file=water_homologies.dat
     39AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Potential/GeneratePotentials/pre/$file $file], 0)
     40AT_CHECK([chmod u+w $file], 0, [ignore], [ignore])
     41AT_CHECK([../../molecuilder \
     42        --parse-homologies $file \
     43        --generate-potentials \
     44                --fragment-charges 1 8 1 \
     45                --potential-list constant harmonic_bond harmonic_angle \
     46        --save-potentials water.potentials], 0, [stdout], [ignore])
     47AT_CHECK([diff water.potentials ${abs_top_srcdir}/tests/regression/Potential/GeneratePotentials/post/water_restricted.potentials], 0, [ignore], [ignore])
     48
     49AT_CLEANUP
Note: See TracChangeset for help on using the changeset viewer.