yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #11950
[Branch ~yade-pkg/yade/git-trunk] Rev 3624: Add some comments on FlowEngine(by bruno).
------------------------------------------------------------
revno: 3624
committer: Chao Yuan <chaoyuan2012@xxxxxxxxx>
timestamp: Thu 2015-03-26 10:16:03 +0100
message:
Add some comments on FlowEngine(by bruno).
modified:
lib/triangulation/FlowBoundingSphere.ipp
--
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 'lib/triangulation/FlowBoundingSphere.ipp'
--- lib/triangulation/FlowBoundingSphere.ipp 2015-01-23 08:23:51 +0000
+++ lib/triangulation/FlowBoundingSphere.ipp 2015-03-26 09:16:03 +0000
@@ -317,12 +317,15 @@
const CVector& Surfk = cell->info().facetSurfaces[j];
//FIXME : later compute that fluidSurf only once in hydraulicRadius, for now keep full surface not modified in cell->info for comparison with other forces schemes
//The ratio void surface / facet surface
+ //Area of the facet (i.e. the triangle)
Real area = sqrt(Surfk.squared_length()); if (area<=0) cerr <<"AREA <= 0!!"<<endl;
CVector facetNormal = Surfk/area;
const std::vector<CVector>& crossSections = cell->info().facetSphereCrossSections;
+ //This is the cross-sectional area of the throat
CVector fluidSurfk = cell->info().facetSurfaces[j]*cell->info().facetFluidSurfacesRatio[j];
/// handle fictious vertex since we can get the projected surface easily here
if (cell->vertex(j)->info().isFictious) {
+ //projection of facet on the boundary
Real projSurf=std::abs(Surfk[boundary(cell->vertex(j)->info().id()).coordinate]);
tempVect=-projSurf*boundary(cell->vertex(j)->info().id()).normal;
cell->vertex(j)->info().forces = cell->vertex(j)->info().forces+tempVect*cell->info().p();
@@ -334,9 +337,11 @@
CVector facetForce = cell->info().p()*facetUnitForce;
for (int y=0; y<3;y++) {
+ //1st the drag (viscous) force weighted by surface of spheres in the throat
cell->vertex(facetVertices[j][y])->info().forces = cell->vertex(facetVertices[j][y])->info().forces + facetForce*cell->info().solidSurfaces[j][y];
- //add to cached value
+ //(add to cached value)
cell->info().unitForceVectors[facetVertices[j][y]]=cell->info().unitForceVectors[facetVertices[j][y]]+facetUnitForce*cell->info().solidSurfaces[j][y];
+ //2nd the partial integral of pore pressure, which boils down to weighting by partial cross-sectional area
//uncomment to get total force / comment to get only viscous forces (Bruno)
if (!cell->vertex(facetVertices[j][y])->info().isFictious) {
cell->vertex(facetVertices[j][y])->info().forces = cell->vertex(facetVertices[j][y])->info().forces -facetNormal*cell->info().p()*crossSections[j][y];