Difference between revisions of "M. Raja"

From ccitonlinewiki
Jump to: navigation, search
(Pertemuan 2 (18 November 2020))
Line 81: Line 81:
 
<youtube width="200" height="100">fDRuiu4sWy4</youtube>
 
<youtube width="200" height="100">fDRuiu4sWy4</youtube>
 
</div>
 
</div>
 +
 +
====Tugas Minggu 3====
 +
 +
model Trusses_PR
 +
parameter Integer N=10; //Global matrice = 2*points connected
 +
parameter Real A=8;
 +
parameter Real E=1.9e6;
 +
Real G[N,N]; //global
 +
Real Ginitial[N,N]; //global
 +
Real Sol[N]; //global dispplacement
 +
Real X[N]={0,0,0,0,0,0,0,-500,0,-500};
 +
Real R[N]; //global reaction force
 +
Real SolMat[N,1];
 +
Real XMat[N,1];
 +
 +
//boundary coundition
 +
Integer b1=1;
 +
Integer b2=3;
 +
 +
//truss 1
 +
parameter Real X1=0; //degree between truss
 +
Real k1=A*E/36;
 +
Real K1[4,4]; //stiffness matrice
 +
Integer p1a=1;
 +
Integer p1b=2;
 +
Real G1[N,N];
 +
 +
//truss 2
 +
parameter Real X2=135; //degree between truss
 +
Real k2=A*E/50.912;
 +
Real K2[4,4]; //stiffness matrice
 +
Integer p2a=2;
 +
Integer p2b=3;
 +
Real G2[N,N];
 +
 +
//truss 3
 +
parameter Real X3=0; //degree between truss
 +
Real k3=A*E/36;
 +
Real K3[4,4]; //stiffness matrice
 +
Integer p3a=3;
 +
Integer p3b=4;
 +
Real G3[N,N];
 +
 +
//truss 4
 +
parameter Real X4=90; //degree between truss
 +
Real k4=A*E/36;
 +
Real K4[4,4]; //stiffness matrice
 +
Integer p4a=2;
 +
Integer p4b=4;
 +
Real G4[N,N];
 +
 +
//truss 5
 +
parameter Real X5=45; //degree between truss
 +
Real k5=A*E/50.912;
 +
Real K5[4,4]; //stiffness matrice
 +
Integer p5a=2;
 +
Integer p5b=5;
 +
Real G5[N,N];
 +
 +
//truss 6
 +
parameter Real X6=0; //degree between truss
 +
Real k6=A*E/36;
 +
Real K6[4,4]; //stiffness matrice
 +
Integer p6a=4;
 +
Integer p6b=5;
 +
Real G6[N,N];
 +
 +
/*
 +
for each truss, please ensure pXa is lower then pXb (X represents truss element number)
 +
*/
 +
 +
algorithm
 +
 +
//creating global matrice
 +
K1:=Kekakuan_Matrix(X1);
 +
G1:=k1*Local_Global(K1,N,p1a,p1b);
 +
 +
K2:=Kekakuan_Matrix(X2);
 +
G2:=k2*Local_Global(K2,N,p2a,p2b);
 +
 +
K3:=Kekakuan_Matrix(X3);
 +
G3:=k3*Local_Global(K3,N,p3a,p3b);
 +
 +
K4:=Kekakuan_Matrix(X4);
 +
G4:=k4*Local_Global(K4,N,p4a,p4b);
 +
 +
K5:=Kekakuan_Matrix(X5);
 +
G5:=k5*Local_Global(K5,N,p5a,p5b);
 +
 +
K6:=Kekakuan_Matrix(X6);
 +
G6:=k6*Local_Global(K6,N,p6a,p6b);
 +
 +
G:=G1+G2+G3+G4+G5+G6;
 +
Ginitial:=G;
 +
 +
//implementing boundary condition
 +
for i in 1:N loop
 +
G[2*b1-1,i]:=0;
 +
G[2*b1,i]:=0;
 +
G[2*b2-1,i]:=0;
 +
G[2*b2,i]:=0;
 +
end for;
 +
 +
G[2*b1-1,2*b1-1]:=1;
 +
G[2*b1,2*b1]:=1;
 +
G[2*b2-1,2*b2-1]:=1;
 +
G[2*b2,2*b2]:=1;
 +
 +
//solving displacement
 +
Sol:=Gauss_Jordan(N,G,X);
 +
 +
//solving reaction force
 +
SolMat:=matrix(Sol);
 +
XMat:=matrix(X);
 +
R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);
 +
 +
end Trusses_PR;
 +
 +
====
 +
 +
class Trusses
 +
 +
parameter Integer N=8; //Global matrice = 2*points connected
 +
parameter Real A=0.001; //Area m^2
 +
parameter Real E=200e9; //Pa
 +
Real G[N,N]; //global
 +
Real Ginitial[N,N]; //global
 +
Real Sol[N]; //global displacement
 +
Real X[N]={0,0,-1035.2762,-3863.7033,0,0,-1035.2762,-3863.7033};
 +
Real R[N]; //global reaction force
 +
Real SolMat[N,1];
 +
Real XMat[N,1];
 +
 +
//boundary condition
 +
Integer b1=1;
 +
Integer b2=3;
 +
 +
//truss 1
 +
parameter Real X1=0; //degree between truss
 +
Real k1=A*E/1;
 +
Real K1[4,4]; //stiffness matrice
 +
Integer p1a=1;
 +
Integer p1b=2;
 +
Real G1[N,N];
 +
 +
//truss 2
 +
parameter Real X2=0; //degree between truss
 +
Real k2=A*E/1;
 +
Real K2[4,4]; //stiffness matrice
 +
Integer p2a=2;
 +
Integer p2b=3;
 +
Real G2[N,N];
 +
 +
//truss 3
 +
parameter Real X3=90; //degree between truss
 +
Real k3=A*E/1.25;
 +
Real K3[4,4]; //stiffness matrice
 +
Integer p3a=2;
 +
Integer p3b=4;
 +
Real G3[N,N];
 +
 +
//truss 4
 +
parameter Real X4=90+38.6598; //degree between truss
 +
Real k4=A*E/1.6;
 +
Real K4[4,4]; //stiffness matrice
 +
Integer p4a=1;
 +
Integer p4b=4;
 +
Real G4[N,N];
 +
 +
//truss 5
 +
parameter Real X5=90-38.6598; //degree between truss
 +
Real k5=A*E/1.6;
 +
Real K5[4,4]; //stiffness matrice
 +
Integer p5a=3;
 +
Integer p5b=4;
 +
Real G5[N,N];
 +
 +
/*
 +
for each truss, please ensure pXa is lower then pXb (X represents truss element number)
 +
*/
 +
 +
algorithm
 +
 +
//creating global matrice
 +
K1:=Kekakuan_Matrix(X1);
 +
G1:=k1*Local_Global(K1,N,p1a,p1b);
 +
 +
K2:=Kekakuan_Matrix(X2);
 +
G2:=k2*Local_Global(K2,N,p2a,p2b);
 +
 +
K3:=Kekakuan_Matrix(X3);
 +
G3:=k3*Local_Global(K3,N,p3a,p3b);
 +
 +
K4:=Kekakuan_Matrix(X4);
 +
G4:=k4*Local_Global(K4,N,p4a,p4b);
 +
 +
K5:=Kekakuan_Matrix(X5);
 +
G5:=k5*Local_Global(K5,N,p5a,p5b);
 +
 +
G:=G1+G2+G3+G4+G5;
 +
Ginitial:=G;
 +
 +
//implementing boundary condition
 +
for i in 1:N loop
 +
G[2*b1-1,i]:=0;
 +
G[2*b1,i]:=0;
 +
G[2*b2-1,i]:=0;
 +
G[2*b2,i]:=0;
 +
end for;
 +
 +
G[2*b1-1,2*b1-1]:=1;
 +
G[2*b1,2*b1]:=1;
 +
G[2*b2-1,2*b2-1]:=1;
 +
G[2*b2,2*b2]:=1;
 +
 +
//solving displacement
 +
Sol:=Gauss_Jordan(N,G,X);
 +
 +
//solving reaction force
 +
SolMat:=matrix(Sol);
 +
XMat:=matrix(X);
 +
R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);
 +
 +
end Trusses;
 +
 +
====Fungsi Panggil====
 +
 +
function Kekakuan_Matrix
 +
input Real A;
 +
Real Y;
 +
output Real X[4,4];
 +
Real float_error = 10e-10;
 +
 +
final constant Real pi=2*Modelica.Math.asin(1.0);
 +
 +
algorithm
 +
 +
Y:=A/180*pi;
 +
   
 +
X:=[(Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y);
 +
 +
Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.sin(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.sin(Y))^2;
 +
 +
-(Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y);
 +
 +
-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.sin(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.sin(Y))^2];
 +
 +
for i in 1:4 loop
 +
for j in 1:4 loop
 +
  if abs(X[i,j]) <= float_error then
 +
    X[i,j] := 0;
 +
  end if;
 +
end for;
 +
end for;
 +
 +
end Kekakuan_Matrix;
 +
 +
====
 +
 +
function Local_Global
 +
input Real Y[4,4];
 +
input Integer B;
 +
input Integer p1;
 +
input Integer p2;
 +
output Real G[N,N];
 +
 +
algorithm
 +
 +
for i in 1:B loop
 +
for j in 1:B loop
 +
    G[i,j]:=0;
 +
end for;
 +
end for;
 +
 +
G[2*p1,2*p1]:=Y[2,2];
 +
G[2*p1-1,2*p1-1]:=Y[1,1];
 +
G[2*p1,2*p1-1]:=Y[2,1];
 +
G[2*p1-1,2*p1]:=Y[1,2];
 +
 +
G[2*p2,2*p2]:=Y[4,4];
 +
G[2*p2-1,2*p2-1]:=Y[3,3];
 +
G[2*p2,2*p2-1]:=Y[4,3];
 +
G[2*p2-1,2*p2]:=Y[3,4];
 +
 +
G[2*p2,2*p1]:=Y[4,2];
 +
G[2*p2-1,2*p1-1]:=Y[3,1];
 +
G[2*p2,2*p1-1]:=Y[4,1];
 +
G[2*p2-1,2*p1]:=Y[3,2];
 +
 +
G[2*p1,2*p2]:=Y[2,4];
 +
G[2*p1-1,2*p2-1]:=Y[1,3];
 +
G[2*p1,2*p2-1]:=Y[2,3];
 +
G[2*p1-1,2*p2]:=Y[1,4];
 +
 +
end Local_Global;
 +
 +
====
 +
 +
function Gauss_Jordan
 +
input Integer N;
 +
input Real A[N,N];
 +
input Real B[N];
 +
output Real X[N];
 +
Real float_error = 10e-10;
 +
 +
algorithm
 +
 +
X:=Modelica.Math.Matrices.solve(A,B);
 +
for i in 1:N loop
 +
  if abs(X[i]) <= float_error then
 +
    X[i] := 0;
 +
  end if;
 +
end for;
 +
 +
end Gauss_Jordan;
 +
 +
====
 +
 +
function Reaction_Trusses1
 +
input Integer N;
 +
input Real A[N,N];
 +
input Real B[N,N];
 +
input Real C[N,N];
 +
Real X[8,1];
 +
output Real Sol[8];
 +
Real float_error = 10e-10;
 +
 +
algorithm
 +
X:=A*B-C;
 +
 +
for i in 1:N loop
 +
if abs(X[i,1]) <= float_error then
 +
  X[i,1] := 0;
 +
end if;
 +
end for;
 +
 +
for i in 1:N loop
 +
Sol[i]:=X[i,1];
 +
end for;
 +
 +
end Reaction_Trusses1;

Revision as of 14:55, 2 December 2020

Biodata

Nama  : M. Raja

NPM  : 1906379106

TTL  : Payakumbuh, 24 Juli 2001

Tempat Tinggal: Payakumbuh, Sumatera Barat

Golongan Darah: B

Hobi  : Travelling

Saat ini, saya adalah mahasiswa semester 3 program studi Teknik Mesin Universitas Indonesia. Saya memilih jurusan ini karena saya terinspirasi oleh bapak B.J. Habibie dan juga disarankan oleh saudara kandung saya untuk memilih jurusan ini. Saya sangat bersyukur bisa menjadi mahasiswa Teknik Mesin Universitas Indonesia, karena menurut saya tempat ini adalah tempat yang terbaik yang diizinkan Allah SWT untuk saya berkembang. Dengan ini, saya berharap Semoga ilmu yang saya pelajari di perkuliahan ini dapat saya terapkan untuk kebaikan orang banyak di suatu saat nanti dan menjadi ladang amal untuk diri saya pribadi.


Metode Numerik

Berdasarkan pemahaman saya, metode numerik adalah suatu cara dalam penyelesaian permasalahan yang menggunakan formulasi secara matematis dengan menggunakan operasi hitungan aritmatika dengan proses tambah, kurang, kali, dan bagi. Pada setengah semester pertama di mata kuliah metode numerik, kami dipandu oleh Bapak Dr. Ir. Engkos A. Kosasih, M.T. Beberapa topik yang dibahas yaitu:

1. Sistem Persamaan

2. Pseudocode

3. Turunan Numerik

4. Metode Newton Rhapson, Secant, dan Bisection

5. Interpolasi

6. Regresi Linear

Setelah UTS, setengah semester terkahir, perkuliahan Metode Numerik diisi oleh Bapak Dr. Ir. Ahmad Indra Siswantara


Pertemuan 1 (11 November 2020)

Pada pertemuan minggu ini, dipaparkan tujuan-tujuan pembelajaran metode numerik, yaitu: Tujuan: 1.Memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik, seperti: Persamaan aljabar, algorithma, persamaan diferensial parsial, dll.

2.Mengerti aplikasi metode numerik.

3.Mampu menerapkan metode numerik dallam persoalan teknik.

4.Mendapat nilai tambah sehingga kita menjadi orang yang lebih beradab.

Tugas Minggu 1

Kami diminta mempelajari Open Modelica, yaitu sebuah aplikasi untuk membuat modelling dan simulasi. Untuk mempelejari aplikasi tersebut, saya menonton beberapa video dari youtube:

Dengan mempelajari beberapa tutorial dasar penggunaan OpenModelica, saya mencoba untuk mengaplikasikannya ke persamaan GLBB, videonya sebagai berikut:

Pertemuan 2 (18 November 2020)

Dalam metode numerik, segalanya berpusat dalam perhitungan. Dalam proses perhitungan sendiri merupakan suatu seni untuk menyusun algoritma yang cepat, efisien, dan menghasilkan output yang akurat.

  • Dalam dunia Teknik, faktor cepat dan akurat memegang peranan yang penting dalam penggunaan di lapangan. Sebagai seorang calon Engineer, kita memerlukan suatu sistem yang dapat memenuhi dua aspek penting sebelumnya untuk menyelesaikan permasalahan secara efisien baik di lapangan maupun dalam proses perancangan.
  • Bahasa mesin yang cepat untuk mengeluarkan nilai outputnya adalah bahasa Fortran dan C. Namun beliau lebih memilih untuk menggunakan bahasa Modelica dalam mata kuliah Metode Numerik karena beberapa alasan:
 1. Modelica adalah bahasa pemodelan yang cukup mudah dipahami.
 2. Modelica dapat mengeluarkan hasil hitungan yang cepat karena menggunakan bahasa pemrograman C.
 3. Modelica merupakan suatu bahasa yang open source, sehingga gratis dan mudah diakses oleh semua orang, serta memiliki komunitas pengguna yang cukup banyak.

Dalam menggunakan OpenModelica, untuk melakukan suatu perhitungan, maka variabel haruslah didefinisikan.

  • Apabila variabel tersebut memiliki nilai; maka nilai tersebut haruslah ditulis dengan menggunakan parameter Real variabel=nilai
  • Apabila variabel tersebut merupakan persamaan atau sesuatu yang ingin kita cari, maka variabel tersebut harus dituliskan dalam equation.

Tugas Minggu 2

Kami diminta untuk mengaplikasikan Open Modelica lebih lanjut dan saya mencoba mengaplikasikannya untuk mencari solusi dari sebuah matrix menggunakan open modelica ini dan membandingkannya dengan hasil yang didapat secara manual, berikut adalah video tugas tersebut:

Tugas Minggu 3

model Trusses_PR parameter Integer N=10; //Global matrice = 2*points connected parameter Real A=8; parameter Real E=1.9e6; Real G[N,N]; //global Real Ginitial[N,N]; //global Real Sol[N]; //global dispplacement Real X[N]={0,0,0,0,0,0,0,-500,0,-500}; Real R[N]; //global reaction force Real SolMat[N,1]; Real XMat[N,1];

//boundary coundition Integer b1=1; Integer b2=3;

//truss 1 parameter Real X1=0; //degree between truss Real k1=A*E/36; Real K1[4,4]; //stiffness matrice Integer p1a=1; Integer p1b=2; Real G1[N,N];

//truss 2 parameter Real X2=135; //degree between truss Real k2=A*E/50.912; Real K2[4,4]; //stiffness matrice Integer p2a=2; Integer p2b=3; Real G2[N,N];

//truss 3 parameter Real X3=0; //degree between truss Real k3=A*E/36; Real K3[4,4]; //stiffness matrice Integer p3a=3; Integer p3b=4; Real G3[N,N];

//truss 4 parameter Real X4=90; //degree between truss Real k4=A*E/36; Real K4[4,4]; //stiffness matrice Integer p4a=2; Integer p4b=4; Real G4[N,N];

//truss 5 parameter Real X5=45; //degree between truss Real k5=A*E/50.912; Real K5[4,4]; //stiffness matrice Integer p5a=2; Integer p5b=5; Real G5[N,N];

//truss 6 parameter Real X6=0; //degree between truss Real k6=A*E/36; Real K6[4,4]; //stiffness matrice Integer p6a=4; Integer p6b=5; Real G6[N,N];

/* for each truss, please ensure pXa is lower then pXb (X represents truss element number)

  • /

algorithm

//creating global matrice K1:=Kekakuan_Matrix(X1); G1:=k1*Local_Global(K1,N,p1a,p1b);

K2:=Kekakuan_Matrix(X2); G2:=k2*Local_Global(K2,N,p2a,p2b);

K3:=Kekakuan_Matrix(X3); G3:=k3*Local_Global(K3,N,p3a,p3b);

K4:=Kekakuan_Matrix(X4); G4:=k4*Local_Global(K4,N,p4a,p4b);

K5:=Kekakuan_Matrix(X5); G5:=k5*Local_Global(K5,N,p5a,p5b);

K6:=Kekakuan_Matrix(X6); G6:=k6*Local_Global(K6,N,p6a,p6b);

G:=G1+G2+G3+G4+G5+G6; Ginitial:=G;

//implementing boundary condition for i in 1:N loop

G[2*b1-1,i]:=0;
G[2*b1,i]:=0;
G[2*b2-1,i]:=0;
G[2*b2,i]:=0;

end for;

G[2*b1-1,2*b1-1]:=1; G[2*b1,2*b1]:=1; G[2*b2-1,2*b2-1]:=1; G[2*b2,2*b2]:=1;

//solving displacement Sol:=Gauss_Jordan(N,G,X);

//solving reaction force SolMat:=matrix(Sol); XMat:=matrix(X); R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);

end Trusses_PR;

==

class Trusses

parameter Integer N=8; //Global matrice = 2*points connected parameter Real A=0.001; //Area m^2 parameter Real E=200e9; //Pa Real G[N,N]; //global Real Ginitial[N,N]; //global Real Sol[N]; //global displacement Real X[N]={0,0,-1035.2762,-3863.7033,0,0,-1035.2762,-3863.7033}; Real R[N]; //global reaction force Real SolMat[N,1]; Real XMat[N,1];

//boundary condition Integer b1=1; Integer b2=3;

//truss 1 parameter Real X1=0; //degree between truss Real k1=A*E/1; Real K1[4,4]; //stiffness matrice Integer p1a=1; Integer p1b=2; Real G1[N,N];

//truss 2 parameter Real X2=0; //degree between truss Real k2=A*E/1; Real K2[4,4]; //stiffness matrice Integer p2a=2; Integer p2b=3; Real G2[N,N];

//truss 3 parameter Real X3=90; //degree between truss Real k3=A*E/1.25; Real K3[4,4]; //stiffness matrice Integer p3a=2; Integer p3b=4; Real G3[N,N];

//truss 4 parameter Real X4=90+38.6598; //degree between truss Real k4=A*E/1.6; Real K4[4,4]; //stiffness matrice Integer p4a=1; Integer p4b=4; Real G4[N,N];

//truss 5 parameter Real X5=90-38.6598; //degree between truss Real k5=A*E/1.6; Real K5[4,4]; //stiffness matrice Integer p5a=3; Integer p5b=4; Real G5[N,N];

/* for each truss, please ensure pXa is lower then pXb (X represents truss element number)

  • /

algorithm

//creating global matrice K1:=Kekakuan_Matrix(X1); G1:=k1*Local_Global(K1,N,p1a,p1b);

K2:=Kekakuan_Matrix(X2); G2:=k2*Local_Global(K2,N,p2a,p2b);

K3:=Kekakuan_Matrix(X3); G3:=k3*Local_Global(K3,N,p3a,p3b);

K4:=Kekakuan_Matrix(X4); G4:=k4*Local_Global(K4,N,p4a,p4b);

K5:=Kekakuan_Matrix(X5); G5:=k5*Local_Global(K5,N,p5a,p5b);

G:=G1+G2+G3+G4+G5; Ginitial:=G;

//implementing boundary condition for i in 1:N loop

G[2*b1-1,i]:=0;
G[2*b1,i]:=0;
G[2*b2-1,i]:=0;
G[2*b2,i]:=0;

end for;

G[2*b1-1,2*b1-1]:=1; G[2*b1,2*b1]:=1; G[2*b2-1,2*b2-1]:=1; G[2*b2,2*b2]:=1;

//solving displacement Sol:=Gauss_Jordan(N,G,X);

//solving reaction force SolMat:=matrix(Sol); XMat:=matrix(X); R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);

end Trusses;

Fungsi Panggil

function Kekakuan_Matrix input Real A; Real Y; output Real X[4,4]; Real float_error = 10e-10;

final constant Real pi=2*Modelica.Math.asin(1.0);

algorithm

Y:=A/180*pi;

X:=[(Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y);

Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.sin(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.sin(Y))^2;

-(Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y);

-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.sin(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.sin(Y))^2];

for i in 1:4 loop

for j in 1:4 loop
  if abs(X[i,j]) <= float_error then
    X[i,j] := 0;
  end if;
end for;

end for;

end Kekakuan_Matrix;

==

function Local_Global input Real Y[4,4]; input Integer B; input Integer p1; input Integer p2; output Real G[N,N];

algorithm

for i in 1:B loop

for j in 1:B loop
    G[i,j]:=0;
end for;

end for;

G[2*p1,2*p1]:=Y[2,2]; G[2*p1-1,2*p1-1]:=Y[1,1]; G[2*p1,2*p1-1]:=Y[2,1]; G[2*p1-1,2*p1]:=Y[1,2];

G[2*p2,2*p2]:=Y[4,4]; G[2*p2-1,2*p2-1]:=Y[3,3]; G[2*p2,2*p2-1]:=Y[4,3]; G[2*p2-1,2*p2]:=Y[3,4];

G[2*p2,2*p1]:=Y[4,2]; G[2*p2-1,2*p1-1]:=Y[3,1]; G[2*p2,2*p1-1]:=Y[4,1]; G[2*p2-1,2*p1]:=Y[3,2];

G[2*p1,2*p2]:=Y[2,4]; G[2*p1-1,2*p2-1]:=Y[1,3]; G[2*p1,2*p2-1]:=Y[2,3]; G[2*p1-1,2*p2]:=Y[1,4];

end Local_Global;

==

function Gauss_Jordan input Integer N; input Real A[N,N]; input Real B[N]; output Real X[N]; Real float_error = 10e-10;

algorithm

X:=Modelica.Math.Matrices.solve(A,B); for i in 1:N loop

 if abs(X[i]) <= float_error then
   X[i] := 0;
 end if;

end for;

end Gauss_Jordan;

==

function Reaction_Trusses1 input Integer N; input Real A[N,N]; input Real B[N,N]; input Real C[N,N]; Real X[8,1]; output Real Sol[8]; Real float_error = 10e-10;

algorithm X:=A*B-C;

for i in 1:N loop

if abs(X[i,1]) <= float_error then
  X[i,1] := 0;
end if;

end for;

for i in 1:N loop

Sol[i]:=X[i,1];

end for;

end Reaction_Trusses1;