def _test(self, tname): ofile = join(currdir, tname + '.' + self.sim_mod + '.out') bfile = join(currdir, tname + '.' + self.sim_mod + '.txt') setup_redirect(ofile) # create model exmod = import_file(join(exdir, tname + '.py')) m = exmod.create_model() # Simulate model sim = Simulator(m, package=self.sim_mod) if hasattr(m, 'var_input'): tsim, profiles = sim.simulate(numpoints=100, varying_inputs=m.var_input) else: tsim, profiles = sim.simulate(numpoints=100) # Discretize model discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=10, ncp=5) # Initialize model sim.initialize_model() self._print(m, profiles) reset_redirect() if not os.path.exists(bfile): os.rename(ofile, bfile) # os.system('diff ' + ofile + ' ' + bfile) self.assertFileEqualsBaseline(ofile, bfile, tolerance=0.01)
def _test_disc_first(self, tname): ofile = join(currdir, tname + '.' + self.sim_mod + '.out') bfile = join(currdir, tname + '.' + self.sim_mod + '.txt') setup_redirect(ofile) # create model exmod = import_file(join(exdir, tname + '.py')) m = exmod.create_model() # Discretize model discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=10, ncp=5) # Simulate model sim = Simulator(m, package=self.sim_mod) if hasattr(m, 'var_input'): tsim, profiles = sim.simulate(numpoints=100, varying_inputs=m.var_input) else: tsim, profiles = sim.simulate(numpoints=100) # Initialize model sim.initialize_model() self._print(m, profiles) reset_redirect() if not os.path.exists(bfile): os.rename(ofile, bfile) # os.system('diff ' + ofile + ' ' + bfile) self.assertFileEqualsBaseline(ofile, bfile, tolerance=0.01)
def _test_disc_first(self, tname): bfile = join(currdir, tname + '.' + self.sim_mod + '.json') # create model exmod = import_file(join(exdir, tname + '.py')) m = exmod.create_model() # Discretize model discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=10, ncp=5) # Simulate model sim = Simulator(m, package=self.sim_mod) if hasattr(m, 'var_input'): tsim, profiles = sim.simulate(numpoints=100, varying_inputs=m.var_input) else: tsim, profiles = sim.simulate(numpoints=100) # Initialize model sim.initialize_model() results = self._store_results(m, profiles) # Used to regenerate baseline files if not os.path.exists(bfile): with open(bfile, 'w') as f1: json.dump(results, f1) # Compare results to baseline with open(bfile, 'r') as f2: baseline = json.load(f2) self.assertStructuredAlmostEqual(results, baseline, abstol=1e-2)
def simulate_model(m): # Simulate the model using casadi sim = Simulator(m, package='casadi') tsim, profiles = sim.simulate(numpoints=100, integrator='idas') # Discretize model using Orthogonal Collocation discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=10, ncp=3) # Initialize the discretized model using the simulator profiles sim.initialize_model() return sim, tsim, profiles
def initialize_model(m,nfe): u_profile = {0:-0.06} m.u_input = Suffix(direction=Suffix.LOCAL) m.u_input[m.u]=u_profile sim = Simulator(m,package='scipy') tsim, profiles = sim.simulate(numpoints=100, varying_inputs=m.u_input) discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=nfe, ncp=1, scheme='LAGRANGE-RADAU') sim.initialize_model()
def initialize_model(m, nfe): u_profile = {0: -0.06} m.u_input = Suffix(direction=Suffix.LOCAL) m.u_input[m.u] = u_profile sim = Simulator(m, package='scipy') tsim, profiles = sim.simulate(numpoints=100, varying_inputs=m.u_input) discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=nfe, ncp=1, scheme='LAGRANGE-RADAU') sim.initialize_model()
def initialize_model(m, n_sim, n_nfe, n_ncp): vp_profile = {0: 0.75} vt_profile = {0: 0.75} m.u_input = Suffix(direction=Suffix.LOCAL) m.u_input[m.vp] = vp_profile m.u_input[m.vt] = vt_profile sim = Simulator(m, package='scipy') tsim, profiles = sim.simulate(numpoints=n_sim, varying_inputs=m.u_input) discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=n_nfe, ncp=n_ncp, scheme='LAGRANGE-RADAU') sim.initialize_model()
def initialize_model(m,n_sim,n_nfe,n_ncp): vp_profile = {0:0.75} vt_profile = {0:0.75} m.u_input = Suffix(direction=Suffix.LOCAL) m.u_input[m.vp] = vp_profile m.u_input[m.vt] = vt_profile sim = Simulator(m, package='scipy') tsim, profiles = sim.simulate(numpoints=n_sim, varying_inputs=m.u_input) discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m,nfe=n_nfe,ncp=n_ncp,scheme='LAGRANGE-RADAU') sim.initialize_model()
def simulate_model(m): if False: # Simulate the model using casadi sim = Simulator(m, package='casadi') tsim, profiles = sim.simulate(numpoints=200, integrator='cvodes', varying_inputs=m.var_input) else: # Simulate the model using scipy sim = Simulator(m, package='scipy') tsim, profiles = sim.simulate(numpoints=200, integrator='vode', varying_inputs=m.var_input) # Discretize model using Orthogonal Collocation discretizer = TransformationFactory('dae.collocation') discretizer.apply_to(m, nfe=20, ncp=3) # Initialize the discretized model using the simulator profiles sim.initialize_model() return sim, tsim, profiles