Open main menu

Changes

Ocs package

2,158 bytes added, 05:10, 10 March 2016
.END
</syntaxhighlight>
}}
 
=== A circuit with a linear VCVS ===
 
To parse an IFF format netlist of the VCVS circuit we can use the following command
 
{{Code|Load the VCVS circuit structure parsing an IFF netlist |<syntaxhighlight lang="octave" style="font-size:13px">
outstruct = prs_iff ("vcvs");
</syntaxhighlight>
}}
 
The IFF netlist consists of the .cir file named "vcvs.cir" shown below
 
{{Code|IFF netlist for the VCVS circuit (.cir file)|<syntaxhighlight lang="text" style="font-size:13px">
%0.1b1
% A Simple linear VCVS example
% Input voltage sources
Mvoltagesources sinwave 2 4
1 4
Ampl f delay shift
1 1 0.0 0.0
1 0
END
% VCVS
Mvcvs LIN 4 1
1 1
Gain
5.0
2 0 1 0
% Resistor
Mresistors LIN 2 1
1 1
R
1
1 2
END
</syntaxhighlight>
}}
 
and of the .nms file named "and.nms shown below
 
{{Code|IFF netlist for the VCVS circuit (.nms file)|<syntaxhighlight lang="text" style="font-size:13px">
% 0.1b1
1 V_controller
2 V_controlled
</syntaxhighlight>
}}
 
The implementation for the VCVS with linear gain is shown below
 
{{Code|Model evaluator file for simple VCVS model |<syntaxhighlight lang="octave" style="font-size:13px">
function [a,b,c] = Mvcvs (string, parameters, parameternames, extvar,
intvar, t)
 
if isempty(intvar)
intvar = 0;
endif
 
switch string
##LCR part
case "LIN"
for ii=1:length(parameternames)
eval([parameternames{ii} "=" num2str(parameters(ii)) ";"])
endfor
j = intvar (1);
Vin = extvar (3) - extvar (4);
V = Vin * Gain;
a = zeros (5);
b = [0 0 0 0 1;
0 0 0 0 -1;
0 0 0 0 0;
0 0 0 0 0;
1 -1 -Gain Gain 0];
c = [0 0 0 0 0];
break
 
otherwise
error (["unknown section:" string])
endswitch
 
endfunction
</syntaxhighlight>
}}
 
{{Code|Run a simple transient simulation with the VCVS circuit |<syntaxhighlight lang="octave" style="font-size:13px">
>> x = [0 0 0 0]';
>> t = linspace(0,1,50);
>> [out, niter] = tst_backward_euler (outstruct, x, t, 1e-6, 100, pltvars, [0 1]);
</syntaxhighlight>
}}
344

edits