asrc/asrcacld.c, bug fix, reciproc tc coefficient
This commit is contained in:
parent
b1aa6cfc87
commit
6903584e99
|
|
@ -57,13 +57,13 @@ ASRCacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++)
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] * factor;
|
||||
|
||||
} else {
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
*(here->ASRCposPtr[j++]) += derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) += derivs[i] * factor;
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] * factor;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
|
||||
TESTS = bugs-1.cir bugs-2.cir dollar-1.cir empty-1.cir resume-1.cir log-functions-1.cir alter-vec.cir test-noise-2.cir test-noise-3.cir ac-zero.cir
|
||||
TESTS = bugs-1.cir bugs-2.cir dollar-1.cir empty-1.cir resume-1.cir log-functions-1.cir alter-vec.cir test-noise-2.cir test-noise-3.cir ac-zero.cir asrc-tc-1.cir asrc-tc-2.cir
|
||||
|
||||
TESTS_ENVIRONMENT = ngspice_vpath=$(srcdir) $(SHELL) $(top_srcdir)/tests/bin/check.sh $(top_builddir)/src/ngspice
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
* test ASRC temperature coeff
|
||||
|
||||
v1 1 0 dc=100 ac=1
|
||||
|
||||
b2 2 0 i=v(1) tc1=0.001
|
||||
v2 0 2 0
|
||||
|
||||
b3 3 0 v=v(1) tc1=0.001
|
||||
|
||||
.temp 127.0
|
||||
|
||||
.control
|
||||
op
|
||||
let idc2_gold = 100 * (1 + 100*0.001)
|
||||
let vdc3_gold = 100 * (1 + 100*0.001)
|
||||
let idc2=i(v2)
|
||||
let vdc3=v(3)
|
||||
|
||||
* print idc2 vdc3 idc2_gold vdc3_gold
|
||||
|
||||
let err1 = idc2/idc2_gold - 1
|
||||
let err2 = vdc3/vdc3_gold - 1
|
||||
|
||||
if abs(err1) > 1e-9 or abs(err2) > 1e-9
|
||||
echo "ERROR: dc test failed, err1 = $&err1 err2 = $&err2"
|
||||
quit 1
|
||||
end
|
||||
|
||||
ac dec 1 1kHz 1kHz
|
||||
let iac2_gold = 1.0 * (1 + 100*0.001)
|
||||
let vac3_gold = 1.0 * (1 + 100*0.001)
|
||||
let iac2=i(v2)
|
||||
let vac3=v(3)
|
||||
|
||||
* print iac2 vac3 iac2_gold vac3_gold
|
||||
|
||||
let err3 = iac2/iac2_gold - 1
|
||||
let err4 = vac3/vac3_gold - 1
|
||||
|
||||
if abs(err3) > 1e-9 or abs(err4) > 1e-9
|
||||
echo "ERROR: ac test failed, err3 = $&err3 err4 = $&err4"
|
||||
quit 1
|
||||
end
|
||||
|
||||
echo "INFO: success"
|
||||
quit 0
|
||||
|
||||
.endc
|
||||
|
|
@ -0,0 +1 @@
|
|||
INFO: success
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
* test ASRC temperature coeff
|
||||
|
||||
v0 9 0 dc=0 ac=0
|
||||
|
||||
v1 1 0 dc=100 ac=10
|
||||
|
||||
* a real resistor, in devices/res
|
||||
r2 1 2 1k tc1=0.001
|
||||
v2 2 0 dc=0 ac=0
|
||||
|
||||
* a behavioural resistor, which is mapped to devices/asrc in inpcom.c
|
||||
r3 1 3 r = {1k + v(9)} tc1=0.001
|
||||
v3 3 0 dc=0 ac=0
|
||||
|
||||
.temp 127.0
|
||||
|
||||
.control
|
||||
|
||||
* listing extended
|
||||
|
||||
op
|
||||
let idc_gold = 100 / (1k * (1 + 100*0.001))
|
||||
let idc2=i(v2)
|
||||
let idc3=i(v3)
|
||||
|
||||
* print idc2 idc3 idc_gold
|
||||
|
||||
let err1 = idc2/idc_gold - 1
|
||||
let err2 = idc3/idc_gold - 1
|
||||
|
||||
if abs(err1) > 1e-9 or abs(err2) > 1e-9
|
||||
echo "ERROR: dc test failed, err1 = $&err1 err2 = $&err2"
|
||||
quit 1
|
||||
end
|
||||
|
||||
ac dec 1 1kHz 1kHz
|
||||
let iac_gold = 10 / (1k * (1 + 100*0.001))
|
||||
let iac2=i(v2)
|
||||
let iac3=i(v3)
|
||||
|
||||
* print iac2 iac3 iac_gold
|
||||
|
||||
let err3 = iac2/iac_gold - 1
|
||||
let err4 = iac3/iac_gold - 1
|
||||
|
||||
if abs(err3) > 1e-9 or abs(err4) > 1e-9
|
||||
echo "ERROR: ac test failed, err3 = $&err3 err4 = $&err4"
|
||||
quit 1
|
||||
end
|
||||
|
||||
echo "INFO: success"
|
||||
quit 0
|
||||
|
||||
.endc
|
||||
|
|
@ -0,0 +1 @@
|
|||
INFO: success
|
||||
Loading…
Reference in New Issue