noise for behavioural resistor
This commit is contained in:
parent
1426f66967
commit
55b2a0218e
|
|
@ -4221,7 +4221,7 @@ inp_compat(struct card *card)
|
|||
{
|
||||
char *str_ptr, *cut_line, *title_tok, *node1, *node2;
|
||||
char *out_ptr, *exp_ptr, *beg_ptr, *end_ptr, *copy_ptr, *del_ptr;
|
||||
char *xline;
|
||||
char *xline, *x2line, *x3line, *x4line;
|
||||
size_t xlen, i, pai = 0, paui = 0, ii;
|
||||
char *ckt_array[100];
|
||||
|
||||
|
|
@ -4714,12 +4714,36 @@ inp_compat(struct card *card)
|
|||
if ((tc1_ptr == NULL) && (tc2_ptr == NULL)) {
|
||||
xline = tprintf("b%s %s %s i = v(%s, %s)/(%s)", title_tok, node1, node2,
|
||||
node1, node2, equation);
|
||||
x2line = tprintf("b%s_1 %s %s i = i(v%s_3)/sqrt(%s)",
|
||||
title_tok, node1, node2,
|
||||
title_tok,
|
||||
equation);
|
||||
x3line = tprintf("r%s_2 %s_3 0 1.0",
|
||||
title_tok, title_tok);
|
||||
x4line = tprintf("v%s_3 %s_3 0 0",
|
||||
title_tok, title_tok);
|
||||
} else if (tc2_ptr == NULL) {
|
||||
xline = tprintf("b%s %s %s i = v(%s, %s)/(%s) tc1=%15.8e reciproctc=1", title_tok, node1, node2,
|
||||
node1, node2, equation, tc1);
|
||||
x2line = tprintf("b%s_1 %s %s i = i(v%s_3)/sqrt(%s)",
|
||||
title_tok, node1, node2,
|
||||
title_tok,
|
||||
equation);
|
||||
x3line = tprintf("r%s_2 %s_3 0 1.0 tc1=%15.8e",
|
||||
title_tok, title_tok, tc1);
|
||||
x4line = tprintf("v%s_3 %s_3 0 0",
|
||||
title_tok, title_tok);
|
||||
} else {
|
||||
xline = tprintf("b%s %s %s i = v(%s, %s)/(%s) tc1=%15.8e tc2=%15.8e reciproctc=1", title_tok, node1, node2,
|
||||
node1, node2, equation, tc1, tc2);
|
||||
x2line = tprintf("b%s_1 %s %s i = i(v%s_3)/sqrt(%s)",
|
||||
title_tok, node1, node2,
|
||||
title_tok,
|
||||
equation);
|
||||
x3line = tprintf("r%s_2 %s_3 0 1.0 tc1=%15.8e tc2=%15.8e",
|
||||
title_tok, title_tok, tc1, tc2);
|
||||
x4line = tprintf("v%s_3 %s_3 0 0",
|
||||
title_tok, title_tok);
|
||||
}
|
||||
tc1_ptr = NULL;
|
||||
tc2_ptr = NULL;
|
||||
|
|
@ -4728,6 +4752,11 @@ inp_compat(struct card *card)
|
|||
*(card->line) = '*';
|
||||
// insert new B source line immediately after current line
|
||||
card = insert_new_line(card, xline, 0, 0);
|
||||
if (x2line) {
|
||||
card = insert_new_line(card, x2line, 0, 0);
|
||||
card = insert_new_line(card, x3line, 0, 0);
|
||||
card = insert_new_line(card, x4line, 0, 0);
|
||||
}
|
||||
|
||||
tfree(title_tok);
|
||||
tfree(node1);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
* (exec-spice "ngspice %s" t)
|
||||
|
||||
v1 1 0 dc 2 ac 1
|
||||
v2 200 0 dc=1
|
||||
|
||||
R1 1 2 1k
|
||||
R2 2 0 1k tc1=0.001 $ tc2=1e-5
|
||||
|
||||
R10 1 20 1k
|
||||
R20 20 0 '1k*v(200)' tc1=0.001 $ tc2=1e-5
|
||||
|
||||
.temp 127.0
|
||||
|
||||
.control
|
||||
listing e
|
||||
|
||||
op
|
||||
let gold = 2/(1+1000/1100)
|
||||
print v(2) v(20) gold
|
||||
|
||||
noise v(2) v1 dec 1 1kHz 1kHz
|
||||
let r = 1/(1/1000 + 1/1100)
|
||||
let gold = sqrt(4*boltz*(273.15+127.0)*r)
|
||||
print all gold
|
||||
|
||||
noise v(20) v1 dec 1 1kHz 1kHz
|
||||
print all
|
||||
|
||||
ac dec 1 1kHz 1kHz
|
||||
let gold = 1/(1+1000/1100)
|
||||
print v(2) v(20) gold
|
||||
|
||||
.endc
|
||||
Loading…
Reference in New Issue