cminject.devices package

Implementations of cminject.base.Device, containing (at least)

  • A generic device that contains a flowing fluid, potentially with Brownian forces exerted on particles

  • A device implementing a photophoretic force exerted by an LG01 laser, inside a cuboid region of space

Submodules

cminject.devices.fluid_flow module

A device for one flow field.

class cminject.devices.fluid_flow.FlowType(value)

Bases: enum.Enum

An enumeration representing the available types of fluid flow models.

MOLECULAR_FLOW = 'Molecular flow (modified Epstein force by Nils Roth)'
STOKES = 'Stokes'
class cminject.devices.fluid_flow.FluidFlowDevice(filename: str, flow_type: cminject.devices.fluid_flow.FlowType, brownian_motion: bool, *args, **kwargs)

Bases: cminject.base.Device

A device for one flow field. It derives its boundary automatically based on the minimal cuboid enclosing the flow field.

For calculating the force, there are two options available (see the FlowType definition): The Stokes drag force model (for Kn << 1), and a modified Epstein force (for Kn >> 1), which was developed by Nils Roth.

cminject.devices.photophoresis module

class cminject.devices.photophoresis.DesyatnikovPhotophoresisDevice(r_boundary: Tuple[float, float], z_boundary: Tuple[float, float], gas_temperature: float, gas_viscosity: float, gas_thermal_conductivity: float, gas_mass: float, gas_density: Union[float, Tuple[float, cminject.fields.fluid_flow.StokesDragForceField]], beam_power: float, beam_waist_radius: float, z_position: float = 0.0, static_drag: bool = True)

Bases: cminject.base.Device

A Device for simulating photophoretic effects with the model described in: A. Desyatnikov, V. Shvedov, A. Rode, W. Krolikowski, and Y. Kivshar, “Photophoretic manipulation of absorbing aerosol particles with vortex beams: theory versus experiment,” Opt. Express 17, 8201-8211 (2009).

Adds a drag field for a static fluid (v=0 everywhere) with the given gas viscosity and no slip correction, unless static_drag=False is passed.