<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def results(self, Pc):
 r""" This method determines which pores and throats are filled with invading phase at the specified capillary pressure, and creates several arrays indicating the occupancy status of each pore and throat for the given pressure. Parameters Pc : scalar The capillary pressure for which an invading phase configuration is desired. Returns ------- A dictionary containing an assortment of data about distribution of the invading phase at the specified capillary pressure. The data include: **'pore.occupancy'** : A value between 0 and 1 indicating the fractional volume of each pore that is invaded. If no late pore filling model was applied, then this will only be integer values (either filled or not). **'throat.occupancy'** : The same as 'pore.occupancy' but for throats. This dictionary can be passed directly to the ``update`` method of the *Phase* object. These values can then be accessed by models or algorithms. """

        Psatn = self['pore.invasion_pressure'] <= Pc
        Tsatn = self['throat.invasion_pressure'] <= Pc
        inv_phase = {}
        inv_phase['pore.occupancy'] = sp.array(Psatn, dtype=float)
        inv_phase['throat.occupancy'] = sp.array(Tsatn, dtype=float)
        return inv_phase