|
HG-MD
1
|
Member variable of Particle storing all history parameters
of a particle.
More...
#include <CDeltaMax.h>
Classes | |
| struct | check_spring_time |
| Construction required for the erase/remove_if stuff. More... | |
Public Member Functions | |
| Mdouble * | select_particle (int P, Mdouble time_, Mdouble dt) |
| Function selects the tangential spring vector for particle-particle interations (also removed not used springs}. | |
| Mdouble * | select_wall (int W, Mdouble time_, Mdouble dt) |
| Function selects the tangential spring vector for particle-wall interations. | |
| void | reset () |
| Resets the tangential springs. | |
| void | print (std::ostream &os, Mdouble time_) |
| outputs all current active tangential springs | |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const CDeltaMaxs &p) |
| writes all springs | |
| std::istream & | operator>> (std::istream &is, CDeltaMaxs &p) |
| reads all springs | |
Member variable of Particle storing all history parameters
of a particle.
A tangential spring between PI and PJ can be stored in either particle depending on which particle is the first particle in MD::compute_internal_forces.
Geometrically, there can be no more than 13 possible contacts in 3D, so the vector size is limited.
| void CDeltaMaxs::print | ( | std::ostream & | os, |
| Mdouble | time_ | ||
| ) | [inline] |
outputs all current active tangential springs
{
os << "Delta max's: N=" << size() << endl;
for (CDeltaMaxs::iterator it=begin(); it!=end(); it++)
if (it->time>=time_) {
it->print(os); os << endl;
}
}
| void CDeltaMaxs::reset | ( | ) | [inline] |
Resets the tangential springs.
{
clear();
reserve(13);
}
| Mdouble* CDeltaMaxs::select_particle | ( | int | P, |
| Mdouble | time_, | ||
| Mdouble | dt | ||
| ) | [inline] |
Function selects the tangential spring vector for particle-particle interations (also removed not used springs}.
Referenced by MD::compute_plastic_internal_forces().
{
//Remove_if reconstructs the vector with only elements passing the check_spring_time function
//Erase removes the end of the vector
erase(remove_if(begin(),end(),bind2nd(check_spring_time(),time_)),end());
//Loops over all Springs ant returns the correct one (if it exists)
for (CDeltaMaxs::iterator it=begin(); it!=end();it++){
if (it->pParticle==P)
{
it->time=time_+dt;
return &it->delta;
}
}
//if not, create it
push_back(CDeltaMax(0,P,-1,time_+dt));
return &back().delta;
}
| Mdouble* CDeltaMaxs::select_wall | ( | int | W, |
| Mdouble | time_, | ||
| Mdouble | dt | ||
| ) | [inline] |
Function selects the tangential spring vector for particle-wall interations.
{
//Remove_if reconstructs the vector with only elements passing the check_spring_time function
//Erase removes the end of the vector
erase(remove_if(begin(),end(),bind2nd(check_spring_time(),time_)),end());
//Loops over all Springs ant returns the correct one (if it exists)
for (CDeltaMaxs::iterator it=begin(); it!=end(); it++)
{
if (it->pWall==W)
{
it->time=time_+dt;
return &it->delta;
}
}
//if not, create it
push_back(CDeltaMax(0,-1,W,time_+dt));
return &back().delta;
}
| std::ostream& operator<< | ( | std::ostream & | os, |
| const CDeltaMaxs & | p | ||
| ) | [friend] |
writes all springs
{
os << p.size() << " ";
for (unsigned int i=0; i<p.size(); i++) os << p[i] << " ";
return os;
}
| std::istream& operator>> | ( | std::istream & | is, |
| CDeltaMaxs & | p | ||
| ) | [friend] |
reads all springs
{
int n; is >> n; p.resize(n);
for (unsigned int i=0; i<p.size(); i++) is >> p[i];
return is;
}
1.7.6.1