yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #11597
[Branch ~yade-pkg/yade/git-trunk] Rev 3515: explicit error message when trying to interpolate capillary forces out-of-range of the data files
------------------------------------------------------------
revno: 3515
committer: Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx>
timestamp: Wed 2014-10-29 19:47:32 +0100
message:
explicit error message when trying to interpolate capillary forces out-of-range of the data files
modified:
pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp
--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp'
--- pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp 2014-10-17 15:43:56 +0000
+++ pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp 2014-10-29 18:47:32 +0000
@@ -6,11 +6,6 @@
* GNU General Public License v2 or later. See file LICENSE for details. *
*************************************************************************/
-//Modifs : Parameters renamed as MeniscusParameters
-//id1/id2 as id1 is the smallest grain, FIXME : wetting angle?
-//FIXME : in triaxialStressController, change test about null force in updateStiffness
-//FIXME : needs "requestErase" somewhere
-
#include "Law2_ScGeom_CapillaryPhys_Capillarity.hpp"
#include <pkg/common/ElastMat.hpp>
#include <pkg/dem/ScGeom.hpp>
@@ -117,7 +112,7 @@
Real D = alpha*((b2->state->pos-b1->state->pos).norm()-(currentContactGeometry->radius1+ currentContactGeometry->radius2)); // scGeom->penetrationDepth could probably be used here?
if ((currentContactGeometry->penetrationDepth>=0)|| D<=0 || createDistantMeniscii) { //||(scene->iter < 1) ) // a simplified way to define meniscii everywhere
- D=0; // defines fCap when spheres interpenetrate. D<0 leads to wrong interpolation has D<0 has no solution in the interpolation : this is not physically interpretable!! even if, interpenetration << grain radius.
+ D=max(0.,D); // defines fCap when spheres interpenetrate. D<0 leads to wrong interpolation has D<0 has no solution in the interpolation : this is not physically interpretable!! even if, interpenetration << grain radius.
if (!hertzOn) {
if (fusionDetection && !cundallContactPhysics->meniscus) bodiesMenisciiList.insert(interaction);
cundallContactPhysics->meniscus=true;
@@ -160,6 +155,7 @@
if (!Vinterpol) {
if ((fusionDetection) || (hertzOn ? mindlinContactPhysics->isBroken : cundallContactPhysics->isBroken)) bodiesMenisciiList.remove(interaction);
if (D>0) scene->interactions->requestErase(interaction);
+ else LOG_ERROR("No meniscus found at a contact. capillaryPressure may be to large wrt. to the loaded data files.")
}
/// wetting angles
if (!hertzOn) {