committed by
Holger Vogt
3 changed files with 266 additions and 0 deletions
@ -0,0 +1,179 @@ |
|||
testing loops |
|||
*variables are global |
|||
*vector reside only in the plot where they where created |
|||
|
|||
.param rr = 10k |
|||
|
|||
R1 r2 0 r = {rr + 40*TEMPER} |
|||
V1 r2 0 1 |
|||
|
|||
.control |
|||
*create a new plot as our base plot |
|||
setplot new |
|||
set curplottitle = "crossplot" |
|||
set plotname=$curplot |
|||
|
|||
let aa = 5 |
|||
let bb = 3 |
|||
let cc = 6 |
|||
set aa="$&aa" |
|||
set bb="$&bb" |
|||
set cc="$&cc" |
|||
|
|||
* generate vector with all (here 90) elements |
|||
let result=vector(90) |
|||
settype current result |
|||
* reshape vector to format 5 x 3 x 6 |
|||
*reshape result [5][3][6] |
|||
reshape result [$aa][$bb][$cc] |
|||
|
|||
* vector to store temperature |
|||
let tvect=vector(5) |
|||
* vector to store voltage |
|||
let vvect=vector(6) |
|||
* vector to store parameter values |
|||
let pvect=vector(3) |
|||
|
|||
*index for storing in vectors tvect and result |
|||
|
|||
let indexp = 0 |
|||
|
|||
foreach pvar 9.5k 10k 10.5k |
|||
let indexv = 0 |
|||
alterparam rr = $pvar |
|||
let pvect[indexp] = $pvar |
|||
mc_source |
|||
foreach var -40 -20 0 20 40 |
|||
set temp = $var |
|||
dc v1 0 5 1 |
|||
*store name of the actual dc plot |
|||
set dcplotname = $curplot |
|||
* back to the base plot |
|||
setplot $plotname |
|||
let result[indexv][indexp] = {$dcplotname}.v1#branch |
|||
let tvect[indexv] = $var |
|||
if indexv = 0 |
|||
let vvect = {$dcplotname}.r2 |
|||
end |
|||
let indexv = indexv + 1 |
|||
* destroy $dcplotname |
|||
end |
|||
let indexp = indexp + 1 |
|||
remcirc |
|||
end |
|||
|
|||
settype voltage vvect |
|||
setscale vvect |
|||
|
|||
let indexplot = 0 |
|||
while indexplot < indexp |
|||
*plot result[0][indexplot] result[1][indexplot] result[2][indexplot] result[3][indexplot] result[4][indexplot] |
|||
let indexplot = indexplot + 1 |
|||
end |
|||
|
|||
|
|||
plot |
|||
+result[0][0] result[1][0] result[2][0] result[3][0] result[4][0] |
|||
+result[0][1] result[1][1] result[2][1] result[3][1] result[4][1] |
|||
+result[0][2] result[1][2] result[2][2] result[3][2] result[4][2] |
|||
|
|||
write 3d_loop_i_vs_v.out |
|||
+result[0][0] result[1][0] result[2][0] result[3][0] result[4][0] |
|||
+result[0][1] result[1][1] result[2][1] result[3][1] result[4][1] |
|||
+result[0][2] result[1][2] result[2][2] result[3][2] result[4][2] |
|||
|
|||
*transpoe a 3D vector |
|||
let aai = 0 |
|||
let bbi = 0 |
|||
let cci = 0 |
|||
let result1 = vector(90) |
|||
settype current result1 |
|||
* reshape vector to format 3 x 6 x 5 |
|||
reshape result1 [$bb][$cc][$aa] |
|||
|
|||
* shift from vector format 5 x 3 x 6 to 3 x 6 x 5 |
|||
*echo test output > resultout.txt |
|||
while aai < aa |
|||
let bbi = 0 |
|||
while bbi < bb |
|||
let cci = 0 |
|||
while cci < cc |
|||
let result1[bbi][cci][aai] = result[aai][bbi][cci] |
|||
* print bbi cci aai >> resultout.txt |
|||
* print result1[bbi][cci][aai] >> resultout.txt |
|||
let cci = cci + 1 |
|||
end |
|||
let bbi = bbi + 1 |
|||
end |
|||
let aai = aai + 1 |
|||
end |
|||
|
|||
settype temp-sweep tvect |
|||
setscale tvect |
|||
|
|||
* current through v1 versus temperature |
|||
plot |
|||
+result1[0][0] result1[1][0] result1[2][0] |
|||
+result1[0][1] result1[1][1] result1[2][1] |
|||
+result1[0][2] result1[1][2] result1[2][2] |
|||
+result1[0][3] result1[1][3] result1[2][3] |
|||
+result1[0][4] result1[1][4] result1[2][4] |
|||
+result1[0][5] result1[1][5] result1[2][5] |
|||
|
|||
write 3d_loop_i_vs_t.out |
|||
+result1[0][0] result1[1][0] result1[2][0] |
|||
+result1[0][1] result1[1][1] result1[2][1] |
|||
+result1[0][2] result1[1][2] result1[2][2] |
|||
+result1[0][3] result1[1][3] result1[2][3] |
|||
+result1[0][4] result1[1][4] result1[2][4] |
|||
+result1[0][5] result1[1][5] result1[2][5] |
|||
|
|||
*plot result1 |
|||
|
|||
*transpoe a 3D vector |
|||
let aai = 0 |
|||
let bbi = 0 |
|||
let cci = 0 |
|||
let result2 = vector(90) |
|||
settype current result2 |
|||
* reshape vector to format 6 x 5 x 3 |
|||
reshape result2 [$cc][$aa][$bb] |
|||
|
|||
* shift from vector format 3 x 6 x 5 to 6 x 5 x 3 |
|||
*echo test output > resultout.txt |
|||
while aai < aa |
|||
let bbi = 0 |
|||
while bbi < bb |
|||
let cci = 0 |
|||
while cci < cc |
|||
let result2[cci][aai][bbi] = result1[bbi][cci][aai] |
|||
* print cci aai bbi >> resultout.txt |
|||
* print result2[cci][aai][bbi] >> resultout.txt |
|||
let cci = cci + 1 |
|||
end |
|||
let bbi = bbi + 1 |
|||
end |
|||
let aai = aai + 1 |
|||
end |
|||
|
|||
settype impedance pvect |
|||
setscale pvect |
|||
|
|||
* current through v1 versus parameter rr |
|||
plot |
|||
+result2[0][0] result2[1][0] result2[2][0] result2[3][0] result2[4][0] result2[5][0] |
|||
+result2[0][1] result2[1][1] result2[2][1] result2[3][1] result2[4][1] result2[5][1] |
|||
+result2[0][2] result2[1][2] result2[2][2] result2[3][2] result2[4][2] result2[5][2] |
|||
+result2[0][3] result2[1][3] result2[2][3] result2[3][3] result2[4][3] result2[5][3] |
|||
+result2[0][4] result2[1][4] result2[2][4] result2[3][4] result2[4][4] result2[5][4] |
|||
|
|||
write 3d_loop_i_vs_para.out |
|||
+result2[0][0] result2[1][0] result2[2][0] result2[3][0] result2[4][0] result2[5][0] |
|||
+result2[0][1] result2[1][1] result2[2][1] result2[3][1] result2[4][1] result2[5][1] |
|||
+result2[0][2] result2[1][2] result2[2][2] result2[3][2] result2[4][2] result2[5][2] |
|||
+result2[0][3] result2[1][3] result2[2][3] result2[3][3] result2[4][3] result2[5][3] |
|||
+result2[0][4] result2[1][4] result2[2][4] result2[3][4] result2[4][4] result2[5][4] |
|||
|
|||
.endc |
|||
|
|||
.end |
|||
@ -0,0 +1,39 @@ |
|||
*test alterparam |
|||
.param vv = 1 |
|||
.param rr = 'vv + 1' |
|||
|
|||
R1 1 0 {rr + 1} |
|||
v1 1 0 1 |
|||
|
|||
.subckt subr in out rint1 = 10 |
|||
.param rint = 5 |
|||
.param rint2 = 99 |
|||
R0 in out 'rint' |
|||
R1 in out 'rint1' |
|||
R2 in out 'rint2' |
|||
.ends |
|||
|
|||
Xr 2 0 subr rint = 7 rint1 = 15 |
|||
v2 2 0 1 |
|||
|
|||
.control |
|||
op |
|||
print v1#branch v2#branch |
|||
echo |
|||
listing expand |
|||
remcirc |
|||
alterparam vv = 2 |
|||
mc_source |
|||
op |
|||
print v1#branch v2#branch |
|||
echo |
|||
listing expand |
|||
alterparam subr rint = 11 |
|||
mc_source |
|||
op |
|||
print v1#branch v2#branch |
|||
echo |
|||
listing expand |
|||
.endc |
|||
|
|||
.end |
|||
@ -0,0 +1,48 @@ |
|||
testing loops |
|||
*variables are global |
|||
*vector reside only in the plot where they where created |
|||
|
|||
R1 r2 0 r = {5k + 50*TEMPER} |
|||
V1 r2 0 1 |
|||
|
|||
.control |
|||
*create a new plot as our base plot |
|||
setplot new |
|||
set curplottitle = "crossplot" |
|||
set plotname=$curplot |
|||
|
|||
* generate vector with all (here 30) elements |
|||
let result=vector(30) |
|||
* reshape vector to format 5 x 6 |
|||
reshape result [5][6] |
|||
* vector to store temperature |
|||
let tvect=vector(5) |
|||
|
|||
*index for storing in vectors tvect and result |
|||
let index = 0 |
|||
|
|||
foreach var -40 -20 0 20 40 |
|||
set temp = $var |
|||
dc v1 0 5 1 |
|||
*store name of the actual dc plot |
|||
set dcplotname = $curplot |
|||
* back to the base plot |
|||
setplot $plotname |
|||
let result[index] = {$dcplotname}.v1#branch |
|||
let tvect[index] = $var |
|||
settype current result |
|||
let index = index + 1 |
|||
destroy $dcplotname |
|||
end |
|||
|
|||
settype temp-sweep tvect |
|||
setscale tvect |
|||
|
|||
transpose result |
|||
|
|||
plot result |
|||
write dc_loop.out result[0] result[1] result[2] result[3] result[4] result[5] |
|||
|
|||
.endc |
|||
|
|||
.end |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue