def get_intrusion_data(self, Pc=None):
        r"""
        Obtain the numerical values of the calculated intrusion curve

        Returns
        -------
        A named-tuple containing arrays of applied capillary pressures and
        invading phase saturation.

        """
        net = self.project.network
        if Pc is None:
            # Infer list of applied capillary pressures
            points = np.unique(self['throat.invasion_pressure'])
            # Add a low pressure point to the list to improve graph
            points = np.concatenate(([0], points))
            if points[-1] == np.inf:  # Remove infinity from points if present
                points = points[:-1]
        else:
            points = np.array(Pc)
        # Get pore and throat volumes
        Pvol = net[self.settings['pore_volume']]
        Tvol = net[self.settings['throat_volume']]
        Total_vol = np.sum(Pvol) + np.sum(Tvol)
        # Find cumulative filled volume at each applied capillary pressure
        Vnwp_t = []
        Vnwp_p = []
        Vnwp_all = []
        for p in points:
            # Calculate filled pore volumes
            p_inv, t_inv = self.results(p).values()
            Vp = np.sum(Pvol*p_inv)
            Vt = np.sum(Tvol*t_inv)
            Vnwp_p.append(Vp)
            Vnwp_t.append(Vt)
            Vnwp_all.append(Vp + Vt)
        # Convert volumes to saturations by normalizing with total pore volume
        Snwp_all = [V/Total_vol for V in Vnwp_all]
        pc_curve = namedtuple('pc_curve', ('Pcap', 'Snwp'))
        data = pc_curve(points, Snwp_all)
        return data
def get_intrusion_data ( self , Pc = None ) : net = self . project . network if Pc is None : points = np . unique ( self [ 'throat.invasion_pressure' ] ) points = np . concatenate ( ( [ 0 ] , points ) ) if points [ - 1 ] == np . inf : points = points [ : - 1 ] else : points = np . array ( Pc ) Pvol = net [ self . settings [ 'pore_volume' ] ] Tvol = net [ self . settings [ 'throat_volume' ] ] Total_vol = np . sum ( Pvol ) + np . sum ( Tvol ) Vnwp_t = [ ] Vnwp_p = [ ] Vnwp_all = [ ] for p in points : p_inv , t_inv = self . results ( p ) . values ( ) Vp = np . sum ( Pvol * p_inv ) Vt = np . sum ( Tvol * t_inv ) Vnwp_p . append ( Vp ) Vnwp_t . append ( Vt ) Vnwp_all . append ( Vp + Vt ) Snwp_all = [ V / Total_vol for V in Vnwp_all ] pc_curve = namedtuple ( 'pc_curve' , ( 'Pcap' , 'Snwp' ) ) data = pc_curve ( points , Snwp_all ) return data
r"""
        Obtain the numerical values of the calculated intrusion curve

        Returns
        -------
        A named-tuple containing arrays of applied capillary pressures and
        invading phase saturation.