def commit_particles(self):
        new = self.particles.difference(self._main_se.particles).copy()
        removed = self._main_se.particles.difference(self.particles).copy()

        # remove all particles from underlying models
        if len(removed) > 0:
            self._main_se.particles.remove_particles(removed)
        if len(removed) > 0:
            self._fallback_se.particles.remove_particles(removed)

        # initialize EVtwin, transfer state
        self._main_se.particles.add_particles(new)

        for part in self.particles:
            self.ActiveModel[part] = self._main_se
            self._transfer_state(part)

        # initialize SSE
        sse_part = self._fallback_se.particles.add_particles(new)
        for part in self.particles:
            self._FBTimeseries[part] = ParticlesTimeseries(
                part.as_particle_in_set(self._fallback_se.particles))
            self._FBTimeseries[part].add_timepoint()

        self.model_time = self.particles.age.min()
Ejemplo n.º 2
0
    def commit_particles(self):
        self.ActiveModel = self._EVtwin # self.ActiveModel.__class__.__name__ contains name of active model

        # remove all particles from underlying models
        if not (self._EVtwin_particlesh is None):
            self._EVtwin.particles.remove_particles(self._EVtwin_particlesh)
        if not (self._SSE_particlesh is None):
            self._SSE.particles.remove_particles(self._SSE_particlesh)

        # initialize EVtwin, transfer state
        self._EVtwin_particlesh = self._EVtwin.particles.add_particles(self.particles)
        self._EVtwin.commit_particles()
        self._transfer_state_EVtwin()

        # initialize SSE
        self._SSE_particlesh = self._SSE.particles.add_particles(self.particles)
        self._SSE.commit_particles()
        self._SSETimeseries = ParticlesTimeseries(self._SSE.particles)
        self._SSETimeseries.add_timepoint()