def _act_vals_clima(símismo, f_0, f_1, vars_clima=None): vars_clima = vars_clima or símismo.vars_clima # Actualizar datos de clima p = símismo.paso_en_ciclo if símismo.corrida.clima and vars_clima and p == (símismo.tmñ_ciclo - 1): t = símismo.corrida.t f_inic = t.fecha() un_día = deltarelativo(days=1) vars_clim_paso = { vr: d for vr, d in vars_clima.items() if isinstance(símismo.variables[vr], VarPasoDeter) } vars_clim_ciclo = { vr: d for vr, d in vars_clima.items() if vr not in vars_clim_paso } base_t, factor = a_unid_tnmt(símismo.unidad_tiempo()) f_final = f_inic + deltarelativo( **{a_unid_ft[base_t]: factor * símismo.tmñ_ciclo}) - un_día datos_ciclo = símismo.corrida.clima.combin_datos( vars_clima=vars_clim_ciclo, f_inic=f_inic, f_final=f_final) for var, vl in datos_ciclo.items(): símismo.variables[var].poner_val(vl) for i in range(símismo.tmñ_ciclo): f_final = f_inic + deltarelativo( **{a_unid_ft[base_t]: factor}) - un_día # Calcular los datos datos = símismo.corrida.clima.combin_datos( vars_clima=vars_clim_paso, f_inic=f_inic, f_final=f_final) # Aplicar los valores de variables calculados for var, datos_vrs in datos.items(): # Guardar el valor para esta estación símismo.variables[var].poner_vals_paso(datos_vrs, paso=i) f_inic = f_final + un_día
def _act_vals_clima(símismo, n_paso, f): """ Actualiza los variables climáticos, según la estación. :param n_paso: El número de pasos para avanzar :type n_paso: int :param f: La fecha actual. :type f: ft.datetime | ft.date """ # Si avanzamos por más que un año, perderemos la precisión del clima if n_paso > 12: avisar('El paso es superior a 1 año (12 meses). Las predicciones climáticas perderán su precisión.') # Solamante hay que cambiar los datos si es el principio de un nuevo año. if símismo.mes == 0 and símismo.estación == 0: # La lista de variables climáticos vars_clima = list(símismo.vars_clima) nombres_extrn = [d['nombre_extrn'] for d in símismo.vars_clima.values()] # La lista de maneras de combinar los valores diarios combins = [d['combin'] for d in símismo.vars_clima.values()] # La lista de factores de conversiones de variables de clima convs = [d['conv'] for d in símismo.vars_clima.values()] # La fecha inicial f_inic = f for e, dur in enumerate(símismo.dur_estaciones): # Para cada estación... # La fecha final f_final = f_inic + deltarelativo(months=+dur) # Calcular los datos datos = símismo.lugar.comb_datos(vars_clima=nombres_extrn, combin=combins, f_inic=f_inic, f_final=f_final) # Aplicar los valores de variables calculados for i, var in enumerate(vars_clima): # Para cada variable en la lista de clima... # El nombre oficial del variable de clima var_clima = nombres_extrn[i] # El factor de conversión conv = convs[i] # Guardar el valor para esta estación símismo.datos_internos[var][e, ...] = datos[var_clima] * conv # Avanzar la fecha f_inic = f_final
def _act_vals_clima(símismo, f_0, f_1, vars_clima=None): vars_clima = vars_clima or símismo.vars_clima # Actualizar datos de clima p = símismo.paso_en_ciclo if símismo.corrida.clima and vars_clima and p == (símismo.tmñ_ciclo - 1): t = símismo.corrida.t f_inic = t.fecha() un_día = deltarelativo(days=1) vars_clim_bloque = { vr: d for vr, d in vars_clima.items() if isinstance(símismo.variables[vr], VarBloque) } vars_otros = {vr: d for vr, d in vars_clima.items() if vr not in vars_clim_bloque} super()._act_vals_clima(f_0=f_0, f_1=f_1, vars_clima=vars_otros) base_t, factor = a_unid_tnmt(símismo.unidad_tiempo()) for i, b in enumerate(símismo.tmñ_bloques): f_final = f_inic + deltarelativo(**{a_unid_ft[base_t]: factor * b}) - un_día # Calcular los datos datos = símismo.corrida.clima.combin_datos( vars_clima=vars_clim_bloque, f_inic=f_inic, f_final=f_final ) # Aplicar los valores de variables calculados for var, datos_vrs in datos.items(): # Guardar el valor para esta estación símismo.variables[var].poner_vals_paso(datos_vrs, paso=i) f_inic = f_final + un_día
def _act_vals_clima(símismo, f_0, f_1, lugar): # Solamante hay que cambiar los datos si es el principio de un nuevo ciclo. if símismo.paso_en_ciclo == 0: # La lista de variables climáticos vars_clima = list(símismo.vars_clima) nombres_extrn = [ d['nombre_extrn'] for d in símismo.vars_clima.values() ] # La lista de maneras de combinar los valores diarios combins = [d['combin'] for d in símismo.vars_clima.values()] # La lista de factores de conversiones de variables de clima convs = [d['conv'] for d in símismo.vars_clima.values()] # La fecha inicial f_inic = f_0 for b, tmñ in enumerate(símismo.tmñ_bloques): # Para cada bloque... # La fecha final base_t, factor = símismo._unid_tiempo_python() f_final = f_0 + deltarelativo(**{base_t: tmñ * factor}) # Calcular los datos datos = lugar.comb_datos(vars_clima=nombres_extrn, combin=combins, f_inic=f_inic, f_final=f_final) # Aplicar los valores de variables calculados for i, var in enumerate(vars_clima): # Para cada variable en la lista de clima... # El nombre oficial del variable de clima var_clima = nombres_extrn[i] # El factor de conversión conv = convs[i] # Guardar el valor para esta estación símismo.matrs_ingr[var][b, ...] = datos[var_clima] * conv # Avanzar la fecha f_inic = f_final