ngspice/examples/tclspice/tcl-testbench1/tcl-testbench1.sh

63 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# -*- mode: tcl -*- \
exec wish -f "$0" ${1+"$@"}
# old name: analyse-20070504-0.tcl
package require BLT
load ../../../src/.libs/libspice.so
# Test of virtual capacitore circuit
# Vary the control voltage and log the resulting capacitance
spice::source "testCapa.cir"
set n 30
set dv 0.2
set vmax [expr $dv/2]
set vmin [expr -1 * $dv/2]
set pas [expr $dv/ $n]
blt::vector create Ctmp
blt::vector create Cim
blt::vector create check
blt::vector create Vcmd
blt::graph .cimvd -title "Cim = f(Vd)"
blt::graph .checkvd -title "Rim = f(Vd)"
blt::vector create Iex
blt::vector create freq
blt::graph .freqanal -title "Analyse frequentielle"
set v [expr {$vmin + $n * $pas / 4}]
spice::alter vd = $v
spice::op
spice::ac dec 10 100 100k
spice::vectoblt {Vex#branch} Iex
spice::vectoblt {frequency} freq
pack .freqanal
.freqanal element create line1 -xdata freq -ydata Iex
for {set i 0} {[expr $n - $i]} {incr i } {
set v [expr {$vmin + $i * $pas}]
spice::alter vd = $v
spice::op
spice::ac dec 10 100 100k
spice::let Cim = real(mean(Vex#branch/(2*Pi*i*frequency*(V(5)-V(6)))))
spice::vectoblt Cim Ctmp
Cim append $Ctmp(0:end)
spice::let err = real(mean(sqrt((Vex#branch-(2*Pi*i*frequency*Cim*V(5)-V(6)))^2)))
spice::vectoblt err Ctmp
check append $Ctmp(0:end)
Vcmd append $v
}
pack .cimvd
.cimvd element create line1 -xdata Vcmd -ydata Cim
pack .checkvd
.checkvd element create line1 -xdata Vcmd -ydata check