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