1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: shell_base.h
4 // Copyright (C) 2009 Toru Shiozaki
5 //
6 // Author: Toru Shiozaki <shiozaki@northwestern.edu>
7 // Maintainer: Shiozaki group
8 //
9 // This file is part of the BAGEL package.
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 //
24 
25 
26 #ifndef __SRC_MOLECULE_SHELL_BASE_H
27 #define __SRC_MOLECULE_SHELL_BASE_H
28 
29 #include <array>
30 #include <src/util/serialization.h>
31 
32 namespace bagel {
33 
34 class Shell_base {
35 
36   protected:
37     bool spherical_;
38     std::array<double,3> position_;
39     int angular_number_;
40 
41   private:
42     friend class boost::serialization::access;
43     template <typename Archive>
serialize(Archive & ar,const unsigned int)44     void serialize(Archive& ar, const unsigned int) {
45       ar & spherical_ & position_ & angular_number_;
46     }
47 
48   public:
Shell_base()49     Shell_base() { }
50   protected:
51     Shell_base(const bool spherical, const std::array<double,3>& position, int angular_num);
52     Shell_base(const bool sph);
53 
54   public:
~Shell_base()55     virtual ~Shell_base() { }
56 
spherical()57     bool spherical() const { return spherical_; }
58 
position(const int i)59     double position(const int i) const { return position_[i]; }
position()60     const std::array<double,3>& position() const { return position_; }
61 
angular_number()62     int angular_number() const { return angular_number_; }
63 
64     virtual std::string show() const;
65 
66 };
67 
68 }
69 
70 #endif
71 
72