⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc_subop.asv

📁 电力系统电压稳定研究的图形化软件
💻 ASV
字号:
mc_subop:=proc(ExpLimit,f_dim,j_rowdim,j_coldim)
local eqlhs,num_v,v_name,temp,kk,nn,ii,
      NumExpr,Remainder,Ftemp,k,n;
global F,Fopt,templist;
# ************* Set up dimensions
# f_dim:=rowdim(F):
# j_rowdim:=rowdim(j0):
# j_coldim:=coldim(j0):

# readlib(unassign):
# unassign('j0'):
# unassign('f1','f2'):

# ************* Form Optimized Equations ***************

if ExpLimit>0 then
  readlib(optimize):
  Ftemp:=[seq(f[k]=F[k,1],k=1..f_dim)]:
  for n from 1 to j_coldim do
        Ftemp:=[op(Ftemp),seq(J[k+(n-1)*j_rowdim-1]=F[k,n+1],k=1..j_rowdim)]:
  od:
  NumExpr:=f_dim+j_coldim*j_rowdim:
  Remainder:=NumExpr:
  Fopt:=[]:
  while Remainder>0 do
        kk:=NumExpr-Remainder:
    nn:=min(ExpLimit,Remainder):
        Fopt:=[op(Fopt),optimize([seq(Ftemp[kk+k],k=1..nn)])]:  
        Remainder:=Remainder-ExpLimit:
  od:
  #Fopt:=[op(Fopt),optimize([seq(Ftemp[k],k=1..NumExpr)])]:
else
# ************* Form Fopt, optimization depth=0 case **********
Fopt:=[seq(f[ks]=F[k,1],k=1..f_dim)]:
for n from 1 to j_coldim do
        Fopt:=[op(Fopt),seq(J[k+(n-1)*j_rowdim-1]=F[k,n+1],k=1..j_rowdim)]:
od:
fi:
F:='F':

# ************* Make the temp variable list ***********
eqlhs:=map(lhs,Fopt):
num_v:=nops(eqlhs):
templist:=[]:
ii:=0:
for n from 1 to num_v do
        v_name:=convert(eqlhs[n],string): 
        if(evalb(substring(v_name,1..1)= "t")) then
                ii:=ii+1:
                temp:=convert(v_name,symbol):
                templist:=[op({op(templist)} union {temp})]:
                #templist=augment(templist,[v_name]):
        fi:
od:
RETURN(eval(convert([nops(Fopt),nops(templist),num_v,ii],vector)))
end:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -