@@ -185,23 +185,21 @@ inline void Domain::AccelReduction(){
185
185
186
186
// Similar but not densities
187
187
inline void Domain::CalcRateTensors () {
188
- Particle *P1, *P2;
189
- // cout << "********************************************************"<<endl;
190
-
188
+ Particle *P1, *P2;
191
189
#pragma omp parallel for schedule (static) private (P1,P2) num_threads(Nproc)
192
190
#ifdef __GNUC__
193
191
for (size_t k=0 ; k<Nproc;k++)
194
192
#else
195
193
for (int k=0 ; k<Nproc;k++)
196
194
#endif
197
195
{
198
- for (size_t i =0 ; i <SMPairs[k].Size ();i ++) {
196
+ for (size_t p =0 ; p <SMPairs[k].Size ();p ++) {
199
197
#ifndef NONLOCK_SUM
200
- P1 = Particles[SMPairs[k][i ].first ];
201
- P2 = Particles[SMPairs[k][i ].second ];
198
+ P1 = Particles[SMPairs[k][p ].first ];
199
+ P2 = Particles[SMPairs[k][p ].second ];
202
200
#else
203
- P1 = Particles[std::min (SMPairs[k][i ].first , SMPairs[k][i ].second )];
204
- P2 = Particles[std::max (SMPairs[k][i ].first , SMPairs[k][i ].second )];
201
+ P1 = Particles[std::min (SMPairs[k][p ].first , SMPairs[k][p ].second )];
202
+ P2 = Particles[std::max (SMPairs[k][p ].first , SMPairs[k][p ].second )];
205
203
#endif
206
204
207
205
double h = (P1->h +P2->h )/2 ;
@@ -287,10 +285,10 @@ inline void Domain::CalcRateTensors() {
287
285
Mult (GK * P2->gradCorrM ,xij,gradK);
288
286
Dyad (vab,gradK,gradv[1 ]); // outer product. L, velocity gradient tensor
289
287
290
- for (int i =0 ;i <2 ;i ++){
291
- Trans (gradv[i ],gradvT[i ]);
292
- StrainRate_c[i ] = -0.5 *(gradv[i ] + gradvT[i ]);
293
- RotationRate_c[i ] = -0.5 *(gradv[i ] - gradvT[i ]);
288
+ for (int j =0 ;j <2 ;j ++){
289
+ Trans (gradv[j ],gradvT[j ]);
290
+ StrainRate_c[j ] = -0.5 *(gradv[j ] + gradvT[j ]);
291
+ RotationRate_c[j ] = -0.5 *(gradv[j ] - gradvT[j ]);
294
292
}
295
293
296
294
// Calculating the forces for the particle 1 & 2
@@ -301,8 +299,8 @@ inline void Domain::CalcRateTensors() {
301
299
Vec3_t vc[2 ];
302
300
303
301
if (gradKernelCorr){
304
- for (int i =0 ;i <2 ;i ++){
305
- Mult (GKc[i ], xij, vc[i ]);
302
+ for (int j =0 ;j <2 ;j ++){
303
+ Mult (GKc[j ], xij, vc[j ]);
306
304
}
307
305
}
308
306
@@ -313,28 +311,18 @@ inline void Domain::CalcRateTensors() {
313
311
temp1 = dot ( vij , GK*xij );
314
312
} else {
315
313
for (int i=0 ;i<2 ;i++){ // TODO: DO THIS ONCE!
316
- temp1_c[i ] = dot ( vij , vc[i ] );
314
+ temp1_c[p ] = dot ( vij , vc[p ] );
317
315
}
318
316
}
319
317
320
318
clock_begin = clock ();
321
319
// Locking the particle 1 for updating the properties
322
320
323
- // #ifdef NONLOCK_SUM
321
+ #ifdef NONLOCK_SUM
324
322
// if (!gradKernelCorr)
325
- // pair_StrainRate[first_pair_perproc[k] + i] = StrainRate; //SHOULD ALSO MULTIPLY ACCEL AFTER
326
- // pair_RotRate[first_pair_perproc[k] + i] = RotationRate; //SHOULD ALSO MULTIPLY ACCEL AFTER
327
-
328
- // if (SMPairs[k][i].first == ID_TEST || SMPairs[k][i].second == ID_TEST){
329
- // cout << "i j StrainRate mj: "<<SMPairs[k][i].first<<", "<<SMPairs[k][i].second<<", "<< RotationRate;
330
- // }
331
- // if (SMPairs[k][i].first == ID_TEST) cout << mj <<", ";
332
- // else if (SMPairs[k][i].second == ID_TEST) cout << mi<<", ";
333
-
334
- // if (SMPairs[k][i].first == ID_TEST) cout << "-"<<endl;
335
- // else if (SMPairs[k][i].second == ID_TEST) cout << "+" <<endl;
336
-
337
- // #else
323
+ pair_StrainRate[first_pair_perproc[k] + p] = StrainRate; // SHOULD ALSO MULTIPLY ACCEL AFTER
324
+ pair_RotRate[first_pair_perproc[k] + p] = RotationRate; // SHOULD ALSO MULTIPLY ACCEL AFTER
325
+ #else
338
326
omp_set_lock (&P1->my_lock );
339
327
340
328
float mj_dj= mj/dj;
@@ -363,32 +351,31 @@ inline void Domain::CalcRateTensors() {
363
351
}
364
352
365
353
omp_unset_lock (&P2->my_lock );
366
- // #endif
354
+ #endif
367
355
}// FOR PAIRS
368
356
}// FOR NPROC
357
+
358
+ for (int i=0 ; i<Particles.Size ();i++)
359
+ if (i == ID_TEST)
360
+ cout << " Time, Orig Rot Rate " <<Time << " , " <<Particles[i]->RotationRate <<endl;
369
361
}
362
+
363
+
370
364
// TODO: TEMPLATIZE, at least by type, by Reduction double,
371
365
inline void Domain::RateTensorsReduction (){
366
+ // Not necesay to set to zero here. Are in domain
372
367
#pragma omp parallel for schedule (static) num_threads(Nproc)
373
368
for (int i=0 ; i<Particles.Size ();i++){
374
- set_to_zero (Particles[i]->StrainRate );
375
- set_to_zero (Particles[i]->RotationRate );
376
369
for (int n=0 ;n<ipair_SM[i];n++){
377
- // if (i == ID_TEST)
378
- // cout << "i<j rot " << Anei[i][n] << pair_RotRate[Aref[i][n]]<<endl;
379
370
double mjdj = Particles[Anei[i][n]]->Mass /Particles[Anei[i][n]]->Density ;
380
371
Particles[i]->StrainRate = Particles[i]->StrainRate + mjdj * pair_StrainRate[Aref[i][n]];
381
372
Particles[i]->RotationRate = Particles[i]->RotationRate + mjdj * pair_RotRate[Aref[i][n]];
382
373
}
383
374
for (int n=0 ;n<jpair_SM[i];n++){
384
375
double mjdj = Particles[Anei[i][MAX_NB_PER_PART-1 -n]]->Mass / Particles[Anei[i][MAX_NB_PER_PART-1 -n]]->Density ;
385
- // if (i == ID_TEST)
386
- // cout << "i<j rot " << Anei[i][MAX_NB_PER_PART-1-n] << pair_RotRate[Aref[i][MAX_NB_PER_PART-1-n]]<<endl;
387
376
Particles[i]->StrainRate = Particles[i]->StrainRate + mjdj * pair_StrainRate[Aref[i][MAX_NB_PER_PART-1 -n]];
388
377
Particles[i]->RotationRate = Particles[i]->RotationRate + mjdj * pair_RotRate[Aref[i][MAX_NB_PER_PART-1 -n]];
389
378
}
390
- // if (i == ID_TEST)
391
- // cout << "New Rot Rate: "<<Particles[i]->RotationRate<<endl;
392
379
}
393
380
}
394
381
0 commit comments