This demo will demonstrate that the different simulation modes for SIE lenses are consistent.
Preparation¶
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import toml
from copy import deepcopy
import CosmoSim as cs
from CosmoSim import Parameters
from CosmoSim.datagen import SimImage
import CosmoSim.Image as csimg
print( "CosmoSim version:", cs.__version__ )CosmoSim version: 3.2.2b2
Raytrace¶
We can define the configuration as a dict using the nested (TOML) structure.
cfg = { 'simulator' : { "model" : "Raytrace", "nterms" : 5, "cropsize" : 256 }
, 'lens': {
'mode' : "SIE",
'einsteinradius': 46 }
, 'source': {
'mode': 'SersicSphere',
'sigma': 20,
'theta': 45,
'luminosity' : 70,
'position': 'cartesian'}
, 'position': {'x': 11.01, 'y': 0.31}
}
param = Parameters(cfg)raysim = SimImage( param, verbose=0 )
rayim = raysim.getImage()
csimg.imshow( rayim, title="Raytrace SIE")
Roulette¶
param["simulator"]["model"] = "Roulette"
rousim = SimImage( param, verbose=0 )
rouim = rousim.getImage()
csimg.imageCompare( rouim, rayim, "Roulette model", 'Raytrace')
This looks perfect inside the convergence ring, as it should.
Sampling¶
param["simulator"]["sampled"] = True
imsim05 = SimImage( param, verbose=0 )
im05 = imsim05.getImage()
csimg.imageCompare( rayim, im05, "Raytrace", 'Sampled Roulette')
csimg.imageCompare( rouim, im05, "Roulette", 'Sampled Roulette')

Conclusion¶
We can see that the different simulation models give consistent results.