def test_find_surface_pores_default_markers(self): from skimage.morphology import ball net = op.network.CubicTemplate(template=ball(3), spacing=1) net.clear(mode='labels') assert net.labels() == ['pore.all', 'throat.all'] topotools.find_surface_pores(network=net) assert net.num_pores('surface') == 66
def test_find_surface_pores(self): from skimage.morphology import ball net = op.network.CubicTemplate(template=ball(3), spacing=1) net.clear(mode='labels') assert net.labels() == ['pore.all', 'throat.all'] topotools.find_surface_pores(network=net) assert net.num_pores('surface') == 66
def __init__(self, template, spacing=[1, 1, 1], **kwargs): template = sp.atleast_3d(template) if 'shape' in kwargs: del kwargs['shape'] logger.warning('shape argument ignored, inferred from template') super().__init__(shape=template.shape, spacing=spacing, **kwargs) coords = sp.unravel_index(range(template.size), template.shape) self['pore.template_coords'] = sp.vstack(coords).T self['pore.template_indices'] = self.Ps self['pore.drop'] = template.flatten() == 0 topotools.trim(network=self, pores=self.pores('drop')) del self['pore.drop'] # remove labels pertaining to surface pores, then redo post-trim self.clear(mode='labels') self['pore.internal'] = True self['throat.internal'] = True topotools.find_surface_pores(self)
def __init__(self, network, settings=None, **kwargs): hg = Mercury(network=network) super().__init__(network=network, phase=hg, settings=self.settings, **kwargs) project = self.project self.settings['phase'] = hg.name mod = models.physics.capillary_pressure.washburn for geom in project.geometries().values(): phys = GenericPhysics(network=network, phase=hg, geometry=geom) phys.add_model(propname='throat.entry_pressure', model=mod) if not project.geometries(): hg.add_model(propname='throat.entry_pressure', model=mod) topotools.find_surface_pores(network=network) self.set_inlets(pores=network.pores('surface')) del self['pore.outlets'] del self['pore.residual'] del self['throat.residual']
def test_find_surface_pores_custom_markers_3d(self): net = op.network.Cubic(shape=[4, 4, 4], spacing=1) net.clear(mode='labels') assert net.labels() == ['pore.all', 'throat.all'] markers = [[-1, 2, 2], [2, -1, 2], [2, 5, 2], [5, 2, 2]] topotools.find_surface_pores(network=net, markers=markers) assert net.num_pores('surface') == 48 markers = [[-1], [2], [2], [5]] with pytest.raises(Exception): topotools.find_surface_pores(network=net, markers=markers) markers = [[-1, 2], [2, -1], [2, 5], [5, 2]] with pytest.raises(Exception): topotools.find_surface_pores(network=net, markers=markers)