Anda di halaman 1dari 5

EXPORT RC_Datos:={};

M_mr(P)
BEGIN
TEXTOUT_P("",22,2+P,1);
END;
MRC_Calc(Tx2)
BEGIN
LOCAL Dx:=3.5,Dzb:=3.5,Dzt:=3,Nx:=3,Nz:=4;
LOCAL Tx1:="Ingrese la ";
IF INPUT({
{Nz,[0],{33,8,1}},
{Dzb,[0],{72,12,1}},
{Dzt,[0],{72,12,2}},
{Nx,[0],{33,8,4}},
{Dx,[0],{72,12,4}}
},
"Datos del Prtico",
{
"Niveles:",
"Altura baja=",
"Altura tpica=",
"Apoyos:",
"Distancia="},
{
Tx1+"cantidad de Niveles",
Tx1+"altura en el 1er nivel",
Tx1+"altura en el resto de niveles",
Tx1+"cantidad de empotramientos en la base",
Tx1+"distancia tpica entre apoyos"})==0 THEN RETURN Tx2; END;
LOCAL b_v:=.3,h_v:=.5,b_c:=.3,h_c:=.5,Ec:=2188197.88868;
IF INPUT({
{b_v,[0],{29,12,1}},
{h_v,[0],{29,12,2}},
{b_c,[0],{76,12,1}},
{h_c,[0],{76,12,2}},
{Ec,[0],{38,30,4}}
},
"Propiedades de elementos",
{
"(viga) b=",
"(viga) h=",
"(columna) b=",
"(columna) h=",
"Ec="},
{
Tx1+"base de la seccin de la viga",

Tx1+"altura de la seccin de la viga",


Tx1+"base de la seccin de la columna",
Tx1+"altura de la seccin de la columna",
"Ingrese el mdulo de elasticidad"})==0 THEN RETURN Tx2; END;
RECT;
LOCAL Ctr,Dtr,Etr,Ftr;
LOCAL Text:={"Rigideces Locales","Matriz Nula - "+(Nx*(Nz+1))+"x"+
(Nx*(Nz+1)),"Rigidez Global (Vigas)","Rigidez Global (Columnas)","Rigidez
Global","Rigidez Condensada"},Ptx:={5};
TEXTOUT_P("Calculando...",2,2,2);
FOR Ctr:=1 TO 6 DO
15+Ptx(0)Ptx(Ctr);
TEXTOUT_P(" "+Text(Ctr),20,Ptx(Ctr),2);
END;
Nx-1Nx;
TRUNCATE(Nx,0)Nx;
TRUNCATE(Nz,0)Nz;
LOCAL KGs:={};
LOCAL Base:={b_v,b_c,b_c};
LOCAL Altu:={h_v,h_c,h_c};
LOCAL Long:={Dx,Dzb,Dzt};
LOCAL Da,Db,Dc,Dd,De,Df;
FOR Ctr:=1 TO 3 DO
Base(Ctr)*Altu(Ctr)Da;
Da*Altu(Ctr)^2/6Db;
2*DbDc;
3*Db/Long(Ctr)Dd;
2*Dd/Long(Ctr)De;
IF Ctr==1 THEN
Ec/Long(Ctr)*[[Da,0,0,Da,0,0],[0,De,Dd,0,De,Dd],[0,Dd,Dc,0,Dd,Db],
[Da,0,0,Da,0,0],[0,De,Dd,0,De,Dd],[0,Dd,Db,0,Dd,Dc]]KGs(Ctr);
ELSE
Ec/Long(Ctr)*[[De,0,Dd,De,0,Dd],[0,Da,0,0,Da,0],[Dd,0,Dc,Dd,0,Db],
[De,0,Dd,De,0,Dd],[0,Da,0,0,Da,0],[Dd,0,Db,Dd,0,Dc]]KGs(Ctr);
END;
END;
M_mr(Ptx(1));
LOCAL KGa:=[[0]],KGb,KGc,Nd,Ejes;
{}RC_Datos;
(Nx+1)*(Nz+1)Da;
3*DaDb;
FOR Ctr:=1 TO Db DO 0KGa(Ctr,Ctr); END;
KGaKGb;
KGaKGc;
MAKELIST("123",X,1,Da-Nx-1,1)Nd;
M_mr(Ptx(2));

//Vigas y GL Nudos (libres)


FOR Ctr:=1 TO Nz DO
2*Ctr-1+NzDa;
3*NzDb;
3*(Ctr-1)Dc;
CtrDd;
{Ctr,Da,Da+1}Ejes;
FOR Dtr:=1 TO 3 DO Ejes(Dtr)Nd(Ctr,Dtr); END;
FOR Dtr:=1 TO Nx DO
Db+DcDc;
{Dc+1,Dc+2,Dc+3,Ejes(1),Ejes(2),Ejes(3)}Ejes;
Nz+DdDd;
FOR Etr:=1 TO 3 DO Ejes(Etr)Nd(Dd,Etr); END;
FOR Etr:=1 TO 6 DO
FOR Ftr:=1 TO 6 DO
KGs(1,Etr,Ftr)+KGa(Ejes(Etr),Ejes(Ftr))KGa(Ejes(Etr),Ejes(Ftr));
END;
END;
END;
END;
M_mr(Ptx(3));
//Columnas base
Nx*Nz+1Da;
FOR Ctr:=1 TO Nx+1 DO
Dc+3Dc;
{Dc+1,Dc+2,Dc+3,Nd(Da,1),Nd(Da,2),Nd(Da,3)}Ejes;
Da-NzDa;
FOR Etr:=1 TO 6 DO
FOR Ftr:=1 TO 6 DO
KGs(2,Etr,Ftr)+KGb(Ejes(Etr),Ejes(Ftr))KGb(Ejes(Etr),Ejes(Ftr));
END;
END;
END;
//Columnas tpicas
0Da;
FOR Ctr:=1 TO Nx+1 DO
Da+1Da;
{0,0,0,Nd(Da,1),Nd(Da,2),Nd(Da,3)}Ejes;
FOR Dtr:=1 TO Nz-1 DO
Da+1Da;
{Ejes(4),Ejes(5),Ejes(6),Nd(Da,1),Nd(Da,2),Nd(Da,3)}Ejes;
FOR Etr:=1 TO 6 DO
FOR Ftr:=1 TO 6 DO
KGs(3,Etr,Ftr)+KGc(Ejes(Etr),Ejes(Ftr))KGc(Ejes(Etr),Ejes(Ftr));
END;
END;
END;
END;

M_mr(Ptx(4));
KGa+KGb+KGcRC_Datos(2);
KGb+KGcRC_Datos(3);
KGaRC_Datos(4);
M_mr(Ptx(5));
3*(Nx+1)*NzDa;
subMat(RC_Datos(2),1,1,Nz,Nz)KGa;
subMat(RC_Datos(2),1,Nz+1,Nz,Da)KGb;
subMat(RC_Datos(2),Nz+1,Nz+1,Da,Da)KGc;
KGa-KGb*inv(KGc)*TRN(KGb)RC_Datos(1);
M_mr(Ptx(6));
WAIT(.5);
RETURN "Consulta los Datos";
END;
MRC_Matr(Etq)
BEGIN
LOCAL Opc:=1,Kcondensada,Kglobal,Kglobal_columnas,Kglobal_vigas;
WHILE CHOOSE(Opc,Etq(1),Etq(2)) DO
CASE
IF Opc==1 THEN RC_Datos(1)Kcondensada; EDITMAT(Kcondensada); END;
IF Opc==2 THEN RC_Datos(2)Kglobal; EDITMAT(Kglobal); END;
IF Opc==3 THEN RC_Datos(3)Kglobal_columnas; EDITMAT(Kglobal_columnas);
END;
IF Opc==4 THEN RC_Datos(4)Kglobal_vigas; EDITMAT(Kglobal_vigas); END;
END;
END;
RETURN Etq(3);
END;
MRC_Reslt(Etq)
BEGIN
LOCAL Opc:=1;
IF CHOOSE(Opc,Etq(1),Etq(2)) THEN
RETURN RC_Datos(Opc);
ELSE RETURN Etq(3); END;
END;
EXPORT RigidCondens()
BEGIN
LOCAL Opc:=1,Tx1:=1;
IF SIZE(RC_Datos) THEN 2Opc; END;
IF CHOOSE(Opc,"Accin","Calcular Modelo ","Matrices: Ver","Matrices: Salida","
Limpiar ") THEN
IF Opc==1 THEN MRC_Calc(Tx1);
ELSE

IF SIZE(RC_Datos) THEN
LOCAL Mrsl:={"Matrices",{"Rigidez Condesada","Rigidez Global","Rigidez Global
(Columnas)","Rigidez Global (Vigas)"},Tx1};
CASE
IF Opc==2 THEN MRC_Matr(Mrsl); END;
IF Opc==3 THEN MRC_Reslt(Mrsl); END;
DEFAULT {}RC_Datos; "Memoria Liberada";
END;
ELSE RETURN "Sin Datos"; END;
END;
ELSE RETURN Tx1; END;
END;

Anda mungkin juga menyukai