Welcome to ask.woodem.org. You may post when you login through your GitHub account.

Modeling cohesive materials

0 votes
asked Sep 21, 2018 by drasszkusz (350 points)

Hi all!

I would like to ask that is there any contact model in woo like Law2_ScGeom6D_CohFrictPhys_CohesionMoment in Yade?

I've tried Ice contact model for simulating cohesional sphere packs, but some things are not clear for me.

1. Are there any options to define the normal and shear cohesions? Because I saw in the documentation that normal cohesion (cn) is computed and shear cohesion is calculated from normal cohesion with a proportionality factor (IceMat.beta).

2. If normal cohesion (cn) can be only computed, then is it possible to affect it's value somehow and to plot it in the simulation?




2 Answers

0 votes
answered Sep 23, 2018 by eudoxos (49,070 points)

Hi Daniel, the ice model was custom-developed, hence might not be suitable for everything you need yourself.

For your questions: normal cohesion is computed from [this equation](https://woodem.org/theory/contact/ice.html#equation-ice-cn), in dependence on material parameters (see [https://github.com/woodem/woo/blob/master/pkg/dem/Ice.cpp#L22](the code)). So yo ucan prescribe it indirectly via [breakN](https://woodem.org/woo.dem.html#woo.dem.IceMat.breakN) which is limit normal strain. So you effectively cohesion via IceMat.breakN, which is adimensional -- this is important for correct model scaling.

HTH, Vaclav

0 votes
answered Sep 23, 2018 by drasszkusz (350 points)

Dear Vaclav!

So the normal cohesion (cn) is not a callable value. Maybe the average normal cohesion could be calculated from IcePhys.brkNT divided by L6Geom.contA? If it is, could you help me please, because I have some problems with the coding and I'm a bit new to python.

I'm not really know how to get the values. I've tried IcePhys.brkNT, IcePhys.brkNT[0], IcePhys.brkNT[1], but woo printed only these: <property at 0x3109818> or 'property' object has no attribute '__getitem__'. I've also tried to get maximum or average values, but 'property' is not iterable.



commented Oct 4, 2018 by eudoxos (49,070 points)

Hi Daniel, you will have to iterate over contacts to compute the average.
Something maybe like this avgCn=numpy.mean([c.phys.brkNT[0]/c.geom.contA for c in S.dem.contacts]) for the normal (replace with brkNT[1] for tangential). IcePhys.brkNT[1] in itself makes no sense, you need an instance to ask for the property value -- as you will learn Python (and c++), you will understand more. Sorry for later reply, did not notice your post before. v.