-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #72 from acisops/New_1DPAMYT_Model
First version of the 1DPAMYT model and setup.py mods
- Loading branch information
Showing
4 changed files
with
150 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
|
||
|
||
Change Description | ||
================== | ||
|
||
The 1PIN1AT and 1CRBT transducer failures had minimal mission impact. | ||
|
||
1DPAMZT is used as a proxy for the internal BEP and FEP PC board temperatures. | ||
As such, it is an important value in determining the health and performance | ||
of the instrument. | ||
|
||
If the 1DPAMZT transducer fails, we could switch to using the 1DPAMYT | ||
transducer values to substitute for the 1DPAMZT values. A new 1DPAMYT | ||
thermal model was created and fitted. Limits were selected so that the 1DPAMYT | ||
limits reflect the same FEP and BEP board temperatures as the 1DPAMZT limits. | ||
|
||
The new model uses the new Chandra Limits. | ||
|
||
|
||
Files Changed: | ||
============== | ||
|
||
The changed and added files can be seen in this PR: | ||
|
||
https://github.com/acisops/acis_thermal_check/pull/72 | ||
https://github.com/sot/chandra_models/pull/124 | ||
https://github.com/sot/chandra_limits/pull/14 | ||
|
||
|
||
|
||
Testing: | ||
======== | ||
|
||
The model and the updated Chandra Limits code was tested, using the | ||
following loads: | ||
|
||
JAN2224 | ||
JAN2324 | ||
FEB1124 | ||
FEB1924 | ||
FEB2624 | ||
MAR0424 | ||
MAR1124 | ||
MAR1824 | ||
APR0124 | ||
APR0824 | ||
APR1524 | ||
APR2024 | ||
|
||
The predicted vs actual temperatures were compared and found to agree | ||
within acceptable limits. | ||
|
||
The ACIS load review software will be modified to execute this new model | ||
in order to continue the test of the model and the fit. But it will not be used | ||
to plan missions. | ||
|
||
|
||
Interface impacts | ||
================= | ||
|
||
None | ||
|
||
|
||
Review | ||
====== | ||
|
||
ACIS Ops | ||
|
||
|
||
Deployment Plan | ||
=============== | ||
|
||
Deploy as soon as FSDS approval given. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
#!/usr/bin/env python | ||
|
||
""" | ||
======================== | ||
1dpamyt_check | ||
======================== | ||
This code generates backstop load review outputs for checking the ACIS | ||
DPA temperature 1DPAMYT. It also generates 1DPAMYT model validation | ||
plots comparing predicted values to telemetry for the previous three | ||
weeks. | ||
""" | ||
import sys | ||
|
||
import matplotlib | ||
from chandra_limits import DPAMYTLimit | ||
|
||
from acis_thermal_check import ACISThermalCheck, get_options | ||
|
||
# Matplotlib setup | ||
# Use Agg backend for command-line (non-interactive) operation | ||
matplotlib.use("Agg") | ||
|
||
|
||
class DPAMYTCheck(ACISThermalCheck): | ||
_limit_class = DPAMYTLimit | ||
|
||
def __init__(self): | ||
valid_limits = [(1, 2.0), (50, 1.0), (99, 2.0)] | ||
|
||
# Specify the temperature where only those temps greater | ||
# than this temperature will be displayed on the histogram. | ||
hist_limit = [20.0] | ||
|
||
# Call the superclass' __init__ with the arguments | ||
super().__init__("1dpamyt", "dpamyt", valid_limits, hist_limit) | ||
|
||
def _calc_model_supp(self, model, state_times, states, ephem, state0): | ||
""" | ||
Update to initialize the dpa0 pseudo-node. If 1dpamyt | ||
has an initial value (T_dpa) - which it does at | ||
prediction time (gets it from state0), then T_dpa0 | ||
is set to that. If we are running the validation, | ||
T_dpa is set to None so we use the dvals in model.comp | ||
NOTE: If you change the name of the dpa0 pseudo node you | ||
have to edit the new name into the if statement | ||
below. | ||
""" | ||
if "dpa0" in model.comp: | ||
if state0 is None: | ||
T_dpa0 = model.comp["1dpamyt"].dvals | ||
else: | ||
T_dpa0 = state0["1dpamyt"] | ||
model.comp["dpa0"].set_data(T_dpa0, model.times) | ||
|
||
|
||
def main(): | ||
args = get_options() | ||
dpamyt_check = DPAMYTCheck() | ||
try: | ||
dpamyt_check.run(args) | ||
except Exception as msg: | ||
if args.traceback: | ||
raise | ||
else: | ||
print("ERROR:", msg) | ||
sys.exit(1) | ||
|
||
|
||
if __name__ == "__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters