← Back to team overview

yade-users team mailing list archive

Re: [Question #685502]: cpm model tensile contact breakage

 

Question #685502 on Yade changed:
https://answers.launchpad.net/yade/+question/685502

Description changed to:
Hi all,

The problem is regarding CPM model when it subjected to  tension
failure.

This contact law has exponential softening damage in tension.
Therefore,after some time, particles are subjected to fully damage
during the simulation.at this point, value of the damage variable is
equal to 1.

My problem is ,what will happen to the tensile contact after  when it is
subjected to fully damage(omega=1)?


Referring to source code ConcretePM.hpp, I can see following line,(line
281)

((Real,omegaThreshold,((void)">=1. to deactivate, i.e. never delete any
contacts",1.),,"damage after which the contact disappears (<1), since
omega reaches 1 only for strain →+∞"))

and ConcretePM.cpp (line 420-429)

/* handle broken contacts */
	if (epsN>0. && ((isCohesive && omega>omegaThreshold) || !isCohesive)) {
		/* if (isCohesive) { */
			 const shared_ptr<Body>& body1 = Body::byId(I->getId1(),scene), body2 = Body::byId(I->getId2(),scene); assert(body1); assert(body2);
			 const shared_ptr<CpmState>& st1 = YADE_PTR_CAST<CpmState>(body1->state), st2 = YADE_PTR_CAST<CpmState>(body2->state);
			/* nice article about openMP::critical vs. scoped locks: http://www.thinkingparallel.com/2006/08/21/scoped-locking-vs-critical-in-openmp-a-personal-shootout/ */
			{ boost::mutex::scoped_lock lock(st1->updateMutex); st1->numBrokenCohesive += 1; /* st1->epsPlBroken += epsPlSum; */ }
			{ boost::mutex::scoped_lock lock(st2->updateMutex); st2->numBrokenCohesive += 1; /* st2->epsPlBroken += epsPlSum; */ }
		/* } */
		return false;
	}

I couldn't understand the lines in .cpp file with assert(body1),
assert(body2).since if we want to use assert function in c++, there
should be an expression.


Thank you
Chanaka

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.