Source code for mosfit.modules.engines.nickelcobalt

"""Definitions for the `NickelCobalt` class."""
import numpy as np

from mosfit.modules.engines.engine import Engine


# Important: Only define one ``Module`` class per file.


[docs]class NickelCobalt(Engine): """Nickel/Cobalt decay engine.""" NI56_LUM = 6.45e43 CO56_LUM = 1.45e43 NI56_LIFE = 8.8 CO56_LIFE = 111.3
[docs] def process(self, **kwargs): """Process module.""" self._times = kwargs[self.key('dense_times')] self._mnickel = kwargs[self.key('fnickel')] * kwargs[ self.key('mejecta')] self._rest_t_explosion = kwargs[self.key('resttexplosion')] # From 1994ApJS...92..527N ts = np.empty_like(self._times) t_inds = self._times >= self._rest_t_explosion ts[t_inds] = self._times[t_inds] - self._rest_t_explosion luminosities = np.zeros_like(self._times) luminosities[t_inds] = self._mnickel * ( self.NI56_LUM * np.exp(-ts[t_inds] / self.NI56_LIFE) + self.CO56_LUM * np.exp(-ts[t_inds] / self.CO56_LIFE)) luminosities[np.isnan(luminosities)] = 0.0 return {self.dense_key('luminosities'): luminosities}