Momen Inersia (Momen Area Orde 2) untuk Sembarang Bentuk dalam Pemrograman C

28 June 2012 by · Leave a Comment 
  

Untuk mencari nilai nilai inersia sebuah penampang, saya lebih sering menggunakan cara langsung dengan menggunakan integral atau menggunakan tabel jika bentuknya regular. Bentuk umum untuk menentukan nilai momen inersia diberikan dalam bentuk integrasi berikut.

\displaystyle I_{xx}=\int y^{2}dA
\displaystyle I_{yy}=\int x^{2}dA

Namun untuk bentuk polinomial, bentuk integral di atas sangat susah dikerjakan, apalagi jika menggunakan hitungan manual dengan tangan, pasti akan lama mendapatkan nilainya. Dengan bantuan komputer dan analisis metode numerik, momen inersia berbagai bentuk bisa dicari. Saya menemukan ada 2 cara numerik yang bisa dipakai untuk kasus ini.

Bentuk numerik pertama yang saya ambil dari paper Design of biaxially loaded short RC columns
of arbitrary cross section
diberikan dalam bentuk berikut:

\displaystyle I_{xx}=-\frac{1}{12}\sum_{i=1}^{n}(x_{i+1}-x_{i})(y_{i+1}+y_{i})(y_{i+1}^{2}+y_{i}^{2})
\displaystyle I_{yy}=\frac{1}{12}\sum_{i=1}^{n}(y_{i+1}-y_{i})(x_{i+1}+x_{i})(x_{i+1}^{2}+x_{i}^{2})

Bentuk numerik kedua yang diambil dari Wikipedia diberikan dalam bentuk berikut. Bentuk numerik di bawah ini sudah saya modifikasi sedikit karena pada saat penulisan ini, ada kesalahan bentuk yang diberikan di Wikipedia.

\displaystyle I_{xx}=\frac{1}{12}\sum_{i=1}^{n}(y_{i}^{2}+y_{i}y_{i+1}+y_{i+1}^{2})a_{i}
\displaystyle I_{yy}=\frac{1}{12}\sum_{i=1}^{n}(x_{i}^{2}+x_{i}x_{i+1}+x_{i+1}^{2})a_{i}
a_{i}=x_{i}y_{i+1}-x_{i+1}y_{i}

Dengan jumlah nodal (titik) polinomial sebanyak n, maka momen inersia bentuk apapun bisa dicari. Jika bentuk yang dicari membentuk kurva, garis kurva bisa dipecah menjadi beberapa elemen polinomial. Keakuratan hasil tergantung dari banyak elemen yang membentuk kurva tersebut. Yang perlu diperhatikan dari kedua bentuk di atas adalah pada saat nilai i=n, maka nilai i+1 kembali ke nilai i=1 atau ke titik awal. Hal lain yang perlu juga diperhatikan adalah garis polinomial yang dibentuk tidak boleh berpotongan agar hasil yang diperoleh bersifat valid. Selain itu koordinat titik perlu diperhatikan. Meskipun bentuk polinomialnya sama, namun jika diletakkan pada koordinat yang berbeda pada sumbu Cartesian, maka hasilnya juga akan berbeda. Umumnya di dalam teknik sipil, pusat sumbu O adalah titik pusat bidang yang kita tinjau tersebut. Tapi saya belum memasukkan perhitungan untuk mencari titik pusat bidang dalam program di bawah :lol:

Untuk bentuk pertama, program dalam C diberikan dalam potongan kode berikut.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
    Metode 1
*/
#include <stdio.h>
#include <math.h>
 
int main(){
    float x[200];
    float y[200];
    float total=0, a=0;
    float inertiaX=0, inertiaY=0;
    int i, n, p;
 
    // Init information
    printf("Total nodes (point): ");
    scanf("%i", &n);
 
    // Nodal Coordinat x,y
    for(i=0; i<n; i++){
        printf("Nodal number %i : ", i);
        scanf("%f", &x[i]);
        scanf("%f", &y[i]);
    }
 
 
    // Second moment area X
    for(i=0; i<n; i++){
        p = (i==n-1)?(0):(i+1);
        total = total + ( (x[p]-x[i]) * (y[p]+y[i]) * (pow(y[p],2)+pow(y[i],2)) );
    }
    inertiaX = -total / 12;
 
    // Second moment area Y
    total = 0;
    for(i=0; i<n; i++){
        p = (i==n-1)?(0):(i+1);
        total = total + ( (y[p]-y[i]) * (x[p]+x[i]) * (pow(x[p],2)+pow(x[i],2)) );
    }
    inertiaY = total / 12;
 
 
    printf("\n");
    printf("Momen xx: %f\n", inertiaX);
    printf("Momen yy: %f", inertiaY);
}

Untuk bentuk kedua diberikan dalam potongan kode berikut.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
    Metode 2
*/
#include <stdio.h>
#include <math.h>
 
int main(){
    float x[200];
    float y[200];
    float total=0, a=0;
    float inertiaX=0, inertiaY=0;
    int i, n, p;
 
    // Init information
    printf("Total nodes (point): ");
    scanf("%i", &n);
 
    // Nodal Coordinat x,y
    for(i=0; i<n; i++){
        printf("Nodal number %i : ", i);
        scanf("%f", &x[i]);
        scanf("%f", &y[i]);
    }
 
 
    // Second moment area X
    for(i=0; i<n; i++){
        p = (i==n-1)?(0):(i+1);
        a = x[i]*y[p] - x[p]*y[i];
        total = total + ( pow(y[i],2) + y[i]*y[p] + pow(y[p],2) ) * a;
    }
    inertiaX = total / 12;
 
    // Second moment area Y
    total = 0;
    for(i=0; i<n; i++){
        p = (i==n-1)?(0):(i+1);
        a = x[i]*y[p] - x[p]*y[i];
        total = total + ( pow(x[i],2) + x[i]*x[p] + pow(x[p],2) ) * a;
    }
    inertiaY = total / 12;
 
 
    printf("\n");
    printf("Momen xx: %f\n", inertiaX);
    printf("Momen yy: %f", inertiaY);
}

About Duken Marga
Engineer lulusan teknik sipil ITB yang senang dengan programming, internet, application development, sains, teknologi, dan matematika.

What's in your mind?




 

%d bloggers like this: