Source code for piel.models.physical.electro_optic.basic_heater

__all__ = ["linear_phase_mapping_relationship"]


[docs]def linear_phase_mapping_relationship( phase_power_slope: float, zero_power_phase: float, ): """ This function returns a function that maps the power applied to a particular heater resistor linearly. For example, we might start with a minimum phase mapping of (0,0) where the units are in (Watts, Phase). If we have a ridiculous arbitrary phase_power_slope of 1rad/1W, then the points in our linear mapping would be (0,0), (1,1), (2,2), (3,3), etc. This is implemented as a lambda function that takes in a power and returns a phase. The units of the power and phase are determined by the phase_power_slope and zero_power_phase. The zero_power_phase is the phase at zero power. The phase_power_slope is the slope of the linear mapping. The units of the phase_power_slope are radians/Watt. The units of the zero_power_phase are radians. The units of the power are Watts. The units of the phase are radians. Args: phase_power_slope (float): The slope of the linear mapping. The units of the phase_power_slope are radians/Watt. zero_power_phase (float): The phase at zero power. The units of the zero_power_phase are radians. Returns: linear_phase_mapping (function): A function that maps the power applied to a particular heater resistor linearly. The units of the power and phase are determined by the phase_power_slope and zero_power_phase. The zero_power_phase is the phase at zero power. The phase_power_slope is the slope of the linear mapping. The units of the phase_power_slope are radians/Watt. The units of the zero_power_phase are radians. The units of the power are Watts. The units of the phase are radians. """ def linear_phase_mapping(power_w: float) -> float: """ We create a linear interpolation based on the phase_power_slope. This function returns phase in radians. """ return phase_power_slope * power_w + zero_power_phase return linear_phase_mapping