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);
548 outd.circuitPtr = (
GENERIC *)ckt;
550 outd.analName =
"DISTORTION - 2nd harmonic";
551 outd.refName = freqUid;
553 outd.numNames = numNames;
554 outd.dataNames = nameList;
556 outd.plotPtr = &acPlot;
563 for (i=0; i< displacement ; i++) {
570 if (error)
return(error);
574 error =
CKTnames(ckt,&numNames,&nameList);
575 if (error)
return(error);
579 outd.circuitPtr = (
GENERIC *)ckt;
581 outd.analName =
"DISTORTION - 3rd harmonic";
582 outd.refName = freqUid;
584 outd.numNames = numNames;
585 outd.dataNames = nameList;
587 outd.plotPtr = &acPlot;
594 for (i=0; i< displacement ; i++) {
607 error =
CKTnames(ckt,&numNames,&nameList);
608 if (error)
return(error);
612 outd.circuitPtr = (
GENERIC *)ckt;
614 outd.analName =
"DISTORTION - IM: f1+f2";
615 outd.refName = freqUid;
617 outd.numNames = numNames;
618 outd.dataNames = nameList;
620 outd.plotPtr = &acPlot;
627 for (i=0; i< displacement ; i++) {
634 if (error)
return (error);
638 error =
CKTnames(ckt,&numNames,&nameList);
639 if (error)
return (error);
643 outd.circuitPtr = (
GENERIC *)ckt;
645 outd.analName =
"DISTORTION - IM: f1-f2";
646 outd.refName = freqUid;
648 outd.numNames = numNames;
649 outd.dataNames = nameList;
651 outd.plotPtr = &acPlot;
658 for (i=0; i< displacement ; i++) {
666 if (error)
return(error);
670 error =
CKTnames(ckt,&numNames,&nameList);
671 if (error)
return (error);
675 outd.circuitPtr = (
GENERIC *)ckt;
677 outd.analName =
"DISTORTION - IM: 2f1-f2";
678 outd.refName = freqUid;
680 outd.numNames = numNames;
681 outd.dataNames = nameList;
683 outd.plotPtr = &acPlot;
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);
static void DISswap(double **a, double **b)
static void DstorAlloc(double ***header, int size)
static void DmemAlloc(double **a, int size)