Browse Source

Fix bug #557

Revise memory allocation for different analysis types
pre-master-46
Holger Vogt 5 years ago
parent
commit
3cf6857cfc
  1. 9
      src/frontend/outitf.c

9
src/frontend/outitf.c

@ -1134,12 +1134,12 @@ vlength2delta(int len)
/* TSTOP / TSTEP */ /* TSTOP / TSTEP */
int points = ft_curckt->ci_ckt->CKTtimeListSize; int points = ft_curckt->ci_ckt->CKTtimeListSize;
/* transient and pss analysis (points > 0) upon start */ /* transient and pss analysis (points > 0) upon start */
if (len == 0 && points > 0) {
if ((ft_curckt->ci_ckt->CKTmode & MODETRAN) && len == 0 && points > 0) {
/* number of timesteps plus some overhead */ /* number of timesteps plus some overhead */
return points + 100; return points + 100;
} }
/* transient and pss if original estimate is exceeded */ /* transient and pss if original estimate is exceeded */
else if (points > 0) {
else if ((ft_curckt->ci_ckt->CKTmode & MODETRAN) && points > 0) {
/* check where we are */ /* check where we are */
double timerel = ft_curckt->ci_ckt->CKTtime / ft_curckt->ci_ckt->CKTfinalTime; double timerel = ft_curckt->ci_ckt->CKTtime / ft_curckt->ci_ckt->CKTfinalTime;
/* return an estimate of the appropriate number of time points, if more than 20% of /* return an estimate of the appropriate number of time points, if more than 20% of
@ -1150,6 +1150,11 @@ vlength2delta(int len)
else else
return len; return len;
} }
/* op */
else if (ft_curckt->ci_ckt->CKTmode & MODEDCOP) {
/* op with length 1 */
return 1;
}
/* other analysis types that do not set CKTtimeListSize */ /* other analysis types that do not set CKTtimeListSize */
else else
return 1024; return 1024;

Loading…
Cancel
Save