diff options
Diffstat (limited to 'session.out')
-rw-r--r-- | session.out | 373 |
1 files changed, 0 insertions, 373 deletions
diff --git a/session.out b/session.out deleted file mode 100644 index 7832cf9..0000000 --- a/session.out +++ /dev/null @@ -1,373 +0,0 @@ - -Starts dribbling to session.out (2006/7/5, 20:11:29). -(%i2) -dist(z):=(MATRIX([1,z],[0,1]))$ - -(%i3) lens(f):=(MATRIX([1,0],[-1/f,1]))$ - -(%i4) -abcd(optics_system):=block([tmp:MATRIX([1,0],[0,1])], (for i:1 thru length(optics_system) do tmp:optics_system[i].tmp ), return(tmp))$ - -prop(q0,abcd):=(abcd[1][1]*q0+abcd[1][2])/(abcd[2][1]*q0+abcd[2][2])$ - -(%i6) -wr2q(w,r):=1/(1/r-%I*lamb/%PI/(w^2))$ - -(%i7) q2w(q):=sqrt(-lamb/%PI/imagpart(1/q))$ - -(%i8) q2r(q):=block([rp:(realpart(1/q))], - (if (rp = 0) - then - (print("#dbg: R=1/0, will substitute R with something big"), - return(1e100)) - else - return(1/rp) - ) -) $ - -(%i9) - -/* find q0 for such q */ -q2w0(q):=block([w,r,w0], - w:q2w(q),r:q2r(q), - w0:(w/sqrt(1+(%Pi*w^2/lamb/r)^2)), - return (w0) - )$ - -(%i10) q2z0(q):=block([w,r], - w:q2w(q),r:q2r(q), return(r/(1+(lamb*r/%Pi/w^2)^2)) - )$ - -(%i11) q2q0(q):=%I*%Pi*q2w0(q)^2/lamb$ - -(%i12) -q0f2z_for_colim_lens(q0,f):=f+%Pi*q2w(q0)^2/lamb$ - -(%i13) -qf2colim_lens_posit(qstart,f):= block([q0,z0,zd], - q0:q2q0(qstart), - z0:q2z0(qstart), - zd:q0f2z_for_colim_lens(q0,f), - return(zd-z0) -)$ - -(%i14) - -check_real(x):=if featurep(x[1],real) then if featurep(x[2],real) then if featurep(x[3],real) then true else false $ - -(%i15) -check_posit(x):=if (part(x[1],2)>0) then if (part(x[2],2)>0) then if (part(x[3],2)>0) then true else false $ - -(%i16) -check_sm1(x):=if (part(x[1],2)<ltotal) then if (part(x[2],2)<ltotal) then if (part(x[3],2)<ltotal) then true else false $ - -(%i17) -select_realsolutions(x):=block([temp:[]], for i:1 thru length(x) do (if check_real(x[i]) then temp:float(append(temp,[x[i]])) ), return(temp) ) $ - -select_posit_solutions(x):=block([temp:[]], for i:1 thru length(x) do (if check_posit(x[i]) then temp:float(append(temp,[x[i]])) ), return(temp) ) $ - -select_sm1_solutions(x):=block([temp:[]], for i:1 thru length(x) do (if check_sm1(x[i]) then temp:float(append(temp,[x[i]])) ), return(temp) ) $ - -/*=========================================================*/ -/* - match one Gauss beam parameter q0(w0,r0) - to another one qf(wf,qf) - with the help of two known lens. - distance between q0 and qf is 'ltotal' - q0>|----z1-----(f1)------z2-------(f2)------z3--------|>qf - ^ ^ - |-------------------ltotal-------------------------| - the system should looks like above. - */ -/*=========================================================*/ -qffql2z1z2z3(q0,f1,f2,qf,ltotal):=block( - [ - m1,m2,m3,m4,m5,z1,z2,z3, - optics, mfull, - q0r,qoi, qfr,qfi, - eqt,eq1,solut, - eq1,eq2,eq3, - eqn1, eqn2,eqn3, - eqnev1, eqnev2, eqnev3, - slt, rsol - ], - - m1:dist(z1), - m2:lens(f1), - m3:dist(z2), - m4:lens(f2), - m5:dist(z3), - - optics:[m1,m2, m3, m4, m5], - mfull:abcd(optics), - - eqt:qf=prop(q0,mfull), - - q0r:float(realpart(q0)), - q0i:float(imagpart(q0)), - qfr:float(realpart(qf)), - qfi:float(imagpart(qf)), - - eq1:ev(eqt, q0=q0r+q0i*%I, qf=qfr+qfi*%I), - - solut:solve([eq1], [z3]), - - eqn1:imagpart(solut[1]), - eqn2:realpart(solut[1]), - eqn3:z1+z2+z3=ltotal, - - eqnev1:ev(eqn1,numer), - eqnev2:ev(eqn2,numer), - eqnev3:ev(eqn3,numer), - - - slt:solve([eqnev1,eqnev2,eqnev3],[z1,z2,z3]), - - print("slt=",slt), - - rsol:select_realsolutions(slt), - rsol:select_posit_solutions(rsol), - rsol:select_sm1_solutions(rsol), - - print("rsol=",rsol), - - - return(rsol) -); - -(%o20) qffql2z1z2z3(q0, f1, f2, qf, ltotal) := -block([m1, m2, m3, m4, m5, z1, z2, z3, optics, mfull, q0r, qoi, qfr, qfi, eqt, -eq1, solut, eq1, eq2, eq3, eqn1, eqn2, eqn3, eqnev1, eqnev2, eqnev3, slt, -rsol], m1 : dist(z1), m2 : lens(f1), m3 : dist(z2), m4 : lens(f2), -m5 : dist(z3), optics : [m1, m2, m3, m4, m5], mfull : abcd(optics), -eqt : qf = prop(q0, mfull), q0r : float(realpart(q0)), -q0i : float(imagpart(q0)), qfr : float(realpart(qf)), -qfi : float(imagpart(qf)), eq1 : ev(eqt, q0 = q0r + q0i %I, -qf = qfr + qfi %I), solut : solve([eq1], [z3]), eqn1 : imagpart(solut ), - 1 -eqn2 : realpart(solut ), eqn3 : z1 + z2 + z3 = ltotal, - 1 -eqnev1 : ev(eqn1, numer), eqnev2 : ev(eqn2, numer), eqnev3 : ev(eqn3, numer), -slt : solve([eqnev1, eqnev2, eqnev3], [z1, z2, z3]), print("slt=", slt), -rsol : select_realsolutions(slt), rsol : select_posit_solutions(rsol), -rsol : select_sm1_solutions(rsol), print("rsol=", rsol), return(rsol)) -(%i21) /*=========================================================*/ -/* - Zero ewaste to zero waste transformatin with lense - q0|------------(f)-----------|qf0 - ^ ^ ^ - |----z--------| | - | | - |-------------l------------| - we are lookking for z1,l -*/ - q0fq02z1(q0,f,qf):=block([f0,z1,w0tmp:q2w(q0),wftmp:q2w(qf)], - f0:%Pi*w0tmp*wftmp/lamb, - z1:f+w0tmp/wftmp*sqrt(f^2-f0^2), - return(z1) - )$ - -(%i22) q0fq02z2(q0,f,qf):=block([f0,z2,w0tmp:q2w(q0),wftmp:q2w(qf)], - f0:%Pi*w0tmp*wftmp/lamb, - z2:f+wftmp/w0tmp*sqrt(f^2-f0^2), - return(z2) - )$ - -(%i23) q0fq02l(q0,f,qf):=q0fq02z1(q0,f,qf)+q0fq02z2(q0,f,qf)$ - -(%i24) /*=========================================================*/ -/* - for back propogation we need to change R -> -R -*/ -q2bq(q):=wr2q(q2w(q),-q2r(q)); - -(%o24) q2bq(q) := wr2q(q2w(q), - q2r(q)) -(%i25) /*=========================================================*/ -/*=========================================================*/ -/*=========================================================*/ -/*=========================================================*/ - - - -/*=========================================================*/ -/* lets solve final waste to parrallel beam, - (actually back propogation) -*/ -/*=========================================================*/ -/* - this code tryes to find configuration of 3 given lenses with focal - length f1,f2, f_col - in such a way that starting from with initial waste (w0) - and radius (r0) - after propogation through lens 1 (f1 focal length) - and 2 (f2 focal length) - we have a collimated region with length (dist_betw_f2_f_col) - and then after passing through the lense 3 we at some distance - match to the final waste and radius (wend, rend). - Total distance between starting and final lense position will be - calculated in to the 'ltotal' - Beam have a wave length 'lamb'. - Everything calculated in meters. -*/ -/*======== Initial condition ==============================*/ -ltotal:4.85$ - -(%i26) lamb:1.064e-6$ - -(%i27) /* starting waste */ -w0:0.30e-3$ - -(%i28) r0:1e100$ - -(%i29) /* final waste */ -wend:37.09e-6$ - -(%i30) rend:1e100$ - -(%i31) -/* lenses focal length */ -f1:.025$ - -(%i32) f2:.075$ - -(%i33) f_col:0.7118$ - -(%i34) -/* collimated region size */ -dist_betw_f2_f_col:.30$ - -(%i35) /*=========================================================*/ - -optics_after_parral_beam:[lens(-.111),dist(.05)]$ - -(%i36) - q0:ev(wr2q(w0,r0),numer)$ - -(%i37) qend:wr2q(wend,rend)$ - -(%i38) /* -qf:prop(qend,abcd(reverse(optics_after_parral_beam)))$ -float(realpart(qf))$ -float(imagpart(qf))$ -*/ -qf:qend$ - -(%i39) -/*finally position of collimated lens */ -z_col:float(qf2colim_lens_posit(qf,f_col))$ - -Division by 0 -#0: q2w(q=1/(1.0E-100-773.4423732003382*%I/%PI)) -#1: q2w0(q=1/(1.0E-100-773.4423732003382*%I/%PI)) -#2: q2q0(q=1/(1.0E-100-773.4423732003382*%I/%PI)) - -- an error. Quitting. To debug this try debugmode(true); -(%i40) if (z_col <0) - then (print("it is not possible to get collimated beam z_col=",z_col), - quit() -) $ - -Maxima was unable to evaluate the predicate: -z_col < 0 - -- an error. Quitting. To debug this try debugmode(true); -(%i41) qf:prop(qf,abcd([dist(z_col),lens(f_col)]))$ - -(%i42) - - - -qf:prop(qf,abcd([dist(dist_betw_f2_f_col),lens(f2)]) )$ - -(%i43) -/* below something wrong */ -dist2waste:ev(-q2z0(qf),numer)$ - -Division by 0 -#0: q2w(q=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) -#1: q2z0(q=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) - -- an error. Quitting. To debug this try debugmode(true); -(%i44) rad_now:ev(q2r(qf),numer)$ - -(%i45) qf:ev(q2q0(qf),numer)$ - -Division by 0 -#0: q2w(q=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) -#1: q2w0(q=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) -#2: q2q0(q=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) - -- an error. Quitting. To debug this try debugmode(true); -(%i46) /*===========================================*/ - - -space_between_wastes:ev(q0fq02l(q0,f1,qf), numer)$ - -Division by 0 -#0: q2w(q=1/(1.0E-100-11.82222222222223*%I/%PI)) -#1: q0fq02z1(q0=1/(1.0E-100-11.82222222222223*%I/%PI),f=0.025,qf=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) -#2: q0fq02l(q0=1/(1.0E-100-11.82222222222223*%I/%PI),f=0.025,qf=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) - -- an error. Quitting. To debug this try debugmode(true); -(%i47) dist2first_lens:ev(q0fq02z1(q0,f1,qf),numer)$ - -Division by 0 -#0: q2w(q=1/(1.0E-100-11.82222222222223*%I/%PI)) -#1: q0fq02z1(q0=1/(1.0E-100-11.82222222222223*%I/%PI),f=0.025,qf=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) - -- an error. Quitting. To debug this try debugmode(true); -(%i48) dist2first_lens_tmp:ev(q0fq02z2(q0,f1,qf),numer)$ - -Division by 0 -#0: q2w(q=1/(1.0E-100-11.82222222222223*%I/%PI)) -#1: q0fq02z2(q0=1/(1.0E-100-11.82222222222223*%I/%PI),f=0.025,qf=((MATRIX([1,0],[-13.33333333333333,1]) . MATRIX([1,0.3],[0,1]) . MATRIX([1,0],[0,1]))[1][1]*((MATRIX...) - -- an error. Quitting. To debug this try debugmode(true); -(%i49) -z1:ev(dist2first_lens,numer)$ - -(%i50) z2:ev(space_between_wastes+dist2waste,numer)$ - -(%i51) z3:ev(z2+dist_betw_f2_f_col,numer)$ - -(%i52) -ltotal:z3+z_col$ - -(%i53) -/* -qf:wr2q( -q2r(qf), q2w(qf) )$ -*/ - - -/* -rsol:qffql2z1z2z3(q0,f1,f2,qf,ltotal-z_col)$ - print("rsol=",rsol), -*/ - - - with_stdout("answ.txt", - print("##########################################"), - print( "lambda=",lamb), - print( "Ltot=", ltotal), - print( "r0=", r0), - print( "w0=", w0), - print(), - print( "lns1.abcd=abcd_lens(", f1 , ")" ), - print( "lns1.x=", z1 ), - print( "lns2.abcd=abcd_lens(", f2 , ")" ), - print( "lns2.x=", (z2) ), - print( "lns3.abcd=abcd_lens(", f_col , ")" ), - print( "lns3.x=", (z3) ), - print("wf=", wend), - print("rf=", rend), - /* - qfinal:prop(q0,ev(mfull)), - wfinal:float(q2w(qfinal)), - rfinal:float(q2r(qfinal)), - print("#final waste=", wfinal), - print("#I was aiming to final waste"), - print("#final radius=", rfinal), - print("#I was aiming to final radius"), - */ - print("##########################################") - )$ - -(%i54) system("cat answ.txt")$ - -(%i55) system("xterm -e octave abcd.m") $ - -(%i56) -quit()$ |