Merge branch 'pre-master' of ssh://git.code.sf.net/p/ngspice/ngspice into pre-master
This commit is contained in:
commit
9f581acd6b
|
|
@ -179,7 +179,9 @@ com_fft(wordlist *wl)
|
||||||
fftw_execute(plan_forward);
|
fftw_execute(plan_forward);
|
||||||
|
|
||||||
scale = (double) fpts - 1.0;
|
scale = (double) fpts - 1.0;
|
||||||
for (j = 0; j < fpts; j++) {
|
fdvec[i][0].cx_real = out[0][0]/scale/2.0;
|
||||||
|
fdvec[i][0].cx_imag = 0.0;
|
||||||
|
for (j = 1; j < fpts; j++) {
|
||||||
fdvec[i][j].cx_real = out[j][0]/scale;
|
fdvec[i][j].cx_real = out[j][0]/scale;
|
||||||
fdvec[i][j].cx_imag = out[j][1]/scale;
|
fdvec[i][j].cx_imag = out[j][1]/scale;
|
||||||
}
|
}
|
||||||
|
|
@ -212,7 +214,7 @@ com_fft(wordlist *wl)
|
||||||
|
|
||||||
scale = (double) fpts - 1.0;
|
scale = (double) fpts - 1.0;
|
||||||
/* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */
|
/* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */
|
||||||
fdvec[i][0].cx_real = in[0]/scale;
|
fdvec[i][0].cx_real = in[0]/scale/2.0;
|
||||||
fdvec[i][0].cx_imag = 0.0;
|
fdvec[i][0].cx_imag = 0.0;
|
||||||
for (j = 1; j < fpts-1; j++) {
|
for (j = 1; j < fpts-1; j++) {
|
||||||
fdvec[i][j].cx_real = in[2*j]/scale;
|
fdvec[i][j].cx_real = in[2*j]/scale;
|
||||||
|
|
|
||||||
|
|
@ -773,7 +773,9 @@ cx_fft(void *data, short int type, int length, int *newlength, short int *newtyp
|
||||||
fftw_execute(plan_forward);
|
fftw_execute(plan_forward);
|
||||||
|
|
||||||
scale = (double) fpts - 1.0;
|
scale = (double) fpts - 1.0;
|
||||||
for (i = 0; i < fpts; i++) {
|
outdata[0].cx_real = out[0][0]/scale/2.0;
|
||||||
|
outdata[0].cx_imag = 0.0;
|
||||||
|
for (i = 1; i < fpts; i++) {
|
||||||
outdata[i].cx_real = out[i][0]/scale;
|
outdata[i].cx_real = out[i][0]/scale;
|
||||||
outdata[i].cx_imag = out[i][1]/scale;
|
outdata[i].cx_imag = out[i][1]/scale;
|
||||||
}
|
}
|
||||||
|
|
@ -798,7 +800,7 @@ cx_fft(void *data, short int type, int length, int *newlength, short int *newtyp
|
||||||
|
|
||||||
scale = (double) fpts - 1.0;
|
scale = (double) fpts - 1.0;
|
||||||
/* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */
|
/* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */
|
||||||
outdata[0].cx_real = datax[0]/scale;
|
outdata[0].cx_real = datax[0]/scale/2.0;
|
||||||
outdata[0].cx_imag = 0.0;
|
outdata[0].cx_imag = 0.0;
|
||||||
for (i = 1; i < fpts-1; i++) {
|
for (i = 1; i < fpts-1; i++) {
|
||||||
outdata[i].cx_real = datax[2*i]/scale;
|
outdata[i].cx_real = datax[2*i]/scale;
|
||||||
|
|
|
||||||
|
|
@ -50,18 +50,6 @@ double osdi_pnjlim(bool init, bool *check, double vnew, double vold, double vt,
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
double osdi_typedpnjlim(bool init, bool *check, double vnew, double vold, double vt,
|
|
||||||
double vcrit, double type) {
|
|
||||||
if (init) {
|
|
||||||
*check = true;
|
|
||||||
return vcrit;
|
|
||||||
}
|
|
||||||
int icheck = 0;
|
|
||||||
double res = DEVpnjlim(type*vnew, vold, vt, vcrit, &icheck);
|
|
||||||
*check = icheck != 0;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
double osdi_limvds(bool init, bool *check, double vnew, double vold) {
|
double osdi_limvds(bool init, bool *check, double vnew, double vold) {
|
||||||
if (init) {
|
if (init) {
|
||||||
*check = true;
|
*check = true;
|
||||||
|
|
|
||||||
|
|
@ -96,8 +96,7 @@ typedef void (*osdi_log_ptr)(void *handle, char *msg, uint32_t lvl);
|
||||||
|
|
||||||
double osdi_pnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
double osdi_pnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
||||||
double vcrit);
|
double vcrit);
|
||||||
double osdi_typedpnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
|
||||||
double vcrit, double type);
|
|
||||||
double osdi_limvds(bool init, bool *icheck, double vnew, double vold);
|
double osdi_limvds(bool init, bool *icheck, double vnew, double vold);
|
||||||
double osdi_limitlog(bool init, bool *icheck, double vnew, double vold,
|
double osdi_limitlog(bool init, bool *icheck, double vnew, double vold,
|
||||||
double LIM_TOL);
|
double LIM_TOL);
|
||||||
|
|
|
||||||
|
|
@ -174,13 +174,13 @@ extern int OSDIload(GENmodel *inModel, CKTcircuit *ckt) {
|
||||||
sim_info.flags |= CALC_NOISE | ANALYSIS_NOISE;
|
sim_info.flags |= CALC_NOISE | ANALYSIS_NOISE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = OK;
|
|
||||||
|
|
||||||
OsdiRegistryEntry *entry = osdi_reg_entry_model(inModel);
|
OsdiRegistryEntry *entry = osdi_reg_entry_model(inModel);
|
||||||
const OsdiDescriptor *descr = entry->descriptor;
|
const OsdiDescriptor *descr = entry->descriptor;
|
||||||
uint32_t eval_flags = 0;
|
uint32_t eval_flags = 0;
|
||||||
|
|
||||||
#ifdef USE_OMP
|
#ifdef USE_OMP
|
||||||
|
int ret = OK;
|
||||||
|
|
||||||
/* use openmp 3.0 tasks to parallelize linked list transveral */
|
/* use openmp 3.0 tasks to parallelize linked list transveral */
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
#pragma omp single
|
#pragma omp single
|
||||||
|
|
|
||||||
|
|
@ -338,7 +338,6 @@ extern OsdiObjectFile load_object_file(const char *input) {
|
||||||
for (uint32_t i = 0; i < lim_table_len; i++) {
|
for (uint32_t i = 0; i < lim_table_len; i++) {
|
||||||
int expected_args = -1;
|
int expected_args = -1;
|
||||||
IS_LIM_FUN("pnjlim", 2, osdi_pnjlim)
|
IS_LIM_FUN("pnjlim", 2, osdi_pnjlim)
|
||||||
IS_LIM_FUN("typedpnjlim", 3, osdi_typedpnjlim)
|
|
||||||
IS_LIM_FUN("limvds", 0, osdi_limvds)
|
IS_LIM_FUN("limvds", 0, osdi_limvds)
|
||||||
IS_LIM_FUN("fetlim", 1, osdi_fetlim)
|
IS_LIM_FUN("fetlim", 1, osdi_fetlim)
|
||||||
IS_LIM_FUN("limitlog", 1, osdi_limitlog)
|
IS_LIM_FUN("limitlog", 1, osdi_limitlog)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue