Difference between revisions of "Metnum03 - Gema Akbar Ilhamsyah"

From ccitonlinewiki
Jump to: navigation, search
(Pertemuan IV)
(Jawaban No.7)
 
(11 intermediate revisions by the same user not shown)
Line 195: Line 195:
  
 
[[File:ASD1.jpg|300px|center]]
 
[[File:ASD1.jpg|300px|center]]
 +
 +
== Pertemuan VI ==
 +
Assalamualaikum Wr.Wb.
 +
 +
Pada pertemuan kali ini kelas kami mengadakan muhasabah individual untuk individual masing-masing. Pak Dai memberi kesempatan kami untuk bermuhasabah diri serta menilai diri sendiri mengenai kemampuan kami dengan range 0-100. Hasil muhasabah yang saya lakukan adalah saya menilai diri bahwa saya untuk kemampuan teori serta beberapa pemahaman konsep metode numerik sudah paham walaupun untuk pengaplikasian metode numerik itu sendiri dengan mata kuliah lainnya masih kurang. Untuk pengaplikasian metode numerik dengan coding atau open modelica, saya sendiri masih kurang memahami dan masih harus banyak latihan kembali.
 +
 +
== Pertemuan VII ==
 +
Assalamualaikum Wr.Wb.
 +
 +
== Tugas Besar ==
 +
 +
[[File:Baga.png|center|600px]]
 +
 +
Diatas merupakan tugas besar yang diberikan di kelas Metnum 03. Kami disuru melakukan pemilihan material yang akan dipakai untuk membuat rangka serta kami harus melakukan optimasi untuk menentukan area yang optimal
 +
 +
Presedur pengerjaan tugas ini sendiri ada:
 +
 +
1. Menentukan asumsi dan constraint
 +
2. Researh data profil besi siku
 +
3. Permodelan Numerik
 +
4. Komputasi
 +
5. Optimasi
 +
6. Penentuan akhir material
 +
 +
'''1. Menentukan asumsi dan Constraint'''
 +
 +
Asumsi yang digunakan adalah :
 +
- Diasumsikan tidak ada bending karena bersifat truss
 +
- Beban terdistribusi pada node
 +
- Safety Factor = 2
 +
- Batas displacement 0,001m sebelum terjadi buckling
 +
- Variabel bebas
 +
 +
Constraint yang ada adalah
 +
1 Node 1,2,3,4 (lantai dasar) fixed
 +
2 Beban F1 dan F2 terdistribusi ke node sekitaranya, sehingga:
 +
3 Node 13 & 16 = 1000N
 +
4 Node 14 & 15 = 500N
 +
 +
'''2.Researh data profil besi siku'''
 +
 +
[[File:Man.png|center|600px]]
 +
 +
Gambar tabel diatas merupakan data yang saya yang saya dapatkan dari hasil pencarian. material yang saya gunakan adalah SIKU SS201. material ini memiliki Yield Strenght sebesar 292 MPa dan Modulus Elastisitas sebesar 197 GPa.
 +
 +
'''3.Permodelan numerik'''
 +
 +
- Coding dibawah ini merupakan coding yang saya gunakan untuk menghitung besar stress
 +
//define initial variable
 +
parameter Integer Points=size(P,1); //Number of Points
 +
parameter Integer Trusses=size(C,1); //Number of Trusses
 +
parameter Real Yield= (nilai yield) ; //Yield Strength Material(Pa)
 +
parameter Real Area= (nilai area) ;  //Luas Siku (Dimension=30x30x3mm)
 +
parameter Real Elas= (nilai elastisitas) ;    //Elasticity Material (Pa)
 +
//define connection
 +
parameter Integer C[:,2]=[ 1,5;  // (1)
 +
                          2,6;  // (2)
 +
                          3,7;  // (3)
 +
                          4,8;  // (4)
 +
                          5,6;  // (5)
 +
                          6,7;  // (6)
 +
                          7,8;  // (7)
 +
                          5,8;  // (8)
 +
                          5,9;  // (9)
 +
                          6,10; // (10)
 +
                          7,11; // (11)
 +
                          8,12; // (12)
 +
                          9,10; // (13)
 +
                          10,11;// (14)
 +
                          11,12;// (15)
 +
                          9,12; // (16)
 +
                          9,13; // (17)
 +
                          10,14;// (18)
 +
                          11,15;// (19)
 +
                          12,16;// (20)
 +
                          13,14;// (21)
 +
                          14,15;// (22)
 +
                          15,16;// (23)
 +
                          13,16];//(24)
 +
//define coordinates (please put orderly)
 +
parameter Real P[:,6]=[    0  ,0  ,0,1,1,1;    //node 1
 +
                            0.75,0  ,0,1,1,1;    //node 2
 +
                            0.75,0.6,0,1,1,1;    //node 3
 +
                            0  ,0.6,0,1,1,1;      //node 4
 +
                           
 +
                            0  ,0  ,0.3,0,0,0;  //node 5
 +
                            0.75,0  ,0.3,0,0,0;  //node 6
 +
                            0.75,0.6,0.3,0,0,0;  //node 7
 +
                            0  ,0.6,0.3,0,0,0;    //node 8
 +
                           
 +
                            0  ,0  ,1.05,0,0,0;  //node 9
 +
                            0.75,0  ,1.05,0,0,0;  //node 10 
 +
                            0.75,0.6,1.05,0,0,0;  //node 11
 +
                            0  ,0.6,1.05,0,0,0;    //node 12
 +
                           
 +
                            0  ,0  ,1.8,0,0,0;  //node 13
 +
                            0.75,0  ,1.8,0,0,0;  //node 14
 +
                            0.75,0.6,1.8,0,0,0;  //node 15
 +
                            0  ,0.6,1.8,0,0,0];  //node 16
 +
                           
 +
//define external force (please put orderly)
 +
parameter Real F[Points*3]={0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,-1000,
 +
                            0,0,-500,
 +
                            0,0,-500,
 +
                            0,0,-1000};
 +
//solution
 +
Real displacement[N], reaction[N];
 +
Real check[3];
 +
Real stress1[Trusses];
 +
Real safety[Trusses];
 +
Real dis[3];
 +
Real Str[3];
 +
protected
 +
  parameter Integer N=3*Points;
 +
  Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
 +
  Real err=10e-15, ers=10e-8;
 +
algorithm
 +
//Creating Global Matrix
 +
G:=id;
 +
for i in 1:Trusses loop
 +
  for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
  end for;     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                      cy*cx,cy^2,cy*cz;
 +
                      cz*cx,cz*cy,cz^2];
 +
    //Transforming to global matrix
 +
    g:=zeros(N,N);
 +
    for m,n in 1:3 loop
 +
      g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
 +
      g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
 +
    end for; 
 +
  G_star:=G+g;
 +
  G:=G_star;
 +
end for;
 +
//Implementing boundary
 +
for x in 1:Points loop
 +
  if P[x,4] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-2,a]:=0;
 +
      G[(x*3)-2,(x*3)-2]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,5] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-1,a]:=0;
 +
      G[(x*3)-1,(x*3)-1]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,6] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[x*3,a]:=0;
 +
      G[x*3,x*3]:=1;
 +
    end for;
 +
  end if;
 +
end for;
 +
//Solving displacement
 +
displacement:=Modelica.Math.Matrices.solve(G,F);
 +
//Solving reaction
 +
reaction:=(G_star*displacement)-F;
 +
//Eliminating float error
 +
for i in 1:N loop
 +
  reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 +
  displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
 +
end for;
 +
//Checking Force
 +
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
 +
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
 +
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)}); 
 +
for i in 1:3 loop
 +
  check[i] := if abs(check[i])<=ers then 0 else check[i];
 +
end for;
 +
//Calculating stress in each truss
 +
for i in 1:Trusses loop
 +
for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
 +
end for;     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                cy*cx,cy^2,cy*cz;
 +
                cz*cx,cz*cy,cz^2];   
 +
    Str:=(X*dis);
 +
    stress1[i]:=Modelica.Math.Vectors.length(Str);
 +
end for;
 +
//Safety factor
 +
for i in 1:Trusses loop
 +
  if stress1[i]>0 then
 +
    safety[i]:=Yield/stress1[i];
 +
  else
 +
    safety[i]:=0;
 +
  end if;
 +
end for;
 +
end TugasBesar;
 +
 +
- Ini merupakan permodelan untuk Curve Fitting
 +
 +
  model callcurve
 +
  parameter Real [8] X={1.11e-4,1.41e-4,1.71e-4,2.31e-4,3.04e-4,3.75e-4,7.44e-4,8.64e-4};
 +
  parameter Real [8] Y={273700 ,318800 ,381200 ,512800 ,683700 ,838000 ,1663100,1986400};
 +
  Real [3] Coe;
 +
algorithm
 +
  Coe:=Curve_Fitting(X,Y);
 +
end callcurve;
 +
 +
function Curve_Fitting
 +
  input Real X[:];
 +
  input Real Y[size(X,1)];
 +
  input Integer order=2;
 +
  output Real Coe[order+1];
 +
protected
 +
  Real Z[size(X,1),order+1];
 +
  Real ZTr[order+1,size(X,1)];
 +
  Real A[order+1,order+1];
 +
  Real B[order+1];
 +
algorithm
 +
  for i in 1:size(X,1) loop
 +
  for j in 1:(order+1) loop
 +
  Z[i,j]:=X[i]^(order+1-j);
 +
  end for;
 +
  end for;
 +
ZTr:=transpose(Z);
 +
A:=ZTr*Z;
 +
B:=ZTr*Y;
 +
Coe:=Modelica.Math.Matrices.solve(A,B); //Coe:=fill(2,size(Coe,1));
 +
 +
'''4.Komputasi'''
 +
 +
[[File:Bagai.png|center|600px]]
 +
 +
== Ujian Akhir Semester ==
 +
 +
=== Jawaban No.1 ===
 +
 +
[[File:Alma.jpg|center|400px]]
 +
 +
=== Jawaban No.2 ===
 +
 +
[[File:Ybc.jpg|center|400px]]
 +
 +
=== Jawaban No.3 ===
 +
 +
[[File:Alar.jpg|center|400px]]
 +
 +
=== Jawaban No.4 ===
 +
 +
[[File:Alar.jpg|center|400px]]
 +
 +
=== Jawaban No.5 ===
 +
 +
[[File:Iruo.jpg|center|400px]]
 +
 +
=== Jawaban No.6 ===
 +
 +
[[File:Iruo.jpg|center|400px]]
 +
 +
=== Jawaban No.7 ===
 +
 +
[[File:Ssad.png|center|400px]]

Latest revision as of 18:51, 14 January 2021

BIODATA DIRI

Zzz.jpg

بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيْمِ

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

Nama: Gema Akbar Ilhamsyah

NPM : 1806233386

Fakultas/Jurusan: Teknik/ Teknik Mesin

Tempat dan Tanggal lahir: Jakarta,7 Januari 2000

Pertemuan I

-Pemahaman Materi Sebelum UTS

Penjelasan Metode Numerik itu sendiri adalah teknik penyelesaian masalah dengan menggunakan operasi hitungan tambah, kurang, kali, bagi. Metode ini digunakan untuk membantu matematis untuk menyelesaikan permasalahan yang tidak dapat diselesaikan dengan metode analitik ataupun permasalahan yang sangat sulit dan memeakan banyak waktu untuk diselesaikan dengan metode analitik. Pada kesempatan kali ini saya akan mencoba menjabarkan apa saja materi mata kuliah yang dipelajari sebelum UTS, yaitu;

1. mencari akar akar persamaan non linear

Penyelesaian untuk mencari akar-akar persamaan non linear ada beberapa cara yaitu:

a)Metode Tertutup: Metode yang termasuk ke dalam golongan ini mencari akar di dalam selang [a,b]. Selang [a,b] sudah dipastikan berisi 
  minimal satu buah akar, karena itu metode jenis ini selalu berhasil menemukan akar. Dengan kata lain, lelarannya selalu konvergen (menuju) ke 
  akar, karena itu metode tertutup kadang-kadang dinamakan juga metode konvergen.
  
b)Metode Terbuka: Yang diperlukan pada metode ini, adalah tebakan awal akar, lalu dengan prosedur lelaran, kita menggunakannya untuk 
  menghitung hampiran akar yang baru. Pada setiap lelaran, hampiran akar lama yang dipakai untuk menghitung hampiran akar yang baru. Mungkin saja 
  hampiran akar yang baru mendekati akar sejati (konvergen), atau mungkin menjauhinya (divergen). Karena itu, metode terbuka tidak selalu berhasil 
  menemukan akar, kadang-kadang konvergen, kadangkala ia divergen.


2. turunan numerik

Untuk Penurunan Numerik, terdapat 3 metode, yaitu:

a)Forward difference aproximation
b)Backward difference aproximation
c)Central difference aproximation

3. regresi

Regresi merupakan alat ukur yg digunakan untuk mengetahui ada tidaknya korelasi antarvariabel. Analisis regresi lebih akurat dlm analisis korelasi karena tingkat perubahan suatu variabel terhdp variabel lainnya dpt ditentukan). Jadi pada regresi, peramalan atau perkiraan nilai variabel terikat pada nilai variabel bebas lebih akurat pula.

Regresi linier adalah regresi yang variabel bebasnya (variabel X) berpangkat paling tinggi satu. Utk regresi sederhana, yaitu regresi linier yg hanya melibatkan dua variabel (variabel X dan Y).

Y=a+bX

4. interpolasi

Pertemuan II

Pada pertemuan kali ini kami melakukan diskusi tentang software OpenModelica dengan Pak Dai. Lalu kami diberikan latihan untuk membuat perhitungan sederhana dengan software Open Modelica, yaitu menjumlahkan angka 10 dengan suatu variabel serta mencari rata-rata data yang didapat.

Saya Melakukan Perhitungan rumus y=x+10 dengan x=4

Sss.png
Sss1.png
Sss2.png
Sss3.png

dan saya mendapat y=14


Tugas 2 = Penyelesaian persamaan aljabar simultan

Aljabar Simultan adalah suatu penyelesaian matematik yang kompleks sehingga membutuhkan penyederhanaan dengan menggunakan bantuan software yang sudah disediakan seperti OpenModelica. Ada beberapa metode yang bisa digunakan pada Aljabar Simultan:

1. Metode Eliminasi Gauss

2. Metode Crammer

3. Metode Gauss Seidel

4. Metode Gauss-Jordan

Untuk tugas 2 ini saya menggunakan persamaan berikut:

1. X1+2X2+4X3=12

2. 3X1+5X2+X3=15

3. 3X1+4X2+6X3=18

Lalu penyelesaian pada OpenModelica seperti berikut:

Aaa.png
Aaa1.png
Aaa2.png

Saya mendapat penyelesaian persamaan diatas adalah: X1=3.5 , X2=0.75 , X3=0.75

Pertemuan III

Pada pertemuan 3 kali ini, kami berdiskusi dengan Pak Dai mengenai tugas 2 yang diberikan sebelumnya. Setelah itu Pak Dai menjelaskan langkah-langkah penyelesaian masalah dengan menggunakan Metode Numerik, yaitu:

1. Masalah Teknik 4. Model Numerik

2. Analisis Masalah 5. Komputer

3. Model matematis 6. Mendapatkan Solusi

Ddd1.png

Setelah itu Pak Dai memberikan latihan studi kasus yang akan diselesaikan di OpenModelica. Kami diminta untuk menghitung gaya yang bekerja pada suatu benda dengan mengubah nya menjadi matrix 3x3 lalu mencari penyelesaian nya di OpenModelica, seperti dibawah ini:

Qqq.png
Qqq1.png
Qqq2.png

Saya mendapat hasilnya, yaitu: X1=7.375 , X2=10.0552 , X3=12.5077

Tugas 3

G.png

Penyelesaian :

1. Mengubah problem menjadi node dan elemen

2. Konstanta kekakuan/stiffness constant

3. Persamaan elemen

4. Menggabungkan elemen

5. Menentukan kondisi batas dan beban

6. Pencarian solusi

- Menyelesaikan matriks:

Www.png
Www3.png

-Nilai gaya reaksi

Eee.png
Eee1.png

-Nilai Gaya Internal dan Normal Stress

O.png

Dari persamaan diatas, diselesaikan dengan software OpenModelica seperti dibawah ini:

Ttt.png
Ttt1.png

Hasil yang didapat adalah U2x=-0.0097 dan U6x=-0.012

Lalu hasil yang didapat dimasukan ke persamaan:

X.png

Dan didapat Internal force pada 5 elemen adalah 698lb

Untuk Normal Stress memakai rumus:

V.png

Dan Normal Stress pada 5 Elemen yang didapat sebesar 87lb/in^2


Pertemuan IV

Quiz

Flow Chart untuk penyelesaian soal:

IMG 5996.jpg
IMG 5997.jpg

Pertemuan V

Pada pertemuan tanggal 7 Desember 2020, saya di ajarkan Pak Ahmad Indra Siswantara tentang quiz no 4 dan 8 yang dibantu oleh teman saya Ahmad Mohammad Fahmi yang telah menyelesaikan kedua nomor pada quiz sebelumnya, ada beberapa tahapan dari setelah kita membuat flow chart seperti gambar yang terlampir pada laman ini, yang pertama adalah solve striffness, lalu menentukan matriks pada setiap elemen dan dilanjutkan dengan pengintegrasian ke matriks global dan boundary condition yang nantinya akan mendapatkan variable U (Defleksi).

Seperti yang sudah dijelaskan Fahmi pada asistensi hari minggu, setelah memasukkan setup code dari node-node, soal no.4 menggunakan solving stifftring cos^theta, sin^2theta, dan sin theta * cos theta. Lalu pada no.8 menggunakan (cos_x)^2, (cos_y)^2, (cos_z)^2, (cos_x*cos_y), (cos_x*cos_z), dan (cos_y*cos_z). Setelah memasukkan matriks element, dikerjakan matriks global yang mencakup semua nilai pada matriks lokal. Setelah itu, function GaussJordan digunakan untuk mendapat variabel U, R, dan check force. Lalu, fuction dimasukkan ke dalam class kembali. Setelah check model, dapat dilakukan simulasi yang didapatkan nilai U dan R pada masing-masing simulasi. Lalu, saya diberikan tugas oleh pak Ahmad Indra Siswantara yaitu soal berikut ini

ASD1.jpg

Pertemuan VI

Assalamualaikum Wr.Wb.

Pada pertemuan kali ini kelas kami mengadakan muhasabah individual untuk individual masing-masing. Pak Dai memberi kesempatan kami untuk bermuhasabah diri serta menilai diri sendiri mengenai kemampuan kami dengan range 0-100. Hasil muhasabah yang saya lakukan adalah saya menilai diri bahwa saya untuk kemampuan teori serta beberapa pemahaman konsep metode numerik sudah paham walaupun untuk pengaplikasian metode numerik itu sendiri dengan mata kuliah lainnya masih kurang. Untuk pengaplikasian metode numerik dengan coding atau open modelica, saya sendiri masih kurang memahami dan masih harus banyak latihan kembali.

Pertemuan VII

Assalamualaikum Wr.Wb.

Tugas Besar

Baga.png

Diatas merupakan tugas besar yang diberikan di kelas Metnum 03. Kami disuru melakukan pemilihan material yang akan dipakai untuk membuat rangka serta kami harus melakukan optimasi untuk menentukan area yang optimal

Presedur pengerjaan tugas ini sendiri ada:

1. Menentukan asumsi dan constraint
2. Researh data profil besi siku
3. Permodelan Numerik
4. Komputasi
5. Optimasi 
6. Penentuan akhir material

1. Menentukan asumsi dan Constraint

Asumsi yang digunakan adalah :

- Diasumsikan tidak ada bending karena bersifat truss
- Beban terdistribusi pada node
- Safety Factor = 2
- Batas displacement 0,001m sebelum terjadi buckling
- Variabel bebas

Constraint yang ada adalah

1 Node 1,2,3,4 (lantai dasar) fixed
2 Beban F1 dan F2 terdistribusi ke node sekitaranya, sehingga:
3 Node 13 & 16 = 1000N
4 Node 14 & 15 = 500N

2.Researh data profil besi siku

Man.png

Gambar tabel diatas merupakan data yang saya yang saya dapatkan dari hasil pencarian. material yang saya gunakan adalah SIKU SS201. material ini memiliki Yield Strenght sebesar 292 MPa dan Modulus Elastisitas sebesar 197 GPa.

3.Permodelan numerik

- Coding dibawah ini merupakan coding yang saya gunakan untuk menghitung besar stress

//define initial variable
parameter Integer Points=size(P,1); //Number of Points
parameter Integer Trusses=size(C,1); //Number of Trusses
parameter Real Yield= (nilai yield) ; //Yield Strength Material(Pa)
parameter Real Area= (nilai area) ;   //Luas Siku (Dimension=30x30x3mm)
parameter Real Elas= (nilai elastisitas) ;     //Elasticity Material (Pa)
//define connection
parameter Integer C[:,2]=[ 1,5;  // (1)
                          2,6;  // (2)
                          3,7;  // (3)
                          4,8;  // (4)
                          5,6;  // (5)
                          6,7;  // (6)
                          7,8;  // (7)
                          5,8;  // (8)
                          5,9;  // (9)
                          6,10; // (10)
                          7,11; // (11)
                          8,12; // (12)
                          9,10; // (13)
                          10,11;// (14)
                          11,12;// (15)
                          9,12; // (16)
                          9,13; // (17)
                          10,14;// (18)
                          11,15;// (19)
                          12,16;// (20)
                          13,14;// (21)
                          14,15;// (22)
                          15,16;// (23)
                          13,16];//(24)
//define coordinates (please put orderly)
parameter Real P[:,6]=[     0   ,0  ,0,1,1,1;     //node 1
                           0.75,0  ,0,1,1,1;    //node 2
                           0.75,0.6,0,1,1,1;     //node 3
                           0   ,0.6,0,1,1,1;      //node 4
                           
                           0   ,0  ,0.3,0,0,0;   //node 5
                           0.75,0  ,0.3,0,0,0;  //node 6
                           0.75,0.6,0.3,0,0,0;   //node 7
                           0   ,0.6,0.3,0,0,0;    //node 8
                           
                           0   ,0  ,1.05,0,0,0;   //node 9
                           0.75,0  ,1.05,0,0,0;  //node 10  
                           0.75,0.6,1.05,0,0,0;   //node 11
                           0   ,0.6,1.05,0,0,0;    //node 12
                           
                           0   ,0  ,1.8,0,0,0;   //node 13
                           0.75,0  ,1.8,0,0,0;  //node 14
                           0.75,0.6,1.8,0,0,0;   //node 15
                           0   ,0.6,1.8,0,0,0];   //node 16
                           
//define external force (please put orderly)
parameter Real F[Points*3]={0,0,0,
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,-1000, 
                           0,0,-500, 
                           0,0,-500, 
                           0,0,-1000}; 
//solution
Real displacement[N], reaction[N];
Real check[3];
Real stress1[Trusses];
Real safety[Trusses];
Real dis[3];
Real Str[3];
protected
 parameter Integer N=3*Points;
 Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
 Real err=10e-15, ers=10e-8;
algorithm
//Creating Global Matrix
G:=id;
for i in 1:Trusses loop
 for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
 end for;       
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
                     cy*cx,cy^2,cy*cz;
                     cz*cx,cz*cy,cz^2];
    //Transforming to global matrix
   g:=zeros(N,N); 
   for m,n in 1:3 loop
     g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
   end for;   
 G_star:=G+g;
 G:=G_star;
end for;
//Implementing boundary
for x in 1:Points loop
 if P[x,4] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-2,a]:=0;
     G[(x*3)-2,(x*3)-2]:=1;
   end for;
 end if;
 if P[x,5] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-1,a]:=0;
     G[(x*3)-1,(x*3)-1]:=1;
   end for;
 end if;
 if P[x,6] <> 0 then
   for a in 1:Points*3 loop
     G[x*3,a]:=0;
     G[x*3,x*3]:=1;
   end for;
 end if;
end for;
//Solving displacement
displacement:=Modelica.Math.Matrices.solve(G,F);
//Solving reaction
reaction:=(G_star*displacement)-F;
//Eliminating float error
for i in 1:N loop
 reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
end for;
//Checking Force
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});  
for i in 1:3 loop
 check[i] := if abs(check[i])<=ers then 0 else check[i];
end for;
//Calculating stress in each truss
for i in 1:Trusses loop
for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]); 
end for;       
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
                cy*cx,cy^2,cy*cz;
                cz*cx,cz*cy,cz^2];    
   Str:=(X*dis);
   stress1[i]:=Modelica.Math.Vectors.length(Str);
end for;
//Safety factor
for i in 1:Trusses loop
 if stress1[i]>0 then
   safety[i]:=Yield/stress1[i];
 else
   safety[i]:=0;
 end if; 
end for;
end TugasBesar;

- Ini merupakan permodelan untuk Curve Fitting

 model callcurve
 parameter Real [8] X={1.11e-4,1.41e-4,1.71e-4,2.31e-4,3.04e-4,3.75e-4,7.44e-4,8.64e-4};
 parameter Real [8] Y={273700 ,318800 ,381200 ,512800 ,683700 ,838000 ,1663100,1986400};
 Real [3] Coe;
algorithm
 Coe:=Curve_Fitting(X,Y);
end callcurve;
function Curve_Fitting
  input Real X[:];
  input Real Y[size(X,1)];
  input Integer order=2;
  output Real Coe[order+1];
protected
  Real Z[size(X,1),order+1];
  Real ZTr[order+1,size(X,1)];
  Real A[order+1,order+1];
  Real B[order+1];
algorithm
 for i in 1:size(X,1) loop
  for j in 1:(order+1) loop
  Z[i,j]:=X[i]^(order+1-j);
  end for;
 end for;
ZTr:=transpose(Z);
A:=ZTr*Z;
B:=ZTr*Y;
Coe:=Modelica.Math.Matrices.solve(A,B); //Coe:=fill(2,size(Coe,1));

4.Komputasi

Bagai.png

Ujian Akhir Semester

Jawaban No.1

Alma.jpg

Jawaban No.2

Ybc.jpg

Jawaban No.3

Alar.jpg

Jawaban No.4

Alar.jpg

Jawaban No.5

Iruo.jpg

Jawaban No.6

Iruo.jpg

Jawaban No.7

Ssad.png