00001
00002 c
00003 c Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993,
00004 c by Steve McMillan, Drexel University, Philadelphia, PA.
00005 c
00006 c All rights reserved.
00007 c
00008 c Redistribution and use in source and binary forms are permitted
00009 c provided that the above copyright notice and this paragraph are
00010 c duplicated in all such forms and that any documentation,
00011 c advertising materials, and other materials related to such
00012 c distribution and use acknowledge that the software was developed
00013 c by the author named above.
00014 c
00015 c THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00016 c IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00017 c WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00018 c
00019
00020 program energies
00021 c
00022 parameter (XLEN = 5., YLEN = 5., YMAX = 12.)
00023 parameter (rc = 1., rh = 50., rt = 500.)
00024 c
00025 parameter (N = 17, ALPHA = .4)
00026 dimension e(0:N+1),decm(N)
00027 c
00028 dimension phi(500),rapo(500)
00029 c
00030 e(0) = 0.
00031 e(1) = 1.
00032 do 10 i=2,N+1
00033 10 e(i) = e(i-1)*(1.+ALPHA)
00034 c
00035 do 20 i=1,N
00036 20 decm(i) = (e(i+1) - e(i))/6.
00037 c
00038 ddphi = .05
00039 dphi = -ddphi
00040 nph = 0
00041 c
00042 30 dphi = dphi + ddphi
00043 nph = nph + 1
00044 phi(nph) = dphi
00045 rapo(nph) = log10(apocenter(rc,rh,rt,dphi))
00046 if (rapo(nph).lt.log10(rt).and.nph.lt.500) go to 30
00047 c
00048 c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00049 c
00050 call mcinit
00051 call nobounds
00052 call sethts(.25,.2)
00053 call plot(4.25,1.,-3)
00054 c
00055 call strpos(1.,1.)
00056 call simbol(XLEN,YLEN+1.2,.15,'Figure 1%%',0.,999)
00057 call clrstr
00058 c
00059 call weight(10)
00060 call eframe(rc,rt,XLEN,-1,'!1.1!r\\a',0.,YMAX,YLEN,2,' ')
00061 c
00062 call simsize(.25,'@D@f',4,dr1,ds)
00063 call simsize(.25,'@s^2',4,dr2,ds)
00064 dr = max(dr1,dr2)
00065 s = 7.5*YLEN/YMAX
00066 call plot(-.25-dr,s,3)
00067 call plot(-.25,s,2)
00068 c
00069 call strpos(1.,0.)
00070 call simbol(-.25,s+.05,.25,'@D@f',0.,4)
00071 call strpos(1.,1.)
00072 call simbol(-.25,s-.05,.25,'@s^2',0.,4)
00073 call clrstr
00074 call mline(rapo,phi,nph,0,0,0.)
00075 c
00076 c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00077 c
00078 do 60 i=7,N
00079 if (i.eq.8) go to 60
00080 s = decm(i)*YLEN/YMAX
00081 if (s.le.YLEN) then
00082 call dplot(0.,s,3)
00083 do 55 j=1,nph
00084 if (phi(j).gt.decm(i)) then
00085 r = rapo(j-1) + (rapo(j)-rapo(j-1))
00086 & *(decm(i)-phi(j-1))
00087 & /(phi(j)-phi(j-1))
00088 call frinches(r,ss,r,ss)
00089 go to 56
00090 end if
00091 55 continue
00092 56 call setpat(1,2,1,2)
00093 call dplot(r,s,2)
00094 call setpat(1,2,1,2)
00095 call dplot(r,0.,3)
00096 call dplot(r,s,2)
00097 end if
00098 60 continue
00099 c
00100 c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00101 c
00102 call plot(-2.25,0.,-3)
00103 call strpos(0.,.5)
00104 do 40 i=1,N
00105 s = decm(i)*YLEN/YMAX
00106 if (s.le.YLEN) then
00107 call plot(0.,s,3)
00108 call plot(.6,s,2)
00109 if (i.eq.7.or.i.ge.9) then
00110 call nomber(.65,s,.1,float(i),0.,-1)
00111 call setpat(1,2,1,2)
00112 call dplot(.925,s,3)
00113 call dplot(1.325,s,2)
00114 end if
00115 end if
00116 40 continue
00117 c
00118 call strpos(.5,0.)
00119 call simbol(.6,YLEN,.225,'%E\\C\\M/@s^2%%',0.,999)
00120 c
00121 r1 = 1.5
00122 s1 = decm(7)*YLEN/YMAX
00123 c
00124 c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00125 c
00126 call plot(-r1,0.,-3)
00127 call strpos(0.,.5)
00128 do 50 i=0,N
00129 s = e(i)*YLEN/YMAX
00130 if (s.le.YLEN) then
00131 call plot(0.,s,3)
00132 call plot(.6,s,2)
00133 if (i.gt.0) then
00134 call nomber(.65,s,.1,float(i),0.,-1)
00135 else
00136 call weight(1)
00137 dr = .6/15
00138 do 45 r = dr,.6,dr
00139 call plot(r-dr,s-2.5*dr,3)
00140 call plot(r,s,2)
00141 45 continue
00142 call weight(10)
00143 end if
00144 end if
00145 50 continue
00146 c
00147 call strpos(.5,0.)
00148 call simbol(.34,YLEN,.2,'E\\b\\i\\n/kT%%',0.,999)
00149 c
00150 r0 = .8
00151 c
00152 ss8 = e(8)*YLEN/YMAX
00153 call plot(r0,ss8,3)
00154 call plot(r0+.05,ss8,2)
00155 ss7 = e(7)*YLEN/YMAX
00156 call plot(r0+.05,ss7,2)
00157 call plot(r0,ss7,2)
00158 c
00159 r0 = r0 + .05
00160 s0 = .5*(ss7+ss8)
00161 r1 = r1 - .05
00162 c
00163 frac = .985
00164 r1 = r0 + frac*(r1-r0)
00165 s1 = s0 + frac*(s1-s0)
00166 c
00167 call plot(r0,s0,3)
00168 call plot(r1,s1,2)
00169 frac = .1
00170 r0 = r1 - frac*(r1 - r0)
00171 s0 = s1 - frac*(s1 - s0)
00172 call arrow(r0,s0,r1,s1,1)
00173 c
00174 c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00175 c
00176 call mcquit
00177 c
00178 end
00179