invisax.spt








































/* This example shows how invisible axes can be used to establish */
/* an alternate coordinate system and still use the drawdata function */
/* to draw the curves */

/*draws quantum wells and wave functions */
#include <splot.h>
double *data1;
double *data2;
double *data3;
double *data4;
double *data5;
main() 
   {     
   set(LINECOLOUR,INVIS);
   set(FONTWIDTH,0.6);
   set(FONTASPECT,1.4);
   set(LINEWIDTH,0.02);
   /* read in data generated by Mathematica */
   readdata("demo\cdqw_wfc.dat",data1);
   readdata("demo\cdqw_wfc.da2",data2);
   readdata("demo\cdqw_wfc.da3",data3);
   readdata("demo\cdqw_wfc.da4",data4);
   readdata("demo\cdqw_wfc.da5",data5);
   /* drawing turned out too big so reduce the overall size */
   scale(0.7,0.65);
   gsave();
   axes_box(8,15,-185,0.0,185,188.36);
   set(LINECOLOUR,BLACK);
   translate(-1.25,22.5);
   /* even solns to cdqw */
   /*   norm = 1.0/0.00009134 * 60.0; */ 
   set(YMULT,656886.);
   set(YSHIFT,9.13863);
   drawdata(data1);
   /*   norm = 1/.0002838 * 60.0;  */
   set(YMULT,211416.);
   set(YSHIFT,35.8858);
   drawdata(data1,0,3);
   /*   norm = 1/0.008109 * 60.0;*/
   set(YMULT,7400.);
   set(YSHIFT,77.0532);
   drawdata(data3);
   /* call subroutine to draw quantum well. Also sets coordinate scale to match*/
   s_qw_box();
   /* energy eigenvalues */
   moveto(-190,9.13863);
   lineto(190,9.13863);
   moveto(-190,35.8858);
   lineto(190,35.8858);
   moveto(-190,77.0532);
   lineto(190,77.0532);
   stroke();
   text(205,9.13863,"E_0_");
   text(205,35.8858,"E_2_");
   text(205,77.0532,"E_4_");
   text(0,-15,"a) CDQW, even solutions",CENTER);
   grestore();
   /* odd solns to cdqw */
   set(LINECOLOUR,INVIS);
   gsave();
   axes_box(8,15,-185,0.0,185,188.36);
   set(LINECOLOUR,BLACK);
   translate(11,22.5);
   set(YMULT,656886.);
   set(YSHIFT,9.14186);
   drawdata(data1,0,2);
   set(YMULT,211416.);
   set(YSHIFT,35.9177);
   drawdata(data1,0,4);
   set(YMULT,7400.);
   set(YSHIFT,77.4394);
   drawdata(data3,0,2);
   s_qw_box();
   /* energy eigenvalues */
   moveto(-190,9.14186);
   lineto(190,9.14186);
   moveto(-190,35.9177);
   lineto(190,35.9177);
   moveto(-190,77.4394);
   lineto(190,77.4394);
   stroke();
   text(-227,9.14186,"E_1_");
   text(-227,35.9177,"E_3_");
   text(-227,77.4394,"E_5_");
   text(217.,53.,"107meV",CENTER);
   text(0,120,"9 nm",CENTER);
   text(0,-15,"b) CDQW, odd solutions",CENTER);
   grestore();
   /*asymmetric coupled wells */
   set(LINECOLOUR,INVIS);
   gsave();
   axes_box(8,15,-185,0.0,185,188.36);
   set(LINECOLOUR,BLACK);
   translate(5.5,2.5);
   set(YMULT,1000.);
   set(YSHIFT,90.23);
   set(XSHIFT,-95.);
   drawdata(data4,0,2);
   a_qw_box();
   moveto(-195,90.23);
   lineto(190,90.23);
   stroke();
   text(215,90.23,"E_2_",CENTER);
   text(280,90.23,"Resonance");
   text(-270.,104.,"188 meV",CENTER);
   grestore();   
   set(LINECOLOUR,INVIS);
   gsave();
   axes_box(8,15,-185,0.0,185,188.36);
   set(LINECOLOUR,BLACK);
   translate(5.5,2.5);
   set(XSHIFT,-95.);
   set(YMULT,-80.0);
   set(YSHIFT,10.29);
   drawdata(data5);
   set(YMULT,-80.0);
   set(YSHIFT,40.81);
   drawdata(data5,0,2);
   set(YMULT,-275.0);
   set(YSHIFT,154.16);
   drawdata(data5,0,3);
   set(YSHIFT,116.97);
   set(YMULT,500.0);
   a_qw_box(); 
   moveto(-190,10.29);
   lineto(190,10.29);
   moveto(-190,40.81);
   lineto(190,40.81);
   moveto(-190,154.16);
   lineto(190,154.16);
   stroke();
   text(215,10.29,"E_0_",CENTER);
   text(215,40.81,"E_1_",CENTER);
   text(215,154.16,"E_5_",CENTER);
   text(0,200,"c) Asymmetric CDQW",CENTER);
   grestore();
   set(LINECOLOUR,BLACK);
   set(FONTWIDTH,1.);
   set(FONTASPECT,2.5);
   moveto(20.91,36.9);
   arrowto(20.0,36.9);
   moveto(20.91,36.9);
   arrowto(22.0,36.9);
   moveto(25.5,33.02);
   arrowto(25.5,36.53);
   moveto(25.5,31.79);
   arrowto(25.5,27.95);
   moveto(9.9,16.90);
   arrowto(9.9,23.02);
   moveto(9.9,15.70);
   arrowto(9.9,7.93);
   moveto(21.4,15.14);
   arrowto(20.8,15.14);
   stroke();
   }

int s_qw_box()
   {
   set(LINEWIDTH,0.06);
   cmatch();
   /* draw quantum well box */
   moveto(-225.,107.27);
   lineto(-145.,107.27);
   lineto(-145.,0.);
   lineto(-45.,0.);
   lineto(-45.,107.27);
   lineto(45.,107.27);
   lineto(45.,0.);
   lineto(145.,0.);
   lineto(145.,107.27);
   lineto(225.,107.27);
   stroke();
   set(LINEWIDTH,0.02);
   }

int a_qw_box()
   {
   set(LINEWIDTH,0.06);
   cmatch();
   /* draw quantum well box */
   moveto(-225.,188.36);
   lineto(-145.,188.36);
   lineto(-145.,0.);
   lineto(-45.,0.);
   lineto(-45.,188.36);
   lineto(45.,188.36);
   /* 188.36-107.27  */
   lineto(45.,81.09);
   lineto(145.,81.09);
   lineto(145.,188.36);
   lineto(225,188.36);
   stroke();
   set(LINEWIDTH,0.02);
   }