Muhammad Rasyaad Dzaky
Profil
Saya adalah mahasiswa Teknik Mesin S1 angkatan 2017 dan S2 Teknik Mesin angkatan 2024
NPM :1706036425 & 2406375592
Materi Yang Telah dipelajari
Pada setengah semester sebelumnya kelas metode numerik 02 diajar oleh Pak Engkos. Beberapa materi metode numerik yang telah saya pahami dari kelas sebelum UTS diantaranya adalah:
- Interpolasi
- Ekstrapolasi
- Regresi
- Metode Newton Rhapson
- pseudo code
S1 Teknik Mesin
Pertemuan 11 November 2020
Salah satu fungsi dari mempelajari metode numerik yaitu untuk memahami bagaimana dasar dari sebuah aplikasi yang berfungsi untuk memudahkan komputasi sehingga dalam menjalankannya pengguna mengerti dan mengetahui bagaimana cara menggunakan aplikasi komputasi tersebut untuk menyelesaikan permasalahan yang kompleks dan memaksimalkan penggunaan aplikasi tersebut.
Disamping itu tujuan dari belajar Metode numerik ini adalah:
- Memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik
- Mengerti aplikasi metode numerik.
- Mampu menerapkan metode numerik dallam persoalan teknik.
- Mendapat nilai tambah/adab sehingga kita menjadi orang yang lebih beradab.
Tugas 1
Dalam tugas pertama ini saya perlu untuk mempelajari aplikasi openmodelica, dan membuat video youtube mengenai apa yang telah dipelajari. Berikut link mengenai penggunaan openmodelica untuk menyelesaikan sebuah persamaan sederhana
Pertemuan 18 November 2020
Dalam pertemuan kedua ini saya belajar mengenai penggunaan laman Class dan Function dalam openmodelica, kedua laman tersebut dapat panggil antara satu sama lain ke laman yang lain untuk digunakan sesuai kebutuhan. Saya berlatih menggunakan kedua laman ini untuk membuat laman fungsi yang berisi suatu variabel yang dinamai xtambahsepuluh dibagian fungsinya. Dan laman class diisi dengan besar nilai x-nya sehingga jika disimulasikan nanti hasilnya sesuai yaitu besar nilai variabel x yang dimasukkan sesuai keinginan dan nilainya ditambah dengan sepuluh. Disamping itu dijelaskan juga mengenai kelebihan openmodelica yaitu :
- Merupakan opensource software (gratis)
- Banyak penggunanya (mempermudah untuk bertanya jawab dengan pengguna lain)
- Menggunakan bahasa C++ (pengguna yang tidak memahami bahasa pemrograman tetap bisa menggunakannya dengan mudah)
- Banyak Simulasi yang tersedia sehingga dapat dikombinasikan untuk menyelesaikan permasalahan yang kompleks
Tugas 2
Dalam tugas kedua ini saya menyelesaikan matriks dengan menggunakan openmodelica, pertama tama saya membuat laman class yang berfungsi untuk memasukkan data dalam matriks tersebut, berikutnya saya membuat laman function untuk memasukkan code dari pengerjaan matriks tersebut, lalu function tersebut dipangil ke dalam laman class untuk digunakan dalam menyelesaikan permasalahan matriksnya.
Tugas 3
Dalam Tugas ketiga ini, diberikan permasalahan truss yang akan diselesaikan dengan menggunakan Open modelica
Quiz dan Diagram FlowChart
Tugas 4
Dalam tugas 4 ini diberikan permasalahan mengenai truss yang bersifat 3D, untuk prinsip pengerjaannya mirip seperti permasalahan truss yang 2D, pertama tama yang harus dilakukan yaitu membuat kelas trusses yang berisi matriks gaya, berikutnya membuat fungsi matriks kekakuan, lalu membuat fungsi matriks global, dan terakhir menyelesaikannya dengan menggunakan gauss jordan dan membuat matriks reaksi.
Master class Trusses3D //define initial variable parameter Integer Points=4; //Number of Points parameter Integer Trusses=3; //Number of Trusses parameter Real Area=0.0015; //Area parameter Real Elas=70e9; //Elasticity //define connection parameter Integer C[Trusses,2]=[1,2; 1,3; 1,4]; //define coordinates (please put orderly) parameter Real P[Points,3]=[2,0,0; 0,0,1.5; 0,0,-1.5; 0,1.5,0]; //define external force (please put orderly) parameter Real F[Points*3]={0,-5000,0, 0,0,0, 0,0,0, 0,0,0}; //define boundary parameter Integer b[:]={2,3,4}; //solution Real displacement[N], reaction[N]; protected parameter Integer N=3*Points; Integer boundary[3*size(b,1)]=cat(1,(3*b).-2,(3*b).-1,3*b); Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), err=10e-10, cx, cy, cz, L, E, X[3,3]; 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 Constant L:=Modelica.Math.Vectors.length(q2-q1); E:=Area*Elas/L; //Solving Matrix cx:=(q2[1]-q1[1])/L; cy:=(q2[2]-q1[2])/L; cz:=(q2[3]-q1[3])/L; X:=E*[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 i in boundary loop for j in 1:N loop G[i,j]:=id[i,j]; end for; 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; end Trusses3D; |
Tugas Besar
Tujuan dari tugas besar ini yaitu untuk melakukan pemilihan material terhadap rangka dengan bentuk seperti gambar dibawah yang dilakukan melalui optimisasi berdasarkan materi yang telah diajarkan.
Dalam menyelesaikan tugas besar ini terdapat dua variabel sebagai penentu dalam melakukan optimasi yaitu elastisitas dan luas penampang. kedua variabel ini akan dilakukan optimasi sehingga diperoleh material yang paling cocok dengan harga yang paling murah tanpa meninggalkan aspek safety
Asumsi
- Menggunakan trusses sehingga beban terdistribusi merata
- Tumpuan truss fixed
- Tidak ada bending yang diakibatkan oleh beban
Coding Openmodelica
model Tugas_Besar_Truss //Data tersedia parameter Integer Points=size(P,1); //Jumlah titik parameter Integer Trusses=size(C,1); //Jumlah Truss parameter Real Yield= (nilai yield strength) ; //Yield Strength Material parameter Real Area= (nilai luas) ; //Luas Siku Material parameter Real Elas= (elastisitas) ; //Elastisitas Material //define connection parameter Integer C[Trusses,2]=[1,5; //vertical 1st floor 2,6; //ver 1st floor 3,7; //ver 1st floor 4,8; //ver 1st floor 5,6; //horizontal 1st floor 6,7; //hor 1st floor 7,8; //hor 1st floor 5,8; //hor 1st floor 5,9; //ver 2st floor 6,10; //ver 2st floor 7,11; //ver 2st floor 8,12; //ver 2st floor 9,10; //hor 2st floor 10,11; //hor 2st floor 11,12; //hor 2st floor 9,12; //hor 2st floor 9,13; //ver 3t floor 10,14; //ver 3st floor 11,15; //ver 3st floor 12,16; //ver 3st floor 13,14; //hor 3st floor 14,15; //hor 3st floor 15,16; //hor 3st floor 13,16]; //hor 3st floor //Koordinat titik parameter Real P[Points,3]=[ 0 ,0 ,0,1,1,1; //1 0.75,0 ,0,1,1,1; //2 0.75,0.6,0,1,1,1; //3 0 ,0.6,0,1,1,1; //4 0 ,0 ,0.3,0,0,0; //5 0.75,0 ,0.3,0,0,0; //6 0.75,0.6,0.3,0,0,0; //7 0 ,0.6,0.3,0,0,0; //8 0 ,0 ,1.05,0,0,0; //9 0.75,0 ,1.05,0,0,0; //10 0.75,0.6,1.05,0,0,0; //11 0 ,0.6,1.05,0,0,0; //12 0 ,0 ,1.8,0,0,0; //13 0.75,0 ,1.8,0,0,0; //14 0.75,0.6,1.8,0,0,0; //15 0 ,0.6,1.8,0,0,0]; //16 //External force pada titik 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,-500, 0,0,-1000, 0,0,-1000, 0,0,-500}; //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 // 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; //Matriks Penyelesaian 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]; //Transformasi ke 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; //Boundary condition 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; //PenyelesaianDisplacement displacement:=Modelica.Math.Matrices.solve(G,F); //Penyelesaian Reaksi 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; //Perhitungan Stress di tiap 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 Tugas_Besar_Truss
Kurva Curve Fitting
model 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); end Curve_Fitting;
Golden Ratio
model Opt_Gold parameter Real xd[:]; parameter Real yd[size(xd,1)]; parameter Real xlo=87e-6; parameter Real xhi=504e-6; parameter Integer N=10; // maximum iteration parameter Real es=0.0001; // maximum error Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3]; Real xopt, fx; protected Real d, xl, xu, xint, R=(5^(1/2)-1)/2; algorithm xl := xlo; xu := xhi; y := Curve_Fitting(xd,yd); for i in 1:N loop d:= R*(xu-xl); x1[i]:=xl+d; x2[i]:=xu-d; f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3]; f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3]; xint:=xu-xl; if f1[i]>f2[i] then xl:=x2[i]; xopt:=x1[i]; fx:=f1[i]; else xu:=x1[i]; xopt:=x2[i]; fx:=f2[i]; end if; ea[i]:=(1-R)*abs((xint)/xopt); if ea[i]<es then break; end if; end for; end Opt_Gold;
Pilihan Material
Saya memilih material SS304 karena cukup umum digunakan dalam industri dan dalam pengerjaan ini saya menggunakan metode yang memvariasikan luas area dari material tersebut untuk nantinya dioptimisasi dan diperoleh nilai optimumnya
Dari data tersebut lalu dimasukkan ke dalam coding openmodelica yang telah ditulis diawal untuk memperoleh data stressnya, yang berikutnya dimasukkan dalam tabel dibawah ini
Sebelumnya, data harga dari material SS304 ini dicari terlebih dahulu dengan ketebalan tertentunya. Dan karena tidak semua ketebalan tersedia datanya maka dilakukan curve fitting untuk menutup data yang kurang dari tiap ketebalan material tersebut. proses ini dilakukan dengan menggunakan open modelica sehingga menghasilkan koefisien yang akan digunakan untuk menghitung data yang kurang tersebut sehingga dihasilkan data yang lengkap tiap ketebalannya seperti tabel diatas
Berikutnya data dari cost curve fitting dikalikan dengan total panjang yang dibutuhkan untuk membentuk frame yang diberikan sehingga diperoleh total harganya
Terakhir digunakan program excel untuk menentukan optimisasi dengan variabel antara rasio safety factor per harga dan total harga yang dibutuhkan untuk membentuk frame tersebut, dengan komponen sumbu x merupakan nilai variasi luas area dari truss tersebut
Titik potong tersebut merupakan hasil yang merupakan nilai paling optimal dari kedua variabel tersebut jika menggunakan material SS304
Maka nilai yang paling mendekati titik optimal dari material SS304 adalah yang memiliki area berkisar 0.000864 m^2
UAS
S2 Teknik Mesin
1. DAI5 Framework (Perkuliahan Pertama)
Berdasarkan pertemuan pertama pada tanggal 29/10/2024 di kelas Komputasi Teknik. Saya diperkenalkan dengan konsep kerangka berpikir yaitu DAI5. Konsep ini dikembangkan oleh Dr. Ahmad Indra Ssiswantara dan memiliki filosofi dasar yang menekankan pada Consciousness.
DAI5 menjelaskan bahwasannya sebagai manusia kita mengambil sebuah tindakan melalui dua proses utama yaitu Encoding (yang dilakukan oleh Hati) serta Decoding (yang dilakukan oleh akal pikiran. Kedua Hal tersebut tidak dapat dipisahkan dan memiliki porsinya masing-masing yang mana perlu untuk dijaga dengan seimbang dan tidak tumpang tindih.
DAI5 itu sendiri terdiri dari 4 tahapan utama yaitu:
1. Intention
2. Initial Thinking
3. Idealization
4. Instruction Set
Tugas 1
Pada tugas 1 ini, saya mencoba untuk melakukan percakapan dengan chatGPT mengenai finite element untuk persamaan PDE pada satu dimensi menggunakan metode weighted residual
Percakapan dimulai dengan prompt:
Can you derive finite element equations from 1D PDE governing equations using weighted residual in a very simple way along with an example
Jawaban ChatGPT: Tahapan yang dilakukan untuk menyelesaikan 1D PDE untuk finite element equation adalah sebagai berikut:
1. Mulai dengan menggunakan governing equation (1D PDE) 2. Diskritisasi domain dari finite element (memotong 'benda' menjadi beberapa node) 3. Menggunakan linear function antara tiap node sebagai aproksimasi 4. Formulasi Weighted residual untuk menilai besar error 5. Menyelesaikan persamaan finite element untuk tiap node
Contoh soal yang diberikan oleh chatGPT adalah sebagai berikut:
Suppose f(x) is constant, say f(x) = 10 and the rod has a length of 1. Soal tersebut menggambarkan sebuah rod yang memiliki L sebesar 1 yang mana dipanaskan pada satu ujungnya. Sehingga terdapat dua hal yang dapat diperoleh dengan PDE 1D ini yaitu: - Fungsi temperature di suatu lokasi pada rod - Perubahan temperatur akibat kenaikan atau penurunan suhu dari rod itu sendiri
Flowchart yang disarankan sebagai approach adalah sebagai berikut:
Start │ ▼ Define problem setup: rod length, nodes, heat source f(x) │ ▼ Make an initial guess for the temperature distribution │ ▼ Calculate residual (error) between guess and actual source │ ▼ Apply weights to residuals │ ▼ Adjust the guess to reduce error │ ▼ Is the error small enough? │ │ Yes No │ │ ▼ │ Finish Go back to calculate residuals |
Berikut Jawaban ChatGPT terkait coding python untuk menyelesaikan contoh tersebut:
Coding Python import numpy as np Step 1: Define problem setup rod_length = 1.0 # Length of the rod num_nodes = 10 # Number of points along the rod dx = rod_length / (num_nodes - 1) # Distance between nodes f = 10.0 # Heat source (constant) Step 2: Make an initial guess for temperature distribution # Initial guess is zero temperature everywhere temperature_guess = np.zeros(num_nodes) Step 3: Define a function to calculate residuals def calculate_residuals(temperature, f, dx): residuals = np.zeros_like(temperature) # Finite difference approximation for second derivative for i in range(1, num_nodes - 1): residuals[i] = (temperature[i-1] - 2*temperature[i] + temperature[i+1]) / (dx**2) - f return residuals Step 4: Iteratively adjust guess to reduce error tolerance = 1e-3 max_iterations = 100 for iteration in range(max_iterations): residuals = calculate_residuals(temperature_guess, f, dx) max_residual = np.max(np.abs(residuals)) if max_residual < tolerance: print(f"Solution converged after {iteration} iterations.") break #Adjust the guess based on residuals #Simple correction: reduce residual by adding a fraction of it to the guess for i in range(1, num_nodes - 1): temperature_guess[i] += 0.1 * residuals[i] # Output the approximate temperature distribution print("Approximate temperature distribution along the rod:") print(temperature_guess) |
Dan dengan mengintegrasikan framework DAI5 maka dapat diperoleh tahapan sebagai berikut:
1. Intention
- Tujuan: mendefinisikan mengenai apa yang akan dicapai dengan analisis finite element. Pada tugas 1 ini target dari intensi ini adalah untuk menganalisis distribusi temperature sepanjang rod ketika dipanaskan
- Kondisi Batas: Menentukan batas dari problem dan apa saja hal yang menjadi insight untuk menyelesaikan problem tersebut
2. Initial Thinking
- Mesh dan Elemen: Menentukan jumlah elemen atau node dari sistem yang akan dianalisis serta konfigurasi untuk memecah suatu sistem menjadi elemen yang kecil
- Shape Function: pemilihan persamaan untuk melakukan aproksimasi terhadap temperatur dari rod atau variabel lain dari elemen yang dianalisis
3. Idealization
- Persamaan Ideal: menggunakan persamaan ideal terlebih dahulu yang mana dalam kasus ini merupakan sebuah PDE dan melanjutkannya melalui simplifikasi untuk memenuhi batasan di tahap pertama tadi
- Simplifikasi: simplifikasi dilakukan dengan mengubah PDE menjadi bentuk yang lebih sederhana seperti dengan cara mengurangi order dari turunannya sehingga step idealization ini dapat dilakukan
4. Instruction Set
- Melakukan perhitungan dari persamaan untuk tiap elemen berdasarkan shape fuction diatas
- Memasukkan informasi dari kondisi batas terhadap matriks global yang berikutnya dilanjutkan terhadap penyelesaian persamaan tiap elemen
- Terakhir melakukan iterasi menggunakan approach yaitu weighted residual untuk mengurangi error sehingga hasil tercapai
Berikut tautan lampiran dokumentasi percakapan dengan ChatGPT terkait Tugas 1 ini: https://drive.google.com/file/d/1f0loFqz7Hn_-ickiU_Ptd137bXEmJ3Rf/view?usp=sharing
Tugas 2
Dalam tugas 2 ini, Saya mencoba untuk menerapkan konsep kontinuum dengan komputasi teknik. Diskusi ini saya mulai dengan dengan prompt ini:
Saya bertanya:
Can you give a practical example (along with simple calculator such as 1D Problem), In engineering that continuum mechanics treats materials as continuous, on integration of uninterrupted "conscious continuum" into the DAI5 framework
ChatGPT menjawab:
Pertama, kita mentranslasikan prompt tersebut kedalam framework DAI5 yang dimulai dengan:
1.Intention: Mendefinisikan intensi dari prompt tersebut yaitu mempelajari secara conscious mengenai continuum mechanics melalui contoh 2.Initial Thinking: Definisi problem dan boundary condition 3.Idealization: Pengembangan algoritma dengan melakukan asumsi solusi dan simplifikasi persamaan 4.Instruction set: Menghasilkan code python untuk dicoba dirunning
Step pertama yang dilakukan dalam continuum mechanics ialah menentukan asumsi. Dalam tugas 2 ini asumsi ini digunakan untuk membuat formulasi permasalahan dan persamaan yang digunakan. Pada Continuum Mechanics, diasumsikan bahwa sebuah batang yang akan dianalisis merupakan benda yang continous serta Homogen.
Dan berangkat dari asumsi tersebut persamaan deformasi dapat digunakan dengan menggunakan permisalan terdapat sebuah gaya axial dalam persamaan sebagai berikut.
d/dx(EA*(du/dx) = 0
Dimana u(x) merupakan displacement dari batang tersebut dari jarak x terhadap ujung tetap.
Berikutnya, boundary condition ditetapkan untuk contoh ini yaitu:
1. u(0) = 0 (tidak ada displacement pada fixed end). 2. EA*du/dx = L pada x = L (gaya pada free end)
Saya Bertanya:
Apakah bisa dirangkum menjadi lebih ringkas?
ChatGPT menjawab:
5 Steps: 1.Set up the equation and boundary conditions. 2.Approximate the solution with an assumed linear displacement function. 3.Apply boundary conditions to determine constants in the approximation. 4.Calculate results for the displacement distribution along the bar. 5.Validate by checking if the solution meets all boundary conditions.
Instruction step yang dapat digunakan untuk menyelesaikan contoh continuum mechanics adalah sebagai berikut.
Dan Diteruskan dengan code Python sebagai berikut.
Dari code yang dibuat oleh chatGPT saya kemudian untuk mencoba running code tersebut pada notebook jupyter yang memiliki fitur untuk melakukan running python code, namun dari hasil yang ditunjukkan dari running tersebut masih salah.
Kesalahan tersebut diduga karena penggunaan persamaan dasar yaitu linier tidak tepat sehingga menyebabkan persamaan displacement yang seharusnya menggunakan persamaan differensial ini justru dicoba denga persamaan linier. Akibatnya adalah ketika dimasukkan nilai dari x untuk mencari tau seberapa besar displacement pada titik tertentu, semuanya menghasilkan nilai yaitu 0
Saya mencoba untuk melakukan prompt ulang untuk mengulang proses membuat instruction set yaitu python code namun terjadi error pada ChatGPT dan saya telah mencapai batas dari limit diskusi sehingga perlu untuk menunggu terlebih dahulu
Beberapa hal yang saya pelajari ialah, tahapan dari konsep continuum ini memiliki tahapan yang mirip dengan tugas 1 tetapi yang membedakan adalah persamaan yang digunakan. Pada tugas 1 persamaan yang digunakan berkaitan dengan proses perpindahan kalor dari sebuah batang, sementara untuk tugas 2 ini persamaan yang digunakan adalah persamaan yang berhubungan dengan defleksi untuk mencari tau perubahan displacement dari tiap titik suatu batang. Ini diselesaikan dengan tahapan yaitu penyelesaian partial differential equation, penentuan boundary condition, yang mana terakhir dilanjutkan yaitu dengan membuat instruction set dengan bahasa phyton.
Monitoring dan Evaluasi Progress Belajar dengan Bantuan AI
Pada Kesempatan ini saya mencoba untuk melakukan evaluasi mengenai progress belajar dengan bantuan AI serta meminta feedback perihal perkembangan belajar saya.
Saya bertanya:
- Bisakah anda menyimpulkan hasil progres belajar untuk mata kuliah komputasi teknik dari semua hasil percakapan dan prompt saya, hitung seberapa banyak prompt yang di tulis dan kelompokkan materinya, dan berikan feedback.
- Bisakah anda menilai bagaimana cara saya belajar sejauh ini secara objektif dan berikan saran mengenai apa saja hal yang perlu dilakukan untuk improve berdasarkan kesimpulan anda mengenai hasil percakapan sejauh ini
ChatGPT menjawab:
Kesimpulan dari hasil pembelajaran yang dilakukan yaitu willingness untuk mencoba mendalami dengan kuat mengenai detail untuk bisa memperdalam pemahaman tersebut. Disamping itu karakteristik dari hasil percakapan anda yaitu belajar dengan terstruktur terutama dalam menerapkan framework DAI5 untuk membuat penyelesaian permasalahan dengan sistematis.
Beberapa hal yang dapat ditingkatkan adalah:
1. Step-by-step validation
Memastikan agar belajar untuk secara bertahap untuk sebelum mencoba problem yang lebih sulit
2. Lebih Sabar
Hal yang dapat dilakukan yaitu untuk tidak terlalu terburu-buru langsung mencoba lebih banyak hal yang menjadi dasar terlebih dahulu terkait topiknya untuk clarity
Dan total Percakapan saya dengan chatGPT yaitu berkisar 34 Prompt serta yang berkaitan langsung secara teknis mengenai Komputasi teknik yaitu berkisar 27 Prompt
Tugas Besar Komputasi Teknik
A. Project Title
Analisis Finite Element Pada Aliran 1 Dimensi Ulir Screw-Based Extruder Food 3D Printer
B. Author Complete Name
Muhammad Rasyaad Dzaky
C. Affiliation
Departemen Teknik Mesin
Universitas Indonesia
D. Abstract
Tugas Besar ini membahas mengenai analisis aliran 1D dari bahan makanan yaitu starch pada ulir dari screw-based extruder untuk teknologi food 3D printing. Tujuan utama dari tugas besar ini adalah memahami karakteristik aliran bahan makanan yang dipengaruhi oleh beberapa variabel seperti kecepatan aliran, tekanan, serta distribusi temperatur di sepanjang screw. Model yang digunakan mencakup beberapa aspek yang bersifat temperature-dependent seperti viskositas dan thermal conductivity. Berikutnya, melalui metode galerkin, persamaan PDE disederhanakan dan diselesaikan sehingga variabel seperti massa, momentum, dan distribusi temperatur dapat diperoleh pada tiap node dari ulir screw extruder ketika proses ektrusi sedang berjalan. Melalui tugas besar ini, diharapkan dapat menambah data penelitian topik terkait food 3D printing agar bisa mendukung tujuan besar yaitu sustainable and efficient food production
________________________________________
E. Author Declaration
1. Deep Awareness (of) I:
Tugas besar ini menambah awareness saya untuk menggali lebih dalam mengenai koneksi dari seseorang dengan Tuhan Yang Maha Esa. Hal ini saya dapatkan dari beberapa hal yaitu:
- menyadari desainer terbaik yaitu Tuhan Yang Maha Esa dari berbagai makhluk hidup maupun natural order dari berbagai benda mati juga.
- Menggunakan kesempatan ini untuk menambah rasa syukur karena semua interaksi antar benda mati pun sudah memiliki aturan yang ada dan dibuat oleh Tuhan Yang Maha Esa
2. Intention of the Project Activity:
Tugas besar ini bertujuan untuk memahami mengenai bagaimana karakteristik aliran dari bahan makanan yaitu starch dalam proses ekstrusi mengguakan screw untuk food 3D Printing. Tugas besar ini diharapkan dapat menambah pemahaman dari proses food 3d printing dan mendukung keilmuan ini agar semakin berkembang agar bisa menyelesaikan salah satu permasalahan utama yaitu food shortage dan sustainable food production
________________________________________
F. Introduction
Seiring dengan perkembangan zaman, kebutuhan pangan yang keberlanjutan, kostumisasi sesuai kebutuhan berbagai orang, dan bahan makanan alternatif semakin diperlukan. Salah satu teknologi yang dikembangkan saat ini untuk mencoba menjawab kebutuhan tersebut adalah Food 3D Printing. Beberapa potensi keunggulan dari food 3D printing ini adalah kemampuan untuk melakukan kostumisasi komposisi bahan makanan alternatif serta manipulasi variasi struktur makanan sehingga diperoleh pangan yang terpersonalisasi secara kebutuhan nutrisi serta digitalisasi dari nutrisi makanan itu sendiri (Liu et al.,2017)
Berdasarkan cara kerjanya, Food 3D Printer memiliki proses yang mirip dengan 3D Printing pada umumnya. Untuk membentuk sebuah benda 3D, proses pembuatan makanan dilakukan dari lapisan per lapisan sehingga terbentuk benda 3D, yang membedakan hanyalah material yang digunakan. Saat ini salah satu jenis food 3D printing yang paling umum adalah extrusion-based yang berarti material didorong melewati sebuah nozzle untuk proses ekstrusinya. (Gholamipour-Shirazi et al., 2020)
Salah satu hal yang menjadi gap dari extrusion-based food 3D Printing ialah masih terbatasnya penelitian jenis extrusion yang menggunakan screw untuk mendorong bahan makanan menuju nozzle dibandingkan dengan tipe lain seperti air-compressed dan syringe-based extrusion food 3D printing (Umeda et al., 2023). Maka dari itu tugas besar ini ditujukan dalam upaya memperkaya data untuk mendorong pemahaman dan keilmuan lebih jauh dari screw-based food 3D printing serta pada akhirnya mencapai pembelajaran untuk menambah rasa syukur dan consciousness dari penulis itu sendiri.
Initial Thinking:
- Problem Statement:
Untuk mencoba menangkap karakteristik aliran tersebut, model satu dimensi dipilih untuk menganalisis proses ekstrusi pada screw extruder. Salah satu hal pendukung dalam pemilihan model satu dimensi adalah variasi variabel seperti tekanan, kecepatan, dan temperatur screw pada cross-section dapan diaproksimasi sesuai dengan pembagian node pada analisis finite element. Jika melihat teknologi yang mirip seperti pada ekstrusi plastik, model 1 dimensi ini umum digunakan serta cukup untuk menangkap detail informasi penting dengan asumsi kondisi steady-state. Disamping itu, model 1 dimensi dipilih karena lebih mudah untuk proses iterasi desain screw, serta barrel untuk ekstruder food 3D printer ini sehingga akan bermanfaat saat dilanjutkan kepada proses validasi melalui eksperimen ketika penelitian ini dilanjutkan.
Berikutnya, simplifikasi yang akan digunakan pada tugas besar ini adalah:
- kondisi aliran steady-state
- gradien radial dari screw diasumsikan negligible
- material properties dari starch yang digunakan yaitu nilai rata-ratanya
Asumsi tersebut digunakan sehingga analisis dapat difokuskan kepada aliran longitudinal menuju nozzle sehingga diperoleh gambaran mengenai bagaimana karakteristik aliran starch di dalam extruder.
________________________________________
G. Methods & Procedures
Idealization:
Berdasarkan initial thinking diatas, kemudian asumsi tersebut dan model satu dimensi yang dipilih untuk analisis finite element dituangkan menjadi tahapan-tahapan secara garis besar garis besar dari penyelesaian tugas besar yang dijelaskan pada bagian berikut.
- Metodologi:
Terdapat dua aspek yang perlu diselesaikan dalam metodologi ini, pertama adalah aspek penurunan persamaan rumus yang diselesaikan secara matematis dan yang berikutnya adalah pembuatan instruction set yang akan dijalankan untuk melakukan proses komputasi numerik dari persamaan matematik yang diturunkan diawal untuk menentukan nilai dari 4 variabel utama yang disebutkan pada bagian diatas.
1. Persamaan untuk parameter variabel
- Persamaan konservasi massa
- Konservasi Momentum
[file gambar penurunan rumus persamaan momentum]
- Konservasi energi
[file gambar penurunan rumus persamaan momentum]
2. Model Rheology
- Pada model ini, bahan makanan starcg akan dimodelkan sebagai fungsi dari temperatur dan shear rate sesuai persamaan berikut.
[file gambar rumus model rheology]
3. Diskrititasi Finite Element
- Pada model ini, bahan makanan starcg akan dimodelkan sebagai fungsi dari temperatur dan shear rate sesuai persamaan berikut.
[file gambar diskritisasi]
4. Approach Galerkin (metode weighted residual, untuk membentuk persamaan yang lebih sederhana)
- Ini dilakukan untuk mendapatkan persamaan dengan weak formulation agar lebih mudah untuk dibuat instruction set dalam bentuk code dan lebih mudah untuk diselesaikan
[file gambar weak formulation]
5. Penentuan Boundary Condition
Dalam menentukan boundary condition, terdapat 3 data yang dapat dimasukkan kedalam persamaan untuk dilakukan komputasi yaitu:
- Pada Inlet: Flow rate atau kecepatan aliran
- Pada Outlet: Tekanan Atmosfer
- Boundary temperatur: Suhu dari volume barrel dari extruder
Instruksi Set (Instruction Set):
Berdasarkan hasil penurunan persamaan tersebut dibuat instruction set berbentuk code dengan menggunakan bahasa pemrograman yaitu Java dan menggunakan HTML agar bisa langsung dijalankan pada browser dari perangkat yang digunakan. Pembuatan code ini dilakukan dengan bantuan dari ChatGPT:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>1D Heat Transfer in Screw Extruder</title> <style> body { font-family: Arial, sans-serif; margin: 20px; text-align: center; } .container { max-width: 800px; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } button { background-color: #007BFF; color: white; border: none; padding: 10px 20px; margin: 20px; font-size: 16px; cursor: pointer; border-radius: 5px; } button:hover { background-color: #0056b3; } canvas { display: block; margin: 20px auto; border: 1px solid #ddd; } </style> </head> <body> <div class="container"> <h1>1D Heat Transfer in Screw Extruder</h1> <p>Enter material properties and boundary conditions, then click "Calculate" to solve the 1D heat transfer problem.</p> <label for="length">Length of Screw (m): </label> <input type="number" id="length" value="0.2" step="0.01" min="0.01"> <br><br> <label for="k">Thermal Conductivity (W/m.K): </label> <input type="number" id="k" value="0.5" step="0.1" min="0.1"> <br><br> <label for="q">Heat Generation (W/m³): </label> <input type="number" id="q" value="1000" step="100"> <br><br> <label for="t0">Temperature at x=0 (°C): </label> <input type="number" id="t0" value="30"> <br><br> <label for="qout">Heat Flux at x=L (W/m²): </label> <input type="number" id="qout" value="500"> <br><br> <button onclick="calculateHeatTransfer()">Calculate</button> <canvas id="resultsGraph" width="800" height="400"></canvas> </div> <script> function calculateHeatTransfer() { const length = parseFloat(document.getElementById('length').value); const k = parseFloat(document.getElementById('k').value); const q = parseFloat(document.getElementById('q').value); const t0 = parseFloat(document.getElementById('t0').value); const qout = parseFloat(document.getElementById('qout').value); const nNodes = 10; const dx = length / (nNodes - 1); const K = []; const F = []; for (let i = 0; i < nNodes; i++) { K[i] = Array(nNodes).fill(0); F[i] = 0; } for (let i = 0; i < nNodes - 1; i++) { const kElem = (k / dx) * [[1, -1], [-1, 1]]; K[i][i] += kElem[0][0]; K[i][i + 1] += kElem[0][1]; K[i + 1][i] += kElem[1][0]; K[i + 1][i + 1] += kElem[1][1]; F[i] += q * dx / 2; F[i + 1] += q * dx / 2; } K[0][0] = 1; F[0] = t0; K[nNodes - 1][nNodes - 1] += k / dx; F[nNodes - 1] += qout * dx; const T = solveLinearSystem(K, F); drawGraph(T, length, dx); } function solveLinearSystem(K, F) { const n = F.length; const T = Array(n).fill(0); for (let i = 0; i < n; i++) { for (let j = i + 1; j < n; j++) { const factor = K[j][i] / K[i][i]; for (let k = i; k < n; k++) { K[j][k] -= factor * K[i][k]; } F[j] -= factor * F[i]; } } for (let i = n - 1; i >= 0; i--) { T[i] = F[i] / K[i][i]; for (let j = 0; j < i; j++) { F[j] -= K[j][i] * T[i]; } } return T; } function drawGraph(T, length, dx) { const canvas = document.getElementById('resultsGraph'); const ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.beginPath(); ctx.moveTo(50, canvas.height - 50); ctx.lineTo(50, 50); ctx.lineTo(canvas.width - 50, canvas.height - 50); ctx.strokeStyle = '#000'; ctx.stroke(); ctx.font = '14px Arial'; ctx.fillText('Temperature (°C)', 10, 40); ctx.fillText('Position (m)', canvas.width - 100, canvas.height - 10); const xScale = (canvas.width - 100) / (T.length - 1); const yScale = (canvas.height - 100) / Math.max(...T); ctx.beginPath(); ctx.strokeStyle = 'red'; for (let i = 0; i < T.length; i++) { const x = 50 + i * xScale; const y = canvas.height - 50 - T[i] * yScale; if (i === 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } ctx.stroke(); } </script> </body> </html>
________________________________________
H. Results & Discussion
Hasil Utama:
Diskusi:
________________________________________
I. Conclusion, Closing Remarks, Recommendations
Kesimpulan:
________________________________________
J. Acknowledgments
________________________________________
K. References
- Liu, Z., Zhang, M., Bhandari, B., & Wang, Y. (2017). 3D printing: Printing precision and application in food sector. Trends in Food Science & Technology, 69, 83–94. https://doi.org/10.1016/j. tifs.2017.08.018
- Gholamipour-Shirazi, A., Kamlow, M.-A., Norton, I. T., & Mills, T. (2020). How to Formulate for Structure and Texture via Medium of Additive Manufacturing-A Review. Foods, 9(4). https://doi.org/10.3390/foods9040497
- Umeda, T., Kozu, H. & Kobayashi, I. Analysis of Pumpkin Paste Printability for Screw-Based 3D Food Printer. Food Bioprocess Technol 17, 188–204 (2023). https://doi.org/10.1007/s11947-023-03116-y ________________________________________
L. Appendices
________________________________________
2. Model Simulasi