Changes

Jump to navigation Jump to search
2,158 bytes added ,  05:10, 10 March 2016
Line 571: Line 571:  
.END
 
.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>
 
</syntaxhighlight>
 
}}
 
}}
349

edits

Navigation menu