\documentclass[]{revtex4}
\usepackage{pst-optexp}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid=true](13,14)
\pnodes(2,10){A}(3,10){MIP}(3,12.5){LIP}(3,13){MIIP}(5,13){LIIP}
\pnodes(8,13){MIIIP}(8,8){MIVP}(14,8){LIIIP}(10,8){LIVP}(12,8){MVP}(12,3){d}
\pnodes(12,1){MVIP}(10,1){LVIP}(6,1){C}
\psset{mirrortype=extended, mirrordepth=0.2}
\begin{optexp}
\optsource[innerlabel, compname = start](A)(MIP){Beam}
\mirror[compname = mi, labelangle=45](A)(MIP)(LIP){$M_1$}
\lens[compname = li, n=1.57](MIP)(LIP){$L_1$}
\mirror[compname= mii, labelangle=-45](LIP)(MIIP)(LIIP){$M_{2}$}
\lens[compname= lii, n=1.517](MIIP)(LIIP){$L_{2}$}
\mirror[compname= miii, labelangle=-45](LIIP)(MIIIP)(MIVP){$M_{3}$}
\mirror[compname= miv, labelangle=45](MIIIP)(MIVP)(LIIIP){$M_{4}$}
\lens[compname= liii, n=1.517](MIVP)(LIIIP){$L_{3}$}
\mirror[compname= mv, labelangle=-45](MIVP)(MVP)(d){$M_{5}$}
\mirror[compname= mvi, labelangle=-45](d)(MVIP)(LVIP){$M_{6}$}
\lens[compname= lensfour, n=1.517](MVIP)(LVIP){$L_{4}$}
\optsource[innerlabel](C)(C){Comp.}
\end{optexp}
\addtopsstyle{Beam}{fillstyle=solid, fillcolor=green!20!white}
\drawwidebeam[beamwidth=0.4, beaminsidelast]{1-5}
\drawwidebeam[loadbeampoints]{5-12}
\end{pspicture}
\end{document}
Antwort1
Debuggen Ihres Setups
pst-optexp
bietet Ihnen verschiedene Debugging-Möglichkeiten:
- Mit
\psset{pswarning}
können Sie Warnungen auf Postscript-Ebene aktivieren. In Ihrem Beispiel erhalten Sie "Warning pst-optexp: The upper beam miss an interface" - Standardmäßig
pst-optexp
wird die numerische Apertur der Komponenten berücksichtigt. Wenn einer der äußeren Strahlen die nächste Schnittstelle nicht trifft, wird die Strahlzeichnung gestoppt. Mit\psset{useNA=false}
können Sie dies vorübergehend deaktivieren, um zu sehen, welcher Strahl falsch liegt. Für Ihr Setup ist das Ergebnis
Man erkennt, dass der M3
-Spiegel zu klein ist (bzw. der Strahl zu breit), so dass der Strahlengang unterbrochen wird.
Mögliche Lösung
Um den Strahl an Ihre Bedürfnisse anzupassen, können Sie entweder den Brechungsindex aller Linsen feinabstimmen n
oder den Strahl stückweise für die parallelen und fokussierenden Teile separat zeichnen.
Das Rezept lautet wie folgt:
- Zeichnen Sie mit den ersten parallelen Teil
\drawwidebeam[beamwidth=0.4, stopinside]{1-3}
, der den Strahl bis zur zweiten Schnittstelle der ersten Linse verfolgt (zeichnet nur bis zur ersten Schnittstelle). - Zeichnen Sie nun mit den Strahl zwischen der ersten und zweiten Linse
\drawwidebeam[loadbeampoints, beamdiv=-20, stopinside]{3-5}
. Dadurch werden die Endpunkte des vorherigen\drawwidebeam
Aufrufs geladen, Sie können jedoch die Strahldivergenz anpassen. - Fahren Sie ab der zweiten Linse fort,
\drawwidebeam[loadbeampoints]
um die vorherigen Strahlendpunkte erneut zu laden, fahren Sie jedoch mit parallelen Strahlen fort.
Und so weiter.
\documentclass[pstricks,margin=12pt]{standalone}
\usepackage{pst-optexp}
\begin{document}
\begin{pspicture}[showgrid=true](13,14)
\pnodes(2,10){A}(3,10){MIP}(3,12.5){LIP}(3,13){MIIP}(5,13){LIIP}
\pnodes(8,13){MIIIP}(8,8){MIVP}(14,8){LIIIP}(10,8){LIVP}(12,8){MVP}(12,3){d}
\pnodes(12,1){MVIP}(10,1){LVIP}(6,1){C}
\psset{mirrortype=extended, mirrordepth=0.2}
\psset{mirrorwidth=1.1}
\addtopsstyle{Beam}{fillstyle=solid, fillcolor=green!20!white}
\begin{optexp}
\optsource[innerlabel, compname = start](A)(MIP){Beam}
\mirror[compname = mi, labelangle=45](A)(MIP)(LIP){$M_1$}
\lens[compname = li](MIP)(LIP){$L_1$}
\drawwidebeam[beamwidth=0.4, stopinside]{1-3}
\mirror[compname= mii, labelangle=-45](LIP)(MIIP)(LIIP){$M_{2}$}
\lens[compname= lii](MIIP)(LIIP){$L_{2}$}
\drawwidebeam[loadbeampoints, beamdiv=-20, stopinside]{3-5}
\mirror[compname= miii, labelangle=-45](LIIP)(MIIIP)(MIVP){$M_{3}$}
\mirror[compname= miv, labelangle=45](MIIIP)(MIVP)(LIIIP){$M_{4}$}
\lens[compname= liii](MIVP)(LIIIP){$L_{3}$}
\drawwidebeam[loadbeampoints, stopinside]{5-8}
\mirror[compname= mv, labelangle=-45](MIVP)(MVP)(d){$M_{5}$}
\mirror[compname= mvi, labelangle=-45](d)(MVIP)(LVIP){$M_{6}$}
\lens[compname= lensfour](MVIP)(LVIP){$L_{4}$}
\drawwidebeam[loadbeampoints, beamdiv=-6.3, stopinside]{8-11}
\optbox[innerlabel](C)(C){Comp.}
\drawwidebeam[loadbeampoints]{11}{12}
\end{optexp}
\end{pspicture}
\end{document}
BTW: Das Kompilieren pst-optexp
von -setups xelatex
funktioniert nicht richtig.