PMEAL / OpenPNM

A Python package for performing pore network modeling of porous media
http://openpnm.org
MIT License
444 stars 174 forks source link

Plan for effective_area/length #1051

Closed jgostick closed 6 years ago

jgostick commented 6 years ago

After several discussions, I think we have a plan for the conductance models. I will try to capture here:

  1. All conductance models will accept conduit_length and conduit_area, along with the necessary phase info (e.g. 'pore.viscosity')
  2. Hydraulic conductance will also accept a shape_factor argument since cylinders and cuboids with the same area have different conductance. The other models don't need this (e.g. diffusive conductance).

This is where I get fuzzy...

  1. effective_area is technically a Physics property, so we think it should be there, like models.physics.conduit_props.effective_area. We could also models.physics.conduit_props.effective_length, even though we think length as it is currently defined is a geometry property...however we might include a tortuosity-type effect in this sooner or later.
  2. We also wanted to include some sort of generic effective area model that could be used if it wasn't clear whether the pores were spheres, cubes or something else.
ma-sadeghi commented 6 years ago

There's a problem:

For calculating the effective area, you need to know the actual length (of the pores), and not the one that's been corrected for tortuosity. So, while I think that we should eventually account for tortuosity of converging conduits, it would break the effective area models since. Here's what I propose:

  1. Keep conduit_length models under models.geometry, where they actually belong (since the calculated lengths have physical significance).
  2. Add effective_length models under models.physics.conduit_props. They take throat.conduit_length and throat.conduit_tortuosity (default = 1) and return effective conduit lengths that is basically the original conduit length, scaled by tortuosity.

The downside is the added complexity, but the advantage is the logical decoupling, and of course fixing the issue of calculating the effective area.

What do you think? @jgostick @TomTranter. Others are of course welcome to comment.

TomTranter commented 6 years ago

The way we used to calculate throat length for a cubic network was to take the pore center to center distance and subtract half the pore radii from each end. This was problematic for the equivalent area models as it didn't account for the hemispheres where pores and throats intersect. The extra distance can be calculated for intersecting spheres and cylinders from geometrical principles. But this breaks down for boundary pores, pores where the throat is bigger than the pore (not really physical but could happen in networks where PSD and TSD are applied randomly), extracted networks and pores and throats that aren't spherical. I think a more robust method for calculating the conduit lengths would be to have the throat length fixed and supplied to a conductance model from geometry along with a throat center coordinate and vector. Throat end points can then be worked out and the distance from end points to pore centers/coords is the conduit pore length. Now you can add a throat length model to stick ball that does the intersecting sphere calculation, just store the throat part and have the conductance model do the rest.

Then the equivalent area model would use the cross sectional area of the pore at it's center and the throat's cross-sectional area and apply a function to determine the correct average between them. For spheres it would be the integral and for everything else it would be a straight up average or the user could supply a constant fractional difference to supply. This would be a physics model. I would say the equivalent area could encompass the tortuosity effect without having to define an equivalent length which to me is a bit confusing.

This is all basically resistors in series which have some resistivity and some length and area. Amin's conduit length adjustment made sense from a geometrical perspective as our old throat length calc was too crude. I'm not in favor of changing length again to account for something which is a flow characteristic. I prefer to visualize it as more of an active flow area adjustment. If the flow field was resolved properly inside the pore you would see regions of zero to low velocity growing wider as you went from pore center to throat in a concial way which is basically the same as decreasing the area of a straight cylinder.

An added advantage of using throat end points to calculate conduit lengths is that you don't necessarily need to use the pore coordinate as the other reference point. A center of mass for an odd shaped pore such as a Voronoi hull is probably a better approximation. It could even be some function of the throat diameters (i.e closer to the larger entry points to the pore) or of the domain boundary conditions if the inlets and outlets are on adjacent rather than opposite sides.

I guess what I'm thinking here is we're trying to better account for sub-pore scale flow field effects. Whats the best way to do that without making it overly complex? The basic info that an extracted or constructed network would have are pore and throat centers, cross-sectional areas (with associated diameter) and a throat length. If we want to make more complicated physical assumptions based on flow, let's do it in the physics as optional extras

TomTranter commented 6 years ago

Throat endpoints also allows for aspect ratios on the pores to be included in the conduit lengths as the models currently assume the pore diameter applies in all directions of the pore

jgostick commented 6 years ago

Fixed on #1062