How can polyhedron use CpmMat 、Ip2_CpmMat_CpmMat_CpmPhys()and Law2_ScGeom_CpmPhys_Cpm() ?
Dear all,
I want to use polyhedron to simulate coarse aggregate of concrete. After I create interactions for non-overlapping polyhedron -polyhedron and sphere -polyhedron[1], I find that polyhedron can't use CpmMat. The script and error are as follows:
script:
##################
concrete = O.materials.
young = young,
poisson = poisson,
frictionAngle = frictionAngle,
epsCrackOnset = epsCrackOnset,
relDuctility = relDuctility,
sigmaT = sigmaT,
))
poly1= polyhedra_
#######
error:
#######
poly1= polyhedra_
File "/home/
b.mat = material
Boost.Python.
None.None(Body, int)
did not match C++ signature:
None(yade::Body {lvalue}, boost::
#######
1)How can I modify the source code so that polyhedron can use CpmMat correctly?
2)How can I modify the source code so that polyhedron can use Ip2_CpmMat_
For law2, I found a place that may need to be modified[2]. The calculation of reflength, crosssection and refpd for polyhedron - polyhedron as well as polyhedron - sphere is added.I don't know whether this modification is correct or whether there are any other places that need to be modified. The added code is as follows:
#######
const int polyIndex=
if(b1index == polyIndex && b2index == polyIndex) {
const Vector3r& pos1 = Body::byId(I->id1, scene)->state->pos;
const Vector3r& pos2 = Body::byId(I->id2, scene)->state->pos;
Real minRad = (geom->refR1 <= 0 ? geom->refR2 : (geom->refR2 <= 0 ? geom->refR1 : math::min(
Vector3r shift2 = scene->cell->hSize * I->cellDist.
phys->refLength = (pos2 - pos1 + shift2).norm();
phys-
phys->refPD = geom->refR1 + geom->refR2 - phys->refLength;
}
if((b1index == sphereIndex && b2index == polyIndex)
const Vector3r& pos1 = Body::byId(I->id1, scene)->state->pos;
const Vector3r& pos2 = Body::byId(I->id2, scene)->state->pos;
Real minRad = (geom->refR1 <= 0 ? geom->refR2 : (geom->refR2 <= 0 ? geom->refR1 : math::min(
Vector3r shift2 = scene->cell->hSize * I->cellDist.
phys->refLength = (pos2 - pos1 + shift2).norm();
phys-
phys->refPD = geom->refR1 + geom->refR2 - phys->refLength;
}
#######
Thanks in advance.
Jie
[1]https:/
[2]https:/
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Jan Stránský
- Solved:
- Last query:
- Last reply: