pogona.objects.ObjectTubeAnalytical

class pogona.objects.ObjectTubeAnalytical[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 in ml/min.

is_active

length

Length of the tube in m.

object_id

Object index, set by the scene manager.

openfoam_cases_path

Path to all OpenFOAM simulation cases.

outlet_zone

Length of the outlet teleporter.

radius

Radius of the tube in m.

rotation

scale

translation

use_sensor_subscriptions

Notify subscribed sensors based on object mesh cells.

walls_patch_names

__init__()[source]

Methods

__init__()

calculate_average_flow()

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, ...)

set_arguments(**kwargs)

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

__init__()[source]
calculate_average_flow()[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()[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

Returns

Path to the OpenFOAM files for this object.

get_transformation() pogona.transformation.Transformation
get_vector_field_manager()[source]
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)
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)
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().

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 = 5.0

Flow rate in ml/min.

id

Unique integer component ID

inlets: List[str]

Names of the inlets in the OpenFOAM mesh.

property is_active
length = 0.05

Length of the tube in m.

name: str

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().

outlet_zone = 0.5

Length of the outlet teleporter.

outlets: List[str]

Names of the outlets in the OpenFOAM mesh.

radius = 0.00075

Radius of the tube in m.

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