← Back to team overview

yade-users team mailing list archive

[Question #685502]: cpm model tensile contact breakage

 

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

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,

((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

/* 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.