Changes
Page history
fixed some minor issues in script
authored
Mar 10, 2019
by
joha2
Show whitespace changes
Inline
Side-by-side
Home.md
View page @
5938b0bf
...
...
@@ -13,50 +13,52 @@ Due to our last refactor the GUI functionality is broken at the moment.
For the underlying physical stuff, please read the fundamental manual. :-)
To reproduce some of the following screenshots you may just play around a bit
with the demo files in the ~~main~~ demos directory:
`~/pyrate$ python
-m
demos
.
demo_optimize`
.
with the demo files in the ~~main~~ demos directory:
`~/pyrate$ python demos
/
demo_optimize
.py
`
.
For setting up your own system, you may use one of our convenience functions
```
python
import
pyrateoptics
from
pyrateoptics.core.functionobject
import
FunctionObject
components
=
[
(
{
"
shape
"
:
"
Asphere
"
,
"
curv
"
:
0.01
,
"
cc
"
:
-
1.0
,
"
coefficients
"
:
[
0.0
,
-
0.001
]},
\
{
"
shape
"
:
"
Asphere
"
,
"
curv
"
:
0.01
,
"
cc
"
:
-
1.0
,
"
coefficients
"
:
[
0.0
,
-
0.001
]},
{
"
decz
"
:
10.
},
None
,
"
s1
"
,
{
"
is_stop
"
:
True
}
),
(
{
"
shape
"
:
"
Biconic
"
,
"
curvx
"
:
0.001
,
"
curvy
"
:
-
0.01
},
\
{
"
shape
"
:
"
Biconic
"
,
"
curvx
"
:
0.001
,
"
curvy
"
:
-
0.01
},
{
"
decz
"
:
20.
,
"
tiltx
"
:
0.1
},
None
,
"
s2
"
,
{}
),
(
{
"
shape
"
:
"
LinearCombination
"
,
"
list_of_coefficients_and_shapes
"
:
[(
1.0
,
{
"
shape
"
:
"
ZernikeFringe
"
,
"
normradius
"
:
10
,
"
coefficients
"
:[
0.
,
0.
,
0.
,
0.
,
0.0
,
0.0
,
0
,
0
,
0.0
]}),
\
(
1.0
,
{
"
shape
"
:
"
Conic
"
,
"
curv
"
:
0.01
,
"
cc
"
:
-
1
})]
\
},
\
[(
1.0
,
{
"
shape
"
:
"
ZernikeFringe
"
,
"
normradius
"
:
10
,
"
coefficients
"
:
[
0.
,
0.
,
0.
,
0.
,
0.0
,
0.0
,
0
,
0
,
0.0
]}),
(
1.0
,
{
"
shape
"
:
"
Conic
"
,
"
curv
"
:
0.01
,
"
cc
"
:
-
1
})]
},
{
"
decz
"
:
20.
,
"
tiltx
"
:
0.1
},
None
,
"
s3
"
,
{
"
is_mirror
"
:
True
}
)
]
(
s
,
rt
)
=
pyrateoptics
.
build_simple_optical_system
(
components
,
name
=
"
s
"
)
# Notice: It is always a good idea to provide names for systems, elements and components.
# There is also a convenience function for rotationally symmetric systems `build_rotationally_symmetric_system`.
# Notice: It is always a good idea to provide names for systems, elements
# and components. There is also a convenience function for rotationally
# symmetric systems `build_rotationally_symmetric_system`.
tiltx_s2
=
s
.
elements
[
"
stdelem
"
].
surfaces
[
"
s2
"
].
rootcoordinatesystem
.
tiltx
tiltx_s3
=
s
.
elements
[
"
stdelem
"
].
surfaces
[
"
s3
"
].
rootcoordinatesystem
.
tiltx
tiltx_s3
.
changetype
(
"
pickup
"
,
functionobject
=
(
FunctionObject
(
"
f =
function=(
lambda x: -x
)
"
,
[
"
f
"
]),
FunctionObject
(
"
f = lambda x: -x
"
,
[
"
f
"
]),
"
f
"
),
args
=
(
tiltx_s2
,))
s
.
rootcoordinatesystem
.
update
()
# Setting tiltx of s3 as -tiltx of s2 via pickup and update coordinate systems afterwards.
# Notice that the FunctionObject needs two arguments: the source code and the list of functions
# to be read from dict, while functionobject keyword needs a tuple where the FunctionObject is
# refered together with the function used for the pickup. There you have the opportunity to define
# one FunctionObject for several pickups or other things were functions are needed (i.e. GRIN media).
pyrateoptics
.
listOptimizableVariables
(
s
,
maxcol
=
30
)
# Lists optimizable variables (the identifiers are keys to a dict which collects them all).
# Setting tiltx of s3 as -tiltx of s2 via pickup and update coordinate systems
# afterwards.
pyrateoptics
.
listOptimizableVariables
(
s
,
max_line_width
=
75
)
# Lists optimizable variables (the identifiers are keys to a dict which
# collects them all).
pyrateoptics
.
draw
(
s
)
# This function can get a list of raypath argument to draw rays.
...
...
...
...