# Modeling cohesive materials

85 views

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?

Thanks,

Daniel

answered Sep 23, 2018 by (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

answered Sep 23, 2018 by (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.

Thanks,

Daniel

commented Oct 4, 2018 by (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.