Example #1
0
 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
Example #2
0
 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
Example #3
0
    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)
Example #4
0
 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']
Example #5
0
 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)