ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/primitives/Atom.hpp
(Generate patch)

Comparing:
trunk/src/primitives/Atom.hpp (file contents), Revision 3 by tim, Fri Sep 24 16:27:58 2004 UTC vs.
branches/development/src/primitives/Atom.hpp (file contents), Revision 1715 by gezelter, Tue May 22 21:55:31 2012 UTC

# Line 1 | Line 1
1 < #ifndef _ATOM_H_
2 < #define _ATOM_H_
1 > /*
2 > * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3 > *
4 > * The University of Notre Dame grants you ("Licensee") a
5 > * non-exclusive, royalty free, license to use, modify and
6 > * redistribute this software in source and binary code form, provided
7 > * that the following conditions are met:
8 > *
9 > * 1. Redistributions of source code must retain the above copyright
10 > *    notice, this list of conditions and the following disclaimer.
11 > *
12 > * 2. Redistributions in binary form must reproduce the above copyright
13 > *    notice, this list of conditions and the following disclaimer in the
14 > *    documentation and/or other materials provided with the
15 > *    distribution.
16 > *
17 > * This software is provided "AS IS," without a warranty of any
18 > * kind. All express or implied conditions, representations and
19 > * warranties, including any implied warranty of merchantability,
20 > * fitness for a particular purpose or non-infringement, are hereby
21 > * excluded.  The University of Notre Dame and its licensors shall not
22 > * be liable for any damages suffered by licensee as a result of
23 > * using, modifying or distributing the software or its
24 > * derivatives. In no event will the University of Notre Dame or its
25 > * licensors be liable for any lost revenue, profit or data, or for
26 > * direct, indirect, special, consequential, incidental or punitive
27 > * damages, however caused and regardless of the theory of liability,
28 > * arising out of the use of or inability to use software, even if the
29 > * University of Notre Dame has been advised of the possibility of
30 > * such damages.
31 > *
32 > * SUPPORT OPEN SCIENCE!  If you use OpenMD or its source code in your
33 > * research, please cite the appropriate papers when you publish your
34 > * work.  Good starting points are:
35 > *                                                                      
36 > * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37 > * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
39 > * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40 > * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41 > */
42 >
43 > /**
44 > * @file Atom.hpp
45 > * @author    tlin
46 > * @date  10/22/2004
47 > * @version 1.0
48 > */
49  
50 < #include <string.h>
51 < #include <stdlib.h>
6 < #include <iostream>
50 > #ifndef PRIMITIVES_ATOM_HPP
51 > #define PRIMITIVES_ATOM_HPP
52  
8 #include "brains/SimState.hpp"
53   #include "primitives/StuntDouble.hpp"
54 < #include "visitors/BaseVisitor.hpp"
54 > #include "types/AtomType.hpp"
55  
56 < class Atom : public StuntDouble {
57 < public:
56 > namespace OpenMD{
57 >  class Atom : public StuntDouble {
58 >  public:
59 >    Atom(AtomType* at);
60 >    
61 >    virtual std::string getType() {return atomType_->getName();}
62 >    
63 >    /**
64 >     * Returns the inertia tensor of this stuntdouble
65 >     * @return the inertia tensor of this stuntdouble
66 >     */
67 >    virtual Mat3x3d getI();
68 >    
69 >    /**
70 >     * Returns the gradient of this stuntdouble
71 >     * @return the inertia tensor of this stuntdouble
72 >     */
73 >    virtual std::vector<RealType> getGrad();
74 >    
75 >    virtual void accept(BaseVisitor* v);
76 >    
77 >    /**
78 >     * Returns the AtomType of this Atom.
79 >     * @return the atom type of this atom
80 >     */
81 >    AtomType* getAtomType() {
82 >      return atomType_;
83 >    }
84 >    
85 >    //forward  functions of AtomType class
86 >    bool isCharge()  {
87 >      return atomType_->isCharge();
88 >    }
89 >    
90 >    bool isDirectional() {
91 >      return atomType_->isDirectional();
92 >    }
93 >    
94 >    bool isDipole()  {
95 >      return atomType_->isDipole();
96 >    }
97 >    
98 >    bool isMultipole()  {
99 >      return atomType_->isMultipole();
100 >    }
101 >    
102 >    bool isGayBerne()  {
103 >      return atomType_->isGayBerne();
104 >    }
105 >            
106 >    bool isSticky()  {
107 >      return atomType_->isSticky();
108 >    }
109  
110 <  Atom(int theIndex, SimState* theConfig );
111 <  virtual ~Atom() {}
110 >    bool isShape()  {
111 >      return atomType_->isShape();
112 >    }            
113 >    
114 >    bool isMetal() {
115 >      return atomType_->isMetal();
116 >    }
117  
118 <  virtual void setCoords(void);
118 >    bool isFluctuatingCharge() {
119 >      return atomType_->isFluctuatingCharge();
120 >    }
121  
122 <  void getPos( double theP[3] );
123 <  void setPos( double theP[3] );
122 >    int getIdent() {
123 >      return atomType_->getIdent();
124 >    }
125 >    
126 >    RealType getChargeMass() {
127 >      return chargeMass_;
128 >    }
129  
130 <  void getVel( double theV[3] );
131 <  void setVel( double theV[3] );
130 >    void setChargeMass(RealType cm) {
131 >      chargeMass_ = cm;
132 >    }
133  
134 <  void getFrc( double theF[3] );
135 <  void addFrc( double theF[3] );
136 <
137 <  virtual void zeroForces();
30 <
31 <  double getMass() {return c_mass;}
32 <  void setMass(double mass) {c_mass = mass;}
134 >  protected:
135 >    AtomType* atomType_;
136 >    RealType chargeMass_;
137 >  };
138    
139 <  int getIndex() const {return index;}
35 <  void setIndex(int theIndex);
139 > }//namespace OpenMD
140  
141 <  char *getType() {return c_name;}
38 <  void setType(char * name) {strcpy(c_name,name);}
39 <  
40 <  int getIdent( void ) { return ident; }
41 <  void setIdent( int info ) { ident = info; }
42 <
43 < #ifdef IS_MPI
44 <  int getGlobalIndex( void ) { return myGlobalIndex; }
45 <  void setGlobalIndex( int info ) { myGlobalIndex = info; }
46 < #endif // is_mpi
47 <
48 <  void setHasDipole( int value ) { has_dipole = value; }
49 <  int hasDipole( void ) { return has_dipole; }
50 <
51 <  void setHasCharge(int value) {has_charge = value;}
52 <  int hasCharge(void) {return has_charge;}
53 <
54 <
55 <  virtual void accept(BaseVisitor* v) {v->visit(this);}
56 <  
57 < protected:
58 <  
59 <  SimState* myConfig;
60 <
61 <  double* pos; // the position array
62 <  double* vel; // the velocity array
63 <  double* frc; // the forc array
64 <  double* trq; // the torque vector  ( space fixed )
65 <  double* Amat; // the rotation matrix
66 <  double* mu;   // the array of dipole moments
67 <  double* ul;   // the lab frame unit directional vector
68 <
69 <  double zAngle; // the rotation about the z-axis ( body-fixed )
70 <
71 <  double c_mass; /* the mass of the atom in amu */
72 <
73 <  int index; /* set the atom's index */
74 <  int offset; // the atom's offset in the storage array
75 <  int offsetX, offsetY, offsetZ;
76 <
77 <  int Axx, Axy, Axz; // the rotational matrix indices
78 <  int Ayx, Ayy, Ayz;
79 <  int Azx, Azy, Azz;
80 <
81 <  char c_name[100]; /* it's name */
82 <  int ident;  // it's unique numeric identity.
83 <  
84 <  int has_dipole; // dipole boolean
85 <  int has_charge; // charge boolean
86 <
87 <  bool hasCoords;
88 <
89 < #ifdef IS_MPI
90 <  int myGlobalIndex;
91 < #endif
92 <  
93 < };
94 <
95 < #endif
141 > #endif //PRIMITIVES_ATOM_HPP

Comparing:
trunk/src/primitives/Atom.hpp (property svn:keywords), Revision 3 by tim, Fri Sep 24 16:27:58 2004 UTC vs.
branches/development/src/primitives/Atom.hpp (property svn:keywords), Revision 1715 by gezelter, Tue May 22 21:55:31 2012 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines