?? pointfac.cpp
字號:
if (!strpbrk(TCSCptr->From->Type,"S")) {
JacElement(Jac,k+N,i+4,-Vk*Vm*cos(thk-thm)*x0[i+1]-Vk*Vm*sin(thk-thm)*x0[i+2]-Vk*Vm*sin(thk-thm)*x0[i+3]);
if (dVk) JacElement(Jac,k+N,k+1,-Vm*Be*cos(thk-thm)*x0[i+1]-Vm*Be*sin(thk-thm)*x0[i+2]-Vm*Be*sin(thk-thm)*x0[i+3]);
else JacElement(Jac,k+N,k+1,0.0);
if (dVm) JacElement(Jac,k+N,m+1,-Vk*Be*cos(thk-thm)*x0[i+1]-Vk*Be*sin(thk-thm)*x0[i+2]-Vk*Be*sin(thk-thm)*x0[i+3]);
else JacElement(Jac,k+N,m+1,0.0);
JacElement(Jac,k+N,k,Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));
if (!strpbrk(TCSCptr->To->Type,"S"))
JacElement(Jac,k+N,k,-Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));
}
if (dVk) {
JacElement(Jac,k+N+1,i+4,-Vm*sin(thk-thm)*x0[i+1]+(-2.0*Vk+Vm*cos(thk-thm))*x0[i+2]+Vm*cos(thk-thm)*x0[i+3]);
JacElement(Jac,k+N+1,i+6,-x0[i+5]);
JacElement(Jac,k+N+1,k+1,-2*Be*x0[i+2]);
if (dVm) JacElement(Jac,k+N+1,m+1,-Be*sin(thk-thm)*x0[i+1]+Be*cos(thk-thm)*x0[i+2]+Be*cos(thk-thm)*x0[i+3]);
else JacElement(Jac,k+N+1,m+1,0.0);
if (!strpbrk(TCSCptr->From->Type,"S"))
JacElement(Jac,k+N+1,k,-Vm*Be*cos(thk-thm)*x0[i+1]-Vm*Be*sin(thk-thm)*x0[i+2]-Vm*Be*sin(thk-thm)*x0[i+3]);
if (!strpbrk(TCSCptr->To->Type,"S"))
JacElement(Jac,k+N+1,m,Vm*Be*cos(thk-thm)*x0[i+1]+Vm*Be*sin(thk-thm)*x0[i+2]+Vm*Be*sin(thk-thm)*x0[i+3]);
} else {
JacElement(Jac,k+N+1,i+4,0.0);
JacElement(Jac,k+N+1,i+6,0.0);
JacElement(Jac,k+N+1,k+1,0.0);
JacElement(Jac,k+N+1,m+1,0.0);
if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Jac,k+N+1,k,0.0);
if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Jac,k+N+1,m,0.0);
}
if (!strpbrk(TCSCptr->To->Type,"S")) {
JacElement(Jac,m+N,i+4,Vk*Vm*cos(thk-thm)*x0[i+1]+Vk*Vm*sin(thk-thm)*x0[i+2]+Vk*Vm*sin(thk-thm)*x0[i+3]);
if (dVk) JacElement(Jac,m+N,k+1,Vm*Be*cos(thk-thm)*x0[i+1]+Vm*Be*sin(thk-thm)*x0[i+2]+Vm*Be*sin(thk-thm)*x0[i+3]);
else JacElement(Jac,m+N,k+1,0.0);
if (dVm) JacElement(Jac,m+N,m+1,Vk*Be*cos(thk-thm)*x0[i+1]+Vk*Be*sin(thk-thm)*x0[i+2]+Vk*Be*sin(thk-thm)*x0[i+3]);
else JacElement(Jac,m+N,m+1,0.0);
if (!strpbrk(TCSCptr->From->Type,"S"))
JacElement(Jac,m+N,k,-Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));
JacElement(Jac,m+N,k,Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));
}
if (dVm) {
JacElement(Jac,m+N+1,i+4,-Vk*sin(thk-thm)*x0[i+1]+(-2.0*Vm+Vk*cos(thk-thm))*x0[i+3]+Vk*cos(thk-thm)*x0[i+2]);
if (dVk) JacElement(Jac,m+N+1,k+1,-Be*sin(thk-thm)*x0[i+1]+Be*cos(thk-thm)*x0[i+3]+Be*cos(thk-thm)*x0[i+2]);
else JacElement(Jac,m+N+1,k+1,0.0);
JacElement(Jac,m+N+1,m+1,-2.0*Be*x0[i+3]);
if (!strpbrk(TCSCptr->From->Type,"S"))
JacElement(Jac,m+N+1,k,-Vk*Be*cos(thk-thm)*x0[i+1]-Vk*Be*sin(thk-thm)*x0[i+2]-Vk*Be*sin(thk-thm)*x0[i+3]);
if (!strpbrk(TCSCptr->To->Type,"S"))
JacElement(Jac,m+N+1,k,Vk*Be*cos(thk-thm)*x0[i+1]+Vk*Be*sin(thk-thm)*x0[i+2]+Vk*Be*sin(thk-thm)*x0[i+3]);
} else {
JacElement(Jac,m+N+1,i+4,0.0);
JacElement(Jac,m+N+1,k+1,0.0);
JacElement(Jac,m+N+1,m+1,0.0);
if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Jac,m+N+1,k,0.0);
if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Jac,m+N+1,m,0.0);
}
}
i=i+7;
j=j+7;
}
}
/* ------------------ STATCOMFunHes ----------------------------- */
#ifdef ANSIPROTO
void STATCOMFunHes(BOOLEAN flagF,BOOLEAN flagJ)
#else
void STATCOMFunHes(flagF,flagJ)
BOOLEAN flagF,flagJ;
#endif
/* Construct the STATCOM part of the PoC Jacobian and mismatch. */
{
INDEX i,j,k,l,N;
STATCOMbusData *STATCOMptr;
VALUETYPE Vk,Xsl,delta,R,G,B,Gc,I,theta,Vdc,K,alpha,Q;
BOOLEAN flagLimits,flagPWM;
i=NacVar+11*Ndc/2+3*Nsvc+NtcscVar;
N=NacVar+11*Ndc/2+3*Nsvc+NtcscVar+7*Nstatcom;
j=N+i;
for(STATCOMptr=dataPtr->STATCOMbus;STATCOMptr!=NULL;STATCOMptr=STATCOMptr->Next){
k=ACvar[STATCOMptr->From->N];
Vk=STATCOMptr->From->V;
delta=STATCOMptr->From->Ang;
l=ACvar[STATCOMptr->Ctrl->N];
if (!strcmp(STATCOMptr->Cont,"PW") || !strcmp(STATCOMptr->Cont,"AL")) flagLimits=FALSE;
else flagLimits=TRUE;
if (!strcmp(STATCOMptr->Cont1,"PW")) flagPWM=TRUE;
else flagPWM=FALSE;
R=STATCOMptr->R;
G=STATCOMptr->G;
B=STATCOMptr->B;
Gc=STATCOMptr->Gc;
Xsl=STATCOMptr->slope;
I=STATCOMptr->I;
theta=STATCOMptr->theta;
Vdc=STATCOMptr->Vdc;
K=STATCOMptr->k;
alpha=STATCOMptr->alpha;
Q=STATCOMptr->Q;
if(flagF){
if (!flagLimits) {
dF[j+1]= x0[i+3]*(-2.0*R*I)+ x0[i+4]*(-Vk*cos(delta-theta))+x0[i+5]*(-Vk*sin(delta-theta));
if (Q>0) dF[j+1] += x0[i+1]*(-Xsl);
else dF[j+1] += x0[i+1]*Xsl;
} else {
dF[j+1] = -x0[i+1];
}
dF[j+2]= x0[i+4]*(-Vk*I*sin(delta-theta))+x0[i+5]*(Vk*I*cos(delta-theta));
dF[j+3]= x0[i+3]*(-2.0*Gc*Vdc)
+x0[i+6]*(G*K*Vk*cos(delta-alpha)+B*K*Vk*sin(delta-alpha))
+x0[i+7]*(-B*K*Vk*cos(delta-alpha)+G*K*Vk*sin(delta-alpha));
if (flagPWM) dF[j+3]+= x0[i+2];
dF[j+4]= x0[i+6]*(G*Vdc*Vk*cos(delta-alpha)+B*Vdc*Vk*sin(delta-alpha))
+x0[i+7]*(-B*Vdc*Vk*cos(delta-alpha)+G*Vdc*Vk*sin(delta-alpha));
if (!flagPWM) dF[j+4]+= x0[i+2];
dF[j+5]= x0[i+6]*(G*K*Vdc*Vk*sin(delta-alpha)-B*K*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(-B*K*Vdc*Vk*sin(delta-alpha)-G*K*Vdc*Vk*cos(delta-alpha));
dF[j+6]= x0[i+3]+x0[i+4]+x0[i+6]-x0[k];
dF[j+7]= x0[i+5]+x0[i+7]-x0[k+1];
dF[l+1+N]+= x0[i+1];
dF[k+1+N]+= x0[i+4]*(-I*cos(delta-theta))+x0[i+5]*(-I*sin(delta-theta))
+x0[i+6]*(-2.0*G*Vk+G*K*Vdc*cos(delta-alpha)+B*K*Vdc*sin(delta-alpha))
+x0[i+7]*(2.0*B*Vk-B*K*Vdc*cos(delta-alpha)-G*K*Vdc*sin(delta-alpha));
if (!strpbrk(STATCOMptr->From->Type,"S"))
dF[k+N]+= x0[i+4]*(Vk*I*sin(delta-theta))+x0[i+5]*(-Vk*I*cos(delta-theta))
+x0[i+6]*(-G*K*Vdc*Vk*sin(delta-alpha)+B*K*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(B*K*Vdc*Vk*sin(delta-alpha)+G*K*Vdc*Vk*cos(delta-alpha));
}
if(flagJ){
if (!flagLimits) {
JacElement(Jac,j+1,i+1,x0[i+3]*(-2.0*R));
JacElement(Jac,j+1,i+2,x0[i+4]*(-Vk*sin(delta-theta))+x0[i+5]*(Vk*cos(delta-theta)));
JacElement(Jac,j+1,k+1,x0[i+4]*(-cos(delta-theta))+x0[i+5]*(-sin(delta-theta)));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,j+1,k,x0[i+4]*(Vk*sin(delta-theta))+x0[i+5]*(-Vk*cos(delta-theta)));
} else {
JacElement(Jac,j+1,i+1,0.);
JacElement(Jac,j+1,i+2,0.);
JacElement(Jac,j+1,k+1,0.);
if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Jac,j+1,k,0.);
}
if (!flagLimits)
JacElement(Jac,j+2,i+1,x0[i+4]*(-Vk*sin(delta-theta))+x0[i+5]*(Vk*cos(delta-theta)));
else JacElement(Jac,j+2,i+1,0.);
JacElement(Jac,j+2,i+2,x0[i+4]*(Vk*I*cos(delta-theta))+x0[i+5]*(Vk*I*sin(delta-theta)));
JacElement(Jac,j+2,k+1,x0[i+4]*(-I*sin(delta-theta))+x0[i+5]*(I*cos(delta-theta)));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,j+2,k,x0[i+4]*(-Vk*I*cos(delta-theta))+x0[i+5]*(-Vk*I*sin(delta-theta)));
JacElement(Jac,j+3,i+3,x0[i+3]*(-2.0*Gc));
JacElement(Jac,j+3,i+4,x0[i+6]*(G*Vk*cos(delta-alpha)+B*Vk*sin(delta-alpha))
+x0[i+7]*(-B*Vk*cos(delta-alpha)+G*Vk*sin(delta-alpha)));
JacElement(Jac,j+3,i+5,x0[i+6]*(G*K*Vk*sin(delta-alpha)-B*K*Vk*cos(delta-alpha))
+x0[i+7]*(-B*K*Vk*sin(delta-alpha)-G*K*Vk*cos(delta-alpha)));
JacElement(Jac,j+3,k+1,x0[i+6]*(G*K*cos(delta-alpha)+B*K*sin(delta-alpha))
+x0[i+7]*(-B*K*cos(delta-alpha)+G*K*sin(delta-alpha)));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,j+3,k,x0[i+6]*(-G*K*Vk*sin(delta-alpha)+B*K*Vk*cos(delta-alpha))
+x0[i+7]*(B*K*Vk*sin(delta-alpha)+G*K*Vk*cos(delta-alpha)));
JacElement(Jac,j+4,i+3,x0[i+6]*(G*Vk*cos(delta-alpha)+B*Vk*sin(delta-alpha))
+x0[i+7]*(-B*Vk*cos(delta-alpha)+G*Vk*sin(delta-alpha)));
JacElement(Jac,j+4,i+5,x0[i+6]*(G*Vdc*Vk*sin(delta-alpha)-B*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(-B*Vdc*Vk*sin(delta-alpha)-G*Vdc*Vk*cos(delta-alpha)));
JacElement(Jac,j+4,k+1,x0[i+6]*(G*Vdc*cos(delta-alpha)+B*Vdc*sin(delta-alpha))
+x0[i+7]*(-B*Vdc*cos(delta-alpha)+G*Vdc*sin(delta-alpha)));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,j+4,k,x0[i+6]*(-G*Vdc*Vk*sin(delta-alpha)+B*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(B*Vdc*Vk*sin(delta-alpha)+G*Vdc*Vk*cos(delta-alpha)));
JacElement(Jac,j+5,i+3,x0[i+6]*(G*K*Vk*sin(delta-alpha)-B*K*Vk*cos(delta-alpha))
+x0[i+7]*(-B*K*Vk*sin(delta-alpha)-G*K*Vk*cos(delta-alpha)));
JacElement(Jac,j+5,i+4,x0[i+6]*(G*Vdc*Vk*sin(delta-alpha)-B*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(-B*Vdc*Vk*sin(delta-alpha)-G*Vdc*Vk*cos(delta-alpha)));
JacElement(Jac,j+5,i+5,x0[i+6]*(-G*K*Vdc*Vk*cos(delta-alpha)-B*K*Vdc*Vk*sin(delta-alpha))
+x0[i+7]*(B*K*Vdc*Vk*cos(delta-alpha)-G*K*Vdc*Vk*sin(delta-alpha)));
JacElement(Jac,j+5,k+1,x0[i+6]*(G*K*Vdc*sin(delta-alpha)-B*K*Vdc*cos(delta-alpha))
+x0[i+7]*(-B*K*Vdc*sin(delta-alpha)-G*K*Vdc*cos(delta-alpha)));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,j+5,k,x0[i+6]*(G*K*Vdc*Vk*cos(delta-alpha)+B*K*Vdc*Vk*sin(delta-alpha))
+x0[i+7]*(-B*K*Vdc*Vk*cos(delta-alpha)+G*K*Vdc*Vk*sin(delta-alpha)));
if (!flagLimits)
JacElement(Jac,k+1+N,i+1,x0[i+4]*(-cos(delta-theta))+x0[i+5]*(-sin(delta-theta)));
else JacElement(Jac,k+1+N,i+1,0.);
JacElement(Jac,k+1+N,i+2,x0[i+4]*(-I*sin(delta-theta))+x0[i+5]*(I*cos(delta-theta)));
JacElement(Jac,k+1+N,i+3,x0[i+6]*(G*K*cos(delta-alpha)+B*K*sin(delta-alpha))
+x0[i+7]*(-B*K*cos(delta-alpha)-G*K*sin(delta-alpha)));
JacElement(Jac,k+1+N,i+4,x0[i+6]*(G*Vdc*cos(delta-alpha)+B*Vdc*sin(delta-alpha))
+x0[i+7]*(-B*Vdc*cos(delta-alpha)-G*Vdc*sin(delta-alpha)));
JacElement(Jac,k+1+N,i+5,x0[i+6]*(G*K*Vdc*sin(delta-alpha)-B*K*Vdc*cos(delta-alpha))
+x0[i+7]*(-B*K*Vdc*sin(delta-alpha)+G*K*Vdc*cos(delta-alpha)));
JacElement(Jac,k+1+N,k+1,x0[i+6]*(-2.0*G)+x0[i+7]*(2.0*B));
if (!strpbrk(STATCOMptr->From->Type,"S"))
JacElement(Jac,k+1+N,k,x0[i+4]*(I*sin(delta-theta))+x0[i+5]*(-I*cos(delta-theta))
+x0[i+6]*(-G*K*Vdc*sin(delta-alpha)+B*K*Vdc*cos(delta-alpha))
+x0[i+7]*(B*K*Vdc*sin(delta-alpha)-G*K*Vdc*cos(delta-alpha)));
if (!strpbrk(STATCOMptr->From->Type,"S")) {
if (!flagLimits)
JacElement(Jac,k+N,i+1,x0[i+4]*(Vk*sin(delta-theta))+x0[i+5]*(-Vk*cos(delta-theta)));
else JacElement(Jac,k+N,i+1,0.);
JacElement(Jac,k+N,i+2,x0[i+4]*(-Vk*I*cos(delta-theta))+x0[i+5]*(-Vk*I*sin(delta-theta)));
JacElement(Jac,k+N,i+3,x0[i+6]*(-G*K*Vk*sin(delta-alpha)+B*K*Vk*cos(delta-alpha))
+x0[i+7]*(B*K*Vk*sin(delta-alpha)+G*K*Vk*cos(delta-alpha)));
JacElement(Jac,k+N,i+4,x0[i+6]*(-G*Vdc*Vk*sin(delta-alpha)+B*Vdc*Vk*cos(delta-alpha))
+x0[i+7]*(B*Vdc*Vk*sin(delta-alpha)+G*Vdc*Vk*cos(delta-alpha)));
JacElement(Jac,k+N,i+5,x0[i+6]*(G*K*Vdc*Vk*cos(delta-alpha)+B*K*Vdc*Vk*sin(delta-alpha))
+x0[i+7]*(-B*K*Vdc*Vk*cos(delta-alpha)+G*K*Vdc*Vk*sin(delta-alpha)));
JacElement(Jac,k+N,k+1,x0[i+4]*(I*sin(delta-theta))+x0[i+5]*(-I*cos(delta-theta))
+x0[i+6]*(-G*K*Vdc*sin(delta-alpha)+B*K*Vdc*cos(delta-alpha))
+x0[i+7]*(B*K*Vdc*sin(delta-alpha)+G*K*Vdc*cos(delta-alpha)));
JacElement(Jac,k+N,k,x0[i+4]*(Vk*I*cos(delta-theta))+x0[i+5]*(Vk*I*sin(delta-theta))
+x0[i+6]*(-G*K*Vdc*Vk*cos(delta-alpha)-B*K*Vdc*Vk*sin(delta-alpha))
+x0[i+7]*(B*K*Vdc*Vk*cos(delta-alpha)-G*K*Vdc*Vk*sin(delta-alpha)));
}
}
i=i+7;
j=j+7;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -