Skip to content

Commit

Permalink
Merge branch 'master' into projector_load_flow
Browse files Browse the repository at this point in the history
  • Loading branch information
sylvlecl committed Jun 6, 2018
2 parents 0fc8cdb + 7de88b4 commit 088bbe5
Show file tree
Hide file tree
Showing 4 changed files with 201 additions and 11 deletions.
12 changes: 6 additions & 6 deletions case-projector/src/main/resources/ampl/projector/projector.dat
Expand Up @@ -22,16 +22,16 @@ param: SUBSTATIONS: substation_horizon substation_fodist substation_Vnomi substa
param: NOEUD: noeud_poste noeud_CC noeud_V0 noeud_angl0 noeud_injA noeud_injR noeud_fault noeud_curative noeud_id := include ampl_network_buses.txt;

# ampl_network_generators.txt
#"num" "bus" "con. bus" "substation" "minP (MW)" "maxP (MW)" "minQmaxP (MVar)" "minQminP (MVar)" "maxQmaxP (MVar)" "maxQminP (MVar)" "v regul." "targetV (pu)" "targetP (MW)" "targetQ (MVar)" "fault" "curative" "id" "description"
param: UNIT: unit_noeudpossible unit_substation unit_Pmin unit_Pmax unit_qP unit_qp unit_QP unit_Qp unit_PV unit_Vc unit_Pc unit_Qc unit_fault unit_curative unit_id unit_nom := include ampl_network_generators.txt;
#"num" "bus" "con. bus" "substation" "minP (MW)" "maxP (MW)" "minQmaxP (MVar)" "minQminP (MVar)" "maxQmaxP (MVar)" "maxQminP (MVar)" "v regul." "targetV (pu)" "targetP (MW)" "targetQ (MVar)" "fault" "curative" "id" "description" "P (MW)" "Q (MVar)"
param: UNIT: unit_noeudpossible unit_substation unit_Pmin unit_Pmax unit_qP unit_qp unit_QP unit_Qp unit_PV unit_Vc unit_Pc unit_Qc unit_fault unit_curative unit_id unit_nom unit_P0 unit_Q0 := include ampl_network_generators.txt;

# ampl_network_loads.txt
#"num" "bus" "substation" "p (MW)" "q (MVar)" "fault" "curative" "id" "description"
param: CONSO: conso_substation conso_PFix conso_QFix conso_fault conso_curative conso_id conso_nom := include ampl_network_loads.txt;
#"num" "bus" "substation" "p (MW)" "q (MVar)" "fault" "curative" "id" "description" "p (MW)" "q (MVar)"
param: CONSO: conso_substation conso_PFix conso_QFix conso_fault conso_curative conso_id conso_nom conso_p conso_q := include ampl_network_loads.txt;

# ampl_network_shunts.txt
#"num" "bus" "con. bus" "substation" "minB (pu)" "maxB (pu)" "inter. points" "b (pu)" "fault" "curative" "id" "description"
param: SHUNT: shunt_noeudpossible shunt_substation shunt_valmin shunt_valmax shunt_interPoints shunt_valnom shunt_fault shunt_curative shunt_id shunt_nom := include ampl_network_shunts.txt;
#"num" "bus" "con. bus" "substation" "minB (pu)" "maxB (pu)" "inter. points" "b (pu)" "fault" "curative" "id" "description" "P (MW)" "Q (MVar)" "sections count"
param: SHUNT: shunt_noeudpossible shunt_substation shunt_valmin shunt_valmax shunt_interPoints shunt_valnom shunt_fault shunt_curative shunt_id shunt_nom shunt_P0 shunt_Q0 shunt_sections_count := include ampl_network_shunts.txt;

# ampl_network_tct.txt
#"num" "tap" "var ratio" "x (pu)" "angle (rad)" "fault" "curative"
Expand Down
13 changes: 10 additions & 3 deletions case-projector/src/main/resources/ampl/projector/projector.mod
Expand Up @@ -86,6 +86,8 @@ param unit_fault {UNIT};
param unit_curative{UNIT};
param unit_id {UNIT} symbolic;
param unit_nom {UNIT} symbolic; # description
param unit_P0 {UNIT}; # Initial value of P (if relevant)
param unit_Q0 {UNIT}; # Initial value of Q (if relevant)

set UNIT_ID := setof{(g,n) in UNIT}g;

Expand Down Expand Up @@ -123,7 +125,7 @@ param domain_idinternal {DOMAIN} symbolic;


###############################################################################
# Donnees consos
# Donnees consos (translation: conso is brief for consommation, which means load)
###############################################################################

set CONSO dimen 2; # [conso, noeud]
Expand All @@ -134,6 +136,8 @@ param conso_fault {CONSO};
param conso_curative {CONSO};
param conso_id {CONSO} symbolic;
param conso_nom {CONSO} symbolic;
param conso_p {CONSO};
param conso_q {CONSO};

#
# Consistance
Expand All @@ -157,6 +161,9 @@ param shunt_fault {SHUNT};
param shunt_curative {SHUNT};
param shunt_id {SHUNT} symbolic;
param shunt_nom {SHUNT} symbolic;
param shunt_P0 {SHUNT};
param shunt_Q0 {SHUNT};
param shunt_sections_count {SHUNT} integer;

#
# Consistance
Expand Down Expand Up @@ -296,8 +303,8 @@ set NOEUDCC := {n in NOEUD : noeud_CC[n] == 0};
set CONSOCC := {(c,n) in CONSO : n in NOEUDCC};
set SHUNTCC := {(s,n) in SHUNT : n in NOEUDCC};
set QUADCC := {(qq,m,n) in QUAD : m in NOEUDCC && n in NOEUDCC};
set QUADCC_REGL := {(qq,m,n) in QUAD : quad_ptrRegl[qq,m,n] != -1 };
set QUADCC_DEPH := {(qq,m,n) in QUAD : quad_ptrDeph[qq,m,n] != -1 };
set QUADCC_REGL := {(qq,m,n) in QUADCC : quad_ptrRegl[qq,m,n] != -1 };
set QUADCC_DEPH := {(qq,m,n) in QUADCC : quad_ptrDeph[qq,m,n] != -1 };

# Groupes demarres : on refuse les cas Pc=Qc=0
set UNITCC :=
Expand Down
21 changes: 20 additions & 1 deletion case-projector/src/main/resources/ampl/projector/projector.run
Expand Up @@ -187,8 +187,28 @@ display card(NOEUDCC),card(NOEUDCC_V0),
DOMAIN_ID
;

printf "Nombre de noeuds dans la composante connexe pincipale (i.e. la composante connexe numero 0) : %i\n",card(NOEUDCC);
printf "Nombre de noeuds de la composante connexe pincipale ayant une V0 renseignee : %i\n",card(NOEUDCC_V0);
printf "Nombre de groupes decrits : %i\n",card(UNIT);
printf "Nombre de groupes sur la composante connexe principale : %i\n",card(UNITCC);
printf "Nombre de groupes decrits comme PV : %i\n",card({(g,n) in UNITCC: unit_PV[g,n]=="true"});
printf "Nombre de groupes decrits comme PQ : %i\n",card({(g,n) in UNITCC: unit_PV[g,n]!="true"});
printf "Nombre de groupes ayant un domaine dynamique : %i\n",card(DOMAIN_IDENTIFIANTS);
printf "Nombre de groupes connectes et demarres et ayant un domaine dynamique : %i\n",card(UNIT_DOMAIN);
printf "Nombre groupes pour lesquels il y a un mismatch de tension entre l'etat de reseau et les domaines : %i\n",
card({(g,n,gid) in UNIT_DOMAIN : gen_vnom_mismatch[g,n,unit_id[g,n]]!=0});
printf "Nombre groupes pour lesquels on va vraiment faire varier P Q V : %i\n",card(UNIT_PQV);


###############################################################################
# Si tous les groupes ont P et Q fixes, ca ne sert a rien de faire tourner le projecteur
# On pourrait directement mettre ici un 'exit'
###############################################################################
if card(UNIT_PQV) == 0 then
print "\n*** ERREUR : aucun groupe ne peut etre modifie par le projecteur, tous les groupes ont P et Q fixes\n";

printf "\n";

###############################################################################
# Scaling
###############################################################################
Expand Down Expand Up @@ -243,7 +263,6 @@ option knitro_options
param nb_solve_max = 6;
param nb_solve;
let nb_solve := 0;
display solve_result_num;

repeat {
solve;
Expand Down
166 changes: 165 additions & 1 deletion case-projector/src/main/resources/ampl/projector/projectorOutput.run
Expand Up @@ -8,7 +8,7 @@
# author: Jean Maeght
#
# Projecteur
# Ecriture des reultats
# Ecriture des resultats
#
###############################################################################
print "Debut du fichier projectorOutput.run";
Expand All @@ -34,6 +34,30 @@ else
#
###########################################################################

#
# A partir de mai 2018, nouveau format
#

if final_status = "projector_OK" then {
printf '#"num" "bus" "v_regul" "targetV(pu)" "targetP(MW)" "targetQ(MVar)" "P(MW)" "Q(MVar)"\n' > projector_results_generators.txt;
printf {(g,n) in UNIT: n in NOEUDCC}
"%i %i %s %f %f %f %f %f\n",
g,
n,
# unit_PV[g,n] -> ce qu'il y a dans la situation en entree
if (g,n) in UNIT_PV then "true" else "false", # Voir definition de UNIT_PV
V[n], # Tension issue du calcul. La tension de consigne de la situation en entree n'est pas ecrite ici
unit_Pc[g,n], # -> ce qu'il y a dans la situation en entree
unit_Qc[g,n], # -> ce qu'il y a dans la situation en entree
if (g,n) in UNITCC then unit_P[g,n] else 0, # On peut avoir un groupe raccorde mais avec consignes nulles
if (g,n) in UNITCC then unit_Q[g,n] else 0 # On peut avoir un groupe raccorde mais avec consignes nulles
> projector_results_generators.txt;
}

#
# Jusqu'a mai 2018, on ecrit simplement trois colonnes V P Q
#
/* Attention, le signe '/*' marque le debut d'un commentaire long comme en C ou en C++
param unit_P_out{UNIT} default 0;
param unit_Q_out{UNIT} default 0;

Expand All @@ -54,6 +78,145 @@ printf {(g,n) in UNIT: n in NOEUDCC}
unit_Q_out[g,n]
> projector_results_generators.txt;
}
*/


###########################################################################
#
# Ecriture des noeuds
#
###########################################################################

printf '#"num" "v(pu)" "theta(rad)"\n'
> projector_results_buses.txt;
printf {n in NOEUDCC}
"%i %f %f\n",
n,V[n],Ph[n]
> projector_results_buses.txt;


###########################################################################
#
# Ecriture des branches
#
###########################################################################

printf '#"num" "bus1" "bus2" "p1(MW)" "p2(MW)" "q1(MVar)" "q2(MVar)"\n'
> projector_results_branches.txt;
printf {(qq,n,m) in QUADCC}
"%i %i %i %f %f %f %f\n",
qq,n,m,
100 * V[n] * Red_Tran_Act_Dir[qq,n,m],
100 * V[m] * Red_Tran_Act_Inv[qq,n,m],
100 * V[n] * Red_Tran_Rea_Dir[qq,n,m],
100 * V[m] * Red_Tran_Rea_Inv[qq,n,m]
> projector_results_branches.txt;


###########################################################################
#
# Ecriture des regleurs
#
###########################################################################

printf '#"num" "tap"\n'
> projector_results_rtc.txt;
printf {(qq,m,n) in QUADCC_REGL}
"%i %i\n",
quad_ptrRegl[qq,m,n],
regl_tap0[quad_ptrRegl[qq,m,n]]
> projector_results_rtc.txt;


###########################################################################
#
# Ecriture des dephaseurs
#
###########################################################################

printf '#"num" "tap"\n'
> projector_results_ptc.txt;
printf {(qq,m,n) in QUADCC_DEPH}
"%i %i\n",
quad_ptrDeph[qq,m,n],
deph_tap0[quad_ptrDeph[qq,m,n]]
> projector_results_ptc.txt;


###########################################################################
#
# Ecriture des HVDC
#
###########################################################################

printf '#"num" "convertersMode" "targetP(MW)"\n'
> projector_results_hvdc.txt;


###########################################################################
#
# Ecriture des conso
#
###########################################################################

printf '#"num" "bus" "p(MW)" "q(MVar)" "p0(MW)" "q0(MVar)"\n'
> projector_results_loads.txt;
printf {(c,n) in CONSOCC}
"%i %i %f %f %f %f\n",
c,n,
conso_PFix[c,n],
conso_QFix[c,n],
conso_p[c,n],
conso_q[c,n]
> projector_results_loads.txt;


###########################################################################
#
# Ecriture des shunts
#
###########################################################################

printf '#"num" "bus" "b(pu)" "Q(MVar)" "sections_count"\n'
> projector_results_shunts.txt;
printf {(s,n) in SHUNTCC}
"%i %i %f %f %i\n",
s,n,
shunt_valnom[s,n],
-shunt_valnom[s,n]*100*V[n]^2, # Dans le fichier ampl_networks_shunts.txt, Q est de signe oppose a celui de b (b==valnom)
shunt_sections_count[s,n]
> projector_results_shunts.txt;


###########################################################################
#
# Ecriture des static var compensators
#
###########################################################################

printf '#"num" "bus" "v_regul" "targetV(pu)" "Q(MVar)"\n'
> projector_results_static_var_compensators.txt;


###########################################################################
#
# Ecriture des lcc converter stations
#
###########################################################################

printf '#"num" "bus" "P(MW)" "Q(MVar)"\n'
> projector_results_static_lcc_converter_stations.txt;


###########################################################################
#
# Ecriture des vsc converter stations
#
###########################################################################

printf '#"num" "bus" "v_regul" "targetV(pu)" "targetQ(MVar)" "P(MW)" "Q(MVar)"\n'
> projector_results_static_vsc_converter_stations.txt;



###########################################################################
Expand All @@ -68,6 +231,7 @@ printf {(g,n) in UNIT: n in NOEUDCC}
#
printf "%s %s\n","final_status", final_status > projector_results_indic.txt;
printf "%s %s\n","solve_result_num",solve_result_num > projector_results_indic.txt;

# Fermeture du fichier pour autoriser l'ecriture directement par le shell
close;

Expand Down

0 comments on commit 088bbe5

Please sign in to comment.