Ver Mensaje Individual
  #3  
Antiguo 11-05-2004
Majo Majo is offline
Miembro
 
Registrado: jun 2003
Posts: 43
Reputación: 0
Majo Va por buen camino
El código es el siguiente:

Código:
procedure ModificarJacobianaConTRFS(var Jacobiana:TRealMatriz;Y:TVariantMatriz;Vi,Di:TRealVector;var TapAnterior:Double);
var IndiceTRFs:TIntegerArray;
         vectorEcuacionTRF:TRealVector;
         i,j,NumBarraReg,NumBarraNR,NumeroBarraPosTap:integer;
         Vk,Vm,Ykm,Ykk,Ykm2,Ymm:Variant;
         dPmDTk,dPkDTk,dQmDTk,dQkDTk,Nkm,Lmk2,Lkm,Nmk,Lmk,Radio,Theta,Radio1,Theta1,Tap2:Double;
         puta:integer;
begin
  IndiceTRFs:=BuscarIndicesTRFs();
  for j:=0 to length(IndiceTRFs)-1 do
  begin
  Setlength(VectorEcuacionTRF,Length(jacobiana));
    with form2.Components[IndiceTRFs[j]] as TTransformador do
    begin

      Tap2:=(form2.Components[IndiceTRFs[j]] as TTransformador).Tap;
      NumBarraReg:=BuscarNroDeBarraDadoUsrNumBarra(NumeroBarraARegular);
      NumBarraNR:=BuscarNroDeBarraDadoUsrNumBarra(NumeroBarraNoRegulada);
      NumeroBarraPosTap:=BuscarNroDeBarraDadoUsrNumBarra(NumeroBarraLadoTap);
      Vk:=VarcomplexCreate(TensionARegular,Di[NumBarraReg]);
      Vm:=VarcomplexCreate(Vi[NumBarraNR],Di[NumBarraNR]);
      Ykm:=Admy;
      Nmk:=(Vm*Ykm*conjugado(Vk)).Real;
      Lmk:=(Vm*Ykm*conjugado(Vk)).imaginary;
      Nkm:=(Vk*Ykm*conjugado(Vm)).Real;
      Lkm:=(Vk*Ykm*conjugado(Vm)).imaginary;

      if NumBarraReg = NumeroBarraPosTap then
      begin
        DPkDTk:=Nkm-2*Tap*TensionARegular*TensionARegular*Ykm.real;
        DQkDTk:=Lkm+2*Tap*TensionARegular*TensionARegular*(Ykm.Imaginary);
        DPmDTk:=Nmk;
        DQmDTk:=Lmk;

        Y[NumBarraReg][NumBarraReg]:=Y[NumBarraReg][NumBarraReg]+(Tap*Tap*Ykm)-(TapAnterior*TapAnterior*Ykm);
        Y[NumBarraNR][NumBarraReg]:=-Tap*Ykm;
        Y[NumBarraReg][NumBarraNR]:=-Tap*Ykm;

      end
      else
      begin
        DPmDTk:=Nmk-2*Tap*Vi[NumBarraNR]*Vi[NumBarraNR]*Ykm.Real;
        DQmDTk:=Lmk+2*Tap*Vi[NumBarraNR]*Vi[NumBarraNR]*(Ykm.Imaginary);
        DPkDTk:=Nkm;
        DQkDTk:=Lkm;
        Y[NumBarraNR][NumBarraNR]:=Y[NumBarraNR][NumBarraNR]+(Tap*Tap*Ykm)-(TapAnterior*TapAnterior*Ykm);
        Y[NumBarraNR][NumBarraReg]:=-Tap*Ykm;
        Y[NumBarraReg][NumBarraNR]:=-Tap*Ykm;
      end;
     TapAnterior:=Tap;
    end;
    for i:=0 to NroDeBarras-2 do
    begin
      vectorEcuacionTRF[i]:=0;
      if (NumBarraReg-1)= i then
      begin
        vectorEcuacionTRF[i]:=DPkDTk;
        vectorEcuacionTRF[i+NroDeBarras-1]:=DQkDTk;
      end;
      if (NumBarraNR-1)= i then
      begin
        vectorEcuacionTRF[i]:=DPmDTk;
        vectorEcuacionTRF[i+NroDeBarras-1]:=DQmDTk;
      end;
    end;

    for i:=0 to NroDeBarras-2 do
    begin
       Jacobiana[i][NumBarraReg-1]:=vectorEcuacionTRF[i];
    end;
  end;
end;

Última edición por Majo fecha: 11-05-2004 a las 17:05:55.
Responder Con Cita