diff --git a/case-projector/src/main/resources/ampl/projector/projector.dat b/case-projector/src/main/resources/ampl/projector/projector.dat index 39c43333..5c6f0fcb 100644 --- a/case-projector/src/main/resources/ampl/projector/projector.dat +++ b/case-projector/src/main/resources/ampl/projector/projector.dat @@ -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" diff --git a/case-projector/src/main/resources/ampl/projector/projector.mod b/case-projector/src/main/resources/ampl/projector/projector.mod index 6e919925..1656cab9 100644 --- a/case-projector/src/main/resources/ampl/projector/projector.mod +++ b/case-projector/src/main/resources/ampl/projector/projector.mod @@ -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; @@ -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] @@ -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 @@ -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 @@ -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 := diff --git a/case-projector/src/main/resources/ampl/projector/projector.run b/case-projector/src/main/resources/ampl/projector/projector.run index 23dc6477..e9c21c51 100644 --- a/case-projector/src/main/resources/ampl/projector/projector.run +++ b/case-projector/src/main/resources/ampl/projector/projector.run @@ -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 ############################################################################### @@ -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; diff --git a/case-projector/src/main/resources/ampl/projector/projectorOutput.run b/case-projector/src/main/resources/ampl/projector/projectorOutput.run index 99bd903f..299a7fd9 100644 --- a/case-projector/src/main/resources/ampl/projector/projectorOutput.run +++ b/case-projector/src/main/resources/ampl/projector/projectorOutput.run @@ -8,7 +8,7 @@ # author: Jean Maeght # # Projecteur -# Ecriture des reultats +# Ecriture des resultats # ############################################################################### print "Debut du fichier projectorOutput.run"; @@ -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; @@ -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; + ########################################################################### @@ -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;