n2p2 - A neural network potential package
SymGrpBaseExpAng.h
Go to the documentation of this file.
1// n2p2 - A neural network potential package
2// Copyright (C) 2018 Andreas Singraber (University of Vienna)
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <https://www.gnu.org/licenses/>.
16
17#ifndef SYMGRPBASEEXPANG_H
18#define SYMGRPBASEEXPANG_H
19
20#include "SymGrpBaseCutoff.h"
21#include <cstddef> // std::size_t
22#include <string> // std::string
23#include <vector> // std::vector
24
25namespace nnp
26{
27
28class ElementMap;
29class SymFncBaseExpAng;
30
32{
33public:
36 virtual void setScalingFactors();
41 virtual std::vector<std::string> parameterLines() const;
42
43protected:
49 SymGrpBaseExpAng(std::size_t type, ElementMap const& elementMap);
54 virtual std::vector<SymFncBaseExpAng const*> getMembers() const = 0;
55
57 std::size_t e1;
59 std::size_t e2;
61 std::vector<bool> calculateExp;
63 std::vector<double> factorNorm;
65 std::vector<double> factorDeriv;
67 std::vector<bool> useIntegerPow;
69 std::vector<int> zetaInt;
71 std::vector<double> eta;
73 std::vector<double> zeta;
75 std::vector<double> lambda;
77 std::vector<double> zetaLambda;
79 std::vector<double> rs;
80};
81
82}
83
84#endif
Contains element map.
Definition: ElementMap.h:30
std::vector< double > zeta
Vector containing values of all member symmetry functions.
std::vector< double > lambda
Vector containing values of all member symmetry functions.
std::vector< double > rs
Vector containing values of all member symmetry functions.
std::vector< double > factorNorm
Vector containing precalculated normalizing factor for each zeta.
std::vector< int > zetaInt
Vector containing values of all member symmetry functions.
std::vector< double > zetaLambda
Vector containing values of all member symmetry functions.
std::size_t e2
Element index of neighbor atom 2 (common feature).
std::vector< bool > calculateExp
Vector indicating whether exponential term needs to be calculated.
virtual std::vector< std::string > parameterLines() const
Give symmetry function group parameters on multiple lines.
virtual std::vector< SymFncBaseExpAng const * > getMembers() const =0
Get symmetry function members.
std::vector< double > eta
Vector containing values of all member symmetry functions.
std::vector< bool > useIntegerPow
Vector containing values of all member symmetry functions.
virtual void setScalingFactors()
Fill scalingFactors with values from member symmetry functions.
SymGrpBaseExpAng(std::size_t type, ElementMap const &elementMap)
Constructor, sets type.
std::vector< double > factorDeriv
Vector containing precalculated normalizing factor for derivatives.
std::size_t e1
Element index of neighbor atom 1 (common feature).
std::size_t type
Symmetry function type.
Definition: SymGrp.h:106
ElementMap elementMap
Copy of element map.
Definition: SymGrp.h:108
Definition: Atom.h:29