You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#include<stdio.h>
#include"SPICE.hpp"intmain() {
// Create a circuit with the default integrator, time step limits, and// precision settings
Circuit c;
// Create a named node, constrained to 0V (GND)// Nodes can also be free to change voltage if constructor is empty
Node *gnd = c.add_node(0);
// Create some two-terminal components with set values
VSource *volt = c.add_comp<VSource>(5);
Resistor *R1 = c.add_comp<Resistor>(1e3);
Capacitor *C1 = c.add_comp<Capacitor>(100e-9);
// Assemble circuit// Nodes are automatically created as needed, but can be explicitly created// (like with GND) to create multiple connections to one node
gnd->to(volt)->to(R1)->to(C1)->to(gnd);
// Flip voltage source so voltages are positive
volt->flip();
// Do not use DC operating point to determine initial condition for// capcitor charge; specify it as 0V
C1->set_initial_cond(0);
// Save currents and voltages for all components and nodes at every timestep// Alternatively, individual components can be told to save
c.save_all();
// Step simulation to 1ms
c.sim_to_time(1e-3);
// Print out timesteps and voltage across the capacitorfor(size_t x = 0; x < c.save_times().size(); x++)
printf("%e,%e\n", c.save_times()[x], C1->v_hist()[x]);
// It is now possible to run some control algorithm, update values based on// the circuit state, and continue stepping...
}