← Back to team overview

yade-dev team mailing list archive

Re: DFNFlow check script and trickPerm uncertainty fix

 

Hi Robert,
It sounds good, except that I would increment kNorm directly instead of incrementing a counter.
Logic:
- two adjacent cracks cumulate their conductivity: Ktot = K1+K2
- if you accumulate aperture you get (a1+a2)^3 instead of (a1^3  + a2^3), it will increase to much it seems.

I know there can still be some form of non linearity depending on the count but the cube of the sum is to much IMO.

Bruno

On 09/02/2018 03:39 PM, Robert Caulk wrote:
Hello,

I am working on a check test for DFNFlow in which I use pressure and aperture as pass criteria. However, I want this check script to be a repeatable baseline for DFNFlow, so I'd like to remove/replace the existing uncertainty associated with tricking permeability. If this change may affect you, please review the following and reply with your comments/suggestions.

*_Existing problem:_*
Currently, DFNFlow tricks facet permeability by using the most recently visited edge, which means the tricked facet permeability has no physical basis, in fact, it depends on the order of the C++ for loop.

_*Discussed solution:*_
Luc, Timos, Bruno, and I discussed this a bit in Aix-en-Provence and agreed(?) that we should increment the total aperture of a facet for every broken edge associated with that facet. In other words, if one facet has 2 broken edges, the aperture used to trick facet permeability is the summation of both apertures (instead of the most recently visited edge during tickPerm loop). Thus, the aperture incrementation method has some physical basis and no longer depends on the order of C++ for loop.

If we want/need to keep the uncertain trickPerm method around, let me know and I will add a flag for you.

*_Proposed changes to DFNFlow.cpp [1]:_*

DFNFlow.cpp around line 245:

// increment the facet's aperture member:
if (cell1->info().count()[currentFacet.second] < 3){
cell1->info().count()[currentFacet.second] += 1;
cell1->info().aperture()[currentFacet.second] += aperture;
}

// use the incremented facet aperture member to update facet permeability:
cell1->info().kNorm()[currentFacet.second] = cell2->info().kNorm()[Tri.mirror_index(cell1,currentFacet.second)] = apertureFactor*pow(cell1->info().aperture()[currentFacet.second],3)/(12*viscosity);

*_Status:_*
I used this method for creating the DFNFlow check script - the code is stable and produces repeatable pass criteria.

Cheers,

Robert

[1]https://github.com/yade/trunk/blob/master/pkg/pfv/DFNFlow.cpp



_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp


Follow ups

References