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@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-dev
More help : https://help.launchpad.net/ListHelp
_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to : yade-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-dev
More help : https://help.launchpad.net/ListHelp