Source code for flopy.discretization.modeltime

import numpy as np


[docs]class ModelTime: """ Class for MODFLOW simulation time Parameters ---------- stress_periods : pandas dataframe headings are: perlen, nstp, tsmult temporal_reference : TemporalReference contains start time and time units information """ def __init__( self, period_data=None, time_units="days", start_datetime=None, steady_state=None, ): self._period_data = period_data self._time_units = time_units self._start_datetime = start_datetime self._steady_state = steady_state @property def time_units(self): return self._time_units @property def start_datetime(self): return self._start_datetime @property def perlen(self): return self._period_data["perlen"] @property def nper(self): return len(self._period_data["perlen"]) @property def nstp(self): return self._period_data["nstp"] @property def tsmult(self): return self._period_data["tsmult"] @property def steady_state(self): return self._steady_state @property def totim(self): delt = [] perlen_array = self.perlen nstp_array = self.nstp tsmult_array = self.tsmult for ix, nstp in enumerate(nstp_array): perlen = perlen_array[ix] tsmult = tsmult_array[ix] for stp in range(nstp): if stp == 0: if tsmult != 1.0: dt = perlen * (tsmult - 1) / ((tsmult**nstp) - 1) else: dt = perlen / nstp else: dt = delt[-1] * tsmult delt.append(dt) totim = np.add.accumulate(delt) return totim @property def tslen(self): n = 0 tslen = [] totim = self.totim for ix, stp in enumerate(self.nstp): for i in range(stp): if not tslen: tslen = [totim[n]] else: tslen.append(totim[n] - totim[n - 1]) n += 1 return np.array(tslen)