n2p2 - A neural network potential package
SymGrpBaseCompAng.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// Copyright (C) 2020 Martin P. Bircher
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <https://www.gnu.org/licenses/>.
17
18#ifndef SYMGRPBASECOMPANG_H
19#define SYMGRPBASECOMPANG_H
20
21#include "SymGrpBaseComp.h"
22#include <cstddef> // std::size_t
23#include <string> // std::string
24#include <vector> // std::vector
25
26namespace nnp
27{
28
29class ElementMap;
30class SymFncBaseCompAng;
31
33{
34public:
37 virtual void setScalingFactors();
42 virtual std::vector<std::string> parameterLines() const;
43
44protected:
50 SymGrpBaseCompAng(std::size_t type, ElementMap const& elementMap);
55 virtual std::vector<SymFncBaseCompAng const*> getMembers() const = 0;
56
58 std::size_t e1;
60 std::size_t e2;
62 std::vector<bool> calculateComp;
64 std::vector<double> mrl;
66 std::vector<double> mrc;
68 std::vector<double> mal;
70 std::vector<double> mar;
71#ifndef N2P2_NO_SF_CACHE
73 std::vector<std::vector<
74 std::vector<std::size_t>>> mci;
75#endif
76};
77
78}
79
80#endif
Contains element map.
Definition: ElementMap.h:30
std::vector< std::vector< std::vector< std::size_t > > > mci
Member cache indices for actual neighbor element.
SymGrpBaseCompAng(std::size_t type, ElementMap const &elementMap)
Constructor, sets type.
std::size_t e1
Element index of neighbor atom 1 (common feature).
std::vector< double > mrl
Member rl.
std::vector< double > mal
Member angleLeft.
std::size_t e2
Element index of neighbor atom 2 (common feature).
virtual void setScalingFactors()
Fill scalingFactors with values from member symmetry functions.
std::vector< double > mar
Member angleRight.
virtual std::vector< std::string > parameterLines() const
Give symmetry function group parameters on multiple lines.
virtual std::vector< SymFncBaseCompAng const * > getMembers() const =0
Get symmetry function members.
std::vector< bool > calculateComp
Vector indicating whether compact function needs to be recalculated.
std::vector< double > mrc
Member rc.
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