
roseau LOAD FLOW

roseau LOAD FLOW
Un solver de flux de puissance simple et puissant, via une API Python

# Create two buses
source_bus = Bus(id="sb", phases="abcn")
load_bus = Bus(id="lb", phases="abcn")
# Define the reference of potentials to be the neutral of the source bus
ground = Ground(id="gnd")
pref = PotentialRef(id="pref", element=ground) # Fix the potential of the ground at 0 V
ground.connect(source_bus, phase="n")
# Create a LV source at the first bus
un = 400 / np.sqrt(3) # Volts (phase-to-neutral because the source is connected to the neutral)
source_voltages = Q_([un, un * np.exp(-2j * np.pi / 3), un * np.exp(2j * np.pi / 3)], "V")
vs = VoltageSource(id="vs", bus=source_bus, phases="abcn", voltages=source_voltages)
# Add a load at the second bus
load = PowerLoad(id="load", bus=load_bus, phases="abcn", powers=Q_([10 + 0j, 10 + 0j, 10 + 0j], "kVA"))
# Add a LV line between the source bus and the load bus
lp = LineParameters("lp", z_line=Q_((0.1 + 0.0j) * np.eye(4, dtype=complex), "ohm/km")) # R = 0.1 Ohm/km, X = 0
line = Line(id="line", bus1=source_bus, bus2=load_bus, phases="abcn", parameters=lp, length=Q_(2.0, "km"))
# Create the electrical network
en = ElectricalNetwork.from_element(source_bus)
# >>>
# Solve the load flow
en.solve_load_flow(auth=(username, password))
# >>> 2 iterations
Vous cherchez un solver polyvalent et robuste ? On vous propose le notre.
Pour nos besoins internes, nous avons passé des années à développer un solver aussi puissant que pratique. Nous sommes très fiers du résultat, et depuis Février 2023, nous vous proposons de vous y donner accès !

Analyse statique des réseaux électriques
Calculs d'écoulement de charge standards mais aussi des calculs plus poussés tels que les courants de défaut

Réseaux maillés, phases multiples, déséquilibres...
Modèles de lignes polyphasées et de transformateurs
-
Charges et défaults déséquilibrés

Accessible via une API Python
- Une modélisation orientée objet particulièrement lisible
- Des scripts pour faciliter l'automatisation des processus
- Une intégration simplifiée avec votre écosystème IT
# Let's use a pq(u) control injecting reactive power
# before reducing active power
fp = FlexibleParameter.pq_u_production(
up_up=Q_(240, "V"),
up_max=250, # Volt by default
uq_min=Q_(200, "V"),
uq_down=Q_(210, "V"),
uq_up=Q_(235, "V"),
uq_max=Q_(240, "V"),
s_max=Q_(4, "kVA")
)
flexible_load = PowerLoad(
id="load",
bus=load_bus,
phases="abcn",
powers=Q_([-3.5, 0, 0], "kVA"),
flexible_params=[
fp,
FlexibleParameter.constant(),
FlexibleParameter.constant()
],
)
# Solve the load flow
en.solve_load_flow(auth=auth)
# >>> 2 iterations
# Get the results
abs(load_bus.res_voltages)
# >>> [242.72 232.62 233.68]
Modélisation générique des charges et des installations de production
- Une bibliothèque de charges standard (charges actives/réactives constantes, charges d’impédance…) est incluse ;
- Les charges flexibles peuvent être finement modélisées avec des courbes P(U) et/ou Q(U) et des limites de puissance apparente.
- La structure générique des charges permet d’ajouter facilement tout nouveau type d’objet dépendant de la tension.
Simplicité et ergonomie
- Roseau Load-Flow est une API synthétique et bien documentée !
- Utilisez des modèles mathématiques simples et transparents : pas de transformation du modèle naturel, comme l’élimination du fil neutre (réduction de Kron) ou le changement des unités en « p.u. ».
- Prise en charge des unités physiques pour éviter les erreurs (par exemple, confondre W et kW) et permettre à chacun de travailler avec ses unités préférées (métriques / impériales).
# Results per object
abs(load_bus.res_voltages).to("kV")
# >>> [0.22193 0.22193 0.22193]
abs(line.res_currents[0])
# >>> [45.06, 45.06, 45.06, 0. ]
# Global Results (data frame)
en.res_buses_voltages.transform([np.abs, np.angle]) # in V
# >>> voltage
# >>> absolute angle
# >>> bus_id phase
# >>> sb an 230.940108 6.671617e-37
# >>> bn 230.940108 -2.094395e+00
# >>> cn 230.940108 2.094395e+00
# >>> lb an 221.928183 2.599590e-22
# >>> bn 221.928183 -2.094395e+00
# >>> cn 221.928183 2.094395e+00
en.res_loads # in A, VA and V
# >>> current power potential
# >>> load_id phase
# >>> load a 45.06+0.00j 10000.00-0.00j 221.93-0.00j
# >>> b -22.53-39.02j 10000.00-0.00j -110.96-192.20j
# >>> c -22.53+39.02j 10000.00+0.00j -110.96+192.20j
# >>> n -0.00+0.00j -0.00+0.00j 0.00-0.00j
en.res_line_losses # in VA
# >>> series_losses shunt_losses total_losses
# >>> line_id phase
# >>> line a 406.07+0.00j 0.00+0.00j 406.07+0.00j
# >>> b 406.07+0.00j 0.00+0.00j 406.07+0.00j
# >>> c 406.07+0.00j 0.00+0.00j 406.07+0.00j
# >>> n 0.00+0.00j 0.00+0.00j 0.00+0.00j
Des données de réseau incluses !

- Lancez-vous sans difficulté grâce aux 20 départs Basse Tension et aux 20 départs Moyenne Tension inclus !
- Chaque départ est fourni avec ses deux points de charge dimensionnants.
- Visitez le dépot Github officiel pour plus d’informations !
Installation et usage
Vous êtes étudiant ou enseignant ? Nous sommes heureux de vous compter parmi nous ! Renseignez votre adresse email académique et vous recevrez vos identifiants gratuitement.