pycanha_core.tmm — Core Thermal Model Classes#

These are the C++ base classes exposed via the compiled bindings. They are the foundation of the pycanha.tmm wrappers.

Enumerations#

class pycanha_core.tmm.NodeType(*values)#

Bases: Enum

Thermal node type: DIFFUSIVE or BOUNDARY.

DIFFUSIVE = 68#
BOUNDARY = 66#

Nodes#

class pycanha_core.tmm.Node(*args, **kwargs)#

Bases: object

Thermal node representing a lumped thermal element.

A node stores temperature, thermal capacity, heat loads, optical properties, area, and position. It can be standalone or associated with a Nodes container.

property C#

Thermal capacity [J/K].

property T#

Node temperature [K].

__init__(self, node_num: int) None#
__init__(self, other: pycanha_core.pycanha_core.tmm.Node) None

Overloaded function.

  1. __init__(self, node_num: int) -> None

Create a standalone node with the given user node number.

  1. __init__(self, other: pycanha_core.pycanha_core.tmm.Node) -> None

Copy constructor.

property a#

Node area [m^2].

property aph#

Solar absorptivity [-].

property capacity#

Alias for C (thermal capacity) [J/K].

property eps#

IR emissivity [-].

property fx#

Node X coordinate [m].

property fy#

Node Y coordinate [m].

property fz#

Node Z coordinate [m].

int_node_num(self) int#

Return the internal (solver) node index, or -1 if standalone.

property literal_C#

Literal (formula) representation of thermal capacity.

property node_num#

User-assigned node number.

parent_pointer(self) pycanha_core.pycanha_core.tmm.Nodes#

Return the parent Nodes container, or None if standalone.

parent_pointer_address(self) int#

Memory address of the parent Nodes container.

property qa#

Albedo heat load [W].

property qe#

Earth IR heat load [W].

property qi#

Internal dissipation heat load [W].

property qr#

Other (residual) heat load [W].

property qs#

Solar heat load [W].

property type#

Node type (DIFFUSIVE or BOUNDARY).

class pycanha_core.tmm.Nodes(*args, **kwargs)#

Bases: object

Collection of thermal nodes.

Stores nodes efficiently using dense vectors for temperature and capacity, and sparse vectors for heat loads and other attributes. Nodes are auto-sorted: diffusive nodes first, then boundary nodes.

__init__(self) None#

Create an empty Nodes container.

add_node(self, node: pycanha_core.pycanha_core.tmm.Node) None#

Add a node to the container.

property estimated_number_of_nodes#

Hint for pre-allocating internal storage.

get_C(self, node_num: int) float#

Get thermal capacity [J/K] of a node.

get_C_value_pointer(self, node_num: int) int#

Memory address of the thermal capacity value for formula binding.

get_T(self, node_num: int) float#

Get temperature [K] of a node.

get_T_value_pointer(self, node_num: int) int#

Memory address of the temperature value for formula binding.

get_a(self, node_num: int) float#

Get area [m^2] of a node.

get_a_value_pointer(self, node_num: int) int#

Memory address of the area value for formula binding.

get_aph(self, node_num: int) float#

Get solar absorptivity [-] of a node.

get_aph_value_pointer(self, node_num: int) int#

Memory address of the solar absorptivity value for formula binding.

get_eps(self, node_num: int) float#

Get IR emissivity [-] of a node.

get_eps_value_pointer(self, node_num: int) int#

Memory address of the IR emissivity value for formula binding.

get_fx(self, node_num: int) float#

Get X coordinate [m] of a node.

get_fx_value_pointer(self, node_num: int) int#

Memory address of the X coordinate value for formula binding.

get_fy(self, node_num: int) float#

Get Y coordinate [m] of a node.

get_fy_value_pointer(self, node_num: int) int#

Memory address of the Y coordinate value for formula binding.

get_fz(self, node_num: int) float#

Get Z coordinate [m] of a node.

get_fz_value_pointer(self, node_num: int) int#

Memory address of the Z coordinate value for formula binding.

get_idx_from_node_num(self, node_num: int) int | None#

Get internal index from user node number, or None if not found.

get_literal_C(self, node_num: int) str#

Get literal (formula) representation of thermal capacity.

get_node_from_idx(self, idx: int) pycanha_core.pycanha_core.tmm.Node#

Get a Node object by internal index.

get_node_from_node_num(self, node_num: int) pycanha_core.pycanha_core.tmm.Node#

Get a Node object by user node number.

get_node_num_from_idx(self, idx: int) int | None#

Get user node number from internal index, or None if invalid.

get_qa(self, node_num: int) float#

Get albedo heat load [W] of a node.

get_qa_value_pointer(self, node_num: int) int#

Memory address of the albedo heat load value for formula binding.

get_qe(self, node_num: int) float#

Get Earth IR heat load [W] of a node.

get_qe_value_pointer(self, node_num: int) int#

Memory address of the Earth IR heat load value for formula binding.

get_qi(self, node_num: int) float#

Get internal dissipation heat load [W] of a node.

get_qi_value_pointer(self, node_num: int) int#

Memory address of the internal heat load value for formula binding.

get_qr(self, node_num: int) float#

Get other (residual) heat load [W] of a node.

get_qr_value_pointer(self, node_num: int) int#

Memory address of the residual heat load value for formula binding.

get_qs(self, node_num: int) float#

Get solar heat load [W] of a node.

get_qs_value_pointer(self, node_num: int) int#

Memory address of the solar heat load value for formula binding.

get_type(self, node_num: int) pycanha_core.pycanha_core.tmm.NodeType#

Get the type of a node (DIFFUSIVE or BOUNDARY).

is_mapped(self) bool#

Check whether the internal node-number map is up to date.

is_node(self, node_num: int) bool#

Check whether a node with the given number exists.

property num_bound_nodes#

Number of boundary nodes.

property num_diff_nodes#

Number of diffusive nodes.

property num_nodes#

Total number of nodes.

remove_node(self, node_num: int) None#

Remove a node by its user node number.

set_C(self, node_num: int, value: float) bool#

Set thermal capacity [J/K] of a node.

set_T(self, node_num: int, value: float) bool#

Set temperature [K] of a node.

set_a(self, node_num: int, value: float) bool#

Set area [m^2] of a node.

set_aph(self, node_num: int, value: float) bool#

Set solar absorptivity [-] of a node.

set_eps(self, node_num: int, value: float) bool#

Set IR emissivity [-] of a node.

set_fx(self, node_num: int, value: float) bool#

Set X coordinate [m] of a node.

set_fy(self, node_num: int, value: float) bool#

Set Y coordinate [m] of a node.

set_fz(self, node_num: int, value: float) bool#

Set Z coordinate [m] of a node.

set_literal_C(self, node_num: int, literal: str) bool#

Set literal (formula) representation of thermal capacity.

set_qa(self, node_num: int, value: float) bool#

Set albedo heat load [W] of a node.

set_qe(self, node_num: int, value: float) bool#

Set Earth IR heat load [W] of a node.

set_qi(self, node_num: int, value: float) bool#

Set internal dissipation heat load [W] of a node.

set_qr(self, node_num: int, value: float) bool#

Set other (residual) heat load [W] of a node.

set_qs(self, node_num: int, value: float) bool#

Set solar heat load [W] of a node.

set_type(self, node_num: int, node_type: pycanha_core.pycanha_core.tmm.NodeType) bool#

Set the type of a node (DIFFUSIVE or BOUNDARY).

Couplings#

class pycanha_core.tmm.Coupling(*args, **kwargs)#

Bases: object

Thermal coupling (conductance) between two nodes.

__init__(self, node_1: int, node_2: int, value: float) None#

Create a coupling between two nodes with a conductance value.

property node_1#

First node number.

property node_2#

Second node number.

property value#

Conductance value [W/K] or radiative exchange factor [m^2].

class pycanha_core.tmm.ConductiveCouplings(*args, **kwargs)#

Bases: object

Container for conductive (linear) couplings GL.

Heat flow: Q = GL * (T1 - T2).

__init__(self, nodes: pycanha_core.pycanha_core.tmm.Nodes) None#

Create conductive couplings linked to a Nodes container.

add_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a conductive coupling [W/K] between two nodes.

  1. add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a conductive coupling from a Coupling object.

get_coupling_value(self, node_num_1: int, node_num_2: int) float#

Get the conductive coupling value [W/K] between two nodes.

set_coupling_value(self, node_num_1: int, node_num_2: int, value: float) None#

Set the conductive coupling value [W/K] between two nodes.

class pycanha_core.tmm.RadiativeCouplings(*args, **kwargs)#

Bases: object

Container for radiative (T^4) couplings GR.

Heat flow: Q = GR * sigma * (T1^4 - T2^4).

__init__(self, nodes: pycanha_core.pycanha_core.tmm.Nodes) None#

Create radiative couplings linked to a Nodes container.

add_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a radiative coupling [m^2] between two nodes.

  1. add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a radiative coupling from a Coupling object.

get_coupling_value(self, node_num_1: int, node_num_2: int) float#

Get the radiative coupling value [m^2] between two nodes.

set_coupling_value(self, node_num_1: int, node_num_2: int, value: float) None#

Set the radiative coupling value [m^2] between two nodes.

class pycanha_core.tmm.Couplings(*args, **kwargs)#

Bases: object

Generic coupling manager using user node numbers.

Wraps CouplingMatrices and translates between user node numbers and internal indices. Supports multiple add strategies: overwrite, sum, new-only.

__init__(self, nodes: pycanha_core.pycanha_core.tmm.Nodes) None#

Create a Couplings manager linked to a Nodes container.

add_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a coupling between two nodes.

  1. add_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a coupling from a Coupling object.

add_new_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_new_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_new_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a coupling only if it does not already exist.

  1. add_new_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a coupling from a Coupling object only if new.

add_ovw_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_ovw_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_ovw_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add or overwrite a coupling between two nodes.

  1. add_ovw_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add or overwrite a coupling from a Coupling object.

add_ovw_coupling_verbose(self, node_num_1: int, node_num_2: int, value: float) None#
add_ovw_coupling_verbose(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_ovw_coupling_verbose(self, node_num_1: int, node_num_2: int, value: float) -> None

Add or overwrite a coupling (verbose logging).

  1. add_ovw_coupling_verbose(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add or overwrite a coupling from a Coupling object (verbose).

add_sum_coupling(self, node_num_1: int, node_num_2: int, value: float) None#
add_sum_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_sum_coupling(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a coupling, summing with any existing value.

  1. add_sum_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a coupling from a Coupling object, summing with existing.

add_sum_coupling_verbose(self, node_num_1: int, node_num_2: int, value: float) None#
add_sum_coupling_verbose(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_sum_coupling_verbose(self, node_num_1: int, node_num_2: int, value: float) -> None

Add a coupling, summing with existing (verbose logging).

  1. add_sum_coupling_verbose(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a coupling from a Coupling object, summing (verbose).

coupling_exists(self, node_num_1: int, node_num_2: int) bool#

Check whether a coupling exists between two nodes.

get_coupling_from_coupling_idx(self, idx: int) pycanha_core.pycanha_core.tmm.Coupling#

Get a Coupling object from a flat coupling index.

get_coupling_matrices(self) pycanha_core.pycanha_core.tmm.CouplingMatrices#

Return a reference to the underlying CouplingMatrices.

get_coupling_value(self, node_num_1: int, node_num_2: int) float#

Get the conductance value between two nodes.

get_coupling_value_address(self, node_num_1: int, node_num_2: int) int#

Memory address (as int) of the coupling value.

get_coupling_value_pointer(self, node_num_1: int, node_num_2: int) int#

Memory address of the coupling value for formula binding.

set_coupling_value(self, node_num_1: int, node_num_2: int, value: float) None#

Set the conductance value between two nodes.

class pycanha_core.tmm.CouplingMatrices(*args, **kwargs)#

Bases: object

Sparse coupling matrices (dd, db, bb blocks).

Stores conductance values in three sparse matrices: diffusive-diffusive, diffusive-boundary, and boundary-boundary. Indexed by internal node indices.

__init__(self) None#

Create empty coupling matrices.

add_new_coupling_from_node_idxs(self, idx1: int, idx2: int, value: float) None#

Add a coupling only if it does not already exist.

add_ovw_coupling_from_node_idxs(self, idx1: int, idx2: int, value: float) None#

Add or overwrite a coupling value by internal indices.

add_ovw_coupling_from_node_idxs_verbose(self, idx1: int, idx2: int, value: float) None#

Add or overwrite a coupling value by internal indices (verbose).

add_sum_coupling_from_node_idxs(self, idx1: int, idx2: int, value: float) None#

Add a coupling value, summing with any existing value.

add_sum_coupling_from_node_idxs_verbose(self, idx1: int, idx2: int, value: float) None#

Add a coupling value, summing with any existing value (verbose).

coupling_exists_from_idxs(self, idx1: int, idx2: int) bool#

Check whether a coupling exists between two internal indices.

get_conductor_value_address_from_idx(self, idx1: int, idx2: int) int#

Memory address (as int) of the conductance value.

get_conductor_value_from_idx(self, idx1: int, idx2: int) float#

Get conductance value by internal indices.

get_conductor_value_pointer_from_idx(self, idx1: int, idx2: int) int#

Memory address of the conductance value for formula binding.

get_idxs_and_coupling_value_from_coupling_idx(self, coupling_idx: int) std::tuple<long, long, double>#

Get (idx1, idx2, value) tuple from a flat coupling index.

property num_bound_bound_couplings#

Number of non-zero boundary-boundary couplings.

property num_bound_nodes#

Number of boundary nodes in the matrices.

property num_diff_bound_couplings#

Number of non-zero diffusive-boundary couplings.

property num_diff_diff_couplings#

Number of non-zero diffusive-diffusive couplings.

property num_diff_nodes#

Number of diffusive nodes in the matrices.

property num_nodes#

Total number of nodes in the matrices.

property num_total_couplings#

Total number of non-zero couplings.

print_sparse(self) None#

Print the sparse matrices to the logger (debug).

reserve(self, nnz: int) None#

Pre-allocate space for the given number of non-zeros.

set_conductor_value_from_idx(self, idx1: int, idx2: int, value: float) None#

Set conductance value by internal indices.

sparse_bb_copy(self) scipy.sparse.csr_matrix[float]#

Return a copy of the boundary-boundary coupling matrix.

sparse_db_copy(self) scipy.sparse.csr_matrix[float]#

Return a copy of the diffusive-boundary coupling matrix.

sparse_dd_copy(self) scipy.sparse.csr_matrix[float]#

Return a copy of the diffusive-diffusive coupling matrix.

Network and model#

class pycanha_core.tmm.ThermalNetwork(*args, **kwargs)#

Bases: object

Thermal network combining nodes, conductive couplings, and radiative couplings.

__init__(self) None#
__init__(self, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings) None

Overloaded function.

  1. __init__(self) -> None

Create an empty thermal network.

  1. __init__(self, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings) -> None

Create a thermal network from existing components.

add_node(self, node: pycanha_core.pycanha_core.tmm.Node) None#

Add a node to the network.

property conductive_couplings#

Reference to the ConductiveCouplings container.

flow_conductive(self, node_num_1: int, node_num_2: int) float#
flow_conductive(self, node_nums_1: collections.abc.Sequence[int], node_nums_2: collections.abc.Sequence[int]) float

Overloaded function.

  1. flow_conductive(self, node_num_1: int, node_num_2: int) -> float

Compute conductive heat flow [W] between two nodes.

  1. flow_conductive(self, node_nums_1: collections.abc.Sequence[int], node_nums_2: collections.abc.Sequence[int]) -> float

Compute total conductive heat flow [W] between two groups of nodes.

flow_radiative(self, node_num_1: int, node_num_2: int) float#
flow_radiative(self, node_nums_1: collections.abc.Sequence[int], node_nums_2: collections.abc.Sequence[int]) float

Overloaded function.

  1. flow_radiative(self, node_num_1: int, node_num_2: int) -> float

Compute radiative heat flow [W] between two nodes.

  1. flow_radiative(self, node_nums_1: collections.abc.Sequence[int], node_nums_2: collections.abc.Sequence[int]) -> float

Compute total radiative heat flow [W] between two groups of nodes.

property nodes#

Reference to the Nodes container.

property nodes_ptr#

Shared pointer to the Nodes container.

property radiative_couplings#

Reference to the RadiativeCouplings container.

remove_node(self, node_num: int) None#

Remove a node from the network by user node number.

class pycanha_core.tmm.ThermalData(*args, **kwargs)#

Bases: object

Storage for simulation data models and auxiliary lookup tables.

__init__(self) None#
__init__(self, network: pycanha_core.pycanha_core.tmm.ThermalNetwork) None

Overloaded function.

  1. __init__(self) -> None

Create an empty ThermalData store.

  1. __init__(self, network: pycanha_core.pycanha_core.tmm.ThermalNetwork) -> None

Create a ThermalData store associated with a network.

associate(self, network: pycanha_core.pycanha_core.tmm.ThermalNetwork) None#

Associate this ThermalData with a ThermalNetwork.

property models#

Reference to the transient output model store.

property network#

Reference to the associated ThermalNetwork.

property network_ptr#

Shared pointer to the associated ThermalNetwork.

property size#

Total number of stored data objects.

property tables#

Reference to the lookup-table store.

class pycanha_core.tmm.ThermalMathematicalModel(*args, **kwargs)#

Bases: object

Top-level thermal mathematical model.

Aggregates a thermal network (nodes and couplings), parameters, formulas, thermal data tables, and solver callbacks. Non-copyable.

__init__(self, model_name: str) None#
__init__(self, model_name: str, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings) None
__init__(self, model_name: str, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings, parameters: pycanha_core.pycanha_core.parameters.Parameters, formulas: pycanha_core.pycanha_core.parameters.Formulas, thermal_data: pycanha_core.pycanha_core.tmm.ThermalData) None

Overloaded function.

  1. __init__(self, model_name: str) -> None

Create a model with an empty network.

  1. __init__(self, model_name: str, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings) -> None

Create a model from existing network components.

  1. __init__(self, model_name: str, nodes: pycanha_core.pycanha_core.tmm.Nodes, conductive: pycanha_core.pycanha_core.tmm.ConductiveCouplings, radiative: pycanha_core.pycanha_core.tmm.RadiativeCouplings, parameters: pycanha_core.pycanha_core.parameters.Parameters, formulas: pycanha_core.pycanha_core.parameters.Formulas, thermal_data: pycanha_core.pycanha_core.tmm.ThermalData) -> None

Create a model from all existing components.

add_conductive_coupling(self, node_1: int, node_2: int, value: float) None#
add_conductive_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_conductive_coupling(self, node_1: int, node_2: int, value: float) -> None

Add a conductive coupling [W/K] between two nodes.

  1. add_conductive_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a conductive coupling from a Coupling object.

add_node(self, node: pycanha_core.pycanha_core.tmm.Node) None#
add_node(self, node_num: int) None

Overloaded function.

  1. add_node(self, node: pycanha_core.pycanha_core.tmm.Node) -> None

Add a Node object to the model.

  1. add_node(self, node_num: int) -> None

Add a default node by user node number.

add_radiative_coupling(self, node_1: int, node_2: int, value: float) None#
add_radiative_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) None

Overloaded function.

  1. add_radiative_coupling(self, node_1: int, node_2: int, value: float) -> None

Add a radiative coupling [m^2] between two nodes.

  1. add_radiative_coupling(self, coupling: pycanha_core.pycanha_core.tmm.Coupling) -> None

Add a radiative coupling from a Coupling object.

add_temperature_variable(self, name: str, x_data: numpy.ndarray[dtype=float64, shape=(*), order='C'], y_data: numpy.ndarray[dtype=float64, shape=(*), order='C'], interpolation: pycanha_core.pycanha_core.tmm.InterpolationMethod = InterpolationMethod.LINEAR, extrapolation: pycanha_core.pycanha_core.tmm.ExtrapolationMethod = ExtrapolationMethod.CONSTANT) None#

Add a temperature-driven variable (evaluated from a lookup table of temperature).

add_time_variable(self, name: str, x_data: numpy.ndarray[dtype=float64, shape=(*), order='C'], y_data: numpy.ndarray[dtype=float64, shape=(*), order='C'], interpolation: pycanha_core.pycanha_core.tmm.InterpolationMethod = InterpolationMethod.LINEAR, extrapolation: pycanha_core.pycanha_core.tmm.ExtrapolationMethod = ExtrapolationMethod.CONSTANT) None#

Add a time-driven variable (parameter updated from a lookup table of time).

property c_callbacks_active#

Enable/disable C function-pointer callbacks.

callback_solver_loop(self) None#

Execute all registered solver-loop callbacks.

callback_transient_after_timestep(self) None#

Execute all registered after-timestep callbacks.

callback_transient_time_change(self) None#

Execute all registered time-change callbacks.

property callbacks_active#

Master switch to enable/disable all callbacks.

property conductive_couplings#

Reference to the ConductiveCouplings.

property formulas#

Reference to the Formulas collection.

get_temperature_variable(self, name: str) pycanha_core.pycanha_core.tmm.TemperatureVariable#

Get a read-only reference to a temperature variable by name.

get_time_variable(self, name: str) pycanha_core.pycanha_core.tmm.TimeVariable#

Get a read-only reference to a time variable by name.

has_temperature_variable(self, name: str) bool#

Check whether a temperature variable with the given name exists.

has_time_variable(self, name: str) bool#

Check whether a time variable with the given name exists.

property internal_callbacks_active#

Enable/disable internal (C++) callbacks.

property name#

Model name.

property network#

Reference to the ThermalNetwork.

property network_ptr#

Shared pointer to the ThermalNetwork.

property nodes#

Reference to the Nodes container.

property nodes_ptr#

Shared pointer to the Nodes container.

property parameters#

Reference to the Parameters store.

property python_apply_formulas#

Python callable invoked to apply formulas during callbacks.

property python_callbacks_active#

Enable/disable Python callbacks.

property python_extern_callback_solver_loop#

Python callable invoked each solver iteration.

property python_extern_callback_transient_after_timestep#

Python callable invoked after each transient timestep.

property python_extern_callback_transient_time_change#

Python callable invoked when simulation time changes.

property python_formulas_active#

Enable/disable Python formula evaluation during callbacks.

property radiative_couplings#

Reference to the RadiativeCouplings.

read_tmd(self, filepath: str, verbose: bool = False) None#

Read an ESATAN TMD file into this model.

remove_temperature_variable(self, name: str) None#

Remove a temperature variable by name.

remove_time_variable(self, name: str) None#

Remove a time variable by name.

property thermal_data#

Reference to the ThermalData store.

property time#

Current simulation time [s].

class pycanha_core.tmm.ESATANReader(*args, **kwargs)#

Bases: object

Reader for ESATAN TMD thermal model files.

__init__(self, model: pycanha_core.pycanha_core.tmm.ThermalMathematicalModel) None#

Create a reader bound to a ThermalMathematicalModel.

read_tmd(self, filepath: str) None#

Read an ESATAN TMD file into the associated model.

property verbose#

Enable verbose logging during file reading.