Re: transient -- "trace" default

Felix Salfelder <[email protected]>
Newsgroups gmane.comp.gnu.gnucap.devel
Message-ID <[email protected]>
Hi Al.

On Wed, Jul 17, 2013 at 10:30:43PM -0400, al davis wrote:
> Most people go with the default, which is usually wrong.  Before 
> I change it, any reason not to?

no. i'm fine with trace=a.

somewhat related, the issues i had with step control:

- the spice pulse problem (see the other thread).

- the first step is chosen regardless of an ambiguous event. for example
"""
spice
V1 0 1 sin zero peak frequency=1k
.print tran v(1)
.tran 0 1 1 trace=a
.end
"""
i think, the initial step case in TRANSIENT::next should include a check
for _time_by_ambiguous_event < newtime.

- step control kicks in one step too late. in
"""
double ELEMENT::tr_review_trunc_error(const FPOLY* p)
[..]
  }else if (_time[error_deriv] <= 0.) {
    // first few steps, I still know nothing
    // repeat whatever step was used the first time
    timestep = _dt;
  } [..]
""",
i would have expected _time[error_deriv-1] <=0. in my understanding
there's nothing wrong with using the result of the initial DC analysis
here.

- in TIME_PAIR STORAGE::tr_review(), i do not fully understand
"""
  if (_method_a == mEULER) {
    // Backward Euler, no step control, take it as it comes
  }else{
""".
ELEMENT::tr_review_trunc_error seems to correctly implement the
truncation error in case order() == 1. unless i'm missing something, it
makes perfect sense to use it for step control.


i have been experimenting with this for a while. you might be interested
in how gnucap-uf [1] performs. particularly w.r.t the test suite.

regards
felix

[1] http://tool.em.cs.uni-frankfurt.de/~felix/gnucap-uf
    currently gnucap-uf-0.0.0-rc12.tar.gz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.