41 *a = (
double *)
MALLOC(
sizeof(
double) * size );
51 *header = (
double **)
MALLOC(
sizeof(
double *)*size);
74 static double freqTol;
75 static int NoOfPoints;
77 static int displacement;
88 static char *nof2src =
"No source with f2 distortion input";
95 "Distortion analysis not possible with Josephson junctions",
102 #ifdef D_DBG_BLOCKTIMES 111 NoOfPoints = 1 + floor((job->
DnumSteps) / log(10.0) *
119 NoOfPoints = 1 + floor((job->
DnumSteps) / log(2.0) *
136 job->
JOBname =
"DISTORTION - operating pt.";
137 error =
DCOan(ckt,0);
138 if (error)
return(error);
142 #ifdef D_DBG_BLOCKTIMES 144 printf(
"Time for initial work (including op. pt.): %g seconds \n", time1);
147 #ifdef D_DBG_BLOCKTIMES 153 #ifdef D_DBG_BLOCKTIMES 155 printf(
"Time outside D_SETUP: %g seconds \n", time1);
158 if (error)
return(error);
162 #ifdef D_DBG_BLOCKTIMES 255 #ifdef D_DBG_BLOCKTIMES 257 printf(
"Time for other setup (storage allocation etc.): %g seconds \n", time1);
260 #ifdef D_DBG_BLOCKTIMES 264 while(freq <= job->DstopF1+freqTol) {
277 #ifdef D_DBG_SMALLTIMES 283 #ifdef D_DBG_SMALLTIMES 285 printf(
"Time for CKTacLoad: %g seconds \n", time);
288 if (error)
return(error);
290 #ifdef D_DBG_SMALLTIMES 298 #ifdef D_DBG_SMALLTIMES 300 printf(
"Time outside DISTO_RHSFIX: %g seconds \n", time);
303 if (error)
return(error);
305 #ifdef D_DBG_SMALLTIMES 311 #ifdef D_DBG_SMALLTIMES 313 printf(
"Time for NIdIter: %g seconds \n", time);
316 if (error)
return(error);
322 if (error)
return(error);
324 #ifdef D_DBG_SMALLTIMES 330 #ifdef D_DBG_SMALLTIMES 332 printf(
"Time outside D_TWOF1: %g seconds \n", time);
335 if (error)
return(error);
337 if (error)
return(error);
345 if (error)
return(error);
347 #ifdef D_DBG_SMALLTIMES 353 #ifdef D_DBG_SMALLTIMES 355 printf(
"Time outside D_THRF1: %g seconds \n", time);
358 if (error)
return(error);
360 if (error)
return(error);
372 if (error)
return(error);
374 #ifdef D_DBG_SMALLTIMES 380 #ifdef D_DBG_SMALLTIMES 382 printf(
"Time outside DISTO_RHSFIX: %g seconds \n", time);
385 if (error)
return(error);
387 if (error)
return(error);
393 if (error)
return(error);
395 #ifdef D_DBG_SMALLTIMES 401 #ifdef D_DBG_SMALLTIMES 403 printf(
"Time outside D_F1PF2: %g seconds \n", time);
406 if (error)
return(error);
408 if (error)
return(error);
414 if (error)
return(error);
416 #ifdef D_DBG_SMALLTIMES 422 #ifdef D_DBG_SMALLTIMES 424 printf(
"Time outside D_F1MF2: %g seconds \n", time);
427 if (error)
return(error);
429 if (error)
return(error);
435 if (error)
return(error);
437 #ifdef D_DBG_SMALLTIMES 443 #ifdef D_DBG_SMALLTIMES 445 printf(
"Time outside D_2F1MF2: %g seconds \n", time);
448 if (error)
return(error);
450 if (error)
return(error);
462 job->
r1H1stor[displacement][0]=freq;
484 job->
r1H2stor[displacement][0]=freq;
527 #ifdef D_DBG_BLOCKTIMES 529 printf(
"Time inside frequency loop: %g seconds \n", time1);
538 #ifdef D_DBG_BLOCKTIMES 543 error =
CKTnames(ckt,&numNames,&nameList);
544 if (error)
return (error);
550 outd.
analName =
"DISTORTION - 2nd harmonic";
563 for (i=0; i< displacement ; i++) {
570 if (error)
return(error);
574 error =
CKTnames(ckt,&numNames,&nameList);
575 if (error)
return(error);
581 outd.
analName =
"DISTORTION - 3rd harmonic";
594 for (i=0; i< displacement ; i++) {
607 error =
CKTnames(ckt,&numNames,&nameList);
608 if (error)
return(error);
614 outd.
analName =
"DISTORTION - IM: f1+f2";
627 for (i=0; i< displacement ; i++) {
634 if (error)
return (error);
638 error =
CKTnames(ckt,&numNames,&nameList);
639 if (error)
return (error);
645 outd.
analName =
"DISTORTION - IM: f1-f2";
658 for (i=0; i< displacement ; i++) {
666 if (error)
return(error);
670 error =
CKTnames(ckt,&numNames,&nameList);
671 if (error)
return (error);
677 outd.
analName =
"DISTORTION - IM: 2f1-f2";
690 for (i=0; i< displacement ; i++) {
698 if (error)
return (error);
741 #ifdef D_DBG_BLOCKTIMES 743 printf(
"Time for output and deallocation: %g seconds \n", time1);
785 for (i = 1; i <= size; i++) {
786 *(ckt->CKTrhs + i) = 0;
787 *(ckt->CKTirhs + i) = 0;
791 for (mh = ckt->CKTheadList; mh !=
NULL; mh = mh->
next) {
793 error = (*func)(mode,mh->
head,ckt);
833 for (i = 0; i <= size; i++) {
834 *(ckt->CKTrhs+i) = 0;
835 *(ckt->CKTirhs+i) = 0;
843 for (model = (
SRCmodel *)ckt->CKThead[code]; model !=
NULL;
865 0.5*mag*
cos(
M_PI*phase/180.0);
871 - 0.5*mag*
cos(
M_PI*phase/180.0);
875 - 0.5*mag*
sin(
M_PI*phase/180.0);
struct sSRCinstance * SRCnextInstance
static void DISswap(double **a, double **b)
struct sCKTmodHead * next
static void DstorAlloc(double ***header, int size)
SRCinstance * SRCinstances
static void DmemAlloc(double **a, int size)
int DISTOan(GENERIC *cktp, int restart)
struct sSRCmodel * SRCnextModel