
roseau LOAD FLOW

roseau LOAD FLOW
Un solveur 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 solveur polyvalent et robuste ? On vous propose le nôtre.
Pour nos besoins internes, nous avons passé des années à développer un solveur 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éfauts 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 standards (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 Python 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. Besoin d’aller plus loin ? Nous pouvons mettre à votre disposition des dizaines de milliers de départs HTA et BT déjà modélisés.
- 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.
Pour les autres cas, contactez-nous.