# Generated by tools/build_frequency_source.py; do not edit. # Original source SHA-256: f9432925e730a68ca265e2fbcceb34c1d9531fede9126b073452d5ee178076fd import numpy as np def frequency_values(H, control, deficit_step=.05, droop=.05, governor_tau=.5, dt=.01): t = np.arange(0, 30 + dt / 2, dt) x = 0.0 p = 0.0 v = [] def f(y, deficit): z, g = y return np.array([(g - deficit - z) / (2 * H), ((-z / droop if control else 0) - g) / governor_tau]) for tm in t: v.append(50 * (1 + x)) y = np.array([x, p]) deficit = deficit_step if tm >= 2 - 1e-10 else 0 k1 = f(y, deficit) k2 = f(y + dt * k1 / 2, deficit) k3 = f(y + dt * k2 / 2, deficit) k4 = f(y + dt * k3, deficit) x, p = y + dt * (k1 + 2 * k2 + 2 * k3 + k4) / 6 return t, np.array(v)