Moldyn benchmark.
[IRC.git] / Robust / src / Benchmarks / oooJava / moldyn / backup / Particle.java
1 public class Particle {
2
3     public float xcoord, ycoord, zcoord;
4     public float xvelocity,yvelocity,zvelocity;
5     int id;
6     //float [][] sh_force;
7     //float [][][] sh_force2;
8     MD md;
9
10     public Particle(float xcoord, float ycoord, float zcoord, float xvelocity,
11             float yvelocity,float zvelocity,/*float [][] sh_force, 
12             float [][][] sh_force2, int id, */MD m) {
13
14         this.xcoord = xcoord; 
15         this.ycoord = ycoord; 
16         this.zcoord = zcoord;
17         this.xvelocity = xvelocity;
18         this.yvelocity = yvelocity;
19         this.zvelocity = zvelocity;
20         //this.sh_force = sh_force;
21         //this.sh_force2 = sh_force2;
22         this.id=id;
23         this.md=m;
24     }
25
26     public void domove(float side,int part_id) {
27         xcoord = xcoord + xvelocity + this.md.sh_force[0][part_id];
28         ycoord = ycoord + yvelocity + this.md.sh_force[1][part_id];
29         zcoord = zcoord + zvelocity + this.md.sh_force[2][part_id];
30
31         if(xcoord < 0) { xcoord = xcoord + side; } 
32         if(xcoord > side) { xcoord = xcoord - side; }
33         if(ycoord < 0) { ycoord = ycoord + side; }
34         if(ycoord > side) { ycoord = ycoord - side; }
35         if(zcoord < 0) { zcoord = zcoord + side; }
36         if(zcoord > side) { zcoord = zcoord - side; }
37
38         xvelocity = xvelocity + this.md.sh_force[0][part_id];
39         yvelocity = yvelocity + this.md.sh_force[1][part_id];
40         zvelocity = zvelocity + this.md.sh_force[2][part_id];
41         //System.printI(0xc0);
42     }
43
44     public void force(float side, float rcoff,int mdsize,int x, MDRunner runner) {
45         float sideh;
46         float rcoffs;
47
48         float fxi,fyi,fzi;
49         float rd,rrd,rrd2,rrd3,rrd4,rrd6,rrd7,r148;
50         float forcex,forcey,forcez;
51         
52         float xx, yy, zz;
53
54         sideh = (float)0.5*side; 
55         rcoffs = rcoff*rcoff;
56
57         fxi = (float)0.0;
58         fyi = (float)0.0;
59         fzi = (float)0.0;
60         //System.printString("here 111: " + runner.id + "\n");
61         for (int i=x+1;i<mdsize;i++) {
62             xx = this.xcoord - this.md.one[i].xcoord;
63             yy = this.ycoord - this.md.one[i].ycoord;
64             zz = this.zcoord - this.md.one[i].zcoord;
65
66             if(xx < (-sideh)) { xx = xx + side; }
67             if(xx > (sideh))  { xx = xx - side; }
68             if(yy < (-sideh)) { yy = yy + side; }
69             if(yy > (sideh))  { yy = yy - side; }
70             if(zz < (-sideh)) { zz = zz + side; }
71             if(zz > (sideh))  { zz = zz - side; }
72
73
74             rd = xx*xx + yy*yy + zz*zz;
75
76             if(rd <= rcoffs) {
77                 rrd = (float)1.0/rd;
78                 rrd2 = rrd*rrd;
79                 rrd3 = rrd2*rrd;
80                 rrd4 = rrd2*rrd2;
81                 rrd6 = rrd2*rrd4;
82                 rrd7 = rrd6*rrd;
83                 runner.epot = runner.epot + (rrd6 - rrd3);
84                 r148 = rrd7 - (float)0.5*rrd4;
85                 runner.vir = runner.vir - rd*r148;
86                 forcex = xx * r148;
87                 fxi = fxi + forcex;
88
89                 runner.sh_force2[0][i] = runner.sh_force2[0][i] - forcex;
90
91                 forcey = yy * r148;
92                 fyi = fyi + forcey;
93
94                 runner.sh_force2[1][i] = runner.sh_force2[1][i] - forcey;
95
96                 forcez = zz * r148;
97                 fzi = fzi + forcez;
98
99                 runner.sh_force2[2][i] = runner.sh_force2[2][i] - forcez;
100
101                 //this.md.interacts[id]++;
102             }
103
104         }
105         //System.printString("here 222: " + runner.id + "\n");
106         runner.sh_force2[0][x] = runner.sh_force2[0][x] + fxi;
107         runner.sh_force2[1][x] = runner.sh_force2[1][x] + fyi;
108         runner.sh_force2[2][x] = runner.sh_force2[2][x] + fzi;
109         //System.printString("here 333: " + runner.id + "\n");
110     }
111
112     public float mkekin(float hsq2,int part_id) {
113         float sumt = (float)0.0; 
114
115         xvelocity = xvelocity + this.md.sh_force[0][part_id]; 
116         yvelocity = yvelocity + this.md.sh_force[1][part_id]; 
117         zvelocity = zvelocity + this.md.sh_force[2][part_id]; 
118
119         sumt = (xvelocity*xvelocity)+(yvelocity*yvelocity)+(zvelocity*zvelocity);
120         return sumt;
121     }
122
123     public float velavg(float vaverh,float h) {
124         float velt;
125         float sq;
126
127         sq = Math.sqrtf(xvelocity*xvelocity + yvelocity*yvelocity + zvelocity*zvelocity);
128
129         velt = sq;
130         return velt;
131     }
132
133     public void dscal(float sc,int incx) {
134         xvelocity = xvelocity * sc;
135         yvelocity = yvelocity * sc;   
136         zvelocity = zvelocity * sc;   
137     }
138
139 }