41 template<
class NormalForceSpecies,
class FrictionForceSpecies,
class AdhesiveForceSpecies>
114 template<
class NormalForceInteraction,
class FrictionForceInteraction=EmptyFrictionInteraction,
class AdhesiveForceInteraction=EmptyAdhesiveInteraction>
141 void read(std::istream& is)
final;
144 void write(std::ostream& os)
const final;
147 std::string
getName() const final;
171 void setMPIInteraction(
void* historyDataArray,
unsigned int index, const
bool resetPointers) final;
173 void getInteractionDetails(
void* interactionDataArray,
unsigned int index,
unsigned int& identificationP,
187 FrictionForceInteraction(P, I, timeStamp), AdhesiveForceInteraction(P, I, timeStamp)
189 #ifdef DEBUG_CONSTRUCTOR
190 std::cout<<
"Interaction::Interaction() finished"<<std::endl;
195 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
199 #ifdef DEBUG_CONSTRUCTOR
200 std::cout<<
"Interaction::Interaction() finished"<<std::endl;
204 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
209 #ifdef DEBUG_CONSTRUCTOR
210 std::cout<<
"Interaction::Interaction(const Interaction &p finished"<<std::endl;
214 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
217 #ifdef DEBUG_DESTRUCTOR
218 std::cout<<
"Interaction::~Interaction() finished"<<std::endl;
225 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
236 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
240 NormalForceInteraction::write(os);
241 FrictionForceInteraction::write(os);
242 AdhesiveForceInteraction::write(os);
250 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
253 NormalForceInteraction::read(is);
254 FrictionForceInteraction::read(is);
255 AdhesiveForceInteraction::read(is);
263 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
266 NormalForceInteraction::reverseHistory();
267 FrictionForceInteraction::reverseHistory();
268 AdhesiveForceInteraction::reverseHistory();
271 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
275 NormalForceInteraction::rotateHistory(rotationMatrix);
276 FrictionForceInteraction::rotateHistory(rotationMatrix);
277 AdhesiveForceInteraction::rotateHistory(rotationMatrix);
284 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
287 return NormalForceInteraction::getBaseName() + FrictionForceInteraction::getBaseName() +
288 AdhesiveForceInteraction::getBaseName() +
"Interaction";
296 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
300 FrictionForceInteraction::integrate(timeStep);
311 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
314 NormalForceInteraction::computeNormalForce();
315 FrictionForceInteraction::computeFrictionForce();
316 AdhesiveForceInteraction::computeAdhesionForce();
325 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
329 return NormalForceInteraction::getElasticEnergy() + FrictionForceInteraction::getElasticEnergy() +
330 AdhesiveForceInteraction::getElasticEnergy();
333 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
336 AdhesiveForceInteraction::actionsAfterTimeStep();
342 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
347 return NormalForceInteraction::getElasticEnergyAtEquilibrium(adhesiveForce);
351 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
353 void* interactionDataArray,
unsigned int index)
const
360 array[index] = interactionData;
363 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
365 void* interactionDataArray,
unsigned int index,
const bool resetPointers)
374 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
376 void* interactionDataArray,
unsigned int index,
unsigned int& identificationP,
unsigned int& identificationI,
377 bool& isWallInteraction,
unsigned& timeStamp)
382 identificationP = interactionData.
P;
383 identificationI = interactionData.
I;
389 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
392 unsigned int numberOfInteractions)
const
395 void* interactionArray =
static_cast<void*
>(array);
396 return interactionArray;
399 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
408 template<
class NormalForceInteraction,
class FrictionForceInteraction,
class AdhesiveForceInteraction>
411 #ifdef MERCURY_USE_MPI