ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Rattle.hpp
Revision: 1248
Committed: Fri Jun 4 19:30:05 2004 UTC (20 years, 1 month ago) by tim
File size: 2787 byte(s)
Log Message:
constraint algorithm for minimization is working

File Contents

# Content
1 #ifndef _RATTLE_H_
2 #define _RATTLE_H_
3
4 #include "Shake.hpp"
5 #include "ConstraintPair.hpp"
6
7 //Rattle Constraint Algorithn
8 //Reference
9 //H.C. Andersen, J. Comput. Phys. 54, 24(1983)
10 //RattleA and Shake are identical
11 typedef Shake RattleA;
12
13 ////////////////////////////////////////////////////////////////////////////////
14 //Declaration of DCRattleBFunctor
15 ////////////////////////////////////////////////////////////////////////////////
16 class DCRattleBFunctor : public CallbackFunctor{
17 public:
18 DCRattleBFunctor(SimInfo* rhs) : CallbackFunctor(rhs){}
19 protected:
20 virtual int operator()(ConstraintAtom* consAtom1, ConstraintAtom* consAtom2);
21 virtual int operator()(ConstraintAtom* consAtom,ConstraintRigidBody* consRB);
22 virtual int operator()(ConstraintRigidBody* consRB1, ConstraintRigidBody* consRB2);
23 };
24
25 ////////////////////////////////////////////////////////////////////////////////
26 //Declaration of JCRattleBFunctor
27 ////////////////////////////////////////////////////////////////////////////////
28 class JCRattleBFunctor : public CallbackFunctor{
29 public:
30 JCRattleBFunctor(SimInfo* rhs) : CallbackFunctor(rhs){}
31 protected:
32 virtual int operator()(ConstraintAtom* consAtom1, ConstraintAtom* consAtom2);
33 virtual int operator()(ConstraintAtom* consAtom,ConstraintRigidBody* consRB);
34 virtual int operator()(ConstraintRigidBody* consRB1, ConstraintRigidBody* consRB2);
35 };
36
37 ////////////////////////////////////////////////////////////////////////////////
38 //Declaration of RattleB
39 ////////////////////////////////////////////////////////////////////////////////
40 class RattleB : public ConstraintAlgorithm{
41 public:
42 RattleB(SimInfo* rhs) : ConstraintAlgorithm(rhs){
43 registerCallback(typeid(DistanceConstraintPair), new DCRattleBFunctor(rhs));
44 registerCallback(typeid(JointConstraintPair), new JCRattleBFunctor(rhs));
45 }
46 };
47
48 ////////////////////////////////////////////////////////////////////////////////
49 //Declaration of RattleAlgorithm
50 ////////////////////////////////////////////////////////////////////////////////
51 //class RattleAlgorithm will encapsulate preConstraint, RattleA and RattleB
52 class RattleFramework : public ConsAlgoFramework{
53 public:
54 RattleFramework(SimInfo* rhs) : ConsAlgoFramework(rhs){
55 raAlgo = new RattleA(rhs);
56 rbAlgo = new RattleB(rhs);
57 }
58
59 ~RattleFramework(){
60 delete raAlgo;
61 delete rbAlgo;
62 }
63
64 int doRattleA(){
65 raAlgo->doConstrain();
66 return raAlgo->haveError()? -1 : 1;
67
68 }
69
70 int doRattleB(){
71 rbAlgo->doConstrain();
72 return rbAlgo->haveError()? -1 : 1;
73
74 }
75 private:
76 RattleA* raAlgo;
77 RattleB* rbAlgo;
78 };
79 #endif //ifndef _RATTLE_H_

Properties

Name Value
svn:executable *