/*
* Project: MoleCuilder
* Description: creates and alters molecular systems
* Copyright (C) 2010-2012 University of Bonn. All rights reserved.
*
*
* This file is part of MoleCuilder.
*
* MoleCuilder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* MoleCuilder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MoleCuilder. If not, see .
*/
/*
* MpqcParser_Parameters.cpp
*
* Created on: Feb 3, 2011
* Author: heber
*/
// include config.h
#ifdef HAVE_CONFIG_H
#include
#endif
#include "CodePatterns/MemDebug.hpp"
#include
#include "CodePatterns/Log.hpp"
#include "MpqcParser_Parameters.hpp"
#include "Parameters/Parameter.hpp"
MpqcParser_Parameters::MpqcParser_Parameters()
{
Init();
}
void MpqcParser_Parameters::Init()
{
// add all known basis
initBasis();
// add all parameter names
{
ParamNames.clear();
ParamNames.resize(unknownParam);
ParamNames[hessianParam] = "Hessian";
ParamNames[savestateParam] = "savestate";
ParamNames[do_gradientParam] = "do_gradient";
ParamNames[maxiterParam] = "maxiter";
ParamNames[memoryParam] = "memory";
ParamNames[stdapproxParam] = "stdapprox";
ParamNames[nfzcParam] = "nfzc";
ParamNames[basisParam] = "basis";
ParamNames[aux_basisParam] = "aux_basis";
ParamNames[integrationParam] = "integration";
ParamNames[theoryParam] = "theory";
ParamNames[jobtypeParam] = "jobtype";
}
// create theory parameter
{
ValidTheories.clear();
ValidTheories.resize(unknownTheory);
ValidTheories[CLHF]="CLHF";
ValidTheories[CLKS]="CLKS";
ValidTheories[MBPT2]="MBPT2";
ValidTheories[MBPT2_R12]="MBPT2_R12";
appendParameter(
new Parameter(
ParamNames[theoryParam],
ValidTheories,
ValidTheories[MBPT2]));
}
//InvertMap(TheoryNames,TheoryLookup);
// create Jobs parameter
{
ValidJobtypes.clear();
ValidJobtypes.resize(unknownJob);
ValidJobtypes[Default]="Default";
ValidJobtypes[Optimization]="Optimization";
appendParameter(
new Parameter(
ParamNames[jobtypeParam],
ValidJobtypes,
ValidJobtypes[Default]));
}
// create integration parameter
{
ValidIntegrationMethods.clear();
ValidIntegrationMethods.resize(unknownIntegration);
ValidIntegrationMethods[IntegralCints] = "IntegralCints";
appendParameter(
new Parameter(
ParamNames[integrationParam],
ValidIntegrationMethods,
ValidIntegrationMethods[IntegralCints]));
}
// create hessian, savestate, do_gradient parameter
{
ValidBools.clear();
ValidBools.resize(unknownBool);
ValidBools[no]="no";
ValidBools[yes]="yes";
appendParameter(
new Parameter(
ParamNames[hessianParam],
ValidBools,
ValidBools[no]));
appendParameter(
new Parameter(
ParamNames[savestateParam],
ValidBools,
ValidBools[no]));
appendParameter(
new Parameter(
ParamNames[do_gradientParam],
ValidBools,
ValidBools[true]));
}
// add all continuous parameters
{
appendParameter(new Parameter(ParamNames[maxiterParam], 1000));
appendParameter(new Parameter(ParamNames[memoryParam], 16000000));
appendParameter(new Parameter(ParamNames[stdapproxParam], "A'"));
appendParameter(new Parameter(ParamNames[nfzcParam], 1));
appendParameter(new Parameter(ParamNames[basisParam], "3-21G"));
appendParameter(new Parameter(ParamNames[aux_basisParam], "aug-cc-pVDZ"));
}
}
MpqcParser_Parameters::~MpqcParser_Parameters()
{}
/** Getter for a specific Parameter.
*
* @param param index among enum Parameters
* @return value of the desired Parameters
*/
const std::string MpqcParser_Parameters::getParameter(const enum Parameters param) const
{
return FormatParser_Parameters::getParameter(ParamNames[param])->getAsString();
}
/** Setter for a specific Parameter.
*
* @param param index among enum Parameters
* @param _value value to set desired Parameter to
*/
void MpqcParser_Parameters::setParameter(const enum Parameters param, const std::string &_value)
{
const std::string &name = getParameterName(param);
FormatParser_Parameters::getParameter(name)->setAsString(_value);
}
/** Getter for name of a specific Parameter.
*
* @param param index among enum Parameters
* @return name of the desired Parameter
*/
const std::string &MpqcParser_Parameters::getParameterName(const enum Parameters param) const
{
return ParamNames[param];
}
/** Getter for name of a specific Parameter.
*
* @param param index among enum Theory
* @return name of the desired Theory
*/
const std::string &MpqcParser_Parameters::getTheoryName(const enum Theory theory) const
{
return ValidTheories[theory];
}
/** Getter for name of a specific Parameter.
*
* @param param index among enum Jobtype
* @return name of the desired Jobtype
*/
const std::string &MpqcParser_Parameters::getJobtypeName(const enum Jobtype jobtype) const
{
return ValidJobtypes[jobtype];
}
/** Getter for the name of specific of IntegrationMethod.
*
* @param param index among enum IntegrationMethod
* @return value of the desired IntegrationMethod
*/
const std::string &MpqcParser_Parameters::getIntegrationMethodName(const enum IntegrationMethod integration) const
{
return ValidIntegrationMethods[integration];
}
/** Checks whether all elements in the world also have parameters in the basis.
*
* @return true - all elements parametrized, false - at least one element is missing.
*/
bool MpqcParser_Parameters::checkWorldElementsAgainstCurrentBasis() const
{
ELOG(0, "MpqcParser_Parameters::checkWorldElementsAgainstCurrentBasis() - not implemented yet.");
return false;
}