Anda di halaman 1dari 114

METODE ELEMEN HINGGA RANAH

FREKUENSI
UNTUK
SIMULASI PANDU GELOMBANG DALAM
MATLAB/OCTAVE

A.D. Garnadia,2,†
H. Alatasa,1
S. Nurdiati2
L. Yuliawatia,3

-
0

A.D. Garnadia,2,† , H. Alatasa,1 , S. Nurdiati2 , L. Yuliawatia,3


a Research Cluster for Dynamics and Complex System,
FMIPA, Institut Pertanian Bogor,
1 Dept. Fisika, Institut Pertanian Bogor,
2 Dept. Matematika, Institut Pertanian Bogor

Jl. Meranti, Kampus IPB Darmaga, Bogor 16680


3 STKIP Sebelas April Sumedang , Sumedang

Penulis Utama
0

PERSAMAAN DIFERNSIAL PARSIAL,


ANALITIK DAN METODE ELEMEN HINGGA, SERTA APLIKASINYA

METODE ELEMEN HINGGA RANAH FREKUENSI


UNTUK
SIMULASI PANDU GELOMBANG DALAM MATLAB/OCTAVE

ISBN :
e-ISBN :
DOI :10.31227/osf.io/96ksb
1

Dedikasi
0

Blank
Contents

1 PERSAMAAN HELMHOLTZ 3
1.1 Persamaan Helmholtz
dalam Elektro-Magnetik . . . . . . . . . . . . . . . . . . . . . 4

2 Metode Elemen Hingga Ranah Frekuensi :


Hampiran Galerkin 9

3 LATIHAN 35
3.1 Latihan 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Latihan 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Latihan 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4 Latihan 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5 Latihan 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.6 Latihan 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7 Latihan 7. Tomografi Microwave memanjang [4] . . . . . . . . 44
3.8 Latihan 8. Tomografi Microwave Melintang . . . . . . . . . . . 46
3.9 Latihan 9. Biosensor bakteria berlapis [24] . . . . . . . . . . . 47
3.10 Latihan 10. Biosensor resonator cincin [5] . . . . . . . . . . . 49
3.11 Latihan 11. Biosensor sisir/bergerigi plasmonik [17] . . . . . . 51
3.12 Latihan 12. Biosensor plasmonik berceruk dalam [18] . . . . . 52
3.13 Latihan 13. SPR (Surface Plasmon Resonance) Sensor [6] . . . 53
3.14 Latihan 14. Sel Surya Plasmonik [29] . . . . . . . . . . . . . . 54
3.15 Latihan 15. Sel Surya Plasmonik dengan PML [29] . . . . . . 55
3.16 Latihan 16. Alat uji Non Destructive Testing pada gelombang
THz [15] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.17 Latihan 17. Nanowire [30] . . . . . . . . . . . . . . . . . . . . 58
3.18 Latihan 18. Antena Nano [7] . . . . . . . . . . . . . . . . . . . 59
3.19 Latihan 19. Antena Nano Pemanen Energi Surya [9] . . . . . . 60

1
CONTENTS i

3.20 Latihan 20. Antena Nano Asimetrik [8] . . . . . . . . . . . . . 61

4 Penutup 63
ii CONTENTS
PRAKATA

Buku cilik (buklik)/buklet ini, merupakan sebuah tutorial bagaimana mengim-


plementasikan metode elemen hingga berdasarkan metode Galerkin untuk
menyelesaikan persamaan Helmholtz, atau lebih dikenal sebagai Metode El-
emen Hingga Ranah Frekuensi. Persamaan Helmholtz merupakan model dari
persamaan gelombang skalar, yang muncul dari sejumlah fenomena fisis. Mis-
alnya dalam Elektromagnetika untuk memperoleh informasi perilaku pandu
gelombang (waveguide), persamaan Helmholtz perlu diselesaikan secara nu-
merik, mengingat bentuk geometrik bahan penyusun menyebabkan solusi
analitik sulit didapat. Persamaan gelombang skalar untuk pandu gelombang
isotropik homogen digunakan untuk memperkenalkan metode elemen hingga
(MEH). Untuk lebih sederhananya, digunakan elemen segitiga orde pertama.
Tulisan ini menunjukkan bagaimana pengetahuan tentang metode elemen
hingga (Finite Element Method, FEM) dapat dipelajari dalam waktu singkat
dengan menggunakan MATLAB/OCTAVE. Hal ini menunjukkan bagaimana
pengetahuan yang diperoleh dapat diperluas untuk masalah elektromagnetik
lainnya.
Berbagai studi kasus diberikan sebagai latihan. Studi kasus yang diberikan,
berasal dari bidang yang berkaitan dengan aplikasi fisika terkait bidang hay-
ati yang menjadi misi utama yang diemban penulis. Bahkan beberapa studi
kasus dirancang agar dapat digunakan untuk membantu penelitian maha-
siswa S1/S2/S3, serta untuk penelitian yang sifatnya garda depan (research
frontier) dalam bidang Komputasi Fisika, Komputasi Matematika, maupun
Komputasi Elektromagnetika.
Terima kasih kepada saudara Teguh Pujanegara, atas bantuannya menyadur
rutin distmesh. Juga kepada Dr. Diah Chaerani, dari Universitas Padjad-
jaran atas masukannya.
Penulisan buklik ini merupakan output skim Penelitian Strategis Unggu-
lan, hibah DIPA-IPB, 0558/023-04.2.01/12/2012, yang didanai oleh Kemen-

iii
iv CONTENTS

trian Pendidikan dan Kebudayaan, Republik Indonesia, dengan kontrak no


: 44/I3.24.4/SPK-PUS/IPB/2012. Juga merupakan output hasil penelitian
kerjasama lintas disiplin dalam bingkai Research Cluster for Dynamics and
Complex System di FMIPA-Institut Pertanian Bogor.

Buklik ini merupakan buku kedua dari seri : PERSAMAAN DIFEREN-


SIAL PARSIAL, ANALITIK DAN METODE ELEMEN HINGGA, SERTA
APLIKASINYA.
BOGOR, 31 Agustus 2019
CONTENTS

Program Hibah Penulisan Buku


Tahun 2019
Direktorat Pengelolaan Kekayaan Intelektual
Direktorat Jenderal Penguatan Riset dan Pengembangan
Kementrian Riset, Teknologi Dan Pendidikan Tinggi
Republik Indonesia
0 CONTENTS
PENDAHULUAN

Studi kasus yang diberikan, berasal dari beberapa bidang yang berkaitan
dengan aplikasi terkait bidang hayati yang menjadi misi utama yang diemban
penulis.
Bab ini, dapat merupakan sebuah tutorial bagaimana mengimplemen-
tasikan metode elemen hingga berdasarkan metode Galerkin untuk menye-
lesaikan persamaan Helmholtz, atau lebih dikenal sebagai Metode Elemen
Hingga Ranah Frekuensi. Persamaan Helmholtz merupakan model dari per-
samaan gelombang skalar, yang muncul dari sejumlah fenomena fisis. Mis-
alnya dalam Elektromagnetika untuk memperoleh informasi perilaku pandu
gelombang (waveguide), persamaan Helmholtz perlu diselesaikan secara nu-
merik, mengingat bentuk geometrik bahan penyusun menyebabkan solusi
analitik sulit didapat. Persamaan gelombang skalar untuk waveguide isotropik
homogen digunakan untuk memperkenalkan metode elemen hingga (MEH).
Untuk lebih sederhananya, digunakan elemen segitiga orde pertama. Tulisan
ini menunjukkan bagaimana pengetahuan tentang metode elemen hingga (Fi-
nite Element Method, FEM) dapat dipelajari dalam waktu singkat dengan
menggunakan MATLAB/OCTAVE. Hal ini menunjukkan bagaimana penge-
tahuan yang diperoleh dapat diperluas untuk masalah elektromagnetik lain-
nya.
Berbagai studi kasus diberikan sebagai latihan. Bahkan beberapa studi
kasus dirancang agar dapat digunakan untuk membantu penelitian maha-
siswa S1/S2/S3, serta untuk penelitian yang sifatnya garda depan (research
frontier) dalam Komputasi Fisika, Komputasi Matematika, maupun Kom-
putasi Elektromagnetik.

1
2 CONTENTS
1 Chapter 1

2 PERSAMAAN HELMHOLTZ

3 Ketersediaan daya komputasi yang besar dan murah menggunakan kom-


4 puter desktop atau laptop menjadikan solusi numerik dari permasalahan
5 elektromagnetik menjadi hal yang layak, bahkan bagi mahasiswa sarjana
6 sekalipun. Di kalangan pendidik telah diambil dua pendekatan: menggu-
7 nakan perangkat lunak yang tersedia secara komersial [16] (yang mungkin
8 menjadi pilihan yang mahal), atau desain antarmuka pengguna dan kode sim-
9 ulasi [21, 22] berdasarkan paket matematis terprogram. Kedua pendekatan
10 ini bukan merupakan obyek dari tulisan ini. Tujuan dari tulisan ini adalah
11 memperkenalkan metode elemen hingga ranah frekuensi untuk persamaan
12 Helmholtz melalui MATLAB/OCTAVE dan menyelesaikan permasalahan
13 elektromagnetik. MATLAB telah digunakan di seluruh dunia dalam penga-
14 jaran banyak mata kuliah rekayasa, misalnya, pemrosesan sinyal dan teknik
15 kontrol. Ini tidak akan mudah bagi para pengajar dalam bidang elektro-
16 magnetik untuk mengharapkan siswa untuk memiliki pengetahuan dan ak-
17 ses menggunakan MATLAB, alternatifnya dapat digunakan OCTAVE yang
18 merupakan freeware yang menerima skrip MATLAB. Metode Elemen Hingga
19 (FEM) adalah teknik yang relatif mapan dalam elektromagnetik dan masih
20 merupakan area penelitian yang cukup aktif. Hal ini didukung oleh beberapa
21 buku teks dan monograf yang cukup baik tersedia. Tetapi, bahan tersebut
22 hanya cocok bagi para peneliti atau untuk perkuliahan khusus. Selain itu,
23 buku teks tersebut sangat menekankan dasar matematika yang ketat dari
24 berbagai formulasi berbagai FEM. Sebuah pendekatan praktis untuk penu-
25 runan dari FEM dan pelaksanaannya diberikan pada pustaka [14]. Pada
26 tulisan ini diberikan uraian FEM yang singkat dan mudah dipahami melalui
27 MATLAB, mengingat MATLAB menyediakan fasilitas untuk operasi ma-

3
4 CHAPTER 1. PERSAMAAN HELMHOLTZ

28 triks dan alokasi memori yang dinamis. Materi utama terkait FEM dalam
29 tulisan ini dapat dibahas dalam kuliah selama dua-empat jam. Mahasiswa
30 mungkin diberikan kesempatan selama dua minggu untuk menyerap materi
31 dan mengerjakan tugas berupa rangkaian tugas berdsarkan serangkaian lati-
32 han yang didaftarkan dalam tulisan ini. Perlu dicatat bahwa setidaknya satu
33 paket perangkat lunak FEM komersial, yaitu FEMLAB dari COMSOL Inc,
34 [10] memiliki versi sebagai add-on untuk MATLAB. Paket ini tidak cocok un-
35 tuk mengajar pemrograman FEM. Namun, seperti yang digambarkan dalam
36 rujukan [27], mahasiswa dapat menggunakan software ini untuk menguji for-
37 mulasi variational yang diperoleh oleh mereka, mengingat perangkat lunak
38 menerima bentuk formulasi variasional sebagai input. Dengan demikian, [27]
39 dan tulisan ini saling melengkapi jika FEMLAB tersedia.
40 Buklik ini melengkapi komputasi Elektromagnetik berbahasa Indonesia
41 untuk Metoda Beda Hingga Kawasan Waktu (Finite Difference Time Do-
42 main, FDTD) [25]) dan Metode Momen (Methods of Moment, MoM) yang
43 populer di bidang antena [26].

44 1.1 Persamaan Helmholtz


45 dalam Elektro-Magnetik
46 Pandu gelombang (Waveguide) memainkan peranan penting dalam peram-
47 batan gelombang ber-frekuensi tinggi. Secara umum, pemodelan waveguide
48 dimulai dari persamaan Maxwell kemudian menjadi persamaan Helmholtz.
49 Dengan kata lain, dasar analisa perambatan gelombang di waveguide secara
50 umum adalah persamaan Maxwell. Dengan menggunakan hukum Ampere
51 dan hukum Faraday akan dijelaskan penurunan persamaan Maxwell.
52 Pada tahun 1820 Ampere telah menurunkan hubungan arus listrik dan
53 medan magnet dalam bentuk persamaan matematika. Hukum integral ke-
54 liling Ampere menyatakan bahwa bila garis tertutup C mengelilingi kabel
55 lurus I yang dialiri listrik, maka besaran integral tertutup sepanjang garis
56 tertutup C untuk medan magnet H yang ditimbulkan oleh I adalah sama
57 dengan besarnya arus listrik tersebut. Integral tertutup medan listrik diny-
58 atakan sebagai jumlah keseluruhan garis tertutup C yang terbagi pada bagian
59 kecil dl dikalikan dengan medan listrik sejajar dl.
I
H • dl = I. (1.1)
C
1.1. PERSAMAAN HELMHOLTZ DALAM ELEKTRO-MAGNETIK 5

60 Misalkan J menyatakan kepadatan arus listrik pada tiap satuan unit


61 arus listrik dan arus listrik tersebut menembus penampang S. Asumsikan
62 bahwa penampang tersebut bukan dalam batang tetapi penampang yang ter-
63 hingga. Penampang tersebut memiliki vektor normal n dan memiliki keliling
64 C. Komponen arus listrik yang melalui penampang S secara tegak lurus
65 dinyatakan oleh J • n. Dengan mengintegralkan permukaan penampang S
66 diperoleh keseluruhan arus listrik pada penampang S. Oleh karena itu bagian
67 kanan pada persamaan (1.1) dapat ditulis
I Z
H • dl = J • n dS. (1.2)
C S

68 Pada tahun 1831 Faraday membuktikan fenomena perubahan medan mag-


69 net yang menimbulkan arus listrik. Hukum Faraday menyatakan bahwa pe-
70 rubahan medan listrik mengakibatkan tegangan di sepanjang loop tertutup
71 C. Pada saat induksi magnet B yang menembus loop tertutup C berubah
72 maka besaran tersebut sama dengan berkurangnya tegangan sesuai dengan
73 perubahan waktu di loop tertutup C tersebut. Fenomena ini dapat diny-
74 atakan oleh
I Z

E • dl = − B • n dS. (1.3)
C ∂t S

75 Hukum integral keliling Ampere dan hukum Faraday dapat digabungkan


76 dengan menggunakan perubahan listrik. Rasio perubahan waktu terhadap
77 perubahan listrik D disebut sebagai perubahan arus listrik yang sama dengan
78 arus listrik dalam hukum Ampere. Akibatnya persamaan (1.2) menjadi
I Z Z

H • dl = J • n dS + D • n dS. (1.4)
C S ∂t S

79 Hukum integral keliling Ampere ini dapat digabungkan dengan hukum


80 Faraday dan persamaan tersebut merupakan persamaan dasar Maxwell. Den-
81 gan menggunakan teori Stokes, ruas kiri pada persamaan (1.3) dan (1.4)
82 dapat diubah menjadi integral permukaan. Permukaan yang diintegralkan
83 harus diambil sekecil mungkin supaya berlaku di seluruh ruang. Akibatnya
84 berlaku penurunan persamaan Maxwell berikut

∂D
∇×H =J + (1.5)
∂t
6 CHAPTER 1. PERSAMAAN HELMHOLTZ

∂B
∇×E =− . (1.6)
∂t
85 Dalam hukum dasar elektromagnet nilai muatan listrik sama dengan jum-
86 lah perubahan listrik yang ditimbulkannya dan dikenal sebagai hukum Gauss
87 untuk perubahan listrik. Hukum Gauss yang lain yang berhubungan dengan
88 perubahan listrik yaitu tidak ada fenomena muatan listrik yang hanya mem-
89 punyai satu kutub saja. Kedua fenomena di atas dapat digambarkan oleh
90 persamaan di bawah ini

∇•D =ρ (1.7)

∇ • B = 0. (1.8)
91

92 Persamaan (1.5) hingga 1.8) memuat banyak variabel diantaranya vari-


93 abel medan listrik E, perubahan listrik D, medan listrik H dan induksi mag-
94 net B. Untuk mendapatkan medan listrik dan medan magnet akan dilakukan
95 penurunan pada persamaan-persamaan tersebut.
96 Suatu medium berdielektrik yang homogen digambarkan di seluruh ruang
97 analisa dengan permitivitas ε dan permeabilitas µ. Pada medium homogen,
98 perubahan listrik dan induksi magnet dapat dinyatakan sebagai D = εE dan
99 B = µH. Dengan mensubstitusikan kedua persamaan ini pada persamaan
100 dasar Maxwell maka diperoleh persamaan medan listrik dan medan magnet.
101 Untuk mendapatkan persamaan medan listrik dilakukan penghapusan medan
102 magnet pada persamaan Maxwell dengan menggunakan operasi putaran pada
103 persamaan (1.6) sehingga diperoleh


∇×∇×E+µ (∇ × H) = 0. (1.9)
∂t
104

105 Dengan menggunakan hubungan ∇ • E = ρ/ε dan ∇ × ∇ × A = ∇(∇ • A) −


106 ∇2 A maka persamaan (1.9) menjadi

ρ ∂J ∂ 2E
∇ − ∇2 E + µ + εµ 2 = 0. (1.10)
ε ∂t ∂t
107

108 Dengan menggunakan operasi putaran pada persamaan (1.5) kemudian


1.1. PERSAMAAN HELMHOLTZ DALAM ELEKTRO-MAGNETIK 7

109 disubstitusikan pada persamaan (1.6) untuk menghilangkan medan listrik


110 dari persamaan Maxwell maka diperoleh persamaan di bawah ini.

∂ 2H
−∇2 H − ∇ × J + εµ = 0. (1.11)
∂t2
111 Medan listrik dan medan magnet dalam permasalahan elektromagnet se-
112 bagian besar berubah sebagai persamaan sinus dengan frekuensi angular ω
113 pada setiap perubahan waktu, misalnya ejωt . Akibatnya persamaan medan
114 listrik dan medan magnet dapat ditulis sebagai berikut.
ρ
−∇2 E + l2 E = ∇ + jωµJ (1.12)
ε

−∇2 H + l2 H = −∇ × J (1.13)

√ 2πf 2π
l = ω εµ = = . (1.14)
v λ
115 Persamaan (1.12) dan (1.13) disebut sebagai persamaan Helmholtz den-

116 gan l adalah tetapan hantar. Karena 1/ εµ memiliki satuan kecepatan yang
117 ditunjukkan oleh v(m/s) sedangkan f (Hz) frekuensi dan kecepatan angular
118 ω = 2πf · f /v mempunyai satuan panjang maka λ disebut sebagai panjang
119 gelombang.
120 Jika suatu medan listrik dan medang magnet di titik yang sangat jauh dari
121 sumber gelombang maka keberadaan muatan listrik ρ dan arus listrik J se-
122 bagai sumber gelombang dapat tidak dianggap. Oleh karena itu diperoleh
123 persamaan Helmholtz berikut.

−∇2 E + l2 E = 0 (1.15)

−∇2 H + l2 H = 0. (1.16)
124 Untuk mempelajari penggunaan FEM melalui MATLAB, pada pemba-
125 hasan lebih lanjut digunakan persamaan Helmholtz berikut

−∇2 u + ku = 0, (1.17)

126 dengan k < 0, k = −l2 dan u sebagai variabel medan listrik atau medan
127 magnet.
8 CHAPTER 1. PERSAMAAN HELMHOLTZ

128 Persamaan (1.17) menggambarkan gelombang datar yang merupakan gelom-


129 bang ideal dimana gelombang elektromagnet ini terhantar di ruang bebas
130 dengan kecepatan cahaya. Oleh karena itu, gelombang datar merupakan
131 gelombang di lokasi tak terhingga dari sumber gelombang yang menimbulkan-
132 nya. Pada saat gelombang datar terhantar di ruang yang homogen, am-
133 plitudo gelombang tidak akan berubah dan fasenya tidak mengalami keti-
134 dakkontinyuan. Tetapi pada saat gelombang datar melewati medium yang
135 mempunyai tetapan medium yang berlainan maka komponen medan listrik
136 dan medan magnet di perbatasan antar medium tersebut harus memenuhi
137 syarat batas. Untuk kemudahan, kita perhatikan beberapa kasus berikut.

138 Syarat Batas


139 Ada 2 jenis syarat batas yang biasa digunakan pada moda Elektrik atau
140 Magnetik apabila berada pada daerah yang terbatas, yaitu

141 • Syarat Batas: moda-TE


142 Untuk moda-TE, u menyatakan medan magnetik aksial, Hz , dan syarat
143 batas yang digunakan adalah syarat batas Neuman, ∂u/∂n = 0, dengan
144 n menyatakan arah normal di batas.

145 • Syarat Batas: moda-TM.


146 Untuk moda-TM, u menyatakan medan elektrik aksial, Ez , dan syarat
147 batas untuk batas konduktif sempurna yang harus dipenuhi adalah,u =
148 0. Syarat ini, sering disebut juga sebagai syarat Dirichlet.

149 Sementara itu, apabila daerah tak terbatas, digunakan syarat Sommer-
150 feld, yang tidak dibahas dalam buklik ini, tetapi bagaimana implementasi
151 pemrogramannya diberikan sebagai bagian rangkaian latihan.
152 Chapter 2

153 Metode Elemen Hingga Ranah


154 Frekuensi :
155 Hampiran Galerkin

156 Untuk mendapatkan hampiran elemen hingga, dapat dilakukan dengan 2


157 cara, yaitu dengan cara meminimumkan energi yang dikenal dengan Metode
158 Rayleigh-Ritz, dan metode hampiran proyeksi di ruang fungsi yang juga dike-
159 nal dengan Metode Galerkin.

160 a. Metode Rayleigh-Ritz


161

162 FEM memecahkan persamaan (1.17) dengan meminimumkan fungsional


163 energi yang diberikan oleh:
Z
1
J(u) = (∇u · ∇u + kuu)dx. (2.1)
2 Ω

164 b. Metode Galerkin


165

166 FEM untuk memecahkan persamaan (1.17) dengan menyelesaikan ben-


167 tuk lemah yang diberikan oleh:

b(u, v) = f (v), (2.2)

9
10CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER
Z
dengan b(u, v) = (∇u · ∇v + kuv)dx,
ZΩ
f (v) = f vdx,

168 untuk sembarang fungsi v. Bentuk lemah ini, diperoleh dengan cara
169 mengalikan persamaan (1.17) dengan fungsi test v, dan kemudian di-
170 lakukan aturan integrasi sebagaimana diberikan di Lampiran.

171 Dalam buklik ini, akan digunakan metode Galerkin untuk mendapatkan
172 hampiran metode elemen hingga, mengingat konsep yang digunakan mudah
173 difahami karena mempergunakan pendekatan ruang-vektor dan sifat-sifat
174 di dalam ruang vektor. Persamaan bentuk lemah yang diperoleh melalui
175 metode Galerkin ini, bisa juga diturunkan melalui metode Rayleigh-Ritz,
176 yang tidak dibahas di sini karena memerlukan pengetahuan kalkulus vari-
177 asi. Untuk banyak masalah fisika, pendekatan melalui metode Rayleigh-Ritz
178 selalu menghasilkan bentuk lemah yang identik dengan metode Galerkin.
179 Dalam implementasi FEM berdasarkan metode Galerkin, ada 3 langkah
180 utama yang dilakukan, yaitu:
181 1. Memilih basis dari ruang solusi.
182 2. Menuliskan solusi hampiran berdasarkan basis yang dipilih.
183 3. Solusi hampiran disubstitusikan ke bentuk lemah, atau diproyeksikan
184 ke ruang solusi.
185 Dengan melalui serangkaian studi kasus berikut, Metoda Galerkin diap-
186 likasikan untuk mendapatkan solusi persamaan Helmholtz sebagai Metode
187 Elemen Hingga ranah frekuensi.
188 Kasus 1
189

190

191 Perhatikan persamaan Helmholtz dengan syarat batas Dirichlet berikut

−∇2 u + ku = 0 di Ω (2.3)
u = g di ∂Ω
192 dimana k dan g adalah sembarang fungsi yang diketahui. Hal ini dapat
193 diilustrasikan untuk gelombang datar yang melewati medium kedua yang
11

194 merupakan penghantar sempurna.


195 Misalkan Ω = [0, 1] × [0, 1] dan syarat batas ∂Ω yang diilustrasikan pada
Gambar 2.1.

Gambar 2.1: Daerah Ω


196

197 Kasus 2
198 Hal lain yang mungkin jika gelombang datar tersebut mengalami peruba-
199 han setelah melewati medium kedua. Perhatikan persamaan Helmholtz den-
200 gan syarat batas Dirichlet dan Neumann berikut

−∇ · ∇u + ku = 0 di Ω (2.4)
u = p di L1
n · ∇u = q di L2

201 dimana k, p dan q adalah fungsi-fungsi yang diketahui. Misalkan Ω = [0, 1] ×


202 [0, 1] dengan syarat batas Dirichlet di L1 dan syarat batas Neumann di L2 .
203 Untuk menyelesaikan secara numerik kasus yang diuraikan di atas, akan
204 digunakan FEM dengan teknik hampiran Galerkin. Implementasi untuk ke-
205 dua kasus ini akan diuraikan secara bertahap dengan menggunakan MAT-
206 LAB.
207

208

209 Kasus 1
210 Misal v ∈ H1 dimana H1 adalah himpunan dimana elemennya terdiri dari
211 fungsi yang terturunkan, selain fungsinya yang apabila integral kwadratnya
212 hingga, begitu juga turunannya. Atau dikenal juga dengan fungsi dengan
213 energi yang hingga.
12CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

214 Dengan mengalikan persamaan Helmholtz pada kasus 1 dengan v dan di-
215 lakukan integrasi bagian (integration by parts, lihat Lampiran), akan diper-
216 oleh:
Z
(∇u · ∇v + kuv)dx = 0. (2.5)

217 Bentuk di atas, disebut bentuk lemah dari kasus 1.


218 Misal Vh ∈ H1 adalah ruang dari semua fungsi piecewise linear yang
219 kontinu dalam sebuah partisi K = {T1 , T2 , · · · , TN } dari Ω menjadi segitiga
220 berukuran |Ti | . Himpunan fungsi tenda hat function didefinisikan {ϕi }N i=1 di-
221 mana N menyatakan banyaknya node dalam partisi {Ti }N i=1 yang merupakan
222 basis untuk Vh . Hampiran elemen hingga (finite element approximation)
223 dari bentuk lemah (weak form) persamaan (2.3) adalah uh ∈ Vh sedemikian
224 sehingga
Z
(∇uh · ∇v + kuh v)dx = 0, untuk sembarang v. (2.6)

225 Karena uh ∈ Vh maka uh dapat ditulis


N
X
uh = zj ϕj ,
j=1

226 mengingat {ϕi }N i=1 , adalah basis dari Vh .


227 Oleh karena itu persamaan (2.6), karena berlaku untuk v sembarang, kita
228 pilih v = ϕi , sehingga dapat dituliskan

N
X Z Z 
zj ∇ϕj · ∇ϕi dx + k ϕj ϕi dx = 0, untuk setiap φi ∈ {φi }N
i=1 .
j=1 Ω Ω
(2.7)
229 Dari persamaan (2.7) diperoleh sistem persamaan linear Az = b, dimana
230 elemen-elemen sistem persamaan linear tersebut sebagai berikut
Z Z
Ai,j = ∇ϕj · ∇ϕi dx + k ϕj ϕi dx (2.8)
Ω Ω

bi = 0 (2.9)
13

z = (z1 , z2 , ..., zN )T . (2.10)


231 Pada persamaan di atas j bergerak sepanjang node dan i bergerak sepa-
232 njang node dengan nilai u diketahui. Nilai u pada ∂Ω yang diketahui dino-
233 tasikan dalam vektor ze dan nilai u selainnya dinotasikan dalam zn ,
 
ze
(Ae |An ) = Ae ze + An zn = b,
zn

234 matriks Ae dihitung pada syarat batas. Sehingga solusi akhir zn dapat
235 dihitung dengan sistem persamaan An zn = b − Ae ze dimana An sudah dike-
236 tahui.
237 Misalkan daerah Ω dibagi menjadi enam (N = 6) elemen segitiga yang
238 diperlihatkan pada gambar berikut ini

Gambar 2.2: Ilustrasi mesh (enam elemen segitiga) dalam Ω


14CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

239 Misalkan koordinat dari setiap node diberikan pada tabel di bawah ini

Tabel 2.1: Nomor-nomor koordinat sebagai node

Node 1 2 3 4 5 6 7 8
x 0 1 1 1 1 0 0 0
1 2 2 2
y 0 0 3 3
1 1 3 3

240 MATLAB mampu membaca data dari file yang diberikan dalam format
241 ascii dengan file .dat, sehingga dalam MATLAB kita dapat menyimpan data
242 koordinat untuk setiap node dengan pemrograman sebagai berikut.

243 node1 = [1 0 0;
244 2 1 0;
245 3 1 1/3;
246 4 1 2/3;
247 5 1 1;
248 6 0 1;
249 7 0 2/3;
250 8 0 1/3];
251 dlmwrite(’koordinat1.dat’, node1,’ ’)
252 type koordinat1.dat

253 Pada Tabel 2.2 diberikan elemen-elemen yang berpadanan dengan node-
254 node pada Tabel 2.1

Tabel 2.2: Nomor-nomor elemen segitiga

Elemen 1 2 3 4 5 6
Node 1 7 7 8 8 1 1
Node 2 5 4 4 3 3 2
Node 3 6 5 7 4 8 3

255 Dengan menggunakan MATLAB kita dapat menyimpan data elemen-


256 elemen di atas dengan pemrograman berikut.
257

258 segitiga1=[1 7 5 6;
259 2 7 4 5;
260 3 8 4 7;
15

261 4 8 3 4;
262 5 1 3 8;
263 6 1 2 3];
264 dlmwrite(’elemen1.dat’, segitiga1,’ ’)
265 type elemen1.dat
266 Syarat batas untuk Gambar 2.1 diperlihatkan pada tabel berikut.

Tabel 2.3: Nomor-nomor edge dengan syarat batas

Edge 1 2 3 4 5 6 7 8
Node 1 1 2 3 4 5 6 7 8
Node 2 2 3 4 5 6 7 8 1
267

268 deltaomega=[1 1 2;
269 2 2 3;
270 3 3 4;
271 4 4 5;
272 5 5 6;
273 6 6 7;
274 7 7 8;
275 8 8 1];
276 dlmwrite(’deltaomega.dat’, deltaomega,’ ’)
277 type deltaomega.dat
278 Menyusun matriks stiffness
279 Perhatikan bahwa untuk sebuah elemen segitiga T misalkan (x1 , y1 ), (x2 , y2 ),
280 dan (x3 , y3 ) adalah titik-titik verteks dan ϕ1 , ϕ2 dan ϕ3 adalah fungsi basis
281 yang berkorespondensi di K, yaitu
ϕi (xj , yj ) = δij , i, j = 1, 2, 3.
282 Oleh karena itu, diperoleh
 
1 x y
det  1 xi+1 yi+1 
1 xi+2 yi+2
ϕi (x, y) =  , (2.11)
1 xi yi
det 1
 xi+1 yi+1 
1 xi+2 yi+2
16CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

283 dengan
 
1 yi+1 − yi+2
∇ϕi (x, y) = . (2.12)
2|T | xi+2 − xi+1
284 Indeks yang digunakan pada persamaan di atas di dalam modulo 3, sehingga
285 diperoleh
 
x2 − x1 x 3 − x1
2|T | = det .
y2 − y1 y3 − y1

286 Matriks stiffness yang diperoleh adalah


R
Mij = T ∇ϕi (∇ϕj )T dxdy  
|T |  yj+1 − yj+2
= (2|T |)2
yi+1 − yi+2 xi+2 − xi+1 .
xj+2 − xj+1

287 dengan indeks di dalam modulo 3. Bentuk sederhana persamaan di atas


288 adalah
|T |
M= GGT ,
2
289 dimana  −1  
1 1 1 0 0
G =  x1 x 2 x 3   1 0  .
y1 y2 y3 0 1
290 Pemrograman dalam MATLAB untuk menyusun matriks stiffness dapat
291 kita tuliskan sebagai berikut.

292 function M = stima(vertices)


293 d = size(vertices,2);
294 G = [ones(1,d+1);vertices’] \ [zeros(1,d);eye(d)];
295 M = det([ones(1,d+1);vertices’]) * G * G’ / prod(1:d);
296 end

297 Menyusun matriks massa


298

299 Perhatikan bahwa


XZ
Bij = ϕi ϕj kdx.
T ⊂Ω T
17

300 Dengan cara yang hampir sama dalam menyusun matriks stiffness, diperoleh
301 matriks massa
 
Z   2 1 1
1 x2 − x1 x3 − x1 
ϕi ϕj kdx = det 1 2 1  k(xs , ys )
T 24 y2 − y1 y3 − y1
1 1 2

302 dimana (xs , ys ) adalah titik tengah pada segitiga T .


303 Untuk k = 0, dengan menggunakan MATLAB diperoleh solusi dalam bentuk
grafik berikut ini.

Gambar 2.3: Solusi kasus 1 untuk k = 0


304
305 Solusi analitik pada kasus 1 untuk k = 0 adalah u = 0 mempunyai
306 kesimpulan yang sama dengan solusi numerik yang ditampilkan pada Gambar
307 2.3.
308 function k = k0(x,y);
309 k = 0;
310 end
311 function SyaratBatas = deltaO(x)
312 SyaratBatas = zeros(size(x,1),1);
313 end

314 Pemrograman dengan MATLAB untuk kasus 1 sebagai berikut

315 load koordinat1.dat; koordinat1(:,1)=[]; % koordinat-koordinat


316 load elemen1.dat; elemen1(:,1)=[]; % elemen hingga berbentuk segitiga
18CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

317 load deltaomega.dat; deltaomega(:,1)=[];


318 koordinat = koordinat1;
319 elemen = elemen1;
320 %
321 % Pembangkitan mesh
322 %
323 %
324 NodeBebas=setdiff(1:size(koordinat,1),unique(deltaomega));
325 A = sparse(size(koordinat,1),size(koordinat,1));
326 b = sparse(size(koordinat,1),1);
327 %
328 % 1. menyusun matriks A1
329 % dengan memanggil fungsi stima
330 for i = 1:size(elemen,1)
331 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
332 + stima(koordinat(elemen(i,:),:));
333 end
334 % 2. menyusun matriks A2
335 for i = 1:size(elemen,1)
336 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) +...
337 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
338 (diag(ones(3,1))+ ones(3))*k0(sum(koordinat(elemen(i,:),:))/3)/24;
339 end
340 u = sparse(size(koordinat,1),1);
341 u(unique(deltaomega)) = deltaO(koordinat(unique(deltaomega),:));
342 b = b - A*u;
343 %
344 % 3. Menghitung solusi
345 %
346 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
347 %
348 % 4. Grafika
349 %
350 show(elemen,[],koordinat,full(u));
351 xlabel(’x’);ylabel(’y’);zlabel(’u’);

352 Kasus 2
353 Bentuk lemah untuk kasus 2 adalah
Z Z
(∇u · ∇v + kuv)dx = qvds. (2.13)
Ω L2
19

354 Pendekatan elemen hingga (finite element approximation) dari bentuk lemah
355 persamaan (2.13) adalah uh ∈ Vh sedemikian sehingga
Z Z
(∇uh · ∇v + kuh v)dx = qv ds. (2.14)
Ω L2

356 Dengan cara yang sama seperti yang sudah diuraikan pada kasus 1, terdapat
357 sistem persamaan linear dengan elemen-elemen berikut.
R R 
Aij = R Ω ∇ϕi · ∇ϕj dxdy + Ω k(x, y)ϕi ϕj dxdy
bi = L2 ϕi qds
z = (z1 , z2 , ..., zN )T .

358 Dengan menggunakan cara yang serupa pada kasus 1, matriks Ae dihitung
359 pada syarat batas Dirichlet. Sehingga solusi akhir zn dapat dihitung dengan
360 sistem persamaan
An zn = b − Ae ze .
361 Beberapa simulasi untuk kasus 2 akan dibahas di bawah ini, dengan se-
362 jumlah subkasus.

a (Kasus 2a) Misal Ω dan syarat batas diberikan pada gambar berikut Jika

Gambar 2.4: Syarat batas untuk kasus 2a


363
364 Ω dibagi menjadi enam segitiga seperti pada gambar 1 dengan syarat
365 batas seperti pada Gambar 2.4, maka dalam MATLAB kita dapat
366 menyimpan data syarat batas dengan pemrograman berikut.
20CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

367 neumann1=[1 1 2;
368 2 5 6];
369 dlmwrite(’neumann1.dat’,neumann1,’ ’)
370 type neumann1.dat
371 dirichlet1=[1 2 3;
372 2 3 4;
373 3 4 5;
374 4 6 7;
375 5 7 8;
376 6 8 1];
377 dlmwrite(’dirichlet1.dat’, dirichlet1,’ ’)
378 type dirichlet1.dat

379 Misalkan dipilih k = −(2π)2 , p = cos(2πy) dan q = 0.

380 function k = k1(x,y);


381 k = -((2*pi))^2;
382 end
383 function S = g(x)
384 S = zeros(size(x,1),1);
385 end
386 function a=q1(x);
387 a=0;
388 end
389 function BatasDirichletKasus2a = ud1(x)
390 BatasDirichletKasus2a = zeros(size(x,1),1);
391 I=find(x(:,1)==0|x(:,1)==1);
392 BatasDirichletKasus2a (I) = cos(2*pi*x(:,2));
393 end

394 Dengan menggunakan MATLAB diperoleh solusi pada Gambar 2.5.


395 Pemrograman dengan MATLAB sebagai berikut

396 % inisialisasi
397 load koordinat1.dat; koordinat1(:,1)=[]; % koordinat-koordinat
398 load elemen1.dat; elemen1(:,1)=[]; % elemen hingga berbentuk segitiga
399 load neumann1.dat; neumann1 (:,1)=[];
400 load dirichlet1.dat; dirichlet1 (:,1)=[];
401 koordinat = koordinat1;
402 elemen = elemen1;
21

Gambar 2.5: Grafik permukaan solusi kasus 2a. Program lengkap ada di
Lampiran 2.

403 neumann = neumann1;


404 dirichlet = dirichlet1;
405 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
406 A = sparse(size(koordinat,1),size(koordinat,1));
407 b = sparse(size(koordinat,1),1);
408 %
409 % 1. menyusun matriks kekakuan A1
410 % dengan memanggil fungsi stima_1
411 %
412 for i = 1:size(elemen,1)
413 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
414 + stima(koordinat(elemen(i,:),:));
415 end
416 %
417 % 2. menyusun matriks massa A2
418 %
419 for i = 1:size(elemen,1)
420 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
421 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
422 (diag(ones(3,1))+ ones(3))*k1(sum(koordinat(elemen(i,:),:))/3)/24;
423 end
424 % 3. Gaya luar
425 for i = 1:size(elemen,1)
22CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

426 b(elemen(i,:)) = b(elemen(i,:))+...


427 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
428 g(sum(koordinat(elemen(i,:))/3))/6;
429 end
430 %
431 % 4. Syarat Batas Neumann
432 %
433 for i = 1:size(neumann,1)
434 b(neumann(i,:))=b(neumann(i,:)) +...
435 norm(koordinat(neumann(i,1),:)- ...
436 koordinat(neumann(i,2),:)) *...
437 q1(sum(koordinat(neumann(i,:),:))/2)/2;
438 end
439 %
440 % 5. Syarat Batas Dirichlet
441 %
442 u = sparse(size(koordinat,1),1);
443 u(unique(dirichlet)) = ud1(koordinat(unique(dirichlet),:));
444 b = b - A*u;
445 %
446 % 6. Perhitungan Solusi Sistem Persamaan Linear
447 %
448 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
449 %
450 % 7. Grafika
451 %
452 show(elemen,[],koordinat,full(u));
453 xlabel(’x’);ylabel(’y’);zlabel(’u’);

454 b (Kasus 2b) Misalkan daerah Ω dibagi menjadi empat (N = 4) elemen


455 segitiga yang diperlihatkan pada gambar berikut ini Dengan nomor-
456 nomor node, elemen segitiga dan edge syarat batas pada tabel berikut:
457 Misalkan k = −(2π)2 , p = cos(2πy) dan q = 0, dengan menggunakan
458 MATLAB, diperoleh solusi dalam bentuk grafik berikut ini: Pemrogra-
459 man kasus 2b dengan MATLAB sebagai berikut

460 load koordinat2.dat; koordinat2(:,1)=[];% koordinat node


461 load elemen2.dat; elemen2(:,1)=[]; % daftar elemen segitiga
462 load neumann3.dat; neumann3(:,1)=[];
463 load dirichlet3.dat; dirichlet3(:,1)=[];
23

Gambar 2.6: Daerah Ω dibagi menjadi empat segitiga

Tabel 2.4: Nomor-nomor node, elemen, dan edge syarat batas

Nomor Node Elemen Syarat Batas Syarat batas


(Koordinat) Segitiga Neumann Dirichlet
1. (0,0) 1-2-3 1-2 4-1
2. (1,0) 1-3-4 2-5
3. (1/2,1/2) 3-2-5 5-4
4. (0,1) 3-5-4
5. (1,1)

464 koordinat=koordinat2;
465 elemen=elemen2;
466 neumann = neumann3;
467 dirichlet = dirichlet3;
468 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
469 A = sparse(size(koordinat,1),size(koordinat,1));
470 b = sparse(size(koordinat,1),1);
471 % 1. menyusun matriks A1
472 % dengan memanggil fungsi stima_1
473 for i = 1:size(elemen,1)
474 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
475 + stima(koordinat(elemen(i,:),:));
476 end
477 % 2. menyusun matriks A2
478 for i = 1:size(elemen,1)
24CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

Gambar 2.7: Grafik permukaan solusi kasus 2b. Dihasilkan oleh program
lengkap yang diberikan di Lampiran 2.

479 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...


480 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
481 (diag(ones(3,1))+ ones(3))*k1(sum(koordinat(elemen(i,:),:))/3)/24;
482 end
483 % 3. Gaya luar
484 for i = 1:size(elemen,1)
485 b(elemen(i,:)) = b(elemen(i,:))+...
486 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
487 g(sum(koordinat(elemen(i,:))/3))/6;
488 end
489 % 4. Syarat Neumann
490 for i = 1:size(neumann,1)
491 b(neumann(i,:))=b(neumann(i,:)) +...
492 norm(koordinat(neumann(i,1),:)- ...
493 koordinat(neumann(i,2),:)) *...
494 q1(sum(koordinat(neumann(i,:),:))/2)/2;
495 end
496 % 5. Syarat Dirichlet
497 u = sparse(size(koordinat,1),1);
498 u(unique(dirichlet)) = ud1(koordinat(unique(dirichlet),:));
499 b = b - A*u;
500 % 6. Komputasi solusi
501 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
25

502 %
503 % 7. Grafika
504 %
505 show(elemen,[],koordinat,full(u));
506 xlabel(’x’);ylabel(’y’);zlabel(’u’);

507 c (Kasus 2c) Misalkan daerah Ω dibagi menjadi delapan (N = 8) elemen


508 segitiga yang diperlihatkan pada gambar berikut ini. Dengan nomor-
nomor node, elemen segitiga dan edge syarat batas pada Tabel 2.5.

Gambar 2.8: Daerah Ω dibagi menjadi delapan segitiga

Tabel 2.5: Nomor-nomor node, elemen, dan edge syarat batas

Nomor Node Elemen Syarat Batas Syarat batas


(Koordinat) Segitiga Neumann Dirichlet
1. (0,0) 1-2-3 1-2 7-4
2. (1,0) 1-3-4 2-5 4-1
3. (1/2,1/4) 3-2-5 5-8
4. (0,1/2) 4-3-5 8-7
5. (1,1/2) 4-5-6
6. (1/2,3/4) 4-6-7
7. (0,1) 6-5-8
8. (1,1) 7-6-8
509

510 Dengan fungsi k yang melompat



1.5 ; y > 0.5
k= ,
1.4 ; y ≤ 0.5
26CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

511 dengan syarat Dirichlet yang diberikan oleh fungsi :


−(y − 0.5)2
 
p = exp ,
0.4
512 dan q = 0.

513 function k = k3(x)


514 if x(:,2)<=0.5
515 k = 1.5;
516 else if x(:,2)>0.5
517 k = 1.4;
518 end
519 end
520 end
521 function DirichletBoundaryValueCase2d = ud3(x)
522 DirichletBoundaryValueCase2d = zeros(size(x,1),1);
523 I=find(x(:,1)==0);
524 DirichletBoundaryValueCase2d(I) = exp((-(x(I,2)-0.5).^2)./0.4);
525 end

526 Dengan menggunakan MATLAB, diperoleh solusi dalam bentuk grafik


berikut ini:

Gambar 2.9: Grafik permukaan solusi kasus 2c. Dihasilkan oleh program
lengkap di Lampiran 2.
527

528 Pemrograman untuk kasus 3 dengan MATLAB sebagai berikut


27

529 load koordinat3.dat; koordinat3(:,1)=[]; % koordinat-koordinat


530 load elemen3.dat; elemen3(:,1)=[]; % elemen hingga berbentuk segitiga
531 load neumann4.dat; neumann4(:,1)=[];
532 load dirichlet4.dat; dirichlet4(:,1)=[];
533 koordinat=koordinat3;
534 elemen=elemen3;
535 neumann = neumann4;
536 dirichlet = dirichlet4;
537 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
538 A = sparse(size(koordinat,1),size(koordinat,1));
539 b = sparse(size(koordinat,1),1);
540 % 1. menyusun matriks A1
541 % dengan memanggil fungsi stima_1
542 for i = 1:size(elemen,1)
543 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
544 + stima(koordinat(elemen(i,:),:));
545 end
546 % 2. menyusun matriks A2
547 for i = 1:size(elemen,1)
548 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
549 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
550 (diag(ones(3,1))+ ones(3))*k2(sum(koordinat(elemen(i,:),:))/3)/24;
551 end
552 % 3. Gaya luar
553 for i = 1:size(elemen,1)
554 b(elemen(i,:)) = b(elemen(i,:))+...
555 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
556 g(sum(koordinat(elemen(i,:))/3))/6;
557 end
558 % 4. Syarat Neumann
559 for i = 1:size(neumann,1)
560 b(neumann(i,:))=b(neumann(i,:)) +...
561 norm(koordinat(neumann(i,1),:)- ...
562 koordinat(neumann(i,2),:)) *...
563 q1(sum(koordinat(neumann(i,:),:))/2)/2;
564 end
565 % 5. Syarat Dirichlet
566 u = sparse(size(koordinat,1),1);
567 u(unique(dirichlet)) = ud3(koordinat(unique(dirichlet),:));
568 b = b - A*u;
28CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

569 % 6. Komputasi solusi


570 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
571 % 7. Grafika
572 show(elemen,[],koordinat,full(u));
573 xlabel(’x’);ylabel(’y’);zlabel(’u’);

574 d (Kasus 2d) Misalkan daerah Ω dibagi menjadi duabelas (N = 12) ele-
men segitiga yang diperlihatkan pada Gambar 2.10. Sedangkan nomor-

Gambar 2.10: Daerah Ω dibagi menjadi duabelas segitiga


575

576 nomor node, elemen segitiga dan node dengan syarat batas pada Tabel
577 2.6. Misalkan

1.4 ; y > 2/3 atau y < 1/3
k=
1.5 ; 1/3 ≤ y ≤ 2/3
578 sedangkan p dan q sama seperti pada kasus 2c.

579 function k = k4(x)


580 if (x(:,2)<1/3)||(x(:,2)>2/3)
581 k = 1.4;
582 else
583 k = 1.5;
584 end
585 end

586 Dengan menggunakan MATLAB, diperoleh solusi dalam bentuk grafik


587 sebagaimana diperlihatkan pada gambar berikut ini,
588

589 Pemrograman untuk kasus ini dengan MATLAB sebagai berikut


29

Tabel 2.6: Nomor-nomor node, elemen, dan edge syarat batas

Nomor Node Elemen Syarat Batas Syarat batas


(Koordinat) Segitiga Neumann Dirichlet
1. (0,0) 1-2-3 1-2 10-7
2. (1,0) 1-3-4 2-5 7-4
3. (1/2,1/6) 3-2-5 5-8 4-1
4. (0,1/3) 3-5-4 8-11
5. (1,1/3) 4-5-6 11-10
6. (1/2,1/2) 4-6-7
7. (0,2/3) 6-5-8
8. (1,2/3) 6-8-7
9. (1/2,5/6) 7-8-9
10. (0,1) 7-9-10
11. (1,1) 9-8-11
12. 9-10-11

Gambar 2.11: Grafik permukaan solusi kasus 2d. Dihasilkan oleh program
lengkap di Lampiran 2.

590 load koordinat4.dat; koordinat4(:,1)=[]; % koordinat-koordinat


591 load elemen4.dat; elemen4(:,1)=[]; % elemen hingga berbentuk segitiga
592 load neumann5.dat; neumann5(:,1)=[];
593 load dirichlet5.dat; dirichlet5(:,1)=[];
30CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

594 koordinat=koordinat4;
595 elemen=elemenB4;
596 neumann = neumann5;
597 dirichlet = dirichlet5;
598 %
599 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
600 A = sparse(size(koordinat,1),size(koordinat,1));
601 b = sparse(size(koordinat,1),1);
602 % 1. menyusun matriks A1
603 % dengan memanggil fungsi stima_1
604 for i = 1:size(elemen,1)
605 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
606 + stima(koordinat(elemen(i,:),:));
607 end
608 % 2. menyusun matriks A2
609 for i = 1:size(elemen,1)
610 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
611 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
612 (diag(ones(3,1))+ ones(3))*k3(sum(koordinat(elemen(i,:),:))/3)/24;
613 end
614 % 3. Gaya luar
615 for i = 1:size(elemen,1)
616 b(elemen(i,:)) = b(elemen(i,:))+...
617 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
618 g(sum(koordinat(elemen(i,:))/3))/6;
619 end
620 % 4. Syarat Neumann
621 for i = 1:size(neumann,1)
622 b(neumann(i,:))=b(neumann(i,:)) +...
623 norm(koordinat(neumann(i,1),:)- ...
624 koordinat(neumann(i,2),:)) *...
625 q1(sum(koordinat(neumann(i,:),:))/2)/2;
626 end
627 % 5. Syarat Dirichlet
628 u = sparse(size(koordinat,1),1);
629 u(unique(dirichlet)) = ud3(koordinat(unique(dirichlet),:));
630 b = b - A*u;
631 % 6. Komputasi solusi
632 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
633 % 7. Grafika
31

634 show(elemen,[],koordinat,full(u));
635 xlabel(’x’);ylabel(’y’);zlabel(’u’);
32CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

636 HISTORIANA
33

Gambar 2.12: Boris G. Galerkin (1871-1945), Seorang Insinyur Teknik Perka-


palan Rusia, yang bekerja menggeluti bidang Mekanika Kontinua. Dari pen-
galamannya menggeluti PDP untuk pelat dan batang, lahir teknik pengham-
piran yang menjadi landasan Metode Elemen Hingga. (Sumber: Mac Tutor
History of Mathematics Archive)

Gambar 2.13: Richard Courant (1832-1925), perintis teori Metode Elemen


Hingga yang memformulasikan penyelesaian PDP numerik memanfaatkan
partisi segi tiga (Triangular element) dan fungsi basis atas elemen untuk
metode Galerkin. (Sumber: Mac Tutor History of Mathematics Archive)
34CHAPTER 2. METODE ELEMEN HINGGA RANAH FREKUENSI :HAMPIRAN GALER

Gambar 2.14: Johann Peter Gustav Lejeune Dirichlet (1805-1859), perumus


tipe syarat batas dalam persamaan differensial parsial. (Sumber: Mac Tutor
History of Mathematics Archive)

Gambar 2.15: Carl Friedrich Neumann (1888-1972), perumus tipe syarat


batas dalam persamaan differensial parsial. (Sumber: Mac Tutor History of
Mathematics Archive)

Gambar 2.16: Ferdinand Helmholtz (1821-1894), fisikawan perumus per-


samaan differensial parsial yang mendiskripsikan perambatan gelombang.
(Sumber: Mac Tutor History of Mathematics Archive)
637 Chapter 3

638 LATIHAN

639 Pada bagian ini, diberikan serangkaian latihan, dimana secara bertahap im-
640 plementasi Metode Elemen Hingga ranah frekuensi untuk masalah sederhana,
641 dimodifikasi tahap demi tahap sehingga dapat digunakan sebagai alat untuk
642 memecahkan masalah persamaan Helmholtz yang muncul dalam aplikasi di
643 bidang Elektromagnetik. Total tersedia 20 latihan, dari yang sifatnya san-
644 gat sederhana, sampai ke tingkat yang cukup sulit. Juga rentang aplikasinya,
645 dari yang sifatnya pedagogis, sampai ke permasalahan garda depan (research
646 frontier) di bidang nanosains, antara lain pada ranah gelombang TerraHertz
647 serta aplikasi dalam disain divais seperti biosensor, sel surya dan antena
648 nano.
649 Latihan 1-4 dapat dikatagorikan sebagai latihan sederhana yang harus di-
650 lakukan seusai mencoba skrip MATLAB, mengkaji studi kasus yang diberikan.
651 Latihan 5-10 dapat dikatagorikan sebagai latihan tingkat madya yang
652 dapat diberikan sebagai tugas mandiri yang dapat dilakukan dalam waktu 2-
653 3 minggu, mengingat diperlukan keterampilan untuk pembangkit mesh yang
654 di buklet ini, digunakan distmesh, atau pembangkit mesh lainnya seperti
655 gmesh.
656 Latihan 11-20 dikatagorikan sebuah latihan tingkat lanjut yang dapat
657 dijadikan dasar penelitian tugas akhir S1, maupun bagian dari Thesis S2
658 maupun S3. Bahkan bisa menjadi bahan penelitian tersendiri.

35
36 CHAPTER 3. LATIHAN

659 3.1 Latihan 1.


660 Pada kasus 2c dan 2d, ditunjukkan kemungkinan sifat bahan yang bervariasi.
661 Pada latihan ini, bertujuan bagaimana memodifikasi bangun sederhana
662 yang telah diberikan, sehingga dapat mengakomodir sifat bahan yang kon-
663 stan di sejumlah daerah. Dengan melakukan pembentukan elemen segi tiga
664 kasar menurut bagian material sesuai dengan yang diinginkan, sering disebut
665 sebagai body-fit triangulation.

Gambar 3.1: Gambar untuk Latihan 1. Pandu gelombang persegi terisi


dielektrik tak homogen. [a = 22.86 mm, b = 10.16mm, h = 1/3b, ε1 =
2.56ε0 , ε2 = ε0 , µ1 = µ2 = µ0 ]

666 Dengan nomor-nomor node, elemen segitiga dan edge syarat batas pada
667 Tabel 3.1.
668 Definisikan geometri di atas dengan memanfaatkan triangulasi yang di-
669 gunakan pada gambar 8 , sehingga simpul/nodes segitiga berada di atas dan
670 tidak ada elemen segitiga yang melintang garis pemisah bahan.
3.1. LATIHAN 1. 37

Gambar 3.2: Daerah Ω dibagi menjadi delapan segitiga

Tabel 3.1: Nomor-nomor node, elemen, dan edge syarat batas

Nomor Node Elemen Syarat Batas Syarat batas


(Koordinat) Segitiga Neumann Dirichlet
1. (0,0) 1-2-3 1-2 7-4
2. (a,0) 1-3-4 2-5 4-1
3. (1/2,1/4) 3-2-5 5-8
4. (0,h) 4-3-5 8-7
5. (a,h) 4-5-6
6. (1/2,3/4) 4-6-7
7. (0,b) 6-5-8
8. (a,b) 7-6-8
38 CHAPTER 3. LATIHAN

671 Perhatikan bahwa, nilai koefisien k akan bernilai konstan pada masing-
672 masing segitiga. Susunlah sifat bahan yang dikaitkan pada elemen yang
673 termuat di bagian tersebut sehingga pemberian sifat bahan pada elemen
674 dapat dihitung saat assembly matriks massa.
3.2. LATIHAN 2. 39

675 3.2 Latihan 2.


676 Tujuan latihan berikut adalah melanjutkan latihan terdahulu, yaitu bagaimana
677 menguji solusi numerik apabila solusi analitik permasalahan diketahui. Pada
678 latihan berikut, akan diselesaikan masalah pandu gelombang untuk polarisasi-
679 TM.
680 Masalah yang dihadapi adalah sebuah pandu gelombang yang merupakan
681 struktur dengan permitivitas ε bernilai konstan ke satu arah. Sehingga untuk
682 sistem koordinat (x, y) permitivitas hanya merupakan fungsi dari sumbu,
683 dalam hal ini sumbu-x saja. Perhatikan masalah nilai eigen berikut:
∂xx Ψ(x) + k(x)2 Ψ(x) = β 2 Ψ(x)
684 dengan k(x)2 = ε(x)ω 2 /c2 , u(x, y) = Ψ(x)exp(iβy) yang memenuhi per-
685 samaan TM-Helmholtz. Perhatikan bahwa jika β ∈ R+ medan merambat
686 tanpa redaman ke arah sumbu−y dan disebut sebagai moda terpandu.
687 Perlu diperhatikan bahwa solusi di atas tidak memenuhi syarat Som-
688 merfeld, sehingga agar solusi analitik ini bisa digunakan sebagai pengujian
689 untuk mendapatkan solusi analitik, maka daerah definisi merupakan daerah
690 terbatas dengan syarat batas Neumann atau Dirichlet.
691 Sebagai contoh, perhatikan pandu gelombang dengan index melompat:
 2
2 k2 for |x| < d,
k(x) =
k12 for |x| > d.
692 Dalam hal ini, 2d merupakan lebar dari pandu gelombang, dan kita
693 anggap k22 > k12 . Moda dasar (fundamental mode) u -yg belum tentu ada,
694 terkait dengan fungsi-eigen Ψ(x) dengan nilai maksimal β 2 diberikan oleh
 √2 2 √
i k2 β x i k22 β 2 x iβy

 (e √ 2 2 + e )e , untuk |x| < d,
u(x, y) = Ce√−k1 +β x eiβy , untuk x <= −d, (3.1)
 2 2
Ce −k1 +β x eiβy , untuk x > d,

p p p
695 dengan C = (exp(i k22 β 2 d)+exp(i k22 β 2 d))/exp( k12 + β 2 d). Perhatikan
696 bahwa moda fundamentalnya meluruh dengan cepat secara eksponensial un-
697 tuk |x| → ∞. √
698 Untuk eksperimen Numerik, dipilih d = 1/ 2, k1 = 0.29 dan k2 = 1.32.
699 Pemilihan ini, akan mendapatkan moda fundamental β = 0.8767339289.
700 Gunakan gambar geometri pada Latihan 2., dan gunakan parameter yang
701 diberikan untuk persamaan (3.1), serta tentukan jenis syarat batasnya berdasarkan
702 solusi eksak (3.1) yang diberikan.
40 CHAPTER 3. LATIHAN

703 3.3 Latihan 3.


704 Latihan ini, bertujuan melakukan penyusunan geometri yang bersesuaian
705 dengan sifat bahan yang digunakan, Lihat juga kasus (2c) dan Latihan 1.

Gambar 3.3: Latihan 3. Pandu Gelombang Ridge

706 Dalam latihan ini, terdiri dari 2 bagian bahan yang menempati daerah
707 tertentu. Susunlah sifat bahan yang dikaitkan pada elemen yang termuat di
708 bagian tersebut sehingga pemberian sifat bahan pada elemen dapat dihitung
709 saat assembly matriks massa.
3.4. LATIHAN 4. 41

710 3.4 Latihan 4.

Gambar 3.4: Sketsa tapak ruangan dengan posisi router WiFi berada di
titik o.

711 Pada latihan ini, meskipun tidak menyangkut pandu gelombang, mem-
712 odelkan perambatan medan listrik akibat adanya sumber. Dalam hal ini,
713 memodelkan perambatan medan elektrik di dalam ruangan akibat adanya
714 router WiFi.
−∇2 u + l2 u = f, (3.2)
715 dengan f menyatakan sumber pemancar WiFi. Implementasi dalam MAT-
716 LAB, hanya dengan menambah satu rutin serupa dengan konstruksi
R matriks
717 massa. Dengan mengingat bahwa, cukup diperlukan evaluasi f ϕj dxdy,
718 untuk sembarang fungsi basis ϕj .
42 CHAPTER 3. LATIHAN

719 3.5 Latihan 5.


720 Dalam banyak permasalahan, diperlukan situasi perambatan medan, dimana
721 seakan tidak ada pembatas yang menghalangi. Syarat batas yang secara fisik
722 lebih realistis ialah menjamin bahwa semua gelombang dari daerah kom-
723 putasi akan merambat keluar tanpa kecuali, sedikitpun tak ada yang kem-
724 bali. Diperlihatkan di ([3], halaman 16) bahwa syarat batas seperti ini adalah
725 syarat batas jenis Robin, yaitu
∂u
− ıku = 0 di ∂Ω
∂n

726 dengan ı = −1. Implementasikan pada Latihan 1, dengan memodifikasi
727 bentuk syarat batas yang mirip dengan syarat-Neumann yang tak homogen :
∂u
728
∂n
= g, g := ıku.
3.6. LATIHAN 6. 43

729 3.6 Latihan 6.

Gambar 3.5: Ilustrasi mesh Ω berupa lingkaran bolong

730 Pada latihan ini, dengan menggunakan geometri sebagaimana diberikan


731 di Lampiran, untuk menyelesaikan persamaan Helmholtz berbentuk:

−∇2 u + l2 u = f. (3.3)

732 Jika pada lingkaran bagian dalam berupa syarat batas Dirichlet, coba
733 bereksperimen untuk syarat batas dengan melakukan eksperimen numerik,
734 dengan menetapkan pada batas lingkaran terluar dengan syarat batas Dirich-
735 let, Neumann, atau Robin sebagaimana dibahas di latihan sebelum ini.
44 CHAPTER 3. LATIHAN

736 3.7 Latihan 7. Tomografi Microwave meman-


737 jang [4]

Gambar 3.6: Skematik masalah. Potongan melintang dari alat Microwave


dan model. 1. Ruang kerja; 2: Serangkaian transmitter; 3: Serangkaian
penerima; 4: Setengah bola; 5: Area kecil nonhomogen; 6:Lapisan lemak; 7:
Lapisan otot; 8: Lapisan tulang.

Lemak εf 10 + ı
Tulang εb 11 + 2ı
738 Otot εm 25 + 15ı
Jaringan Payu Dara εbt 10 + 1.5ı
Jaringan malignan εc 23 + 15ı
739 Data
3.7. LATIHAN 7. TOMOGRAFI MICROWAVE MEMANJANG [?] 45

740 Sebagaimana disebutkan, persamaan Helmholtz skalar memodelkan per-


741 ambatan elektro magnetik di ruang bebas dan di dalam objek:

−∇2 Es + k 2 Es = (k02 − k 2 )E0 , (3.4)


742 dengan
Es dan E0 komponen medan datang dan hamburan
k bilangan gelombang
743 2
k0 = (2π/λ)2 ε
λ panjang gelombang radiasi dalam vakum
744 Dalam eksperimen numerik, digunakan medan sumber titik sebagai medan
745 datang
exp(ik0 r)
E0 (r) =
4πr
746 dengan r menyatakan jarak titik sumber dengan pusat fasa antenna peman-
747 car, k0 menyatakan bilangan gelombang untuk ruang homogen.
46 CHAPTER 3. LATIHAN

748 3.8 Latihan 8. Tomografi Microwave Melin-


749 tang

Gambar 3.7: Skematik Microwave Tomography untuk potongan melintang


pada Latihan 7. Dengan susunan bahan berupa 1: Lapisan Lemak; 2:
Anomali

750 Pada latihan ini, dengan memanfaatkan triangulasi sebagaimana di Lam-


751 piran untuk pembangkitan grid, direpresentasikan model perambatan medan
752 Elektrik secara melintang mengikuti model pada Latihan 8.
3.9. LATIHAN 9. BIOSENSOR BAKTERIA BERLAPIS [?] 47

753 3.9 Latihan 9. Biosensor bakteria berlapis


754 [24]

Gambar 3.8: Biosensor pendeteksi Bakteri berupa pandu gelombang dengan


5 lapis. Dengan syarat batas Neumann di dinding kiri/kanan, dan Dirichlet
di atap dan dasar.

755 Secara matematis, permasalahan pada latihan ini, hampir serupa dengan
756 Latihan 2. Yaitu, pada hakekatnya, menyelesaikan persamaan Helmholtz
757 dengan koefisien yang bervariasi relatif terhadap satu arah sumbu.
758 Parameter yang digunakan dalam latihan ini, diberikan sebagai berikut :
759 Panjang gelombang operasional: λ0 = 0.6328µm
760 Indeks refraktif substrat, metal, dan film secara berturutan nS = 1.495, nM =
761 0.064 + 4ı, nF = 0.15 + 3.2ı
762 Lebar lapisan metal dan film dM = 0.03µm, dF = 0.5µm
763 Indeks Refraktif beberapa bahan uji: toluena = 1.49268, nikotin = 1.5265.
764 Data eksperimen untuk pandu gelombang dengan cladding perak, secara
765 bervariasi digunakan 3 eksperimen numerik berikut ini:
766

767 • ns = 1.49, nF = 1, 59, dM = 0.03µm, dF = 0.5µm, dA = 0.06µm.


48 CHAPTER 3. LATIHAN

768 • ns = 1.49, nF = 1, 59, dM = 0.5µm, dF = 0.03µm, dA = 0.045µm.

769 • ns = 1.49, nF = 1, 59, dM = 0.03µm, dF = 0.5µm, dA = 0.04µm.


3.10. LATIHAN 10. BIOSENSOR RESONATOR CINCIN [?] 49

770 3.10 Latihan 10. Biosensor resonator cincin


771 [5]

Gambar 3.9: Biosensor deteksi gas berupa gabungan pandu gelombang dan
cincin resonator. Syarat batas Neumann di dinding kiri/kanan, dan di atap,
Dirichlet pada dasar. β1,2 secara berturutan merupakan konstanta peram-
batan di pandu gelombang dan cincin resonator. n0,1,2,3 secara berturutan
merupakan indeks refraktif di udara, pandu gelombang, cincin resonator, dan
air.

772 Indeks refraktif resonator cincin terbuat dari gelas : 1.52, Indeks refraktif
773 pandu gelombang terbuat dari Silikon Oksida : 1.468, Indeks refraktif udara
774 : 1.0, Indeks refraktif air : 1.333. Sumber cahaya eksitasi berupa sinar
775 laser ditembakkan dari sisi kiri pandu gelombang pada panjang gelombang
776 :[1, 530, 1.560]nm Diameter resonator : 100 µm, Tebal resonator : 3 µm,
777 Tebal pandu gelombang : 2 µm, Variasi celah pandu gelombang dan resonator
778 : [0, 100, 200, 300]µm.
779 Dalam [28], struktur resonator dan pandu gelombang digunakan sebagai
780 sensor MEMS untuk sensor tekanan dengan memanfaatkan efek Fano. Selain
50 CHAPTER 3. LATIHAN

781 untuk menyelesaikan persamaan Helmholtz dengan menggunakan FEFD se-


782 bagaimana diuraikan di dalam buklik ini, diperlukan simulasi untuk medan
783 elastik dan termal yang dapat diselesaikan dengan metode Galerkin dengan
784 memodifikasi beberapa baris MATLAB di Alberty dkk [1].
3.11. LATIHAN 11. BIOSENSOR SISIR/BERGERIGI PLASMONIK [?]51

785 3.11 Latihan 11. Biosensor sisir/bergerigi plas-


786 monik [17]
787 Permasalahan yang dihadapi adalah mencari difraksi dari medan Elektrik
788 dan Magnetik dalam Vj (j = 1, 2, 3). Perhatikan bahwa setiap komponen TE
789 maupun TM di setiap arah ada karena diasumsikan pemasangan kerucut.
790 Solusi harus bersifat :
791 • Berlaku persamaan Helmholtz di kedua daerah;
792 • syarat kondisi radiatif ke arah-Z bahwa gelombang ke arah V1 (atau V3 )
793 menjalar atau mengalami attenuasi ke arah Z positif (atau negatif);
794 • Syarat periodik bahwa berlaku hubungan f (X + d, Y, Z) = f (X, Y, Z),
795 serta konstanta fase dalam Y adalah β untuk setiap komponen dari
796 setiap cahaya difraksinya.
797 • Syarat batas di S1 dan S2 bahwa komponen tangensial medan Elektrik
798 dan Magnetik harus kontinu.

Gambar 3.10: Biosensor plasmonik. Skematik dari difraksi oleh kisi metal
berlapis dan definisi dari sudut polarisasi.

799 Parameter yang digunakan adalah 2h = 0.072µm, d = 0.556µm dan e =


800 0778µm. Sumber cahaya berupa gelombang bidang monokromatik dengan
801 panjang gelombang 0.633µm. Sementara indeks refraktif dari aluminium dan
802 emas n2 = 0.1594 + ı3.2166 dan n3 = 1.2078 + ı7.0148
52 CHAPTER 3. LATIHAN

803 3.12 Latihan 12. Biosensor plasmonik berceruk


804 dalam [18]

Gambar 3.11: Biosensor plasmonik. Skematik dari difraksi oleh kisi metal
berlapis dan definisi dari sudut polarisasi.

805 Pada latihan ini, merupakan varian dari latihan 11, dimana salah satu
806 celah gerigi memiliki kedalaman yang lebih dari kedalaman gerigi yang lain.
807 Parameter yang digunakan sebagai berikut :
indeks refraksi slab : nsl = 1.45
indeks refraksi substrat : nsu = 2.21
ketebalan slab : hsl = 60µm
808
ketebalan substrat : hsu = 80µm
perioda gerigi : Λ = 31µm
panjang : L = 300µm
3.13. LATIHAN 13. SPR (SURFACE PLASMON RESONANCE) SENSOR [?]53

809 3.13 Latihan 13. SPR (Surface Plasmon Reso-


810 nance) Sensor [6]

Gambar 3.12: SPR Sensor, sensor yang memanfaatkan resonansi permukaan


plasmonik.

indeks refraksi slab gelas : nsl = 1.52


indeks refraksi metal : nAg = 2.21
811 ketebalan slab gelas : hsl = 3.2µm
ketebalan metal : hAg = 32.4nm
panjang : L = 7.0µm
54 CHAPTER 3. LATIHAN

812 3.14 Latihan 14. Sel Surya Plasmonik [29]

Gambar 3.13: Sel Surya plasmonik. Unit sel dari sel surya plasmonik lapis
tipis. Tersusun dari 4 lapisan terdiri dari Indium Tin Oxide (ITO), ba-
han penyerap, elektroda emas (Au) atau perak (Ag), dan substrat dengan
ketebalan masing-masing secara berturutan d1 = 25 nm, d2 = 120 nm, d3 =
40 nm, dan d4 = 40 nm. Jarak antara dua elektroda berturutan ds = 100 nm
dan periode P = 200 nm.Cahaya datang dari arah atas melewati ITO.
3.15. LATIHAN 15. SEL SURYA PLASMONIK DENGAN PML [?] 55

813 3.15 Latihan 15. Sel Surya Plasmonik den-


814 gan PML [29]

Gambar 3.14: Sel Surya plasmonik. Unit sel dari sel surya plasmonik lapis
tipis. Tersusun dari 4 lapisan terdiri dari Indium Tin Oxide (ITO), bahan
penyerap, elektroda emas (Au) atau perak (Ag), dan substrat dengan kete-
balan masing-masing secara berturutan d1 , d2 , d3 , dan d4 . Jarak antara dua
elektroda berturutan ds dan periode P (lihat Latihan 4 untuk ukurannya).
Cahaya datang dari arah atas melewati ITO. Idealnya syarat batas PML
diberikan pada atap dan dasar, serta syarat batas periodik di kiri-kanan

815 Sebagaimana diperlihatkan di atas, ke arah y diperlukan syarat batas


816 penyerap (Absorbing Boundary Conditions,ABC) agar tidak terjadi pantulan
817 gelombang yang sifatnya artifisial di bagian atas dan bawah. Salah satu
818 bentuk ABC adalah berbentuk seperti ini:

∂ 2u 1 − j σ(y)

1 ∂ 1 ∂u di dalam PML
+ + k02 u = 0, dengan sy = ωε0
∂ 2 x sy ∂y sy ∂y 1, lainnya.
56 CHAPTER 3. LATIHAN

819 dengan ε0 merupakan permitivitas ruang bebas, dan ω merupakan frekuensi


820 sudut dari cahaya datang.

821 3.16 Latihan 16. Alat uji Non Destructive Test-


822 ing pada gelombang THz [15]

Gambar 3.15: Alat uji NDT gelombang THz. Tersusun dari 3 domain terdiri
dari udara, lensa dielektrik, dan benda uji yang memiliki cacat (defect). Sum-
ber gelombang datang dari port di bagian atas. Syarat batas PML diberikan
pada atap dan dasar, serta sisi di kiri-kanan

823 Sebagaimana diperlihatkan di atas, ke arah y diperlukan syarat batas


824 penyerap (ABC, ’Absorbing Boundary Conditions’) agar tidak terjadi pan-
825 tulan gelombang yang sifatnya artifisial di bagian atas dan bawah.
3.16. LATIHAN 16. ALAT UJI NON DESTRUCTIVE TESTING PADA GELOMBANG THZ [?]57

∂ 2 u 1 ∂ 1 ∂u 1 − j σ(y)

di PML atas/bawah
+ + k02 u = 0, dengan sy = ωε0
∂x2 sy ∂y sy ∂y 1, lainnya.

826 Begitu pula ke arah x diperlukan syarat batas penyerap (ABC, ’Absorbing
827 Boundary Conditions’) agar tidak terjadi pantulan gelombang yang sifatnya
828 artifisial di bagian kiri dan kanan.

1 ∂ 1 ∂u ∂ 2 u 1 − j σ(x)

2 ωε0
di PML kiri/kanan
+ 2 + k0 u = 0, dengan sx =
sx ∂x sx ∂x ∂y 1, lainnya.

829 Sementara di pojok atas/bawah-kiri/kanan,

1 ∂ 1 ∂u 1 ∂ 1 ∂u
+ + k02 u = 0,
sx ∂x sx ∂x sy ∂y sy ∂y
830 (
sx = 1 − j σ(x)
ωε0
dengan di PML pojok atas/bawah-kiri/kanan
sy = 1 − j σ(y)
ωε0

831 dengan ε0 merupakan permitivitas ruang bebas, dan ω merupakan frekuensi


832 sudut dari sumber.
58 CHAPTER 3. LATIHAN

833 3.17 Latihan 17. Nanowire [30]

Gambar 3.16: SPR Sensor. Sensor yang memanfaatkan struktur Nanowire


metal, alih-alih menggunakan lapisan tipis sebagaimana pada Latihan 13.

834 Bandingkan dengan latihan 13, SPR sensor yang memiliki struktur yang
835 serupa.
indeks refraksi slab gelas : nsl = 1.52
indeks refraksi metal : nAg = 2.21
836 ketebalan slab gelas : hsl = 3.2µm
ketebalan metal : hAg = 32.4nm
panjang : L = 7.0µm
3.18. LATIHAN 18. ANTENA NANO [?] 59

837 3.18 Latihan 18. Antena Nano [7]

Gambar 3.17: Struktur Antenna Nano terbuat dari perak. (a). Antena dipol
nano. (b) Jenis-1, Antena dipol nano bertangga 2 (2-steps tapered dipole).
(c) Jenis-2, Antena dipol nano bertangga 3 (3-steps tapered dipole). Panjang
gelombang operasional λ = 300nm. Syarat batas PML

Gambar 3.18: Dimensi rancangan antenna dipol dalam nanometer


60 CHAPTER 3. LATIHAN

838 3.19 Latihan 19. Antena Nano Pemanen En-


839 ergi Surya [9]

Gambar 3.19: Struktur antena nano pemanen energi surya dari perak berben-
tuk kembang. Panjang gelombang operasional λ = 300 − 1400nm

840 Ukuran:
841 a1 = 125nm, b1 = 40nm, a2 = 100nm, b2 = 20nm, G = 10nm, θ = 10o , L =
842 40nm.
3.20. LATIHAN 20. ANTENA NANO ASIMETRIK [?] 61

843 3.20 Latihan 20. Antena Nano Asimetrik [8]

Gambar 3.20: Struktur antena nano asimetrik terbuat dari perak. Panjang
gelombang operasional λ = 300 nm. Syarat batas PML

Gambar 3.21: Dimensi rancangan antenna dipol asimetrik dalam nanometer.


62 CHAPTER 3. LATIHAN
844 Chapter 4

845 Penutup

846 Baris demi baris perintah dalam MATLAB yang berhubungan langsung den-
847 gan implementasi FEM. Ditunjukkan bagaimana FEM diperkenalkan kepada
848 mahasiswa hanya menggunakan beberapa baris kode MATLAB. Beberapa
849 studi kasus yang lengkap script MATLABnya yang diberikan dapat dijalankan
850 pada PC standar tanpa kesulitan, . Hal ini juga menunjukkan bagaimana
851 konsep-konsep yang diperoleh dapat dengan mudah diperluas ke masalah
852 lain yang diberikan bersifat 2D. Namun demikian, teknik pemrograman yang
853 diberikan pada 2D dapat digunakan untuk masalah yang lebih kompleks un-
854 tuk permasalahan di 3D sebagaimana disajikan oleh Silvester dan Ferrari
855 [23]. Lembaga pendidikan dengan sumber daya keuangan yang terbatas
856 dapat mengambil manfaat dari metodologi yang diberikan, karena cukup
857 menggunakan OCTAVE yang mana perintah-perintah yang diberikan dalam
858 MATLAB masih bisa digunakan tanpa kecuali, tidak memerlukan tambahan
859 apapun bahkan pembangkit mesh sekalipun). Materi yang disajikan dalam
860 buklik ini mungkin juga berguna untuk para peneliti pemula yang belum
861 mengenal FEM.
862 Sebagaimana disampaikan di kata pengantar, buklik ini tujuan utamanya
863 adalah tutorial terkait FEM, khususnya untuk menyelesaikan persamaan
864 Helmholtz, dan implementasinya dalam MATLAB/OCTAVE. Beberapa hal
865 yang dapat dilakukan sebagai lanjutan dari tulisan ini :

866 • Pengembangan lanjutan menjadi program terintegrasi untuk menyele-


867 saikan model yang menggunakan Persamaan Helmholtz, maupun per-
868 samaan Yukawa (modified Helmholtz) yang muncul di bidang ilmu lain-
869 nya.

63
64 CHAPTER 4. PENUTUP

870 • Implementasi PLM yang lebih ’rigorous’, terutama untuk geometri ban-
871 gun tak beraturan yang ditemui di bidang lain [31].

872 • Pada Alberty dkk [1], disajikan implementasi FEM 3D dalam MAT-
873 LAB, karenanya untuk geometri 3D sederhana dengan memanfaatkan
874 buku Silvester dan Ferrari [23], dengan mudah diperluas aplikasinya
875 termasuk syarat batas penyerap.

876 • Juga tidak sulit memperluas buklik ini yang membahas persamaan
877 Helmholtz skalar untuk menyelesaikan persamaan Helmholtz vektorial,
878 dengan memanfaatkan hasil [2].
879 Bibliography

880 [1] Alberty, Jochen and Carstensen, Carsten and Funken, Stefan A, 1999,
881 Remarks around 50 lines of Matlab: short finite element implementation,
882 Numerical Algorithms, 20, 2-3, 117–137

883 [2] Anjam, I. and Valdman, J., 2015. Fast MATLAB assembly of FEM
884 matrices in 2D and 3D: Edge elements. Applied Mathematics and Com-
885 putation, 267, pp.252-263.

886 [3] Babuska, Ihlenburg,Paik, Sauer, 1995, A Generalized Finite Element


887 Method for solving the Helmholtz equation in two dimension with mini-
888 mal Pollution, Comp.Meth.Appl.Mech.Eng., V128,3-4, pp 325-359.

889 [4] Bulyshev AE, Semenov SY, Souvorov AE, Svenson RH, Nazarov AG,
890 Sizov YE, Tatsis GP. Computational modeling of three-dimensional mi-
891 crowave tomography of breast cancer. IEEE Transactions on Biomedical
892 Engineering. 2001 Sep;48(9):1053-6.

893 [5] Cho, H.K. and Han, J., 2012. Numerical study of opto-fluidic ring res-
894 onators for biosensor applications. Sensors, 12(10), pp.14144-14157.

895 [6] Christensen, D. and Fowers, D., 1996. Modeling SPR sensors with
896 the finite-difference time-domain method. Biosensors and Bioelectron-
897 ics, 11(6-7), pp.677-684.

898 [7] El-Toukhy, Y.M., Hussein, M., Hameed, M.F.O., Heikal, A.M., Abd-
899 Elrazzak, M.M. and Obayya, S.S.A., 2016. Optimized tapered dipole
900 nanoantenna as efficient energy harvester. Optics Express, 24(14),
901 pp.A1107-A1122.

65
66 BIBLIOGRAPHY

902 [8] El-Toukhy, Y.M., Hussein, M., Hameed, M.F.O. and Obayya, S.S.A.,
903 2018. Characterization of asymmetric tapered dipole nanoantenna for
904 energy harvesting applications. Plasmonics, 13(2), pp.503-510.

905 [9] El-Toukhy, Y.M., Heikal, A.M., Hameed, M.F.O., Abd-Elrazzak, M.M.
906 and Obayya, S.S.A., 2016, March. Optimization of nanoantenna for solar
907 energy harvesting based on particle swarm technique. In Wireless Infor-
908 mation Technology and Systems (ICWITS) and Applied Computational
909 Electromagnetics (ACES), 2016 IEEE/ACES International Conference
910 on (pp. 1-2). IEEE.

911 [10] K. Foster, Retaking the field an old computational favourite is over-
912 hauled, IEEE Spectrum, July (2004), 5455.

913 [11] Funken, S., Praetorius, D. and Wissgott, P., 2011. Efficient implementa-
914 tion of adaptive P1-FEM in Matlab. Computational Methods in Applied
915 Mathematics Comput. Methods Appl. Math., 11(4), pp.460-490.

916 [12] A. K. Ghatak and K. Thyagarajan, Optical Electronics (Cambridge Uni-


917 versity Press, Cambridge, 1989).

918 [13] Haldar, M.K., 2006. Introducing the Finite Element Method in electro-
919 magnetics to undergraduates using MATLAB. International journal of
920 electrical engineering education, 43(3), pp.232-244.

921 [14] S. R. H. Hoole, Computer-Aided Design of Electromagnetic Devices (El-


922 sevier, New York, 1989).

923 [15] Lopato, P.,Chady, T., Sikora, R.,Gratkowski, S & Ziolkowski,M., 2013,
924 Full wave numerical modelling of terahertz systems for nondestructive
925 evaluation of dielectric structures, COMPEL-The international journal
926 for computation and mathematics in electrical and electronic engineer-
927 ing, v323, 736–749.

928 [16] J. Lu and D. V. Thiel, Computational and visual electromagnetics us-


929 ing an integrated programming language for undergraduate engineering
930 students, IEEE Trans. Magnetics, 36 (2000), 10001003

931 [17] Luo, Z., Suyama, T., Xu, X. and Okuno, Y., 2011. A grating-based
932 plasmon biosensor with high resolution. Progress In Electromagnetics
933 Research, 118, pp.527-539
BIBLIOGRAPHY 67

934 [18] Negara, T.P., Alatas, H., Garnadi, A.D. and Nurdiati, S., 2014. Trans-
935 mission characteristics of a microscale dielectric slab waveguide device
936 with a deep groove and an embedded metallodielectric grating at low
937 terahertz frequency. Optik-International Journal for Light and Electron
938 Optics, 125(13), pp.3134-3137.

939 [19] Persson, P.O. and Strang, G., 2004. A simple mesh generator in MAT-
940 LAB. SIAM review, 46(2), pp.329-345.

941 [20] S. Ramo, J. R. Whinnery and T. Van Duzer, Fields and Waves in Com-
942 munication Electronics (John Wiley, New York, 1994).

943 [21] S. Selleri, A MATLAB experimental framework for electromagnetic ed-


944 ucation, IEEE Antennas and Propagat. Mag., 45 (2003), 8590.

945 [22] S. Selleri, A MATLAB application programmer interface for educational


946 electromagnetics in Antennas and Propagat. Soc. Symp, 2227 June,
947 2003.

948 [23] P. P. Silvester and R. L. Ferrari, Finite Elements for Electrical Engineers
949 (Cambridge University Press, Cambridge, 1990).

950 [24] Singh, V. and Kumar, D., 2009. Theoretical modeling of a metal-clad
951 planar waveguide based biosensors for the detection of pseudomonas-like
952 bacteria. Progress In Electromagnetics Research, 6, pp.167-184.

953 [25] Sumantyo,JTS., Ito,K., Rahardjo, ET., Saito, K., 2004, Metoda Beda
954 Hingga Kawasan Waktu, Penerbit ITB

955 [26] Sumantyo,JTS & Ito,K, 2004, Metoda moment untuk analisa Antena,
956 Penerbit ITB

957 [27] L. Y. Tio, A. A. P. Gibson, B. M. Dillon and L. E. Davis, Weak form


958 finite element formulation for Helmholtz equation, Int. J. Elect. Enging.
959 Educ., 41 (2004), 19.

960 [28] Wang, J., Mu, J-Q., Ma, N., and Ma, M-L.,2017, Simulation design
961 of a subwavelength Fano-photonic ring resonator pressure sensor based
962 on Finite Element Method, Optik-International Journal for Light and
963 Electron Optics, 137, 195–202
68 BIBLIOGRAPHY

964 [29] Wei, E.I., Choy, W.C. and Chew, W.C., 2010. A comprehensive study
965 for the plasmonic thin-film solar cell with periodic structure. Optics
966 express, 18(6), pp.5993-6007.

967 [30] Yan, S., Krantz, J., Forberich, K., Pflaum, C. and Brabec, C.J., 2013.
968 Numerical simulation of light propagation in silver nanowire films us-
969 ing time-harmonic inverse iterative method. Journal of Applied Physics,
970 113(15), p.154303.

971 [31] Zschiedrich, L., Klose, R., Schdle, A. and Schmidt, F., 2006. A new finite
972 element realization of the perfectly matched layer method for Helmholtz
973 scattering problems on polygonal domains in two dimensions. Journal
974 of Computational and applied mathematics, 188(1), pp.12-32.
BIBLIOGRAPHY 69

975 OCTAVE SINGKAT


976 OCTAVE merupakan program interaktif yang merdeka dan opensource untuk
977 komputasi matriks. OCTAVE dikembangkan sebagai alternatif dari produk
978 komersial populer MATLAB. Kini, OCTAVE dikembangkan secara kolaboratif
979 dalam bentuk konsorsium. Dari homepage tersebut, softwarenya dapat diun-
980 duh, juga dapat ditinjau berbagai tambahan yang disumbangkan pengguna.
981 OCTAVE mulai banyak digunakan sebagai lingkungan kerja penyelesaian
982 masalah (Problem Solving Enviroments) di dunia penelitian bidang rekayasa
983 dan industri. Dan kini mulai banyak digunakan sebagai wahana pembela-
984 jaran.
985 Sejumlah buku pengajaran Aljabar Linear mempergunakan MATLAB seba-
986 gai wahana pembelajaran. Tidak terlalu sulit bagi pengguna OCTAVE untuk
987 merubahnya ke lingkungan yang diperlukan.

988 Elemen Data Dasar.


989 Elemen dasar yang digunakan OCTAVE adalah matriks. Saat pengguna mem-
990 bangkitkan matriks, pengguna dengan cepat dapat melakukan perhitungan
991 yang cukup canggih dengan pemrograman seminimum mungkin.
992 Membentuk matriks dalam OCTAVE sangatlah mudah. Misalnya untuk
993 membangkitkan matriks berikut :
 
1 2 3 4
 5 6 7 8 
 
 9 10 11 12 
13 14 15 16

994 dengan mudah dapat diketik hal berikut ini :

995 A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16 ]

996 atau dapat pula diketik dengan cara baris demi baris :

997 A = [1 2 3 4
998 5 6 7 8
999 9 10 11 12
1000 13 14 15 16 ]
70 BIBLIOGRAPHY

1001 Vektor baris dengan jarak sama dengan mudah dibangkitkan dalam OCTAVE
1002 mempergunakan operasi : . Perintah x = 3:8 akan membangkitkan sebuah
1003 vektor dengan entri bilangan bulat dari 3 hingga 8 dalam OCTAVE :

1004 x = 3:8

1005 yang hasilnya sama saja kalau kita mengetikkan dalam OCTAVE :

1006 x = [3 4 5 6 7 8]

1007 Tidak hanya jarak teratur sebesar 1 saja yang dapat dibangkitkan seperti
1008 ini. Misalnya,

1009 x = 0.0:0.25:1.0

1010 yang hasilnya sama dengan mengetikkan :

1011 x = [0.0 0.25 0.5 0.75 1.0]

1012 Submatriks
1013 Untuk merujuk pada kolom atau baris dari matriks dengan mudah diperoleh.
1014 Misalnya kita hendak merujuk pada baris ke-4 dari matriks A, dapat kita
1015 perintahkan dengan cara :

1016 baris_4 = A(4,:)

1017 Maka OCTAVE akan merespons :

1018 baris_4 =
1019

1020 13 14 15 16

1021 tanda : pada A(4,:) menyatakan seluruh indeks kolom. Begitu pula untuk
1022 merujuk pada kolom, misalnya kolom ke-3, kita berikan perintah :

1023 kolom_3 = A(:,3)

1024 Maka OCTAVE akan merespons :


BIBLIOGRAPHY 71

1025 kolom_3 =
1026 3
1027 7
1028 11
1029 15
1030 Dalam OCTAVE diberikan kemudahan untuk akses sub-matriks. Misalnya,
1031 kita hendak mengambil submatriks di baris-1 sampai 3, dan kolom 2 sampai
1032 4, kita berikan perintah berikut ini :
1033 A_13_24 = A(1:3,2:4)
1034 Maka OCTAVE akan merespons :
1035 A_13_24 =
1036

1037 2 3 4
1038 6 7 8
1039 10 11 12

1040 Membangkitkan Matriks.


1041 Dengan mempergunakan fungsi OCTAVE yang sudah jadi, pengguna dengan
1042 mudah membangkitkan matriks berdasarkan formula yang diinginkan. Mis-
1043 alnya, perintah
1044 B = rand(4,4)
1045 akan membangkitkan matriks B berukuran 4×4 yang entrinya merupakan bi-
1046 langan acak di selang [0, 1]. Fungsi lainnya yang dapat digunakan untuk mem-
1047 bangkitkan matriks antara lain eye, zeros, ones dan toeplitz. Untuk
1048 membangkitkan matriks segitiga dan diagona tersedia fungsi triu, tril,
1049 dan diag .
1050 Perintah membangun matriks dapat digunakan untuk mengkonstruksi
1051 matriks berdasarkan partisi. Misalnya, perintah OCTAVE
1052 E = [eye(2,2) ones(2,3); zeros(2,2) [1:3; 3:-1:1] ]
1053 Sehingga akan dibangkitkan matriks :
 
1 0 1 1 1
 0 1 1 1 1 
E =   0

0 1 2 3 
0 0 3 2 1
72 BIBLIOGRAPHY

1054 Aritmetika Matriks


1055 Aritmetika matriks dalam OCTAVE cukup sederhana. Perkalian dua buah
1056 matriks A dan B dengan mudah dilakukan dengan menuliskan perintah A*B.
1057 Penjumlahan dan selisih dua buah matriks pula mudah dilakukan dengan
1058 memberikan perintah sesederhana berikut ini A+B dan A-B. Sedangkan trans-
1059 posisi matriks dengan mudah dapat menggunakan perintah :

1060 A’

1061 Jika c merupakan vektor (kolom) di IR4 , maka solusi sistem persamaan linear
1062 Ax = c dapat dihitung dengan memberikan perintah :

1063 x = A\c

1064 Fungsi OCTAVE


1065 Untuk menghitung nilai eigen dari matriks segi A, cukup mengetikkan spec(A).
1066 Sementara vektor eigen dan nilai eigen dapat diperoleh dengan memberikan
1067 perintah :

1068 [X D] = spec(A)

1069 dengan matriks D berupa matriks diagonal yang pada diagonalnya memuat
1070 nilai eigen matrix A, sedangkan matriks X yang kolomnya merupakan vektor
1071 eigen matriks A yang berkaitan dengan nilai eigen pada diagonal D.
1072 Begitu pula beberapa fungsi untuk matriks tersedia misalnya determi-
1073 nan, invers, bilangan kondisi, norm dan rank sebuah matriks yang perintah-
1074 nya hanya terdiri dari perintah satu-kata. Faktorisasi matriks seperti LU,
1075 QR, Cholesky, dekomposisi Schur dan dekomposisis nilai singular juga dapat
1076 dihitung dengan perintah satu-kata. Misalnya, perintah

1077 [Q R] = qr(A)

1078 akan menghasilkan matriks ortogonal Q dan matriks segi tiga atas R, dengan
1079 ukuran yang sama dengan A, sehingga : A = Q*R.
BIBLIOGRAPHY 73

1080 Ciri pemrograman


1081 OCTAVE memiliki semua struktur kendali pemrograman sebagaimana dite-
1082 mukan di pemrograman bahasa tingkat tinggi seperti for, while, dan if.
1083 Hal ini memungkinkan pengguna untuk menulis program OCTAVE berdasarkan
1084 kebutuhan mereka dan menggenapkan fungsi OCTAVE yang ada. Beberapa
1085 hal yang perlu di catat antara lain, OCTAVE akan mencetak setiap perintah
1086 kecuali bila pada akhir perintah tersebut diberikan titik koma. Bila memper-
1087 gunakan perintah berulang, sebaiknya dalam setiap pengulangan perintahnya
1088 diakhiri dengan titik koma, untuk menghindari hasil antara diperlihatkan di
1089 layar.

1090 OCTAVE file.


1091 Pengguna dapat memperluas fungsionalitas OCTAVE dengan menambahkan
1092 program baru yang dibutuhkannya. Program di OCTAVE dituliskan dalam
1093 sebuah file yaitu .m dan sering dirujuk sebagai OCTAVE m-file.
1094 Script files ialah file yang isinya merupakan serangkaian perintah OCTAVE
1095 . Semua variable dalam file ini bersifat global, sehingga nilai dari variabel
1096 tersebut akan berubah setiap script ini dijalankan. Sebagai contoh, misalkan
1097 seseorang ingin menghitung nolitas dari sebuah matriks, maka disusunlah
1098 sebuah script file dengan nama nolitas.m yang isinya ialah perintah berikut
1099 ini :
1100 [n_baris n_kolom] = size(A);
1101 nol_dim = n_kolom - rank(A) ;
1102 Dengan mengeksekusi perintah nolitas akan mengakibatkan kedua baris
1103 perintah di atas akan dilaksanakan. Salah satu kelemahan untuk menen-
1104 tukan nolitas seperti di atas ialah, matriksnya selalu bernama A dan nilai
1105 variabel n baris dan n kolom selalu berubah manakala perintah tersebut
1106 dilaksanakan. Sebagai pilihan, dapat digunakan function file.
1107 Sebuah function file dimulai dengan sebuah deklarasi funsional yang berben-
1108 tuk :
1109 [oarg1,oarg2,...,oargj] = f_nama(inarg1,inarg2,...,inargk)
1110 Semua variabel dalam function file bersifat lokal. Bila function files ini di-
1111 panggil, maka hanya variabel output saja yang berubah setiap saat bekerja.
1112 Misalnya, disusun sebuah function file dengan nama nolitas.m utuk menghi-
1113 tung nolitas matriks sebagai berikut :
74 BIBLIOGRAPHY

1114 function k = nolitas(A)


1115 % perintah nolitas(A) akan menghitung dimensi
1116 % ruang nol dari A.
1117 [n_baris, n_kolom] = size(A);
1118 k = n_kolom - rank(A) ;

1119 Baris dengan tanda % merupakan komentar dan tidak akan dieksekusi.
1120 Bila function files tersebut disimpan, fungsi tersebut dapat dipakai seba-
1121 gaimana perintah OCTAVE biasa. Misalnya, jika kita tetapkan

Test matriks = [1 2 3; 4 5 6; 7 8 9]

1122 kemudian kita gunakan perintah :

n = nolitas(Test matriks)

1123 OCTAVE akan memberikan jawaban : n = 1.

1124 Fungsi pembangkit matriks.


1125 Sejumlah fungsi pembangkit matriks yang cukup bermanfaat antara lain :

eye matriks identitas


zeros matriks nol
ones matriks satu
diag lihat di bawah
triu bagian segi tiga atas sebuah matriks
tril bagian segi tiga bawah sebuah matriks
rand matriks yang dibangkitkan secara acak
toeplitz see help toeplitz
1126 Misalnya, zeros(m,n) menghasilan sebuah matriks nol berukuran m-kali-
1127 n zeros(n,n) menghasilan sebuah matriks nol berukuran n-kali-n; jika A
1128 sebuah matriks, maka zeros(A) menghasilan sebuah matriks nol berukuran
1129 sama dengan ukuran A.
1130 Jika x sebuah vektor, diag(x) ialah sebuah matriks diagonal dengan
1131 x sepanjang diagonalnya; jika A sebuah matriks segi, maka diag(A) ialah
1132 sebuah vektor yang isinya diagonal dari A. Lalu apakah diag(diag(A))?
1133 Cobalah.
BIBLIOGRAPHY 75

1134 Matriks dapat dibangun dari blok. Misalnya, jika A sebuah matriks
1135 berukuran 3-kali-3, maka

B = [A, zeros(3, 2); zeros(2, 3), eye(2, 2)]

1136 akan merupakan sebuah matriks tertentu berukuran 5-kali-5.


76 BIBLIOGRAPHY

1137 LAMPIRAN
BIBLIOGRAPHY 77

1138 LAMPIRAN 1
1139 Script MATLAB lengkap untuk kasus 1,

1140 load koordinat1.dat; koordinat1(:,1)=[]; % koordinat-koordinat


1141 load elemen1.dat; elemen1(:,1)=[]; % elemen hingga berbentuk segitiga
1142 load deltaomega.dat; deltaomega(:,1)=[];
1143 koordinat = koordinat1;
1144 elemen = elemen1;
1145 NodeBebas=setdiff(1:size(koordinat,1),unique(deltaomega));
1146 A = sparse(size(koordinat,1),size(koordinat,1));
1147 b = sparse(size(koordinat,1),1);
1148 % 1. menyusun matriks A1
1149 % dengan memanggil fungsi stima
1150 for i = 1:size(elemen,1)
1151 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
1152 + stima(koordinat(elemen(i,:),:));
1153 end
1154 % 2. menyusun matriks A2
1155 for i = 1:size(elemen,1)
1156 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
1157 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1158 (diag(ones(3,1))+ ones(3))*k0(sum(koordinat(elemen(i,:),:))/3)/24;
1159 end
1160 u = sparse(size(koordinat,1),1);
1161 u(unique(deltaomega)) = deltaO(koordinat(unique(deltaomega),:));
1162 b = b - A*u;
1163 % 3. Komputasi solusi
1164 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
1165 % 4. Grafika
1166 show(elemen,[],koordinat,full(u));
1167 xlabel(’x’);ylabel(’y’);zlabel(’u’);
78 BIBLIOGRAPHY

1168 LAMPIRAN 2 A
1169 Script MATLAB lengkap untuk kasus 2a

1170 % inisialisasi
1171 load koordinat1.dat; koordinat1(:,1)=[]; % koordinat-koordinat
1172 load elemen1.dat; elemen1(:,1)=[]; % elemen hingga berbentuk segitiga
1173 load neumann1.dat; neumann1 (:,1)=[];
1174 load dirichlet1.dat; dirichlet1 (:,1)=[];
1175 koordinat = koordinat1;
1176 elemen = elemen1;
1177 neumann = neumann1;
1178 dirichlet = dirichlet1;
1179 for k = 1:3
1180 [koordinat,elemen,dirichlet,neumann] ...
1181 = refineRGB(koordinat,elemen,dirichlet,neumann,[]);
1182 end
1183 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
1184 A = sparse(size(koordinat,1),size(koordinat,1));
1185 b = sparse(size(koordinat,1),1);
1186 % 1. menyusun matriks A1
1187 % dengan memanggil fungsi stima_1
1188 for i = 1:size(elemen,1)
1189 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
1190 + stima(koordinat(elemen(i,:),:));
1191 end
1192 % 2. menyusun matriks A2
1193 for i = 1:size(elemen,1)
1194 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
1195 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1196 (diag(ones(3,1))+ ones(3))*k1(sum(koordinat(elemen(i,:),:))/3)/24;
1197 end
1198 % 3. Gaya luar
1199 for i = 1:size(elemen,1)
1200 b(elemen(i,:)) = b(elemen(i,:))+...
1201 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1202 g(sum(koordinat(elemen(i,:))/3))/6;
1203 end
1204 %
1205 % 4. Syarat Batas Neumann
1206 %
BIBLIOGRAPHY 79

1207 for i = 1:size(neumann,1)


1208 b(neumann(i,:))=b(neumann(i,:)) +...
1209 norm(koordinat(neumann(i,1),:)- ...
1210 koordinat(neumann(i,2),:)) *...
1211 q1(sum(koordinat(neumann(i,:),:))/2)/2;
1212 end
1213 %
1214 % 5. Syarat Batas Dirichlet
1215 %
1216 u = sparse(size(koordinat,1),1);
1217 u(unique(dirichlet)) = ud1(koordinat(unique(dirichlet),:));
1218 b = b - A*u;
1219 %
1220 % 6. Komputasi solusi
1221 %
1222 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
1223 %
1224 % 7. Grafika
1225 %
1226 show(elemen,[],koordinat,full(u));
1227 xlabel(’x’);ylabel(’y’);zlabel(’u’);
80 BIBLIOGRAPHY

1228 LAMPIRAN 2 B
1229 Script MATLAB lengkap untuk kasus 2b

1230 load koordinat2.dat; koordinat2(:,1)=[];%koordinat node


1231 load elemen2.dat; elemen2(:,1)=[]; %daftar elemen hingga berbentuk segiti
1232 load neumann3.dat; neumann3(:,1)=[];
1233 load dirichlet3.dat; dirichlet3(:,1)=[];
1234 koordinat=koordinat2;
1235 elemen=elemen2;
1236 neumann = neumann3;
1237 dirichlet = dirichlet3;
1238 for k = 1:5
1239 [koordinat,elemen,dirichlet,neumann] ...
1240 = refineRGB(koordinat,elemen,dirichlet,neumann,[]);
1241 end
1242 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
1243 A = sparse(size(koordinat,1),size(koordinat,1));
1244 b = sparse(size(koordinat,1),1);
1245 % 1. menyusun matriks A1
1246 % dengan memanggil fungsi stima_1
1247 for i = 1:size(elemen,1)
1248 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
1249 + stima(koordinat(elemen(i,:),:));
1250 end
1251 % 2. menyusun matriks A2
1252 for i = 1:size(elemen,1)
1253 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
1254 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1255 (diag(ones(3,1))+ ones(3))*k1(sum(koordinat(elemen(i,:),:))/3)/24;
1256 end
1257 % 3. Gaya luar
1258 for i = 1:size(elemen,1)
1259 b(elemen(i,:)) = b(elemen(i,:))+...
1260 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1261 g(sum(koordinat(elemen(i,:))/3))/6;
1262 end
1263 % 4. Syarat Batas Neumann
1264 for i = 1:size(neumann,1)
BIBLIOGRAPHY 81

1265 b(neumann(i,:))=b(neumann(i,:)) +...


1266 norm(koordinat(neumann(i,1),:)- ...
1267 koordinat(neumann(i,2),:)) *...
1268 q1(sum(koordinat(neumann(i,:),:))/2)/2;
1269 end
1270 % 5. Syarat Batas Dirichlet
1271 u = sparse(size(koordinat,1),1);
1272 u(unique(dirichlet)) = ud1(koordinat(unique(dirichlet),:));
1273 b = b - A*u;
1274 % 6. Komputasi solusi
1275 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
1276 %
1277 % 7. Grafika
1278 %
1279 show(elemen,[],koordinat,full(u));
1280 xlabel(’x’);ylabel(’y’);zlabel(’u’);
82 BIBLIOGRAPHY

1281 LAMPIRAN 2 C
1282 Script MATLAB lengkap untuk kasus 2c

1283 load koordinat3.dat; koordinat3(:,1)=[]; % koordinat-koordinat


1284 load elemen3.dat; elemen3(:,1)=[]; % elemen hingga berbentuk segitiga
1285 load neumann4.dat; neumann4(:,1)=[];
1286 load dirichlet4.dat; dirichlet4(:,1)=[];
1287 koordinat=koordinat3;
1288 elemen=elemen3;
1289 neumann = neumann4;
1290 dirichlet = dirichlet4;
1291 for k = 1:4
1292 [koordinat,elemen,dirichlet,neumann] ...
1293 = refineRGB(koordinat,elemen,dirichlet,neumann,[]);
1294 end
1295 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
1296 A = sparse(size(koordinat,1),size(koordinat,1));
1297 b = sparse(size(koordinat,1),1);
1298 % 1. menyusun matriks A1
1299 % dengan memanggil fungsi stima_1
1300 for i = 1:size(elemen,1)
1301 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
1302 + stima(koordinat(elemen(i,:),:));
1303 end
1304 % 2. menyusun matriks A2
1305 for i = 1:size(elemen,1)
1306 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
1307 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1308 (diag(ones(3,1))+ ones(3))*k2(sum(koordinat(elemen(i,:),:))/3)/24;
1309 end
1310 % 3. Gaya luar
1311 for i = 1:size(elemen,1)
1312 b(elemen(i,:)) = b(elemen(i,:))+...
1313 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1314 g(sum(koordinat(elemen(i,:))/3))/6;
1315 end
1316 % 4. Syarat Neumann
1317 for i = 1:size(neumann,1)
BIBLIOGRAPHY 83

1318 b(neumann(i,:))=b(neumann(i,:)) +...


1319 norm(koordinat(neumann(i,1),:)- ...
1320 koordinat(neumann(i,2),:)) *...
1321 q1(sum(koordinat(neumann(i,:),:))/2)/2;
1322 end
1323 % 5. Syarat Dirichlet
1324 u = sparse(size(koordinat,1),1);
1325 u(unique(dirichlet)) = ud3(koordinat(unique(dirichlet),:));
1326 b = b - A*u;
1327 % 6. Komputasi solusi
1328 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
1329 % 7. Grafika
1330 show(elemen,[],koordinat,full(u));
1331 xlabel(’x’);ylabel(’y’);zlabel(’u’);
84 BIBLIOGRAPHY

1332 LAMPIRAN 2 D
1333 Script MATLAB lengkap untuk kasus 2d

1334 load koordinat4.dat; koordinat4(:,1)=[]; % koordinat-koordinat


1335 load elemen4.dat; elemen4(:,1)=[]; % elemen hingga berbentuk segitiga
1336 load neumann5.dat; neumann5(:,1)=[];
1337 load dirichlet5.dat; dirichlet5(:,1)=[];
1338 koordinat=koordinat4;
1339 elemen=elemenB4;
1340 neumann = neumann5;
1341 dirichlet = dirichlet5;
1342 for k = 1:4
1343 [koordinat,elemen,dirichlet,neumann] ...
1344 = refineRGB(koordinat,elemen,dirichlet,neumann,[]);
1345 end
1346 NodeBebas=setdiff(1:size(koordinat,1),unique(dirichlet));
1347 A = sparse(size(koordinat,1),size(koordinat,1));
1348 b = sparse(size(koordinat,1),1);
1349 % 1. menyusun matriks A1
1350 % dengan memanggil fungsi stima_1
1351 for i = 1:size(elemen,1)
1352 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:)) ...
1353 + stima(koordinat(elemen(i,:),:));
1354 end
1355 % 2. menyusun matriks A2
1356 for i = 1:size(elemen,1)
1357 A(elemen(i,:),elemen(i,:)) = A(elemen(i,:),elemen(i,:))+...
1358 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1359 (diag(ones(3,1))+ ones(3))*k3(sum(koordinat(elemen(i,:),:))/3)/24;
1360 end
1361 % 3. Gaya luar
1362 for i = 1:size(elemen,1)
1363 b(elemen(i,:)) = b(elemen(i,:))+...
1364 det([ones(1,3);koordinat(elemen(i,:),:)’])*...
1365 g(sum(koordinat(elemen(i,:))/3))/6;
1366 end
1367 % 4. Syarat Neumann
1368 for i = 1:size(neumann,1)
BIBLIOGRAPHY 85

1369 b(neumann(i,:))=b(neumann(i,:)) +...


1370 norm(koordinat(neumann(i,1),:)- ...
1371 koordinat(neumann(i,2),:)) *...
1372 q1(sum(koordinat(neumann(i,:),:))/2)/2;
1373 end
1374 % 5. Syarat Dirichlet
1375 u = sparse(size(koordinat,1),1);
1376 u(unique(dirichlet)) = ud3(koordinat(unique(dirichlet),:));
1377 b = b - A*u;
1378 % 6. Komputasi solusi
1379 u(NodeBebas) = A(NodeBebas,NodeBebas) \ b(NodeBebas);
1380 % 7. Grafika
1381 show(elemen,[],koordinat,full(u));
1382 xlabel(’x’);ylabel(’y’);zlabel(’u’);
86 BIBLIOGRAPHY

1383 LAMPIRAN 3
1384 PENJELASAN SINGKAT TENTANG PEMBENTUKAN GRID

1385 Untuk dapat melakukan pekerjaan secara mandiri membangun grid yang
1386 diperlukan, akan ditampilkan diskusi singkat dan penggunaan sederhana
1387 menggunakan perangkat Distmesh [19] yang tersedia dengan bebas, dan
1388 didiskusikan secara rinci dalam:

1389 P.O. Persson, G. Strang, A Simple Mesh Generator in MATLAB,


1390 SIAM Review, 46(2), 329-345, 2004
1391 http://www-math.mit.edu/persson/mesh/

1392 Tulisan ini juga berfungsi menyediakan user guide yang bersifat komprehen-
1393 sif. DistMesh sangat sesuai karena mudah penggunaannya dan permulaan
1394 yang baik sebelum bergerak ke arah yang lebih kompleks dan aplikasi yang
1395 lebih canggih tanpa perlu ragu menggunakan software pembentuk mesh se-
1396 lanjutnya.
1397 Selanjutnya kami menjelaskan bagaimana DistMesh dapat memproses
1398 secara otomatis untuk membentuk mesh 1D dan 2D yang seragam maupun
1399 yang tidak seragam. Kami akan memberikan sedikit penggunaan tulisan dan
1400 contoh bagaimana menyusun dan mendefinisikan sebuah mesh, bagaimana
1401 mendefinisikan tipe batas yang dibutuhkan unuk kondisi batas yang spesifik,
1402 menggunakan fungsi jarak untuk menggambarkan geometri, dan bagaimana
1403 menyusun sebuah mesh periodik yang sederhana.
1404 B1. Dasar
1405 Kami menggambarkan mengenai penggunaan DistMesh untuk mendap-
1406 atkan (VX, VY) dan EToV dibutuhkan untuk menghitung konektivitas dan
1407 sebagainya. DistMesh berbasis pada penggunaan fungsi jarak untuk geometri
1408 yang spesifik. Dalam hal ini fungsi jarak dapat dikombinasikan dan dima-
1409 nipulasi untuk menetapkan apakah didalam atau diluar geometri tertentu
1410 adalah negatif.
1411 Bentuk umum bagian dari DistMesh adalah:

1412 >> function [p,t] = distmeshnd(fd,fh,h0,bbox,pfix,varargin);

1413 Argumennya sebagai berikut:


1414 Input: 6 Variabel berupa
BIBLIOGRAPHY 87

Fd : Fungsi yang menandakan jarak dari masing-masing node ke batas


Fh : Fungsi yang menunjukkan panjang sisi relative untuk semua titik input
H0 : Ukuran grid awal, yang menjadikan ukuran grid teraproksimasi untuk grid
1415
Bbox : Box terikat untuk geometri
Pfix : Array dari node-node yang tetap
Varargin : Array optional
1416 Output: dua variabel berupa
P : Daftar dari vertex, contohnya VX=p(:,1), VY= p(:,2), dan lain lain
1417
T : Daftar dari elemen, EToV=t
1418 Kemudian perhatikan sebuah contoh pembentukan mesh satu D seder-
1419 hana pada segmen garis tidak seragam yang dikelompokan pada x = 0 dalam
1420 Ω = [−1, 1]. Kami mendefunisikan fungsi jarak yang ditandai sebagai:

1421 % distance function for a circle about xc=0


1422 >> fd=inline(abs(p)-1,p);

1423 Dimana P bisa dijadikan koordinat X. Pada kasus ini, fungsi jarak bisa
1424 dikhususkan melalui sebuah fungsi utama, tapi hal tersebut tidak dibu-
1425 tuhkan. Untuk ukuran grid yang tidak seragam kita harus mengkhususkan
1426 sebuah fungsi ukuran elemen yang menggambarkan distribusi relatif melalui
1427 domain, sehingga kumpulan didalam fungsi ini tidak menggambarkan ukuran
1428 grid yang aktual. Sebagaimana contoh.

1429 % distribution weight function


1430 >> fh=inline(abs(p)*0.075+0.0125,p);

1431 Mesh dibentuk melalui bagian:

1432 % generate non-uniform example mesh in 1D using DistMesh


1433 >> h0 = 0.025; % chosen element spacing
1434 >> [p,t]=distmeshnd(fd,fh,h0,[-1;1],[]);
1435 >> K = size(t,1); Nv = size(p,1);

1436 Dua tabel ditunjukan yang secara lengkap mendefinisikan mesh, dan kita
1437 bisa menunjukan sejumlah elemen K, dan verteks, Nv, Secara langsung dari
1438 ukuran array ini.
1439 Sebuah mesh yang seragam bisa dibentuk melalui fungsi intrinsik bernama
1440 huniform, sebagai berikut ini:
88 BIBLIOGRAPHY

1441 % generate uniform example mesh in 1D using DistMesh


1442 >> [p,t]=distmeshnd(fd,@huniform,h0,[-1;1],[]);
1443 Node verteks ditambahkan menjadi:
1444 >> [x,i]=sort(p(t));
1445 >> t=t(i,:);
1446 >> t=sort(t,ascend);
1447 >> EToV = t; VX = p(:,1);
1448 Ini bisa ditunjukan secara langsung pada solver. Langkah sederhana ini
1449 dikumpulkan dalam script yang kecil MeshGenDistMesh1D.m.
1450 ____________________ [MeshGenDistMesh1D.m]______________________
1451 function [Nv, VX, K, EToV] = MeshGenDistMesh1D()
1452 % function [VX, K, EToV] = MeshGenDistMesh1D()
1453 % Purpose : Generate 1D mesh using DistMesh;
1454 % distance function for a circle about xc=0
1455 fd=inline(abs(p)-1,p);
1456 % distribution weight function
1457 fh=inline(abs(p)*0.075+0.0125,p);
1458 % generate non-uniform example mesh in 1D using DistMesh
1459 h0 = 0.025; % chosen element spacing
1460 [p,t]=distmeshnd(fd,fh,h0,[-1;1],[]);
1461 K = size(t,1); Nv = K+1;
1462 % Sort elements in ascending order
1463 [x,i]=sort(p(t));
1464 t=t(i,:);
1465 Met=sort(t,ascend);
1466 EToV = t; VX = p(:,1);
1467 return
1468 Grid 2D bisa dibentuk dalam cara yang sama. Perhatikan sebagaimana
1469 contoh pembentukan grid equidistant dalam sebuah domain melingkar, dike-
1470 lilingi oleh [−1, 1]2 . Berikutnya outline dibawah kami lanjutkan sebagai :
1471 >> fd = inline(sqrt(sum(p.2,2))-1,p);
1472 >> [p,t] = distmeshnd(fd,@huniform,0.2,[-1 -1; 1 1], []);
1473 >> VX = p(:,1); VY = p(:,2);
1474 >> K = size(t,1); Nv = size(p,1);
1475 >> EToV = t;
BIBLIOGRAPHY 89

1476 Catatan: Dalam DistMesh tidak menghasilkan susunan elemen vertex


1477 yang berlawanan arah jarum jam, untuk itu perlu diperiksa dan dikoreksi
1478 semua elemen untuk memastikannya. Contoh:

1479 >> ax = VX(EToV(:,1)); ay = VY(EToV(:,1));


1480 >> bx = VX(EToV(:,2)); by = VY(EToV(:,2));
1481 >> cx = VX(EToV(:,3)); cy = VY(EToV(:,3));
1482 >> D = (ax-cx).*(by-cy)-(bx-cx).*(ay-cy);
1483 >> i = find(D<0);
1484 >> EToV(i,:) = EToV(i,[1 3 2]);

1485 Disini banyak beberapa contoh dalam user guide DistMesh yang bisa me-
1486 nunjukkan daftar dari fungsi yang sederhana; contohnya, untuk membentuk
1487 grid persegi panjang seseorang bisa menggunakan:

1488 ____________________ [ MeshGenDistMesh2D] ______________________


1489 function [VX, VY, K, EToV] = MeshGenDistMesh2D()
1490 % function [VX, VY, K, EToV] = MeshGenDistMesh2D()
1491 % Purpose : Generate 2D square mesh using DistMesh;
1492 % By Allan P. Engsig-Karup
1493 % Parameters to set/define
1494 % fd Distance function for mesh boundary
1495 % fh Weighting function for distributing elements
1496 % h0 Characteristic length of elements
1497 % Bbox Bounding box for mesh
1498 % param Parameters to be used in function call with DistMesh
1499 fd = inline(drectangle(p,-1,1,-1,1),p);
1500 fh = @huniform;
1501 h0 = 0.25;
1502 Bbox = [-1 -1; 1 1];
1503 param = [];
1504 % Call distmesh
1505 [Vert,EToV]=distmesh2d(fd,fh,h0,Bbox,param);
1506 VX = Vert(:,1); VY = Vert(:,2);
1507 Nv = length(VX); K = size(EToV,1);
1508 % Reorder elements to ensure counter clockwise orientation
1509 ax = VX(EToV(:,1)); ay = VY(EToV(:,1));
1510 bx = VX(EToV(:,2)); by = VY(EToV(:,2));
90 BIBLIOGRAPHY

1511 cx = VX(EToV(:,3)); cy = VY(EToV(:,3));


1512 D = (ax-cx).*(by-cy)-(bx-cx).*(ay-cy);
1513 i = find(D<0);
1514 EToV(i,:) = EToV(i,[1 3 2]);
1515 return

1516 B2. Membentuk Peta Batas


1517 Terkadang banyak contoh dan grid secara umum ditunjukkan dalam user
1518 guide DistMesh; pembentukan peta batas yang khusus untuk menunjukkan
1519 kondisi batas yang berbeda dibutuhkan sedikit langkah: Tabel batas untuk
1520 semua muka elemen lebih mudah didapatkan dari array EToE sebagai:

1521 >> BCType = int8(not(EToE));

1522 Berikutnya, jika kita ingin membedakan batas yang berbeda, kita mem-
1523 butuhkan cara yang efisien untuk syarat batas yang khusus. Secara konven-
1524 sional bisa dilakukan dengan fungsi jarak dengan syarat d = 0 pada batas
1525 dan d <> diluar batas. Perhatikan contoh berikut ini. Kita set up sebuah
1526 unit lingkaran dengan lubang di bagian tengah sebagai:

1527 >> fd=inline(-0.3+abs(0.7-sqrt(sum(p.2,2))));


1528 >> [p,t]=distmeshnd(fd,@huniform,0.1,[-1,-1;1,1],[]);

1529 Dengan mudah hanya melalui dua baris perintah pada kode DistMesh.
1530 Kita ingin mendefinisikan peta mapI dan mapO yang bisa mengkhususkan
1531 kondisi batas yang berbeda di dalam dan diluar batas pada lingkaran berjejari
1532 satu satuan dengan bolongan di tengah. Kami catat bahwa fungsi jarak
1533 menggambarkan batas secara lengkap (lihat gambar B1)

1534 >> fd inner=inline(sqrt(sum(p.2,2))-0.4,p);


1535 >> fd outer=inline(sqrt(sum(p.2,2))-1,p);

1536 Penggunaan fungsi ini bisa menentukan daftar indeks dari node vertex
1537 pada batas melalui:

1538 >> tol = 1e-8; % tolerance level used for determining nodes
1539 >> nodesInner = find( abs(fd inner(p))<tol );
1540 >> nodesOuter = find( abs(fd outer(p))<tol );
BIBLIOGRAPHY 91

Gambar 4.1: Mesh Ω berupa lingkaran bolong

1541 Disini tol adalah toleransi yang diberikan yang dapat diubah bergantung
1542 pada grid. Nilai tersebut bisa lebih rendah dibandingkan jarak minimum
1543 lokal diantara node-node. Oleh karena itu dianjrkan untuk selalu memeriksa
1544 peta batas yang di definisikan. Cara mudah untuk melakukan ini adalah:

1545 % choose a map to plot


1546 >> MAP = nodesInner;
1547 % show all vertices and circle out map nodes in red
1548 >> plot(p(:,1),p(:,2),k.,p(MAP,1),p(MAP,2),ro);

1549 Gambar B.1 Mesh unit lingkaran

1550 Definisikan konstanta:

1551 >> In = 1;
1552 >> Out = 2;
92 BIBLIOGRAPHY

1553 Dengan menggunakan konstanta tersebut untuk memeriksa informasi dalam


1554 tabel, BCType, melalui:

1555 >> BCType = CorrectBCTable(EToV,BCType,nodesInner,In);


1556 >> BCType = CorrectBCTable(EToV,BCType,nodesOuter,Out);

1557 Dimana penggunaan BCType masuk dalam kode yang tepat untuk batas
1558 dalam array: menggunakan:

1559 ______________________ [CorrectBCTable] ________________________


1560 function BCType = CorrectBCTable(EToV,BCType,mapnodes,BCcode)
1561 % function BCType = CorrectBCTable(EToV,BCType,mapnodes,BCcode);
1562 % Purpose: Setup BCType for boundary conditions in 2D
1563 % By Allan P. Engsig-Karup
1564 Globals2D;
1565 VNUM = [1 2;2 3;3 1]; % face orientations
1566 for k = 1:K
1567 % Test for each edge
1568 for l = 1:Nfaces
1569 m = EToV(k,VNUM(l,1)); n = EToV(k,VNUM(l,2));
1570 % if both points are on the boundary then it is a boundary
1571 % point!
1572 ok=sum(ismember([m n],mapnodes));
1573 if ok==2
1574 BCType(k,l)=BCcode;
1575 end;
1576 end
1577 end
1578 return

1579 Pembentukan peta batas yang tepat digambarkan menggunakan tulisan


1580 ConstructMap.m setelah dilengkapi informasi BCType.

1581 % Construct special face from the BCType table


1582 >> mapI = ConstructMap(BCType, In);
1583 >> mapO = ConstructMap(BCType, Out);

1584 ______________________ [ConstructMap] ________________________


1585 function [map] = ConstructMap(BCType, BCcode)
BIBLIOGRAPHY 93

1586 % function map = ConstructMap(BCType, BCcode);


1587 % Purpose: Construct boundary map from the BCType table
1588 % By Allan P. Engsig-Karup, 07-12-2006.
1589 Globals2D;
1590 % Determine which faces in which elements which have the specified BCs:
1591 % fids = face ids, eids = element ids;
1592 [eids,fids] = find(BCType==BCcode);
1593 % initialize length of new map
1594 map = [];
1595 for n = 1 : length(fids) % go over each boundary face of BCcode type
1596 map = [map (eids(n)-1)*Nfaces*Nfp+[ (fids(n)-1)*Nfp + [1:Nfp] ]];
1597 end
1598 return
94 BIBLIOGRAPHY

1599 LAMPIRAN 4
1600 Script MATLAB untuk Utilities

1601 • [1.] Refine mesh [11]

1602 function [coordinates,newElements,varargout] ...


1603 = refineRGB(coordinates,elements,varargin)
1604

1605 %refineRGB: local refinement of finite element mesh by


1606 %red-green-blue, refinement, where marked elements are
1607 %red-refined.
1608 %
1609 %Usage:
1610 %
1611 % [coordinates,elements,dirichlet,neumann] ...
1612 % = refineRGB(coordinates,elements,dirichlet,neumann,marked)
1613 %
1614 % refineRGB expects as input a finite element mesh described
1615 % by the fields coordinates, elements, dirichlet and neumann.
1616 % The vector marked contains the indices of elements which are
1617 % refined by red-refinement, i.e. which are split into 4
1618 % similar triangles.
1619 %
1620 % The function returns the refined mesh in terms of the same
1621 % data as for the input.
1622 %
1623 % Remark:
1624 %
1625 % This program is a supplement to the paper
1626 % >> Efficient Implementation of Adaptive P1-FEM in Matlab <<
1627 % by S. Funken, D. Praetorius, and P. Wissgott. The reader
1628 % should
1629 % consult that paper for more information.
1630 %
1631 %Authors:
1632 %
1633 % S. Funken, D. Praetorius, P. Wissgott 10-07-08
BIBLIOGRAPHY 95

1634

1635 markedElements = varargin{end};


1636 nE = size(elements,1);
1637 %*** Sort elements such that first edge is longest
1638 dx = coordinates(elements(:,[2,3,1]),1)-coordinates(elements,1);
1639 dy = coordinates(elements(:,[2,3,1]),2)-coordinates(elements,2);
1640 [hT,idxMax] = max(reshape(dx.^2+dy.^2,nE,3),[],2);
1641 idx = ( idxMax==2 );
1642 elements(idx,:) = elements(idx,[2,3,1]);
1643 idx = ( idxMax==3 );
1644 elements(idx,:) = elements(idx,[3,1,2]);
1645 %*** Obtain geometric information on edges
1646 [edge2nodes,element2edges,boundary2edges{1:nargin-3}] ...
1647 = provideGeometricData(elements,varargin{1:end-1});
1648 %*** Mark edges for refinement
1649 edge2newNode = zeros(max(max(element2edges)),1);
1650 edge2newNode(element2edges(markedElements,:)) = 1;
1651 swap = 1;
1652 while ~isempty(swap)
1653 markedEdge = edge2newNode(element2edges);
1654 swap = find( ~markedEdge(:,1) & (markedEdge(:,2) |
1655 markedEdge(:,3)) );
1656 edge2newNode(element2edges(swap,1)) = 1;
1657 end
1658 %*** Generate new nodes
1659 edge2newNode(find(edge2newNode)) = size(coordinates,1) ...
1660 + [1:nnz(edge2newNode)];
1661 idx = find(edge2newNode);
1662 coordinates(edge2newNode(idx),:) ...
1663 = (coordinates(edge2nodes(idx,1),:)+coordinates(edge2nodes(idx,2),:))/2;
1664 %*** Refine boundary conditions
1665 for j = 1:nargout-2
1666 boundary = varargin{j};
1667 if ~isempty(boundary)
1668 newNodes = edge2newNode(boundary2edges{j});
1669 markedEdges = find(newNodes);
1670 if ~isempty(markedEdges)
1671 boundary = [boundary(~newNodes,:); ...
96 BIBLIOGRAPHY

1672 boundary(markedEdges,1),newNodes(markedEdges); ..
1673 newNodes(markedEdges),boundary(markedEdges,2)];
1674 end
1675 end
1676 varargout{j} = boundary;
1677 end
1678 %*** Provide new nodes for refinement of elements
1679 newNodes = edge2newNode(element2edges);
1680 %*** Determine type of refinement for each element
1681 markedEdges = (newNodes~=0);
1682 none = ~markedEdges(:,1);
1683 bisec1 = ( markedEdges(:,1) & ~markedEdges(:,2) & ~markedEdges(:,3) );
1684 bisec12= ( markedEdges(:,1) & markedEdges(:,2) & ~markedEdges(:,3) );
1685 bisec13= ( markedEdges(:,1) & ~markedEdges(:,2) & markedEdges(:,3) );
1686 red = ( markedEdges(:,1) & markedEdges(:,2) & markedEdges(:,3) );
1687 %*** Generate element numbering for refined mesh
1688 idx = ones(nE,1);
1689 idx(bisec1) = 2;%***green = newest vertex bisection of 1st edge
1690 idx(bisec12) = 3;%***blue(right)=newest vertex bisection of 1st and 2nd e
1691 idx(bisec13) = 3;%***blue(left)=newest vertex bisection of 1st and 3rd ed
1692 idx(red) = 4;%***red refinement
1693 idx = [1;1+cumsum(idx)];
1694 %*** Generate new elements
1695 newElements = zeros(idx(end)-1,3);
1696 newElements(idx(none),:) = elements(none,:);
1697 newElements([idx(bisec1),1+idx(bisec1)],:) ...
1698 = [elements(bisec1,3),elements(bisec1,1),newNodes(bisec1,1); ...
1699 elements(bisec1,2),elements(bisec1,3),newNodes(bisec1,1)];
1700 newElements([idx(bisec12),1+idx(bisec12),2+idx(bisec12)],:) ...
1701 = [elements(bisec12,3),elements(bisec12,1),newNodes(bisec12,1); ...
1702 newNodes(bisec12,1),elements(bisec12,2),newNodes(bisec12,2); ...
1703 elements(bisec12,3),newNodes(bisec12,1),newNodes(bisec12,2)];
1704 newElements([idx(bisec13),1+idx(bisec13),2+idx(bisec13)],:) ...
1705 = [newNodes(bisec13,1),elements(bisec13,3),newNodes(bisec13,3); ...
1706 elements(bisec13,1),newNodes(bisec13,1),newNodes(bisec13,3); ...
1707 elements(bisec13,2),elements(bisec13,3),newNodes(bisec13,1)];
1708 newElements([idx(red),1+idx(red),2+idx(red),3+idx(red)],:) ...
1709 = [elements(red,1),newNodes(red,1),newNodes(red,3); ...
BIBLIOGRAPHY 97

1710 newNodes(red,1),elements(red,2),newNodes(red,2); ...


1711 newNodes(red,3),newNodes(red,2),elements(red,3); ...
1712 newNodes(red,2),newNodes(red,3),newNodes(red,1)];
1713

1714 • [2.] Visualisasi [1]


1715

1716 function show(elements3,elements4,coordinates,u)


1717 %SHOW Presents two-dimensional piecewise affine function graphically.
1718 % SHOW(ELEMENTS3,ELEMENTS4,COORDINATES,U) presents a two-dimensional
1719 % spline function graphically. ELEMENTS3 denotes a set of triangles
1720 % with dimension (no. of triangles) x 3 and ELEMENTS4 denotes a set of
1721 % parallelograms (dimension (no. of parallelograms) x 4. Both arrays
1722 % include number of nodes. The nodes have to be counted clockwise.
1723 % or anti-clockwise. The coordinates of the nodes are stored in an
1724 % (no. of coordinates) x 2 - dimensional array called COORDINATES.
1725 % Its i’th row defines the x- and y- coordinate of the i’th node.
1726 % U is a (no. of coordinates) x 1 - dimensional array containing in
1727 % the i’th row the value of the spline function at the i’th node.
1728

1729 % J. Alberty, C. Carstensen and S. A. Funken 02-11-99


1730 %
1731 %
1732 %
1733

1734 trisurf(elements3,coordinates(:,1),coordinates(:,2),...
1735 u’,’facecolor’,’interp’)
1736

1737 view(10,40);
1738 title(’Solution of the Problem’)
1739
98 BIBLIOGRAPHY

1740 LAMPIRAN 5
1741 Alat Bantu Matematika
1742 Integration by parts.

1743 1. Rumus satu dimensi skalar


1744 Integration by parts menyangkut variabel skalar di satu dimensi, diny-
1745 atakan sebagai berikut :
Z x2 Z x2
dv x2 du
u dx = uv|x1 − vdx
x1 dx x1 dx

1746 2. Rumus integrasi untuk vektor


1747 Teorema divergensi yang diterapkan untuk fungsi uF, u, dan F, dapat
1748 dituliskan sebagai
Z Z
∇ • (uF)dΩ = (uF) • ndS
Ω ∂Ω

1749 Dengan menggunakan aturan perkalian untuk divergensi

∇ • (uF) = (∇u) • F + u(∇ • F)

1750 Sehingga diperoleh


Z Z Z
u(∇ • F)dΩ = (uF) • ndS − (∇u) • FdΩ
Ω ∂Ω Ω

1751 3. Teorema Green


1752 Dengan substitusi F = ∇u, diperoleh rumus Green
Z Z Z
u(∇ • ∇u) dΩ = u∇u • n dS − (∇u) • ∇u dΩ
Ω ∂Ω Ω
BIBLIOGRAPHY 99

1753 LAMPIRAN 6
1754 Simbol dan satuan

Konsep Simbol Satuan


Intensitas medan listrik E Volt/meter
Intensitas medan magnetik H Ampere/meter
Kepadatan fluks listrik D Coulomb/meter2
1755
Kepadatan fluks magnetik B Tesla
Kepadatan arus listrik J Ampere/meter2
Kepadatan muatan listrik ρ Coulomb/meter3
Muatan listrik Q Coulomb

Konsep Medan-Elektrik Medan-Magnetik


Medan-E Medan-H
Potensial skalar [φ] = V [φm ] = A
Potensial vektor [F] = Coulomb/meter [A] = Vs/m
Voltase [Ve ] = V [Vm ] = A
1756 Kuat Medan [E] = V/m [H] = A/m
Flux [Ψ] = As [Φ] = Vs (Weber)
Densitas Flux [D] =As/m2 [ B] = Vs/m2 (Tesla)
Densitas Vorteks [∇ × E] =V/m2 [∇ × H] = A/m2
Densitas sumber [∇ • D] =As/m3 [∇ • B] = Vs/m3
Konduktifitas diperumum [ε = D E
] = As/Vm [µ = HB
]=Vs/Am
100 BIBLIOGRAPHY

1757 LAMPIRAN 8
1758 Glosarium
1759 • Persamaan Differensial Biasa (PDB).
n
1760 Ekspresi berbentuk F (x, u(x), du
dx
, · · · , ddxnu ) = 0 untuk variabel bebas x
n
1761 dan fungsi u(x) beserta turunan dari u, yaitu du dx
, · · · , ddxnu . Persamaan
1762 differensial dinamakan persamaan differensial biasa berorde-n.
1763 • Persamaan Differensial Parsial (PDP).
n
1764 Ekspresi berbentuk F (xi , u(xi ), ∂u
∂x
, · · · , ∂∂xnu ) = 0 untuk multi-variabel
∂u n
1765 bebas xi dan fungsi u(xi ) beserta turunan parsial dari u, yaitu ∂x i
, · · · , ∂∂xnu .
1766 • Syarat Awal.
1767 Untuk PDB berorde-n yang didefinisikan di [a, b], apabila diberikan
1768 persyaratan pada fungsi u dan turunan-turunannya sampai turunan
1769 ke-(n − 1) pada titik a.
1770 Untuk PDP berorde-n yang didefinisikan di [a, b]m , apabila diberikan
1771 persyaratan pada fungsi u dan turunan-turunannya sampai turunan
1772 parsial ke-(n − 1) pada batas {a} × [a, b](n−1) .
1773 • Syarat Batas.
1774 Untuk PDB berorde-n yang didefinisikan di [a, b], apabila diberikan
1775 persyaratan pada fungsi u dan turunan-turunannya sampai turunan
1776 ke-(n − 1) pada titik a dan b.
1777 Untuk PDP berorde-n yang didefinisikan di [a, b]m , apabila diberikan
1778 persyaratan pada fungsi u dan turunan-turunannya sampai turunan
1779 parsial ke-(n − 1) pada batas domain [a, b]n .
1780 • Syarat Batas Dirichlet.
1781 Untuk PDP berorde-n yang didefinisikan di [a, b]m , apabila diberikan
1782 persyaratan pada fungsi u pada batas domain [a, b]n .
1783 • Syarat Batas Neumann.
1784 Untuk PDP berorde-n yang didefinisikan di [a, b]m , apabila diberikan
1785 persyaratan pada turunan-turunan dari fungsi u pada batas domain
1786 [a, b]n .
1787 • Syarat Batas Campuran.
1788 Untuk PDP berorde-n yang didefinisikan di [a, b]m , apabila diberikan
1789 persyaratan pada fungsi u serta turunan-turunannya sampai turunan
1790 parsial ke-(n − 1) pada batas domain [a, b]n .
BIBLIOGRAPHY 101

Agah D Garnadi lulus Sarjana Matematika dari Institut Teknologi Bandung,


dengan konsentrasi Matematika Murni. Mendapatkan pendidikan Pasca Sar-
jana dalam bidang Scientific Computing dengan minor matematika murni
dari The Australian National Universty, Canberra, Australia. Sempat bek-
erja sebagai asisten peneliti dalam Metode Elemen Hingga di Dept. Engi-
neering, ANU. Atas biaya DAAD mendalami bidang Teknomathematik dan
Finanzmathematik di TU-Kaiserslautern, Jerman. Kemudian bekerja se-
bagai Scientific Programmer selama dua tahun di Crystal Growth Group,
CAESAR, Bonn, dengan tugas utama perancangan dan simulasi tungku
kristal industri semikonduktor. Kemudian selama 4 tahun berkesempatan
menjadi peneliti tamu di Institut fuer Numerische und Angewandte Mathe-
matik, Georg-August Universitaet Goettingen.
SINTA ID : 6015353

Husin Alatas lulus S1 Fisika, dari Institut Teknologi Bandung; Dilanjutkan


S2 dan S3, juga di Institut Teknologi Bandung. Post-Doctoral di University
of Twente, The Netherlands, dalam bidang Fisika Nonlinear.
Terhitung dari tahun 2017, diangkat sebagai Guru Besar Fisika Teori di In-
stitut Pertanian Bogor.
SINTA ID : 5979618
102 BIBLIOGRAPHY

Sri Nurdiati lulus Sarjana dari Departemen Statistika FMIPA IPB. Ke-
mudian, ia melanjutkan pendidikan S2 Ilmu Komputer di The University of
Western Ontario, Canada. Pendidikan S3 ditempuh di Twente University,
The Netherlands, dengan mengambil bidang Matematika Terapan.
SINTA ID : 6042844

Lia Yuliawati lulus program sarjana di Departemen Matematika FMIPA


IPB. Kemudian, ia melanjutkan pendidikan S2 Matematika Terapan di IPB.
Pendidikan S3 ditempuh di Institut Teknologi Bandung, dengan mengambil
bidang Matematika Terapan.
SINTA ID : 6004495

Anda mungkin juga menyukai