ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-3.0/src/primitives/Atom.hpp
(Generate patch)

Comparing:
trunk/OOPSE-3.0/src/primitives/Atom.hpp (file contents), Revision 1492 by tim, Fri Sep 24 16:27:58 2004 UTC vs.
branches/new_design/OOPSE-3.0/src/primitives/Atom.hpp (file contents), Revision 1823 by tim, Thu Dec 2 02:23:45 2004 UTC

# Line 1 | Line 1
1 < #ifndef _ATOM_H_
2 < #define _ATOM_H_
1 > /*
2 > * Copyright (C) 2000-2004  Object Oriented Parallel Simulation Engine (OOPSE) project
3 > *
4 > * Contact: oopse@oopse.org
5 > *
6 > * This program is free software; you can redistribute it and/or
7 > * modify it under the terms of the GNU Lesser General Public License
8 > * as published by the Free Software Foundation; either version 2.1
9 > * of the License, or (at your option) any later version.
10 > * All we ask is that proper credit is given for our work, which includes
11 > * - but is not limited to - adding the above copyright notice to the beginning
12 > * of your source code files, and to any copyright notice that you may distribute
13 > * with programs based on this work.
14 > *
15 > * This program is distributed in the hope that it will be useful,
16 > * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 > * GNU Lesser General Public License for more details.
19 > *
20 > * You should have received a copy of the GNU Lesser General Public License
21 > * along with this program; if not, write to the Free Software
22 > * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23 > *
24 > */
25  
26 < #include <string.h>
27 < #include <stdlib.h>
28 < #include <iostream>
26 > /**
27 > * @file Atom.hpp
28 > * @author    tlin
29 > * @date  10/22/2004
30 > * @version 1.0
31 > */
32  
33 < #include "brains/SimState.hpp"
33 > #ifndef PRIMITIVES_ATOM_HPP
34 > #define PRIMITIVES_ATOM_HPP
35 >
36   #include "primitives/StuntDouble.hpp"
37 < #include "visitors/BaseVisitor.hpp"
37 > #include "types/AtomType.hpp"
38  
39 < class Atom : public StuntDouble {
40 < public:
39 > namespace oopse{
40 >    class Atom : public StuntDouble {
41 >        public:
42 >            Atom(AtomType* at);
43  
44 <  Atom(int theIndex, SimState* theConfig );
45 <  virtual ~Atom() {}
44 >            virtual std::string getType() {return atomType_->getName();}
45 >        
46 >            /**
47 >             * Returns the inertia tensor of this stuntdouble
48 >             * @return the inertia tensor of this stuntdouble
49 >             */
50 >            virtual Mat3x3d getI();
51  
52 <  virtual void setCoords(void);
52 >            /**
53 >             * Returns the gradient of this stuntdouble
54 >             * @return the inertia tensor of this stuntdouble
55 >             */
56 >            virtual std::vector<double> getGrad();
57  
58 <  void getPos( double theP[3] );
21 <  void setPos( double theP[3] );
58 >            virtual void accept(BaseVisitor* v);
59  
60 <  void getVel( double theV[3] );
61 <  void setVel( double theV[3] );
60 >            /**
61 >             * Returns the AtomType of this Atom.
62 >             * @return the atom type of this atom
63 >             */
64 >            AtomType* getAtomType() {
65 >                return atomType_;
66 >            }
67 >            
68 >            //forward  functions of AtomType class
69 >            bool    isCharge()  {
70 >                return atomType_->isCharge();
71 >            }
72 >            
73 >            bool    isDirectional() {
74 >                return atomType_->isDirectional();
75 >            }
76  
77 <  void getFrc( double theF[3] );
78 <  void addFrc( double theF[3] );
77 >            bool    isDipole()  {
78 >                return atomType_->isDipole();
79 >            }
80  
81 <  virtual void zeroForces();
81 >            bool    isQudrapole()  {
82 >                return atomType_->isQuadrupole();
83 >            }
84 >            
85 >            bool    isMultipole()  {
86 >                return atomType_->isMultipole();
87 >            }
88 >            
89 >            bool    isGayBerne()  {
90 >                return atomType_->isGayBerne();
91 >            }
92 >            
93 >            bool    isSticky()  {
94 >                return atomType_->isSticky();
95 >            }
96  
97 <  double getMass() {return c_mass;}
98 <  void setMass(double mass) {c_mass = mass;}
99 <  
34 <  int getIndex() const {return index;}
35 <  void setIndex(int theIndex);
97 >            bool    isShape()  {
98 >                return atomType_->isShape();
99 >            }            
100  
101 <  char *getType() {return c_name;}
102 <  void setType(char * name) {strcpy(c_name,name);}
103 <  
104 <  int getIdent( void ) { return ident; }
105 <  void setIdent( int info ) { ident = info; }
101 >            int getIdent() {
102 >                return atomType_->getIdent();
103 >            }
104 >            
105 >        protected:
106 >            AtomType* atomType_;
107 >    };
108  
109 < #ifdef IS_MPI
44 <  int getGlobalIndex( void ) { return myGlobalIndex; }
45 <  void setGlobalIndex( int info ) { myGlobalIndex = info; }
46 < #endif // is_mpi
109 > }//namepace oopse
110  
111 <  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
111 > #endif //PRIMITIVES_ATOM_HPP

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines