/*
 * StructuralOptimizationAction.def
 *
 *  Created on: Aug 02, 2014
 *      Author: heber
 */

// all includes and forward declarations necessary for non-integral types below
#include "Parameters/Validators/GenericValidators.hpp"

// i.e. there is an integer with variable name Z that can be found in
// ValueStorage by the token "Z" -> first column: int, Z, "Z"
// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
#define paramtypes (unsigned int)(bool)(bool)
#define paramtokens ("steps")("output-every-step")("keep-bondgraph")
#define paramdescriptions ("numer of MD steps to perform")("whether we should update the timestep in each descent step sp as to visualize the minimisation")("whether the bond graph should be kept the same during each step and not updated")
#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
#define paramreferences (steps)(DoOutput)(DontCreateGraphEachStep)
#define paramvalids \
(NotZeroValidator< unsigned int >()) \
(DummyValidator<bool>()) \
(DummyValidator<bool>())

#undef statetypes
#undef statereferences

// some defines for all the names, you may use ACTION, STATE and PARAMS
#define CATEGORY Fragmentation
#define MENUNAME "fragmentation"
#define MENUPOSITION 6
#define ACTIONNAME StructuralOptimization
#define TOKEN "optimize-structure"


// finally the information stored in the ActionTrait specialization
#define DESCRIPTION "optimize the selected atoms by calculating forces via the fragmentation scheme"
#undef SHORTFORM
