📄 pointac.cpp
字号:
/*JacElement(Jac,Jac->n1,i+1,Dlambda);*/
}
} else {
if (!strpbrk(From->Type,"S")) {
JacElement(Jac,i+N,i+1,0.);
JacElement(Jac,i+1+N,i,0.);
}
JacElement(Jac,i+1+N,i+1,0.);
}
Dlambda=-Vi*Vi*ACptr->Pzl-pow(Vi,a)*ACptr->Pnl;
if (Dlambda) {
JacElement(Jac,i,Jac->n1,Dlambda);
/*JacElement(Jac,Jac->n1,i+N,Dlambda);*/
}
Dlambda=-Vi*Vi*ACptr->Qzl-pow(Vi,b)*ACptr->Qnl;
if (Dlambda) {
JacElement(Jac,i+1,Jac->n1,Dlambda);
/*JacElement(Jac,Jac->n1,i+1+N,Dlambda);*/
}
}
/* -------------- Regulating Transf. ----------------------- */
if(PQcont||Rcont) for(ELptr=ACptr->Reg;ELptr!=NULL;ELptr=ELptr->Next) {
Eptr=ELptr->Eptr;
From=Eptr->From;
i=ACvar[From->N];
Vi=From->V;
di=From->Ang;
To=Eptr->To;
j=ACvar[To->N];
Vj=To->V;
dj=To->Ang;
gij=(Eptr->G*cos(Eptr->Ang)-Eptr->B*sin(Eptr->Ang))*Eptr->Tap;
bij=(Eptr->G*sin(Eptr->Ang)+Eptr->B*cos(Eptr->Ang))*Eptr->Tap;
gsij=(Eptr->G1+Eptr->G)*Eptr->Tap*Eptr->Tap-gij;
bsij=(Eptr->B1+Eptr->B)*Eptr->Tap*Eptr->Tap-bij;
gji=(Eptr->G*cos(Eptr->Ang)+Eptr->B*sin(Eptr->Ang))*Eptr->Tap;
bji=(-Eptr->G*sin(Eptr->Ang)+Eptr->B*cos(Eptr->Ang))*Eptr->Tap;
v1=sin(di-dj)*(gij*x0[i]+gji*x0[j]);
dv1=cos(di-dj)*(gij*x0[i]+gji*x0[j]);
v2=cos(di-dj)*(bij*x0[i]-bji*x0[j]);
dv2= -sin(di-dj)*(bij*x0[i]-bji*x0[j]);
v3=cos(di-dj)*(gij*x0[i+1]-gji*x0[j+1]);
dv3= -sin(di-dj)*(gij*x0[i+1]-gji*x0[j+1]);
v4=sin(di-dj)*(bij*x0[i+1]+bji*x0[j+1]);
dv4=cos(di-dj)*(bij*x0[i+1]+bji*x0[j+1]);
v5= -2*((gij+gsij)*x0[i]-(bij+bsij)*x0[i+1]);
if (Acont && From->Area!=To->Area) {
BEptr=From->Area->Slack;
if(!strpbrk(BEptr->Type,"S")) {
k=ACvar[BEptr->N]+2;
if (Eptr->Meter==From) {
v6= -(gij*sin(di-dj)-bij*cos(di-dj))*x0[k];
dv6= -(gij*cos(di-dj)+bij*sin(di-dj))*x0[k];
v7= -2*(gij+gsij)*x0[k];
} else {
v6= -(gji*sin(dj-di)-bji*cos(dj-di))*x0[k];
dv6=(gji*cos(dj-di)+bji*sin(dj-di))*x0[k];
v7=0;
}
} else v6=dv6=v7=0;
BEptr=To->Area->Slack;
if(!strpbrk(BEptr->Type,"S")) {
k=ACvar[BEptr->N]+2;
if (Eptr->Meter==From) {
v8=(gij*sin(di-dj)-bij*cos(di-dj))*x0[k];
dv8=(gij*cos(di-dj)+bij*sin(di-dj))*x0[k];
v9=2*(gij+gsij)*x0[k];
} else {
v8=(gji*sin(dj-di)-bji*cos(dj-di))*x0[k];
dv8= -(gji*cos(dj-di)+bji*sin(dj-di))*x0[k];
v9=0;
}
} else v8=dv8=v9=0;
} else v6=dv6=v7=v8=dv8=v9=0;
if (PQcont && !strcmp(Eptr->Type,"RP")){
k=ACvar[Eptr->Cont->N]+1+Eptr->Cont->Ncont-Eptr->Ncont;
if (Acont && strpbrk(Eptr->Cont->Type,"A")) k++;
if (Eptr->Cont==From) {
v10= -(gij*sin(di-dj)-bij*cos(di-dj))*x0[k];
dv10= -(gij*cos(di-dj)+bij*sin(di-dj))*x0[k];
} else {
v10=(gji*sin(dj-di)-bji*cos(dj-di))*x0[k];
dv10= -(gji*cos(dj-di)+bji*sin(dj-di))*x0[k];
}
if (flagF) dF[k+N]=Vi*Vj*(v1-v2-v3-v4-v6-v8-v10);
if (flagJ) {
Dval=Vi*Vj*(dv2-dv1+dv4+dv3+dv6+dv8+dv10);
JacElement(Jac,k+N,k,Dval);
if (!strpbrk(From->Type,"S")) {
Ddi=Vi*Vj*(dv1-dv2-dv3-dv4-dv6-dv8-dv10);
JacElement(Jac,k+N,i,Ddi);
}
if (From->Cont!=NULL) {
Dvi= -Vj*(-v1+v2+v3+v4+v6+v8+v10);
JacElement(Jac,k+N,i+1,Dvi);
} else JacElement(Jac,k+N,i+1,0.);
if (!strpbrk(To->Type,"S")) {
Ddj= -Vi*Vj*(dv1-dv2-dv3-dv4-dv6-dv8-dv10);
JacElement(Jac,k+N,j,Ddj);
}
if (To->Cont!=NULL) {
Dvj= -Vi*(-v1+v2+v3+v4+v6+v8+v10);
JacElement(Jac,k+N,j+1,Dvj);
} else JacElement(Jac,k+N,j+1,0.);
}
} else if (PQcont && !strcmp(Eptr->Type,"RQ")){
k=ACvar[Eptr->Cont->N]+1+Eptr->Cont->Ncont-Eptr->Ncont;
if (Acont && strpbrk(Eptr->Cont->Type,"A")) k++;
if (Eptr->Cont==From) {
v10=(gij*cos(di-dj)+bij*sin(di-dj))*x0[k];
dv10= -(gij*sin(di-dj)-bij*cos(di-dj))*x0[k];
v11=2*(bij+bsij)*x0[k];
} else {
v10= -(gji*cos(dj-di)+bji*sin(dj-di))*x0[k];
dv10= -(gji*sin(dj-di)-bji*cos(dj-di))*x0[k];
v11=0;
}
if (flagF) dF[k+N]+=Vi*Vj/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8-dv10)
+Vi*Vi/Eptr->Tap*(v5+v7+v9+v11);
if (flagJ) {
Dval=Vi*Vi/(Eptr->Tap*Eptr->Tap)*(v5+v7+v9+v11);
JacElement(Jac,k+N,k,Dval);
if (!strpbrk(From->Type,"S")) {
Ddi=Vi*Vj/Eptr->Tap*(-v1+v2+v3+v4+v6+v8+v10);
JacElement(Jac,k+N,i,Ddi);
}
if (From->Cont!=NULL) {
Dvi=Vj/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8-dv10)
+2*Vi/Eptr->Tap*(v5+v7+v9+v11);
JacElement(Jac,k+N,i+1,Dvi);
} else JacElement(Jac,k+N,i+1,0.);
if (!strpbrk(To->Type,"S")) {
Ddj= -Vi*Vj/Eptr->Tap*(-v1+v2+v3+v4+v6+v8+v10);
JacElement(Jac,k+N,j,Ddj);
}
if (To->Cont!=NULL) {
Dvj=Vi/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8-dv10);
JacElement(Jac,k+N,j+1,Dvj);
} else JacElement(Jac,k+N,j+1,0.);
}
} else if (Rcont && !strcmp(Eptr->Type,"R")) {
k=ACvar[Eptr->Cont->N]+1;
if (flagF) dF[k+N]+=Vi*Vj/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8)
+Vi*Vi/Eptr->Tap*(v5+v7+v9);
if (flagJ) {
Dval=Vi*Vi/(Eptr->Tap*Eptr->Tap)*(v5+v7+v9);
JacElement(Jac,k+N,k,Dval);
if (!strpbrk(From->Type,"S")) {
Ddi=Vi*Vj/Eptr->Tap*(-v1+v2+v3+v4+v6+v8);
JacElement(Jac,k+N,i,Ddi);
}
if (From->Cont!=NULL) {
Dvi=Vj/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8)
+2*Vi/Eptr->Tap*(v5+v7+v9);
JacElement(Jac,k+N,i+1,Dvi);
} else JacElement(Jac,k+N,i+1,0.);
if (!strpbrk(To->Type,"S")) {
Ddj= -Vi*Vj/Eptr->Tap*(-v1+v2+v3+v4+v6+v8);
JacElement(Jac,k+N,j,Ddj);
}
if (To->Cont!=NULL) {
Dvj=Vi/Eptr->Tap*(dv1-dv2-dv3-dv4-dv6-dv8);
JacElement(Jac,k+N,j+1,Dvj);
} else JacElement(Jac,k+N,j+1,0.);
}
} else if (flagF && PQcont && strpbrk(Eptr->Type,"PQMN")){
k=ACvar[Eptr->Cont->N]+1+Eptr->Cont->Ncont-Eptr->Ncont;
if (Acont && strpbrk(Eptr->Cont->Type,"A")) k++;
dF[k+N]=x0[k];
}
}
/* -------------- Generator Model ----------------------- */
if (ACptr->Gen!=NULL) {
i=ACptr->Gen->Nvar;
Ra=ACptr->Gen->Ra;
Xd=ACptr->Gen->Xd;
Xq=ACptr->Gen->Xq;
dg=ACptr->Gen->dg;
Vr=ACptr->Gen->Vr;
Vim=ACptr->Gen->Vi;
Ir=ACptr->Gen->Ir;
Iim=ACptr->Gen->Ii;
Vq=ACptr->Gen->Vq;
Vd=ACptr->Gen->Vd;
Iq=ACptr->Gen->Iq;
Id=ACptr->Gen->Id;
Ia=ACptr->Gen->Ia;
if (flagF) {
if (strpbrk(ACptr->cont,"V")) {
if (QRcont && strpbrk(ACptr->Type,"G")) {
j=ACvar[ACptr->Cont->N];
dF[j+N+1]+=ACptr->Kbg*x0[i+2];
} else {
j=ACvar[ACptr->N];
dF[j+N+1]+=x0[i+2];
}
}
if (strpbrk(ACptr->cont,"E")) dF[i+N+1]+=x0[i+2];
else dF[i+N+1]+=x0[i+3];
dF[i+N+2]+=( sin(dg)*Vq+cos(dg)*Vd)*x0[i+5]+
(-cos(dg)*Vq+sin(dg)*Vd)*x0[i+6]+
( sin(dg)*Iq+cos(dg)*Id)*x0[i+7]+
(-cos(dg)*Iq+sin(dg)*Id)*x0[i+8];
dF[i+N+3]+=-Ir*x0[i+1]+Iim*x0[i+2]+x0[i+5]+x0[i+9];
dF[i+N+4]+=-Iim*x0[i+1]-Ir*x0[i+2]+x0[i+6]+x0[i+10];
dF[i+N+5]+=-Vr*x0[i+1]-Vim*x0[i+2]+x0[i+7]-2*Ir*x0[i+11];
dF[i+N+6]+=-Vim*x0[i+1]+Vr*x0[i+2]+x0[i+8]-2*Iim*x0[i+11];
dF[i+N+7]+=-x0[i+3]-cos(dg)*x0[i+5]-sin(dg)*x0[i+6];
dF[i+N+8]+= x0[i+4]+sin(dg)*x0[i+5]-cos(dg)*x0[i+6];
dF[i+N+9] +=-Ra*x0[i+3]+Xq*x0[i+4]-cos(dg)*x0[i+7]-sin(dg)*x0[i+8];
dF[i+N+10]+= Xd*x0[i+3]+Ra*x0[i+4]+sin(dg)*x0[i+7]-cos(dg)*x0[i+8];
if (strpbrk(ACptr->cont,"I")) dF[i+N+11]+=x0[i+2];
else dF[i+N+11]+=2*Ia*x0[i+11];
j=ACvar[BSptr->N];
if(DPg) {
if (strpbrk(BSptr->Type,"S")) dF[j+N]+=DPg*x0[i+1];
else if(Acont) dF[j+N+2]+=DPg*x0[i+1];
}
j=ACvar[ACptr->N];
if (!strpbrk(ACptr->Type,"S"))dF[j+N]+=Vi*sin(di)*x0[i+9]-Vi*cos(di)*x0[i+10];
if (ACptr->Cont!=NULL) dF[j+N+1]+=-cos(di)*x0[i+9]-sin(di)*x0[i+10];
}
if (flagJ) {
JacElement(Jac,i+N+2,i+2,(cos(dg)*Vq-sin(dg)*Vd)*x0[i+5]+
(sin(dg)*Vq+cos(dg)*Vd)*x0[i+6]+
(cos(dg)*Iq-sin(dg)*Id)*x0[i+7]+
(sin(dg)*Iq+cos(dg)*Id)*x0[i+8]);
JacElement(Jac,i+N+2,i+7,sin(dg)*x0[i+5]-cos(dg)*x0[i+6]);
JacElement(Jac,i+N+2,i+8,cos(dg)*x0[i+5]+sin(dg)*x0[i+6]);
JacElement(Jac,i+N+2,i+9,sin(dg)*x0[i+7]-cos(dg)*x0[i+8]);
JacElement(Jac,i+N+2,i+10,cos(dg)*x0[i+7]+sin(dg)*x0[i+8]);
JacElement(Jac,i+N+3,i+5,-x0[i+1]);
JacElement(Jac,i+N+3,i+6,x0[i+2]);
JacElement(Jac,i+N+4,i+5,-x0[i+2]);
JacElement(Jac,i+N+4,i+6,-x0[i+1]);
JacElement(Jac,i+N+5,i+3,-x0[i+1]);
JacElement(Jac,i+N+5,i+4,-x0[i+2]);
JacElement(Jac,i+N+5,i+5,-2*x0[i+11]);
JacElement(Jac,i+N+6,i+3,x0[i+2]);
JacElement(Jac,i+N+6,i+4,-x0[i+1]);
JacElement(Jac,i+N+6,i+6,-2*x0[i+11]);
JacElement(Jac,i+N+7,i+2,sin(dg)*x0[i+5]-cos(dg)*x0[i+6]);
JacElement(Jac,i+N+8,i+2,cos(dg)*x0[i+5]+sin(dg)*x0[i+6]);
JacElement(Jac,i+N+9,i+2,sin(dg)*x0[i+7]-cos(dg)*x0[i+8]);
JacElement(Jac,i+N+10,i+2,cos(dg)*x0[i+7]+sin(dg)*x0[i+8]);
if (!strpbrk(ACptr->cont,"I")) JacElement(Jac,i+N+11,i+11,2*x0[i+11]);
else JacElement(Jac,i+N+11,i+11,0.);
j=ACvar[ACptr->N];
if (!strpbrk(ACptr->Type,"S")) {
JacElement(Jac,j+N,j,Vi*cos(di)*x0[i+9]+Vi*sin(di)*x0[i+10]);
if (ACptr->Cont!=NULL) {
JacElement(Jac,j+N,j+1,sin(di)*x0[i+9]-cos(di)*x0[i+10]);
JacElement(Jac,j+N+1,j,sin(di)*x0[i+9]-cos(di)*x0[i+10]);
} else {
JacElement(Jac,j+N,j+1,0.);
JacElement(Jac,j+N+1,j,0.);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -