Source code for piel.models.transient.electronic.ideal_rc
import jax.numpy as jnp
from typing import Optional
from .types import RCMultiStageConfigurationType
__all__ = ["calculate_multistage_rc_performance"]
[docs]
def calculate_multistage_rc_performance(
multistage_configuration: Optional[RCMultiStageConfigurationType] = None,
switching_frequency_Hz: Optional[float] = 1e5,
):
"""
Calculates the total energy and power consumption for charging and discharging
in a multistage RC configuration, as well as the transition energy and power consumption.
Parameters:
multistage_configuration(Optional[RCMultiStageConfigurationType]): A list of dictionaries containing the voltage and capacitance for each stage.
switching_frequency_Hz(Optional[float]): The switching frequency of the RC stages.
Returns:
A tuple containing:
- Total charge and discharge energy.
- Total charge and discharge power consumption.
- Transition energy.
- Transition power consumption.
"""
if multistage_configuration is None:
power_level_configuration = (1.8, 3.3, 10)
multistage_configuration = list[
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[0], "capacitance": 1e-12},
{"voltage": power_level_configuration[1], "capacitance": 3e-12},
{"voltage": power_level_configuration[1], "capacitance": 3e-12},
{"voltage": power_level_configuration[2], "capacitance": 10e-12},
]
# Create JAX arrays from the multistage_configuration
voltage_array = jnp.array([stage["voltage"] for stage in multistage_configuration])
capacitance_array = jnp.array(
[stage["capacitance"] for stage in multistage_configuration]
)
# Calculate total charge discharge energy
total_charge_discharge_energy = jnp.sum(voltage_array**2 * capacitance_array)
total_charge_discharge_power_consumption = (
total_charge_discharge_energy * switching_frequency_Hz
)
transition_energy = total_charge_discharge_power_consumption / 2
transition_power_consumption = total_charge_discharge_power_consumption / 2
return (
total_charge_discharge_energy,
total_charge_discharge_power_consumption,
transition_energy,
transition_power_consumption,
)