home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1996 February
/
PCWK0296.iso
/
sharewar
/
os2
/
grafika
/
splot
/
demo
/
invisax.spt
< prev
next >
Wrap
Text File
|
1994-06-05
|
5KB
|
196 lines
/* 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);
}