PMEAL / OpenPNM

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

`add_model_collection` results in different outcomes for the same network #2800

Closed xiangWu-WW closed 1 year ago

xiangWu-WW commented 1 year ago

net = RebuildPNM('0Vug.xlsx') print(net) net.add_model_collection(op.models.collections.geometry.spheres_and_cylinders) net.regenerate_models() print(np.sum(net['pore.volume']))

I generate a PNM from excel data, then i want to calculate its permeability, but the resault is different. Finally, i find the Add_model_collectionresult to the different consequence. How to fix the problem, should i cal the 'throat.hydraulic_conductance' mannuly?

20230815145952_1 20230815150118 20230815145952
Arenhart commented 1 year ago

I belive this may be related to #2799 net.add_model_collection(op.models.collections.geometry.spheres_and_cylinders) may be overriding the loaded pore sizes and adding an stochastic element with the 0.2 to 0.7 multiplier. It could be helpfull to check if pore.diameter and throat.diameter have the same values as the original data after the net.regenerate_models() line.

xiangWu-WW commented 1 year ago

I belive this may be related to #2799 net.add_model_collection(op.models.collections.geometry.spheres_and_cylinders) may be overriding the loaded pore sizes and adding an stochastic element with the 0.2 to 0.7 multiplier. It could be helpfull to check if pore.diameter and throat.diameter have the same values as the original data after the net.regenerate_models() line.

Hi Arenhart, Thanks for your anwser. You mean that the net.add_model_collection(op.models.collections.geometry.spheres_and_cylinders) changes the pore diameter to an stochastic element with the 0.2 to 0.7 multiplier of the largerst pore which can place in the pore place. But i want to calculate the real hydraulic conduction parameters of my own PNM, how to get it? Should i change the pore_seed'num_range' to a constant number, but this will may not get the precise diameter of my PNM. 'pore.seed': { 'model': mods.misc.random, 'element': 'pore', 'num_range': [0.2, 0.7], 'seed': None, Otherwise, the calculated permeability will be different each time. Thanks again!

Arenhart commented 1 year ago

I believe, in your case, a viable solution is to manually calculate the geometric parameters, as described in this tutorial. https://openpnm.org/examples/tutorials/05_defining_geometry.html And then calculating the flow properties as described in: https://openpnm.org/examples/tutorials/08_simulating_transport.html

It is how I use openpnm, by calculating the properties manually and then calling the solver. However, one of the developers may have a more adequate approach.

jgostick commented 1 year ago

@Arenhart thanks for fielding so many questions lately.

As for this particularly problem faced by @xiangWu-WW, you can delete the models you don't want with del pn.models[<model name>]...or just not add them in the first place since you have all the data already computed in your csv file.