roseau LOAD FLOW

roseau LOAD FLOW

Un solveur de flux de puissance simple et puissant, via une API Python

Services d'analyses des données par Roseau Technologies
				
					# 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)
# >>> <ElectricalNetwork: 2 buses, 1 branch, 1 load, 1 source, 1 ground, 1 potential ref>

# Solve the load flow
activate_license(key="<My License Key>")
en.solve_load_flow()
# >>> 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

Roseau Load Flow is accessible via a Python API

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()
# >>> 2 iterations

# Get the results
abs(load_bus.res_voltages)
# >>> [242.72 232.62 233.68] <Units('volt')>

				
			

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

  • 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] <Unit('kilovolt')>

abs(line.res_currents[0])
# >>> [45.06, 45.06, 45.06,  0.  ] <Unit('ampere')>

# 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

An example of a MV feeder included in the Python API
  • Lancez-vous sans difficulté grâce aux 20 départs Basse Tension et aux 20 départs Moyenne Tension inclus dans Roseau Load Flow. Besoin d’aller plus loin ? Nous pouvons mettre à votre disposition le modèle électrique du réseau de distribution français, soit 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 ou contactez-nous pour plus d’informations

Licences, installation et usage

Une clef de licence gratuite et publique est disponible, pour réaliser des calculs sur des réseaux comportant jusqu’à dix nœuds. Vous souhaitez aller plus loin ? Contactez-nous pour obtenir votre clef de licence personnelle.

Étudiants et enseignants : renseignez votre adresse email académique ci-dessous et vous recevrez votre clef de licence gratuite.