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",
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;