Adjust extract porenetwork script - disconnected pores already include isolated pores
<!-- SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder SPDX-License-Identifier: CC0-1.0 --> <!-- This form is for bug reports ONLY! If you're looking for help check out the [readme](/README.md). --> **Bug report** **What happened / Problem description**: Since the updating script [extract_pore_network_with_porespy.py](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/util/extract_pore_network_with_porespy.py) for the new openpnm version 3, isolated pores and pores in disconnected clusters are removed to avoid singularity. However, @mathis mentioned that isolated pores can't be removed anymore as they were already removed before by the pores in disconnected clusters. Checking with the extraction script based on a OpenPNM version 2.X, "trim_pores" was used (see [OpenPNM version 2.8](https://github.com/PMEAL/OpenPNM/blob/v2.8.2/openpnm/utils/Project.py#L804)), which is equivilant to "disconnected_pores" in [OpenPNM version 3.X](https://github.com/PMEAL/OpenPNM/blob/dev/openpnm/utils/_health.py#L88). **What you expected to happen**: No error, when removing isolated pores or pores from disconnected clusters and no removed pores, which should not be. **How to reproduce it (as minimally and precisely as possible)**: <details><summary>Minimal Python example</summary> A porenetwork is created and boundary throats are deleted such that it leaves a network with isolated pores at the corners (see plot). It can be seen from the output, that isolated pores and pores in disconnected clusters are the same in this case. Hence, `disconnected_pores` also contains `isolated_pores`. After trimming the network with `disconnected_pores`, trimming with `isolated_pores` does not work any more/is unnecessary. ```python import openpnm as op import numpy as np import matplotlib.pyplot as plt import math def plot_network_with_op(network): print('\n------------------------------------------') print('Plot network with openPNM visualization (using matplotlib)') opMplStyle = True if opMplStyle: op.visualization.set_mpl_style() fig = plt.figure(figsize=[20, 15]) ax = fig.add_subplot(111) legend_labels = ['throat', 'pore'] ax = op.visualization.plot_connections(network, ax=ax, label = legend_labels[0]) ax = op.visualization.plot_coordinates(network, ax=ax, label = legend_labels[1]) plt.legend() plt.show() def calc_throat_center_coords(network): pore_coords = network["pore.coords"] throats = network["throat.conns"] throat_centers = np.mean(pore_coords[throats], axis=1) return throat_centers def remove_boundary_throats(network): eps = 1e-6 throat_centers = calc_throat_center_coords(network) box_min = np.min(network['pore.coords'][:], axis=0) box_max = np.max(network['pore.coords'][:], axis=0) eps_array_2D = np.array([eps, eps, 0.0]) boundaryThroats = np.any((throat_centers < box_min + eps_array_2D) | (throat_centers > box_max - eps_array_2D), axis=1) #bool vector with True for throats at boundary op.topotools.trim(network=network, throats=boundaryThroats) N_x = 5 N_y = N_x porenetwork = op.network.Cubic(shape=[N_x,N_y ]) # delete throats at boundary to create isolated pores in corners remove_boundary_throats(porenetwork) plot_network_with_op(porenetwork) health = op.utils.check_network_health(porenetwork) print("Pores in disconnected clusters: ", health["disconnected_pores"]) print("Isolated pores: ", health["isolated_pores"]) op.topotools.trim(network=porenetwork, pores=health["isolated_pores"]) op.topotools.trim(network=porenetwork, pores=health["disconnected_pores"]) ``` </details> **Sugdestion**: Just use `disconnected_pores` to trim porenetwork as this is equivalent to the old script based on OpenPNM 2.X and it also contains the `isolated_pores` **Environment**: - Dune version: - DuMux version: - Others:
issue