def time_update(self, ts, ebcs=None, epbcs=None, lcbcs=None, functions=None, problem=None, active_only=True, verbose=True): """ Update the equations for current time step. The update involves creating the mapping of active DOFs from/to all DOFs for all state variables, the setup of linear combination boundary conditions operators and the setup of active DOF connectivities. Parameters ---------- ts : TimeStepper instance The time stepper. ebcs : Conditions instance, optional The essential (Dirichlet) boundary conditions. epbcs : Conditions instance, optional The periodic boundary conditions. lcbcs : Conditions instance, optional The linear combination boundary conditions. functions : Functions instance, optional The user functions for boundary conditions, materials, etc. problem : Problem instance, optional The problem that can be passed to user functions as a context. active_only : bool If True, the active DOF connectivities and matrix graph have reduced size and are created with the reduced (active DOFs only) numbering. verbose : bool If False, reduce verbosity. Returns ------- graph_changed : bool The flag set to True if the current time step set of active boundary conditions differs from the set of the previous time step. """ self.variables.time_update(ts, functions, verbose=verbose) active_bcs = self.variables.equation_mapping(ebcs, epbcs, ts, functions, problem=problem, active_only=active_only) graph_changed = active_only and (active_bcs != self.active_bcs) self.active_bcs = active_bcs if graph_changed or not self.variables.adof_conns: adcs = create_adof_conns(self.conn_info, self.variables.adi.indx, active_only=active_only) self.variables.set_adof_conns(adcs) self.variables.setup_lcbc_operators(lcbcs, ts, functions) for eq in self: for term in eq.terms: term.time_update(ts) return graph_changed
def standalone_setup(self): from sfepy.discrete import create_adof_conns, Variables conn_info = {'aux' : self.get_conn_info()} adcs = create_adof_conns(conn_info, None) variables = Variables(self.get_variables()) variables.set_adof_conns(adcs) materials = self.get_materials(join=True) for mat in materials: mat.time_update(None, [Struct(terms=[self])])
def standalone_setup(self): from sfepy.discrete import create_adof_conns, Variables conn_info = {'aux': self.get_conn_info()} adcs = create_adof_conns(conn_info, None) variables = Variables(self.get_variables()) variables.set_adof_conns(adcs) materials = self.get_materials(join=True) for mat in materials: mat.time_update(None, [Struct(terms=[self])])