Lots of changes
This commit is contained in:
22
app/Main.hs
22
app/Main.hs
@@ -1,12 +1,15 @@
|
||||
module Main where
|
||||
|
||||
import Control.Lens
|
||||
import Criterion.Main
|
||||
import Data.Either
|
||||
import Petzval.Optics
|
||||
import Petzval.Optics.RTM
|
||||
import Petzval.System
|
||||
import Petzval.Trace
|
||||
import Petzval.Calculations
|
||||
import Petzval.Optimization
|
||||
import Petzval.Types
|
||||
import Linear
|
||||
import Numeric.AD.Mode (Scalar, Mode)
|
||||
|
||||
@@ -23,8 +26,8 @@ n_ssk8 = SellemeierMat [ (1.44857867, 1.17965926e-01)
|
||||
|
||||
system1 =
|
||||
[ Stop{_thickness = 0, _outsideRadius=5}
|
||||
, Surface{_material = bk7, _thickness = 10, _roc = 100, _outsideRadius=0}
|
||||
, Surface{_material = air, _thickness = 95, _roc = -100, _outsideRadius=0}
|
||||
, Surface{_material = bk7, _thickness = 10, _roc = 100, _outsideRadius=10}
|
||||
, Surface{_material = air, _thickness = 95, _roc = -100, _outsideRadius=10}
|
||||
]
|
||||
|
||||
system2 =
|
||||
@@ -40,7 +43,7 @@ system2 =
|
||||
where s_sk16 = ConstMat 1.620408
|
||||
s_f4 = ConstMat 1.616589
|
||||
|
||||
merit :: (Material mat, RealFloat a, Scalar a ~ Double, Epsilon a, Mode a) => [Element mat a] -> a
|
||||
merit :: (Material mat, Calcuable a) => [Element mat a] -> a
|
||||
-- merit :: (Material mat) => [Element mat Double] -> Double
|
||||
merit system = result
|
||||
where baked = bake 0.587618 system
|
||||
@@ -53,9 +56,13 @@ merit system = result
|
||||
. rights
|
||||
. map fst
|
||||
. map (raytrace baked . createRay Nothing ep angle)
|
||||
$ spiralPattern 100)
|
||||
$ spiralPattern 10)
|
||||
$ [0, 7.07, 15]
|
||||
|
||||
type Id a = a -> a
|
||||
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main =
|
||||
let baked = bake 0.587618 system2
|
||||
@@ -65,3 +72,10 @@ main =
|
||||
putStrLn $ show ep
|
||||
putStrLn $ show $ rearFocalLength $ lensRTM baked
|
||||
putStrLn $ show $ mconcat (seidel ep fa baked :: [Seidel Double])
|
||||
defaultMain [
|
||||
bgroup "merit" [ bench "system1" $ nf merit (system1 :: [Element SellemeierMat Double])
|
||||
, bench "system2" $ nf merit (system2 :: [Element ConstMat Double])
|
||||
]
|
||||
, bgroup "ad" [ bench "system1" $ nf (gradientAt (ix 1.thickness) merit) system1
|
||||
]
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user