Code source de tinamit.envolt.bf._indeter

from ._impac import ModeloImpaciente, VarPaso, VariablesModImpaciente


[docs]class ModeloIndeterminado(ModeloImpaciente): """ La clase pariente para todos modelos que avanzan por un número indeterminado de pasos a cada corrida. """ def __init__(símismo, variables, nombre='bf'): super().__init__(tmñ_ciclo=1, variables=variables, nombre=nombre)
[docs] def incrementar(símismo, rebanada): # Para simplificar el código un poco. p = símismo.paso_en_ciclo # Aplicar el incremento de paso p += rebanada.n_pasos # Si hay que avanzar el modelo externo, lanzar una su simulación aquí. while p >= símismo.tmñ_ciclo: p -= símismo.tmñ_ciclo # Avanzar la simulación símismo.tmñ_ciclo = símismo.mandar_modelo() # Guardar el pasito actual para la próxima vez. símismo.paso_en_ciclo = p # Actualizar el paso en los variables símismo.variables.act_paso(símismo.paso_en_ciclo) super().incrementar(rebanada)
[docs] def unidad_tiempo(símismo): raise NotImplementedError
def mandar_modelo(símismo): raise NotImplementedError
[docs]class VariablesModIndeterminado(VariablesModImpaciente): """ Representa los variables de un modelo :class:`~tinamit.envolt.bf.ModeloIndeterminado`. """ pass
[docs]class VarPasoIndeter(VarPaso): """ Representa un variable de un modelo :class:`~tinamit.envolt.bf.ModeloIndeterminado` cuyo valor cambia a cada paso (y no solamente a cada ciclo). """ def __init__(símismo, nombre, unid, ingr, egr, inic=0, líms=None, info=''): super().__init__(nombre, unid, ingr, egr, tmñ_ciclo=1, inic=inic, líms=líms, info=info)
[docs] def poner_vals_paso(símismo, val, paso=None): # para hacer: ¿incecesario reimplementar esta función? símismo._matr_paso = val