From a188ba53c74f0eab8b5517a3d17b586c2437339a Mon Sep 17 00:00:00 2001 From: Charles-Philippe Lajoie Date: Mon, 1 Mar 2021 11:28:59 -0500 Subject: [PATCH 1/4] Added support for general defocus, e.g. for MIMF --- webbpsf/optics.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/webbpsf/optics.py b/webbpsf/optics.py index 9f2d8337..a8313f0f 100644 --- a/webbpsf/optics.py +++ b/webbpsf/optics.py @@ -1684,6 +1684,10 @@ class LookupTableFieldDependentAberration(poppy.OpticalElement): Remove piston, tip, tilt rm_center_ptt : bool If rm_ptt, use the center value for each detector rather than per field point + nwaves: float + Number of waves to defocus SM, if add_sm_defocus_pos or add_sm_defocus_neg is True. + add_sm_defocus: bool + If True, add "nwaves" of SM defocus. Usage: @@ -1695,7 +1699,8 @@ class LookupTableFieldDependentAberration(poppy.OpticalElement): def __init__(self, instrument, field_points_file=None, phasemap_file=None, which_exercise='MIMF_KDP', - add_niriss_defocus=None, rm_ptt=None, rm_center_ptt=None, add_mimf_defocus=False, **kwargs): + add_niriss_defocus=None, rm_ptt=None, rm_center_ptt=None, add_mimf_defocus=False, + add_sm_defocus_pos=False, add_sm_defocus_neg=False, nwaves=None, **kwargs): super().__init__( name="Aberrations", **kwargs @@ -1853,6 +1858,14 @@ def __init__(self, instrument, field_points_file=None, phasemap_file=None, self.instrument.options['defocus_wavelength'] = 1e-6 # Add 0.8 microns PTV defocus warnings.warn("Adding defocus=0.8 waves for NIRISS!") + if add_sm_defocus_pos: + if nwaves: + print("ADDING DEFOCUS {:4.1f} WAVES".format(nwaves)) + self.instrument.options['defocus_waves'] = nwaves + self.instrument.options['defocus_wavelength'] = 2.0e-6 + else: + print("Not adding any defocus; set nwaves") + def header_keywords(self): """ Return info we would like to save in FITS header of output PSFs From d85fac27ef263515cce244cb30e7aff297e68d1b Mon Sep 17 00:00:00 2001 From: Charles-Philippe Lajoie Date: Mon, 1 Mar 2021 12:17:16 -0500 Subject: [PATCH 2/4] Fix renaming of arguments --- webbpsf/optics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webbpsf/optics.py b/webbpsf/optics.py index 99b5ee8b..22a27935 100644 --- a/webbpsf/optics.py +++ b/webbpsf/optics.py @@ -1699,8 +1699,8 @@ class LookupTableFieldDependentAberration(poppy.OpticalElement): def __init__(self, instrument, field_points_file=None, phasemap_file=None, which_exercise='MIMF_KDP', - add_niriss_defocus=None, rm_ptt=None, rm_center_ptt=None, add_mimf_defocus=False, - add_sm_defocus_pos=False, add_sm_defocus_neg=False, nwaves=None, **kwargs): + add_niriss_defocus=None, rm_ptt=None, rm_center_ptt=None, + add_mimf_defocus=False, add_sm_defocus=False, nwaves=None, **kwargs): super().__init__( name="Aberrations", **kwargs From c48c77267417fad3d815a78a84ebca69082fdd2c Mon Sep 17 00:00:00 2001 From: Charles-Philippe Lajoie Date: Mon, 1 Mar 2021 12:18:04 -0500 Subject: [PATCH 3/4] Fix typos --- webbpsf/optics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webbpsf/optics.py b/webbpsf/optics.py index 22a27935..f543ebdb 100644 --- a/webbpsf/optics.py +++ b/webbpsf/optics.py @@ -1858,7 +1858,7 @@ def __init__(self, instrument, field_points_file=None, phasemap_file=None, self.instrument.options['defocus_wavelength'] = 1e-6 # Add 0.8 microns PTV defocus warnings.warn("Adding defocus=0.8 waves for NIRISS!") - if add_sm_defocus_pos: + if add_sm_defocus: if nwaves: print("ADDING DEFOCUS {:4.1f} WAVES".format(nwaves)) self.instrument.options['defocus_waves'] = nwaves From 62b0e269954288720fc7cc0a05559b361dd00b5c Mon Sep 17 00:00:00 2001 From: Marshall Perrin Date: Mon, 1 Mar 2021 13:09:25 -0500 Subject: [PATCH 4/4] minor, add doc string and printout to note the wavelength for defocus --- webbpsf/optics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webbpsf/optics.py b/webbpsf/optics.py index f543ebdb..e8cb3d44 100644 --- a/webbpsf/optics.py +++ b/webbpsf/optics.py @@ -1687,7 +1687,7 @@ class LookupTableFieldDependentAberration(poppy.OpticalElement): nwaves: float Number of waves to defocus SM, if add_sm_defocus_pos or add_sm_defocus_neg is True. add_sm_defocus: bool - If True, add "nwaves" of SM defocus. + If True, add "nwaves" of SM defocus, measured at a reference wavelength of 2.0 microns. Usage: @@ -1860,7 +1860,7 @@ def __init__(self, instrument, field_points_file=None, phasemap_file=None, if add_sm_defocus: if nwaves: - print("ADDING DEFOCUS {:4.1f} WAVES".format(nwaves)) + print("ADDING DEFOCUS {:4.1f} WAVES at 2.0 microns".format(nwaves)) self.instrument.options['defocus_waves'] = nwaves self.instrument.options['defocus_wavelength'] = 2.0e-6 else: