void SMCTest::test_itw_Lsodar() { initTwisting(); SP::ControlLsodarSimulation simLsodar(new ControlLsodarSimulation(_t0, _T, _h)); simLsodar->setSaveOnlyMainSimulation(true); simLsodar->addDynamicalSystem(_DS); simLsodar->addSensor(_sensor, _h); simLsodar->addActuator(_itw, _h); simLsodar->initialize(); simLsodar->run(); SimpleMatrix& data = *simLsodar->data(); ioMatrix::write("itw_Lsodar.dat", "ascii", data, "noDim"); // Reference Matrix SimpleMatrix dataRef(data); dataRef.zero(); ioMatrix::read("itw.ref", "ascii", dataRef); // it is a bad idea to compare solutions to an AVI that does not admit a unique solution SiconosVector lambda1 = SiconosVector(data.size(0)); SiconosVector lambda2 = SiconosVector(data.size(0)); data.getCol(3, lambda1); data.getCol(4, lambda2); axpy(_beta, lambda2, lambda1); SiconosVector lambda1Ref = SiconosVector(data.size(0)); SiconosVector lambda2Ref = SiconosVector(data.size(0)); dataRef.getCol(3, lambda1Ref); dataRef.getCol(4, lambda2Ref); axpy(_beta, lambda2Ref, lambda1Ref); data.setCol(3, lambda1); dataRef.setCol(3, lambda1Ref); data.resize(data.size(0), 4); dataRef.resize(data.size(0), 4); std::cout << "------- Integration done, error = " << (data - dataRef).normInf() << " -------" <<std::endl; CPPUNIT_ASSERT_EQUAL_MESSAGE("test_itw_Lsodar : ", (data - dataRef).normInf() < _tol, true); }
/*static*/ bool JsonExpectationsSource::Parse(const char *jsonPath, Json::Value *jsonRoot) { SkFILEStream inFile(jsonPath); if (!inFile.isValid()) { gm_fprintf(stderr, "unable to read JSON file %s\n", jsonPath); DEBUGFAIL_SEE_STDERR; return false; } SkAutoDataUnref dataRef(ReadFileIntoSkData(inFile)); if (NULL == dataRef.get()) { gm_fprintf(stderr, "error reading JSON file %s\n", jsonPath); DEBUGFAIL_SEE_STDERR; return false; } const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data()); size_t size = dataRef.get()->size(); Json::Reader reader; if (!reader.parse(bytes, bytes+size, *jsonRoot)) { gm_fprintf(stderr, "error parsing JSON file %s\n", jsonPath); DEBUGFAIL_SEE_STDERR; return false; } return true; }
/*static*/ bool JsonExpectationsSource::Parse(const char *jsonPath, Json::Value *jsonRoot) { SkAutoDataUnref dataRef(SkData::NewFromFileName(jsonPath)); if (NULL == dataRef.get()) { SkDebugf("error reading JSON file %s\n", jsonPath); DEBUGFAIL_SEE_STDERR; return false; } const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data()); size_t size = dataRef.get()->size(); Json::Reader reader; if (!reader.parse(bytes, bytes+size, *jsonRoot)) { SkDebugf("error parsing JSON file %s\n", jsonPath); DEBUGFAIL_SEE_STDERR; return false; } return true; }
void PIDTest::testPIDLsodar() { init(); SP::ControlLsodarSimulation simLsodar(new ControlLsodarSimulation(_t0, _T, _h)); simLsodar->addDynamicalSystem(_DS); simLsodar->addSensor(_sensor, _h); simLsodar->addActuator(_PIDcontroller, _h); simLsodar->initialize(); simLsodar->run(); SimpleMatrix& data = *simLsodar->data(); ioMatrix::write("PIDLsodar.dat", "ascii", data, "noDim"); // Reference Matrix SimpleMatrix dataRef(data); dataRef.zero(); ioMatrix::read("PID.ref", "ascii", dataRef); std::cout << "------- Integration done, error = " << (data - dataRef).normInf() << " -------" <<std::endl; CPPUNIT_ASSERT_EQUAL_MESSAGE("testPIDLsodar : ", (data - dataRef).normInf() < _tol, true); }
void SMCTest::test_iSMC_ZOH() { init(); SP::ControlZOHSimulation simZOH(new ControlZOHSimulation(_t0, _T, _h)); simZOH->setSaveOnlyMainSimulation(true); simZOH->addDynamicalSystem(_DS); simZOH->addSensor(_sensor, _h); simZOH->addActuator(_iSMC, _h); simZOH->initialize(); simZOH->run(); SimpleMatrix& data = *simZOH->data(); ioMatrix::write("iSMC_ZOH.dat", "ascii", data, "noDim"); // Reference Matrix SimpleMatrix dataRef(data); dataRef.zero(); ioMatrix::read("iSMC.ref", "ascii", dataRef); std::cout << "------- Integration done, error = " << (data - dataRef).normInf() << " -------" <<std::endl; CPPUNIT_ASSERT_EQUAL_MESSAGE("test_iSMC_ZOH : ", (data - dataRef).normInf() < _tol, true); }
void ObserverTest::test_SMO_ZOH() { init(); SP::ControlZOHSimulation simZOH(new ControlZOHSimulation(_t0, _T, _h)); simZOH->addDynamicalSystem(_DS); simZOH->addSensor(_sensor, _h); simZOH->addActuator(_pid, _h); SP::Observer smo(new SlidingReducedOrderObserver(_sensor, *_xHat0, _C, _L)); simZOH->addObserver(smo, _h); simZOH->initialize(); simZOH->run(); SimpleMatrix& data = *simZOH->data(); ioMatrix::write("SMO_ZOH.dat", "ascii", data, "noDim"); // Reference Matrix SimpleMatrix dataRef(data); dataRef.zero(); ioMatrix::read("SMO.ref", "ascii", dataRef); std::cout << "------- Integration done, error = " << (data - dataRef).normInf() << " -------" <<std::endl; CPPUNIT_ASSERT_EQUAL_MESSAGE("test_SMO_ZOH : ", (data - dataRef).normInf() < _tol, true); }