def test_scale_2d(self, model): m = model scaling_factor = m.scaling_factor self.set_initial_scaling_factors(m) assignment = [ (m.y, m.ae), (m.dz, m.de), ] scaler = sc.FlattenedScalingAssignment(scaling_factor, assignment, (0, 0)) y = scaler.get_representative_data_object(m.y) assert y is m.y[0, 0] for var in scaler.varlist: scaler.calculate_variable_scaling_factor(var) for var in m.y.values(): assert scaling_factor[var] == pytest.approx(1 / (4 + 10**3)) nominal_y = 1 / scaling_factor[y] for var in m.dz.values(): assert scaling_factor[var] == pytest.approx(1 / (5 * nominal_y - 100)) for con in scaler.conlist: scaler.set_constraint_scaling_factor(con) for index, con in m.ae.items(): var = m.y[index] assert scaling_factor[con] == scaling_factor[var] for index, con in m.de.items(): var = m.dz[index] assert scaling_factor[con] == scaling_factor[var] scaler.set_derivative_factor_from_state(m.dz) for index, dvar in m.dz.items(): z = m.z[index] assert scaling_factor[z] == scaling_factor[dvar]
def test_scale_0d(self, model): m = model scaling_factor = m.scaling_factor self.set_initial_scaling_factors(m) assignment = [ (m.s, m.se), (m.y[0, 0], m.ae[0, 0]), ] scaler = sc.FlattenedScalingAssignment(scaling_factor, assignment, None) s = scaler.get_representative_data_object(m.s) y = scaler.get_representative_data_object(m.y[0, 0]) assert s is m.s assert y is m.y[0, 0] for var in scaler.varlist: scaler.calculate_variable_scaling_factor(var) tf, xf = m.time.last(), m.space.last() assert scaling_factor[s] == scaling_factor[m.z[tf, xf]] assert scaling_factor[y] == pytest.approx(1 / (4 + 10**3))
def test_scale_1d(self, model): m = model scaling_factor = m.scaling_factor self.set_initial_scaling_factors(m) assignment = [ (m.u, m.ue), ] scaler = sc.FlattenedScalingAssignment(scaling_factor, assignment, 0) u = scaler.get_representative_data_object(m.u) assert u is m.u[0] for var in scaler.varlist: scaler.calculate_variable_scaling_factor(var) for index, var in m.u.items(): z = m.z[index, 0] assert scaling_factor[var] == pytest.approx(2 * scaling_factor[z]) for con in scaler.conlist: scaler.set_constraint_scaling_factor(con) for index, con in m.ue.items(): u = m.u[index] assert scaling_factor[con] == scaling_factor[u]