- MultiPhase.set_binary_partition_coef(phases, model, **kwargs)¶
Sets binary partition coefficient as defined by the interface concentration ratio of phase 1 to phase 2.
phases (List[GenericPhase]) – List of the two phases for which the binary partition coefficient model is being added.
model (OpenPNM model) – Model for calculating the binary partition coefficient.
kwargs (dict) – Keyword arguments to be passed to the
>>> import openpnm as op >>> from openpnm.phases import Air, Water, MultiPhase >>> from openpnm.models.misc import constant
>>> net = op.network.Cubic(shape=[5, 5, 5]) >>> air = Air(network=net, name='air') # Create two pure phases >>> water = Water(network=net, name='water') >>> mphase = MultiPhase(network=net, phases=[air, water], name='multi')
Now, assign some pores to air and the rest to water
>>> Ps = net['pore.coords'][:, 0] < 3 # Pick some pores to be air filled >>> Ts = net.find_neighbor_throats(pores=Ps) # Find neighboring throats >>> Ts = net.to_mask(throats=Ts) # Convert throat indices to mask >>> mphase.set_occupancy(phase=air, Pvals=Ps, Tvals=Ts) # Assign occupancies >>> mphase.set_occupancy(phase=water, Pvals=~Ps, Tvals=~Ts)
Now, add an interface model for binary partition coefficient
>>> mphase.set_binary_partition_coef(phases=[air, water], ... model=constant, ... value=0.5)
Now, verify that K12 for interface throats is 0.5
>>> Ts_interface = net.find_neighbor_throats(Ps, mode="xor") >>> K12_interface = mphase["throat.partition_coef.all"][Ts_interface] >>> assert K12_interface.mean() == 0.5
Finally, verify that K12 for non-interface throats is 1.
>>> Ts_rest = ~ np.isin(net.Ts, Ts_interface) >>> K12_rest = mphase["throat.partition_coef.all"][Ts_rest] >>> assert K12_rest.mean() == 1.