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

Comparing branches/new_design/OOPSE-2.0/src/primitives/Atom.hpp (file contents):
Revision 1691, Thu Oct 28 22:34:02 2004 UTC vs.
Revision 1692 by tim, Mon Nov 1 20:15:58 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 >             * Returns the inertia tensor of this stuntdouble
45 >             * @return the inertia tensor of this stuntdouble
46 >             */
47 >            virtual Mat3x3d getI();
48  
49 <  Atom(int theIndex, SimState* theConfig );
50 <  virtual ~Atom() {}
49 >            /**
50 >             * Returns the gradient of this stuntdouble
51 >             * @return the inertia tensor of this stuntdouble
52 >             */
53 >            virtual std::vector<double> getGrad();
54  
55 <  virtual void setCoords(void);
55 >            virtual void accept(BaseVisitor* v);
56  
57 <  void getPos( double theP[3] );
58 <  void setPos( double theP[3] );
57 >            /**
58 >             * Returns the AtomType of this Atom.
59 >             * @return the atom type of this atom
60 >             */
61 >            AtomType* getAtomType() {
62 >                return atomType_;
63 >            }
64 >            
65 >            //forward  functions of AtomType class
66 >            bool    isCharge()  {
67 >                return atomType_->isCharge();
68 >            }
69 >            
70 >            bool    isDirectional() {
71 >                return atomType_->isDirectional();
72 >            }
73  
74 <  void getVel( double theV[3] );
75 <  void setVel( double theV[3] );
74 >            bool    isDipole()  {
75 >                return atomType_->isDipole();
76 >            }
77 >            
78 >            bool    isGayBerne()  {
79 >                return atomType_->isGayBerne();
80 >            }
81 >            
82 >            bool    isSticky()  {
83 >                return atomType_->isSticky();
84 >            }
85  
86 <  void getFrc( double theF[3] );
87 <  void addFrc( double theF[3] );
86 >            bool    isShape()  {
87 >                return atomType_->isShape();
88 >            }            
89  
90 <  virtual void zeroForces();
90 >        private:
91 >            AtomType* atomType_;
92 >      
93 >    };
94  
95 <  double getMass() {return c_mass;}
32 <  void setMass(double mass) {c_mass = mass;}
33 <  
34 <  int getIndex() const {return index;}
35 <  void setIndex(int theIndex);
95 > }//namepace oopse
96  
97 <  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
97 > #endif //PRIMITIVES_ATOM_HPP

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines