update to the limit function for ps compatibility.

The output will stay between the two limits given.
Tere is no prescription which of the two is upper
or lower.
This function will not solve all PS-Spice
compatible model convergence issues. We better look
for a built-in function with smooth, steadily
differentiable corners.
This commit is contained in:
Holger Vogt 2020-11-12 17:36:03 +01:00
parent bb8cdb2e2d
commit d0a8e6ac51
1 changed files with 3 additions and 1 deletions

View File

@ -7636,7 +7636,9 @@ static struct card *pspice_compat(struct card *oldcard)
new_str = copy(".param gmin = 1e-12");
nextcard = insert_new_line(nextcard, new_str, 3, 0);
/* add funcs limit, pwr, pwrs, stp, if, int */
new_str = copy(".func limit(x, a, b) { max(min(x, a), b) }");
/* LIMIT( Output Expression, Limit1, Limit2)
Output will stay between the two limits given. */
new_str = copy(".func limit(x, a, b) { ternary_fcn(a>b, max(min(x, a), b), max(min(x, b), a)) }");
nextcard = insert_new_line(nextcard, new_str, 4, 0);
new_str = copy(".func pwr(x, a) { pow(x, a) }");
nextcard = insert_new_line(nextcard, new_str, 5, 0);