<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_with_snapshots(self, tsnapstart=0., tsnapint=432000.):
 """Run the model forward, yielding to user code at specified intervals. Parameters tsnapstart : int The timestep at which to begin yielding. tstapint : int The interval at which to yield. """


        tsnapints = np.ceil(tsnapint/self.dt)

        while(self.t < self.tmax):
            self._step_forward()
            if self.t>=tsnapstart and (self.tc%tsnapints)==0:
                yield self.t
        return