Skip to content
Snippets Groups Projects
Select Git revision
  • 615a058c30732fe446739a348a3ab7a5e536249d
  • main default protected
  • 29-second-branch
  • 29-confidential-issue
  • 32-confidential-issue
  • 34-confidential-issue
  • 31-confidential-issue
  • 31-old-state
  • expand_type_support
  • v0.2.3
  • v0.2.0
  • v0.1.3
  • first-release
  • test
14 results

deserializer.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ReferenceCircuits.cpp 17.04 KiB
    #include "ReferenceCircuits.h"
    
    #include "../Simulation.h"
    #include "../Utilities.h"
    
    
    using namespace DPsim;
    
    void DPsim::simulationExample1()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new VoltSourceRes("v_in", 1, 0, 10, 0, 1));
    	circElements0.push_back(new Inductor("l_1", 1, 2, 0.02));
    	circElements0.push_back(new Inductor("l_2", 2, 0, 0.1));
    	circElements0.push_back(new Inductor("l_3", 2, 3, 0.05));
    	circElements0.push_back(new LinearResistor("r_2", 3, 0, 2));
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() <<  std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExample1_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExample1L2()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new VoltSourceRes("v_in", 1, 0, 10, 0, 1));
    	circElements0.push_back(new Inductor("l_1", 1, 2, 0.02));
    	circElements0.push_back(new Inductor("l_2", 2, 0, 0.1));
    	circElements0.push_back(new Inductor("l_3", 2, 3, 0.05));
    	circElements0.push_back(new LinearResistor("r_2", 3, 0, 2));
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExample1L2_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExample2()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new VoltSourceRes("v_in", 1, 0, 10, 0, 1));
    	circElements0.push_back(new Inductor("l_1", 1, 2, 0.02));
    	circElements0.push_back(new Inductor("l_2", 2, 0, 0.1));
    	
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExample2_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExample3()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new VoltSourceRes("v_in", 1, 0, 10, 0, 1));
    	circElements0.push_back(new Capacitor("c_1", 1, 2, 0.001));
    	circElements0.push_back(new Inductor("l_1", 2, 0, 0.001));
    	circElements0.push_back(new LinearResistor("r_2", 2, 0, 1));
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExample3_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExampleIdealVS()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_in", 1, 2, 10, 0, 1));
    	circElements0.push_back(new LinearResistor("r_1", 1, 0, 1));
    	circElements0.push_back(new LinearResistor("r_2", 2, 0, 1));
    	circElements0.push_back(new LinearResistor("r_3", 2, 0, 1));
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleIdealVS_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExampleIdealVS2()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_in", 1, 0, 10, 0, 1));
    	circElements0.push_back(new LinearResistor("r_1", 1, 2, 1));
    	circElements0.push_back(new Capacitor("c_1", 2, 3, 0.001));
    	circElements0.push_back(new Inductor("l_1", 3, 0, 0.001));
    	circElements0.push_back(new LinearResistor("r_2", 3, 0, 1));
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleIdealVS2_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    
    void DPsim::simulationExampleIdealVS3()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 10, 0, 1));
    	circElements0.push_back(new LinearResistor("r_1", 1, 2, 1));
    	circElements0.push_back(new LinearResistor("r_2", 2, 0, 1));
    	circElements0.push_back(new LinearResistor("r_3", 2, 3, 1));
    	circElements0.push_back(new LinearResistor("r_4", 3, 0, 1));
    	circElements0.push_back(new LinearResistor("r_5", 3, 4, 1));
    	circElements0.push_back(new IdealVoltageSource("v_2", 4, 0, 20, 0, 2));
    
    
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleIdealVS3_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExampleRXLine()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 10, 0, 1));
    	circElements0.push_back(new RxLine("Line_1", 1, 2, 3, 0.1, 0.001));
    	circElements0.push_back(new LinearResistor("r_1", 2, 0, 20));
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleRXLine_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExampleRXLine2()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 10, 0, 1));
    
    	circElements0.push_back(new Inductor("l_L", 2, 3, 0.001));
    	circElements0.push_back(new LinearResistor("r_L", 1, 2, 0.1));
    	circElements0.push_back(new LinearResistor("r_1", 3, 0, 20));
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleRXLine2_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExampleRXLine3()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 10, 0, 1));
    	circElements0.push_back(new RxLine("Line_1", 1, 2, 0.1, 0.001));
    	circElements0.push_back(new LinearResistor("r_1", 2, 0, 20));
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExampleRXLine3_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExamplePiLine()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 345, 0, 1));
    	circElements0.push_back(new LinearResistor("r1", 1, 2, 5));
    	circElements0.push_back(new PiLine("PiLine1", 2, 3, 4, 6.4, 0.186, 0.004));
    	circElements0.push_back(new LinearResistor("r_load", 3, 0, 150));
    
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExamplePiLine_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }
    
    void DPsim::simulationExamplePiLine2()
    {
    	// Define Object for saving data on a file
    	Logger log, leftVectorLog, rightVectorLog;
    
    	std::vector<BaseComponent*> circElements0;
    	circElements0.push_back(new IdealVoltageSource("v_1", 1, 0, 345, 0, 1));
    	circElements0.push_back(new LinearResistor("r1", 1, 2, 5));
    	circElements0.push_back(new Capacitor("c_1", 2, 0, 0.002));
    	circElements0.push_back(new LinearResistor("r_load", 2, 4, 6.4));
    	circElements0.push_back(new Inductor("l_1", 4, 3, 0.186));
    	circElements0.push_back(new Capacitor("c_2", 3, 0, 0.002));
    	circElements0.push_back(new LinearResistor("r_load", 3, 0, 150));
    
    
    
    	std::cout << "The contents of circElements0 are:";
    	for (std::vector<BaseComponent*>::iterator it = circElements0.begin(); it != circElements0.end(); ++it) {
    		std::cout << "Added " << (*it)->getName() << std::endl;
    	}
    	std::cout << '\n';
    
    	// Set up simulation
    	Real timeStep = 0.001;
    	Simulation newSim(circElements0, 2.0*M_PI*50.0, timeStep, 0.3, log);
    
    	// Main Simulation Loop
    	std::cout << "Start simulation." << std::endl;
    	while (newSim.step(log, leftVectorLog, rightVectorLog))
    	{
    		newSim.increaseByTimeStep();
    		updateProgressBar(newSim.getTime(), newSim.getFinalTime());
    	}
    	std::cout << "Simulation finished." << std::endl;
    
    	// Write simulation data to file
    	std::ostringstream fileName;
    	fileName << "SimulationExamplePiLine2_" << timeStep;
    	log.WriteLogToFile("Logs/Log_" + fileName.str() + ".log");
    	leftVectorLog.WriteLogToFile("Logs/LeftVectorLog_" + fileName.str() + ".csv");
    	rightVectorLog.WriteLogToFile("Logs/RightVectorLog_" + fileName.str() + ".csv");
    }