[6b919f8] | 1 | /*
|
---|
| 2 | * atom_bondedparticle.hpp
|
---|
| 3 | *
|
---|
| 4 | * Created on: Oct 19, 2009
|
---|
| 5 | * Author: heber
|
---|
| 6 | */
|
---|
| 7 |
|
---|
| 8 | #ifndef ATOM_BONDEDPARTICLE_HPP_
|
---|
| 9 | #define ATOM_BONDEDPARTICLE_HPP_
|
---|
| 10 |
|
---|
| 11 |
|
---|
| 12 | using namespace std;
|
---|
| 13 |
|
---|
| 14 | /*********************************************** includes ***********************************/
|
---|
| 15 |
|
---|
| 16 | // include config.h
|
---|
| 17 | #ifdef HAVE_CONFIG_H
|
---|
| 18 | #include <config.h>
|
---|
| 19 | #endif
|
---|
| 20 |
|
---|
| 21 | #include <fstream>
|
---|
| 22 | #include <list>
|
---|
| 23 |
|
---|
| 24 | #include "atom_atominfo.hpp"
|
---|
| 25 | #include "atom_bondedparticleinfo.hpp"
|
---|
[7d82a5] | 26 | #include "atom_observable.hpp"
|
---|
[6b919f8] | 27 | #include "atom_particleinfo.hpp"
|
---|
[7d82a5] | 28 | #include "atom_observable.hpp"
|
---|
[6b919f8] | 29 |
|
---|
| 30 | /****************************************** forward declarations *****************************/
|
---|
| 31 |
|
---|
| 32 | class bond;
|
---|
| 33 |
|
---|
| 34 | /********************************************** declarations *******************************/
|
---|
| 35 |
|
---|
[7d82a5] | 36 | class BondedParticle :
|
---|
| 37 | public BondedParticleInfo,
|
---|
| 38 | public virtual ParticleInfo,
|
---|
| 39 | public virtual AtomInfo,
|
---|
| 40 | public virtual AtomObservable
|
---|
| 41 | {
|
---|
[6b919f8] | 42 | public:
|
---|
| 43 | BondedParticle();
|
---|
| 44 | virtual ~BondedParticle();
|
---|
| 45 |
|
---|
[c6719d] | 46 | bond::ptr addBond(const unsigned int _step, BondedParticle* const Partner);
|
---|
| 47 | bond::ptr addBond(BondedParticle* const Partner);
|
---|
| 48 | bond::ptr getBondAtStep(const unsigned int _step, const BondedParticle* const Partner) const;
|
---|
| 49 | bond::ptr getBond(const BondedParticle* const Partner) const;
|
---|
| 50 | void removeBond(const unsigned int _step, BondedParticle* const Partner);
|
---|
| 51 | void removeBond(BondedParticle* const Partner);
|
---|
[7d82a5] | 52 | void removeBond(bond::ptr &binder);
|
---|
[5e2f80] | 53 | void removeAllBonds();
|
---|
[cc9119] | 54 | void removeAllBonds(const unsigned int _step);
|
---|
[f01769] | 55 | bool IsBondedTo(const unsigned int _step, const BondedParticle * const BondPartner) const;
|
---|
[583081] | 56 | void ClearBondsAtStep(const unsigned int _step);
|
---|
[6b919f8] | 57 | int CountBonds() const;
|
---|
[4b5cf8] | 58 | void OutputBondOfAtom(std::ostream &ost) const;
|
---|
[1f1b23] | 59 | void OutputBonds(ofstream * const BondFile) const;
|
---|
[b453f9] | 60 | void OutputOrder(ofstream *file) const;
|
---|
[6b919f8] | 61 |
|
---|
[d74077] | 62 | std::ostream & operator << (std::ostream &ost) const;
|
---|
| 63 |
|
---|
[db7e6d] | 64 | protected:
|
---|
[88c8ec] | 65 | bool RegisterBond(const unsigned int _step, bond::ptr const Binder);
|
---|
[7d82a5] | 66 | bool UnregisterBond(const unsigned int _step, bond::ptr const Binder);
|
---|
[db7e6d] | 67 |
|
---|
[c6719d] | 68 | int ContainsBondAtStep(const bond::ptr Binder) const;
|
---|
[6b919f8] | 69 |
|
---|
[7d82a5] | 70 | private:
|
---|
| 71 | unsigned int findBondsStep(bond::ptr const Binder) const;
|
---|
| 72 | BondList::const_iterator findBondPartnerAtStep(
|
---|
| 73 | const unsigned int _step,
|
---|
| 74 | BondedParticle * const Partner) const;
|
---|
[6b919f8] | 75 | };
|
---|
| 76 |
|
---|
[d74077] | 77 | std::ostream & operator << (std::ostream &ost, const BondedParticle &a);
|
---|
[6b919f8] | 78 |
|
---|
| 79 | #endif /* ATOM_BONDEDPARTICLE_HPP_ */
|
---|