Skip to content

Commit 51db614

Browse files
committed
fixed strain and rot rates of #267
1 parent 921da54 commit 51db614

File tree

2 files changed

+26
-39
lines changed

2 files changed

+26
-39
lines changed

Source/InteractionAlt.cpp

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -185,23 +185,21 @@ inline void Domain::AccelReduction(){
185185

186186
//Similar but not densities
187187
inline void Domain::CalcRateTensors() {
188-
Particle *P1, *P2;
189-
//cout << "********************************************************"<<endl;
190-
188+
Particle *P1, *P2;
191189
#pragma omp parallel for schedule (static) private (P1,P2) num_threads(Nproc)
192190
#ifdef __GNUC__
193191
for (size_t k=0; k<Nproc;k++)
194192
#else
195193
for (int k=0; k<Nproc;k++)
196194
#endif
197195
{
198-
for (size_t i=0; i<SMPairs[k].Size();i++) {
196+
for (size_t p=0; p<SMPairs[k].Size();p++) {
199197
#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];
202200
#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)];
205203
#endif
206204

207205
double h = (P1->h+P2->h)/2;
@@ -287,10 +285,10 @@ inline void Domain::CalcRateTensors() {
287285
Mult(GK * P2->gradCorrM,xij,gradK);
288286
Dyad (vab,gradK,gradv[1]); //outer product. L, velocity gradient tensor
289287

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]);
294292
}
295293

296294
// Calculating the forces for the particle 1 & 2
@@ -301,8 +299,8 @@ inline void Domain::CalcRateTensors() {
301299
Vec3_t vc[2];
302300

303301
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]);
306304
}
307305
}
308306

@@ -313,28 +311,18 @@ inline void Domain::CalcRateTensors() {
313311
temp1 = dot( vij , GK*xij );
314312
} else {
315313
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] );
317315
}
318316
}
319317

320318
clock_begin = clock();
321319
// Locking the particle 1 for updating the properties
322320

323-
//#ifdef NONLOCK_SUM
321+
#ifdef NONLOCK_SUM
324322
//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
338326
omp_set_lock(&P1->my_lock);
339327

340328
float mj_dj= mj/dj;
@@ -363,32 +351,31 @@ inline void Domain::CalcRateTensors() {
363351
}
364352

365353
omp_unset_lock(&P2->my_lock);
366-
//#endif
354+
#endif
367355
}//FOR PAIRS
368356
}//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;
369361
}
362+
363+
370364
// TODO: TEMPLATIZE, at least by type, by Reduction double,
371365
inline void Domain::RateTensorsReduction(){
366+
//Not necesay to set to zero here. Are in domain
372367
#pragma omp parallel for schedule (static) num_threads(Nproc)
373368
for (int i=0; i<Particles.Size();i++){
374-
set_to_zero(Particles[i]->StrainRate);
375-
set_to_zero(Particles[i]->RotationRate);
376369
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;
379370
double mjdj = Particles[Anei[i][n]]->Mass /Particles[Anei[i][n]]->Density;
380371
Particles[i]->StrainRate = Particles[i]->StrainRate + mjdj * pair_StrainRate[Aref[i][n]];
381372
Particles[i]->RotationRate = Particles[i]->RotationRate + mjdj * pair_RotRate[Aref[i][n]];
382373
}
383374
for (int n=0;n<jpair_SM[i];n++){
384375
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;
387376
Particles[i]->StrainRate = Particles[i]->StrainRate + mjdj * pair_StrainRate[Aref[i][MAX_NB_PER_PART-1-n]];
388377
Particles[i]->RotationRate = Particles[i]->RotationRate + mjdj * pair_RotRate[Aref[i][MAX_NB_PER_PART-1-n]];
389378
}
390-
// if (i == ID_TEST)
391-
// cout << "New Rot Rate: "<<Particles[i]->RotationRate<<endl;
392379
}
393380
}
394381

Source/SolverLeapfrog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ inline void Domain::SolveDiffUpdateLeapfrog (double tf, double dt, double dtOut,
230230
clock_beg = clock();
231231
CalcRateTensors(); //With v and xn+1
232232
#ifdef NONLOCK_SUM
233-
//RateTensorsReduction();
233+
RateTensorsReduction();
234234
#endif
235235
#pragma omp parallel for schedule (static) num_threads(Nproc)
236236
for (size_t i=0; i<Particles.Size(); i++){

0 commit comments

Comments
 (0)