pogona.objects.ObjectPumpTimed

class pogona.objects.ObjectPumpTimed[source]

Bases: pogona.object.Object

Attributes

component_name

Unique name of this component, unless it is "Generic component".

dummy_boundary_points

Whether to insert dummy points at the boundary of the mesh, and where exactly.

flow_rate

Flow rate when pump is inactive.

injection_flow_mlpmin

Flow rate when pump is active.

is_active

name

The name of this type of object.

object_id

Object index, set by the scene manager.

openfoam_cases_path

Path to all OpenFOAM simulation cases.

pump_duration_s

How long to keep the pump turned on in seconds.

rotation

scale

translation

use_sensor_subscriptions

Notify subscribed sensors based on object mesh cells.

walls_patch_names

__init__()[source]

Methods

__init__()

finalize(simulation_kernel)

find_latest_time_step(path)

return

The highest-valued subdirectory of path that is named

get_closest_cell_centre_id(position)

returns

Array of closest cell centers to position.

get_current_mesh_global()

get_current_mesh_local()

get_fallback_mesh_index()

If an Object supports sensor subscriptions, some OpenFOAM case with a non-zero flow rate should exist (i.e., a vector field for which this Object has self.is_active == True).

get_flow(simulation_kernel, position_global, ...)

get_mesh_index()

returns

A unique string for the current configuration of this object.

get_outlet_area(outlet_name)

get_path([use_latest_time_step, fallback])

param use_latest_time_step

Find the latest time step in path.

get_transformation()

get_vector_field_manager()

initialize(simulation_kernel, init_stage)

Use InitStages to initialize this Component instance.

load_current_vector_field(simulation_kernel)

process_changed_inlet_flow_rate(...)

Update the flow rate inside this Object based on the changed flow rate of the inlet with name inlet_name, then propagate this change to any Object connected to this Object's outlets.

process_new_time_step(simulation_kernel, ...)

Update the pump activity based on the current time (since an injection started).

set_arguments(**kwargs)

Read arguments as key value pairs and set this component's member variables accordingly.

set_interpolation_method(interpolation_method)

start_injection(simulation_kernel)

Start an injection with the flow speed (injection_flow) and total volume injection_volume configured in this object.

__init__()[source]
finalize(simulation_kernel: pogona.simulation_kernel.SimulationKernel)
static find_latest_time_step(path: str) str
Returns

The highest-valued subdirectory of path that is named only after a floating point value. E.g., if there are ‘{path}/0/’ and ‘{path}/0.1/’, this will return ‘0.1’.

get_closest_cell_centre_id(position: numpy.ndarray)[source]
Returns

Array of closest cell centers to position. If there’s only one position, output is squeezed. None if this Object is inactive. See documentation of cKDTree.query().

get_current_mesh_global()[source]
get_current_mesh_local()[source]
get_fallback_mesh_index() Optional[str][source]

If an Object supports sensor subscriptions, some OpenFOAM case with a non-zero flow rate should exist (i.e., a vector field for which this Object has self.is_active == True). If this object is initially inactive, however, we still need to know where to find this mesh for the initialization of the SensorManager.

Returns

A valid mesh index independent of this Object’s is_active status. None if this Object does not support sensor subscriptions.

get_flow(simulation_kernel: pogona.simulation_kernel.SimulationKernel, position_global: numpy.ndarray, sim_time: float)[source]
get_mesh_index() str[source]
Returns

A unique string for the current configuration of this object. Used for caching.

get_outlet_area(outlet_name: str)[source]
get_path(use_latest_time_step=False, fallback=False) str[source]
Parameters
  • use_latest_time_step – Find the latest time step in path. If False, use this Object’s _default_time_str, which may still be set to ‘latest’, which has the same effect.

  • fallback – Use get_fallback_mesh_index instead of get_mesh_index.

Returns

Path to the OpenFOAM files for this object.

get_transformation() pogona.transformation.Transformation
get_vector_field_manager() Optional[pogona.vector_field_manager.VectorFieldManager]
initialize(simulation_kernel: pogona.simulation_kernel.SimulationKernel, init_stage: pogona.component.InitStages)[source]

Use InitStages to initialize this Component instance.

load_current_vector_field(simulation_kernel: pogona.simulation_kernel.SimulationKernel)[source]
process_changed_inlet_flow_rate(simulation_kernel: pogona.simulation_kernel.SimulationKernel, inlet_name: str, flow_rate: float)[source]

Update the flow rate inside this Object based on the changed flow rate of the inlet with name inlet_name, then propagate this change to any Object connected to this Object’s outlets.

Should also update is_active accordingly.

process_new_time_step(simulation_kernel: pogona.simulation_kernel.SimulationKernel, notification_stage: pogona.component.NotificationStages)[source]

Update the pump activity based on the current time (since an injection started).

set_arguments(**kwargs)

Read arguments as key value pairs and set this component’s member variables accordingly. Validity of the argument values will be checked in initialize().

set_interpolation_method(interpolation_method: pogona.interpolation.Interpolation)[source]
start_injection(simulation_kernel: pogona.simulation_kernel.SimulationKernel)[source]

Start an injection with the flow speed (injection_flow) and total volume injection_volume configured in this object.

component_name = 'Generic component'

Unique name of this component, unless it is “Generic component”.

dummy_boundary_points = 'NONE'

Whether to insert dummy points at the boundary of the mesh, and where exactly. This may help with interpolation.

flow_rate = 0

Flow rate when pump is inactive.

id

Unique integer component ID

injection_flow_mlpmin = 10.0

Flow rate when pump is active. Not strictly mandatory as this pump is also useful for ModulationOOK for cases in which no vector field is used at all.

inlets: List[str]

Names of the inlets in the OpenFOAM mesh.

property is_active
name: str = 'Timed pump'

The name of this type of object. Not a unique identifier like Component.component_name!

object_id = -1

Object index, set by the scene manager.

openfoam_cases_path = ''

Path to all OpenFOAM simulation cases. Subclasses may use this as the base path to find their respective meshes via get_path().

outlets: List[str]

Names of the outlets in the OpenFOAM mesh.

pump_duration_s = 0.0

How long to keep the pump turned on in seconds.

rotation = [0, 0, 0]
scale = [1, 1, 1]
translation = [0, 0, 0]
use_sensor_subscriptions = 'USE_DEFAULT'

Notify subscribed sensors based on object mesh cells. This speeds up simulation. Only disable this if you are constrained by memory or if the object does not have a mesh in the first place. If None, use the SensorManager’s default_use_sensor_subscriptions.

property walls_patch_names