diff --git a/src/GRANULAR/fix_granular_mdr.cpp b/src/GRANULAR/fix_granular_mdr.cpp index e79869aeaa..2563fb1fd8 100644 --- a/src/GRANULAR/fix_granular_mdr.cpp +++ b/src/GRANULAR/fix_granular_mdr.cpp @@ -155,8 +155,8 @@ void FixGranularMDR::pre_force(int) calculate_contact_penalty(); mean_surf_disp(); + // QUESTION: What about fix wall/gran? auto fix_list = modify->get_fix_by_style("wall/gran/region"); - for (int w = 0; w < fix_list.size(); w++) { update_fix_gran_wall(fix_list[w]); } @@ -304,6 +304,8 @@ void FixGranularMDR::end_of_step() void FixGranularMDR::set_arrays(int i) { + // QUESTION: which of these must be initialized to zero? + // maybe just index_history_setup_flag? // atom->dvector[index_Ro][i] = 0.0; // atom->dvector[index_Vgeo][i] = 0.0; // atom->dvector[index_Velas][i] = 0.0; @@ -367,7 +369,7 @@ void FixGranularMDR::radius_update() } /* ---------------------------------------------------------------------- - ... + QUESTION: is there a physical description for this loop? ------------------------------------------------------------------------- */ void FixGranularMDR::calculate_contact_penalty() @@ -456,6 +458,8 @@ void FixGranularMDR::calculate_contact_penalty() history_ik = &allhistory[size_history * kk]; double * pik = &history_ik[22]; // penalty for contact i and k + // QUESTION: is this comment accurate? + // Find pair of atoms with the smallest overlap, atoms a & b, 3rd atom c is central // if a & b are both local: // calculate ab penalty and add to the one history entry @@ -540,7 +544,7 @@ void FixGranularMDR::calculate_contact_penalty() /* ---------------------------------------------------------------------- - ... + QUESTION: is there a physical description for this loop? ------------------------------------------------------------------------- */ void FixGranularMDR::mean_surf_disp() @@ -685,13 +689,6 @@ void FixGranularMDR::update_fix_gran_wall(Fix* fix_in) const int size_history = model->size_history; int i, m, nc, iwall; - double vwall[3]; - bool touchflag = false; - int history_update = 1; - model->history_update = history_update; - - int regiondynamic = region->dynamic_check(); - if (!regiondynamic) vwall[0] = vwall[1] = vwall[2] = 0; double **x = atom->x; double *radius = atom->radius; @@ -701,14 +698,8 @@ void FixGranularMDR::update_fix_gran_wall(Fix* fix_in) double *Acon0 = atom->dvector[index_Acon0]; double *ddelta_bar = atom->dvector[index_ddelta_bar]; - if (regiondynamic) { + if (region->dynamic_check()) region->prematch(); - region->set_velocity(); - } - - if (fix->peratom_flag) fix->clear_stored_contacts(); - - model->radj = 0.0; for (i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; @@ -732,26 +723,11 @@ void FixGranularMDR::update_fix_gran_wall(Fix* fix_in) } else fix->update_contacts(i, nc); - // process current contacts for (int ic = 0; ic < nc; ic++) { - - // Reset model and copy initial geometric data - model->dx[0] = region->contact[ic].delx; - model->dx[1] = region->contact[ic].dely; - model->dx[2] = region->contact[ic].delz; - model->radi = radius[i]; - model->radj = region->contact[ic].radius; - model->r = region->contact[ic].r; - - if (model->beyond_contact) model->touch = fix->history_many[i][fix->c2r[ic]][0]; - - touchflag = model->check_contact(); - const double wij = 1.0; - if (Acon0[i] != 0.0) { - const double delta = model->radsum - model->r; + const double delta = radius[i] - region->contact[ic].r; const double delta_offset0 = fix->history_many[i][fix->c2r[ic]][0]; const double ddelta = delta - delta_offset0; const double Ac_offset0 = fix->history_many[i][fix->c2r[ic]][18]; diff --git a/src/GRANULAR/fix_wall_gran.h b/src/GRANULAR/fix_wall_gran.h index 85f3869ca9..e1e8c38ffe 100644 --- a/src/GRANULAR/fix_wall_gran.h +++ b/src/GRANULAR/fix_wall_gran.h @@ -52,7 +52,6 @@ class FixWallGran : public Fix { // for granular model choices class Granular_NS::GranularModel *model; - void clear_stored_contacts(); protected: int wallstyle, wiggle, wshear, axis; @@ -86,6 +85,8 @@ class FixWallGran : public Fix { // store particle interactions int store; + + void clear_stored_contacts(); }; } // namespace LAMMPS_NS diff --git a/src/GRANULAR/fix_wall_gran_region.cpp b/src/GRANULAR/fix_wall_gran_region.cpp index c0c7dd1dcb..4a59c1aea2 100644 --- a/src/GRANULAR/fix_wall_gran_region.cpp +++ b/src/GRANULAR/fix_wall_gran_region.cpp @@ -195,10 +195,10 @@ void FixWallGranRegion::post_force(int /*vflag*/) if (nc > tmax) error->one(FLERR, "Too many wallgran/region contacts for one particle"); // shear history maintenance - // update ncontact,walls,shear2many for particle I - // to reflect new and persistent shear historyvalues - // also set c2r[] = indices into region->contact[]for each of N contacts - // process zero or one contact here, otherwiseinvoke update_contacts() + // update ncontact, walls, shear2many for particle I + // to reflect new and persistent shear history values + // also set c2r[] = indices into region->contact[] for each of N contacts + // process zero or one contact here, otherwise invoke update_contacts() if (use_history) { if (nc == 0) {