← Back to team overview

yade-dev team mailing list archive

[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) {