Tutorial GrADS
Tutorial GrADS
Modul I
Pengenalan Linux
Secara teknis dan singkat dapat dikatakan, Linux adalah suatu sistem operasi
yang bersifat multi user dan multi tasking, yang dapat berjalan di berbagai platform
termasuk prosesor Intel 386 maupun yang lebih tinggi. Sistem operasi ini
mengimplementasikan standar POSIX. Linux dapat berinteroperasi secara baik dengan
sistem operasi yang lain, termasuk Apple, Microsoft dan Novell.
Linux pada awalnya dibuat oleh seorang mahasiswa Finlandia yang bernama
Linus Torvalds. Dulunya Linux merupakan proyek hobi yang diinspirasikan dari
Minix, yaitu sistem UNIX kecil yang dikembangkan oleh Andrew Tanenbaum. Linux
versi 0.01 dikerjakan sekitar bulan Agustus 1991. Kemudian pada tanggal 5 Oktober
1991, Linus mengumumkan versi resmi Linux, yaitu versi 0.02 yang hanya dapat
menjalankan shell bash (GNU Bourne Again Shell) dan gcc (GNU C Compiler).
Karena kernel Linux dikembangkan dengan usaha yang independen, banyak
aplikasi yang tersedia. Sebagai contoh, C Compiler menggunakan gcc dari Free
Software Foundation GNU’s Project. Compiler ini banyak digunakan pada lingkungan
Hewlett-Packard dan Sun.
Sekarang ini, banyak aplikasi Linux yang dapat digunakan untuk keperluan
kantor seperti untuk spreadsheet, word processor, database dan program editor grafis
yang memiliki fungsi dan tampilan seperti Microsoft Office, yaitu Open Office.org.
Selain itu, juga sudah tersedia versi Corel untuk Linux dan Matlab untuk Linux..
Dunia Linux atau umumnya keluarga Unix mempunyai perbedaan jauh di
bandingkan dengan system operasi lain, misalnya Microsoft Windows. Dikarenakan
terbiasa dengan Windows maka akan sangat sulit jika harus langsung berhadapan
dengan Linux. Secara teoritis sebelum menggunakan Linux hal dasar yang harus di
ketahui ialah perintah-perintah dasar yang ada di Linux. Perintah dasar inilah yang
digunakan untuk melakukan konfigurasi dan menjalankan / mengoperasikan Linux.
Beberapa perintah dasar tersebut adalah :
• pwd
pwd (present working direktori) ialah perintah untuk melihat direktori kerja
sekarang atau mudahnya untuk melihat posisi kursor sekarang.
:~> pwd
/home
• cd (change direktori)
cd digunakan untuk berpindah direktori. Sintaknya : cd nama_direktori.
:~> cd dewa108
ada trik mengenai perintah cd, ketika anda dihadapkan pada suatu kasus
dimana nama direktori tersebut panjang dan jika di ketik terlalu lama dan
rentan kesalahan ketik , maka cukup ketik satu atau beberapa huruf dan
tekan tombol tab.
1. :~> cd d # tekan tab hasilnya seperti dibawah ini
2. :~> cd dewa108/
Pada contoh diatas, kita ingin berpindah ke direktori dewa108, cukup
dengan mengetikkan ‘cd d’ dan tekan tombol tab maka hasilnya akan
seperti pada contoh kedua.
Sedangkan untuk berpindah direktori satu tingkat diatas direktori kerja
gunakan ‘cd ..’
:~> pwd
/home/dewa108/mail
:~> cd .. #naik satu tingkat direktori diatasnya
:~> pwd
/home/dewa108
• ls (List)
Perintah ‘dir’ pada DOS digunakan untuk melihat isi direktori sedangkan di
shell digunakan ‘ls’.
Sintaknya : :~>ls
:~> ls
Mail home mail mbox
Perintah di atas digunakan untuk menampilkan isi direktori, seperti halnya
pada Windows, di Linux juga terdapat hidden file (nama file yang diawali
dengan tanda titik berarti hidden file). Untuk menampilkan hidden file maka
tambahkan atribut ‘-a’ pada ls. Huruf ‘a’ berarti menampilkan semua (all)
file tanpa kecuali.
Sintaknya : :~>ls –a
:~> ls -a
. .addressbook.lu .bash_profile .mh_profile Mail mbox
.. .bash_history .bashrc .pinerc home
.addressbook .bash_logout .emacs .screenrc mail
Untuk menampilkan file lengkap dengan ukuran , waktu di-create dan hak
kepemilikan tambahkan atribut ‘-l’ (long).
:~> ls -l
drwx------ 2 dewa108 dewa108 4096 Aug 12 22:46 Mail
drwxrwxr-x 2 dewa108 dewa108 4096 Aug 15 08:37 home
drwx------ 2 dewa108 dewa108 4096 Aug 12 22:44 mail
-rw------- 1 dewa108 dewa108 1797 Aug 12 22:45 mbox
atribut ‘a’ dan ‘l’ juga dapat digabung dengan sintak :~>ls –al
• cat (Concatenate)
cat digunakan untuk melihat isi file. Layaknya perintah ‘type’ di dos.
Sintak : :~> cat nama_file
:~> cat test.txt
metode komputasi 2005
• mkdir (Make direktori)
Perintah yang satu ini mempunyai fungsi yang sama dengan perintah ‘md’
pada DOS. Untuk membuat direktori ketik saja mkdir.
Sintak : :~>mkdir nama_direktori
:~> mkdir metkom
:~> ls
Mail home mail mbox metkom test.txt
• rmdir (remove direktori)
Kebalikan dari mkdir, rmdir berfungsi menghapus direktori.
Sintak : :~>rmdir nama_direktori
:~>rmdir metkom
• rm (remove)
Jika rmdir digunakan untuk menghapus direktori maka untuk menghapus
(remove) file digunakan
perintah rm.
Sintak : :~>rm nama_file
:~>rm test.txt
Perintah rm juga bisa digunakan untuk menghapus direktori, dengan
menambahkan option –R, sehingga menjadi :~>rm –R metkom
• cp (copy)
Untuk meng-copy file dalam satu direktori atau antar direktori secara umum
mempunyai sintak :
:~>cp nama_file tujuan
:~> cp test.txt metkom/
keterangan perintah diatas yaitu file test.txt akan di-copy ke direktori
metkom.
• mv (move)
Perintah mv mempunyai dua makna yaitu
1. ‘mv’ untuk memindahkan file ke direktori lain
sintak : :~>mv nama_file direktori_tujuan
:~>mv test.txt metkom
file test.txt akan dipindahkan ke direktori metkom.
2. ‘mv’ digunakan untuk merubah ke nama file lain (rename).
Sintak : :~>mv nama_file_lama nama_file-baru
:~>mv test.txt tess.txt
file test.txt akan di-rename menjadi tess.txt
• more
Perintah ini sama fungsinya dengan cat yaitu melihat isi file, tapi isi file
diperlihatkan per halaman. Untuk melihat halaman berikutnya, gunakan
tombol enter.
Tambahan :
• Untuk mencari file perintah yang digunakan locate
:~>locate nama_file
• Untuk menghapus layer ketikkan ‘clear’
:~>clear # atau juga dapat dengan menekan ctrl+l
• Untuk melihat manual (help) yang lengkap dari suatu perintah, dapat anda
ketikkan
:~>man nama_perintah
:~>man cp
Untuk keluar dari man ketik q
/proc berisi file yang sebenarnya tidak ada di hard disk. File ini sebenarnya ada di memori
dan merupakan hasil proses dari kernel.
Bagian dari filesistem root diantaranya adalah:
/bin -- berisi program (biner) yang dapat dieksekusi yang diperlukan oleh user biasa dan
biasanya merupakan program-program dasar.
/sbin -- berisi program eksekutabel juga tetapi biasanya hanya bisa dioperasikan oleh user
root atau group root. Beberapa program bisa dijalankan oleh user biasa asal direktori
ini ada dalam PATH.
/etc -- berisi file-file konfigurasi yang penting untuk sistem operasi
/root -- direktori home untuk root
/dev -- file device. Device ini biasanya adalah hardware yang terpasang pada komputer
kita. Contoh file device adalah fd0 yang merupakan device dari floopy disk.
/mnt -- direktori mount point untuk media tak tetap (floopy, cdrom, flashdisk). Pada
beberapa distro linux direktori ini tidak terpakai dan digantikan oleh direktori
/media.
/lib -- berisi librari dinamis yang diperlukan oleh program untuk berjalan secara normal
dan juga berisi module kernel.
/boot -- merupakan diretori tempat kernel linux dan initrd yang diload saat booting.
/opt -- direktori tempat aplikasi besar diinstal, misalnya OpenOffice.
/tmp -- direktori file sementara dan dibersihkan secara otomatis oleh sistem operasi.
Catatan UNIX:
1. Perlu diingat bahwa linux adalah sistem operasi yang case-sensitive. Contoh
DELETE, delete, dELete merupakan tiga perintah atau komentar yang berbeda.
2. Filename maksimum terdiri dari 256 karakter dan bisa berupa huruf, angka,
“.”(dot), ”_” (underscore), “-“ (dash), atau karakter lain yang tidak
direkomendasikan, dan bisa kombinasi dari karakter-karakter di atas.
3. File yang dimulai dengan karakter “.” merupakan file tersembunyi (hidden file)
yang tidak bisa dilihat dengan perintah ls (list) kecuali dengan menambakan option –
a.
4. “/” sama dengan “\” DOS
5. Pada file konfigurasi, baris yang dimulai dengan # adalah komentar.
C. Basics operations
any_command -- Display a brief help on a command (works with most commands)
help | more
ls List the content of the current directory. Under linux, the command
“dir” is an alias to ls.
cd directory Change directory. Using “cd” without the directory name will take
you to your home directory. “cd –“ will take you to your previous
directory and is a convenient way to toggle between two directories.
cp source dest Copy files
mv source dest Move or rename files
ln -s source dest Create a symbolic link
rm files Remove files
mkdir directory Make a new directory
rmdir directory Remove an empty directory
cat filename|more View a content of a text called “filename”, one page a time. The “|” is
the “pipe” symbol (on many American keyboard it shares the key with
“\”). The pipe makes the output stop after each screenful. For long
files, it is sometimes convenient to use the commands “head” and
“tail” that display just the beginning and the end of the file.
less filename Scroll through a content of a text file. Press q when done.
tar –zxvf Untar a tarred and compressed tarball (*.tar.gz or *.tgz) that you
filename.tar.gz downloaded from the internet
gunzip Decompress a zipped file (*.gz or *.z). Use gzip (also zip or
filename.gz compress) if you wanted to compress files
find / -name Find the file “filename” on your filesystem starting from /. The
filename “filename” may contain a wildcard (*,?)
locate filename Find the file of which contains the string “filename”. Easier and faster
D. Process control
fg PID Bring a background or stopped process to the foreground
bg PID Send the process to the background. Opposite to fg. The same can be
accomplished with <CTRL>z
kill PID Force a process shutdown. First determine the PID of the process to
kill using ps
killall Kill program(s) by name
program_name
xkill (in an xwindow terminal) Kill a GUI-based program with mouse.
(Point with your mouse cursor at the window of the process you want
to kill and click)
nice Run program_name adjusting its priority. Since the priority is not
program_name specified in this example, it will be adjusted by 10 (the process wil run
slower), from the default value (usually 0). The lower the number (of
“niceness” to other users on the system), the higher the priority. The
priority value may be in the range -20 to 19. Only root may specify
negative values. Use”top” to display the priorities of the running
processes
renice -1 PID (as root) Change the priority of a running process to -1. Normal users
can only adjust processes they own, and only up from the current
value (make them run slower)
F. Networking tools
ping Check if you can contact another machine (give the machine’s name
machine_name or IP), press <CTRL>-c when done
route –n Show the routing table
ifconfig (as root) Display info on the network interfaces currently active
(ethernet, ppp, etc). Your first ethernet should show up as eth0, second
as eth1, first ppp over modem ppp0, etc. The “lo” is the “loopback
only” interface which should be always active. Use the options (see
ifconfig –help) to configure the interfaces
ifup Startup the interface. E.g.,:
interface_name ifup eth0
Modul II
Dasar-dasar Pemrograman Fortran
Compiling Program
Apabila Anda sudah melakukan editing program, maka langkah selanjutnya adalah tinggal
compiling program dan kemudian melihat hasil output program. Langkah-langkahnya adalah sebagai
berikut :
1. Misalkan nama file yang akan di-compile adalah tes.f dan Anda menghendaki nama file output
program adalah tes, maka perintah yang harus diketikkan adalah:
met601@stratus:~> pgf90 –o tes tes.f
Lalu tekan Enter !
Catatan: compiler Fortran yang dipakai dalam praktikum ini adalah Portland Group Compiler
Fortran 90. Oleh karena itu, untuk melakukan compiling perintah yang digunakan
adalah pgf90
2. Jika tidak ada kesalahan pada program, maka Anda tinggal melihat hasil outputnya dengan
mengetikkan perintah:
met601@stratus:~>./tes
3. Bila ada kesalahan pada program, maka kesalahan tersebut akan ditunjukkan dengan tanda ‘ ^ ’
atau angka di bawah syntax yang salah, editlah program sampai tidak ada kesalahan (jangan
lupa untuk menge-save ulang). Lakukan compiling kembali, sebab Anda telah mengedit dan
menge-save ulang program.
Catatan :
saat menggunakan perintah vi hal-hal dasar yang harus diperhatikan antara lain :
vi namafile.ext : untuk membuat file / program baru dengan ekstensi tertentu
setelah selesai membuat atau melakukan edit program maka simpanlah kembali program
dengan menekan :
<ESC>
:
wq<ENTER>
namun bila edit program yang anda lakukan menurut anda salah dan anda ingin proses edit
yang anda lakukan tidak tersimpan maka cukup tekan :
<ESC>
:
q!<ENTER>
2. Pendahuluan
2.1. Struktur Program Fortran
Struktur program dalam Fortran secara garis besar dapat digambarkan sebagai berikut:
Kondisional menggunakan IF …
Sintaks sederhana pernyataan IF:
if (logical expression) executable statement
jika pernyataan yang dipakai lebih dari satu sintaks yang digunakan
if (logical expression) then
statements
endif
Contoh:
IF (X < 0.0) Absolute_X = -X
else
statements
end if
Iterasi DO … END DO
Sintaks umum:
do
statements
if (logical expr) exit
statements
end do
Selain itu Fortran juga telah dibekali dengan fungsi intrinsik. Fungsi intrinsik merupakan fungsi
standar yang telah didefinisikan dan disediakan dalam Fortran. Contoh fungsi intrinsik adalah fungsi
trigonometri (sinus, cosinus, tangen dll).
3. Langkah Pengerjaan
a. Hidupkan aplikasi “putty” lakukan ssh ke komputer server. Tulis program sederhana di bawah ini.
Catatan: gunakan editor dalam lingkungan Linux (misal; vi)
PROGRAM TempConversion
IMPLICIT NONE
INTEGER, PARAMETER :: DegF = 82
INTEGER :: DegC, K
DegC = 5*(DegF-32)/9
PRINT*,”Hasil konversi adalah: “, DegC, “C”
K = DegC + 273
PRINT*, “dan”, K, “K”
END PROGRAM TempConversion
4. Tugas Praktikum
a. Tuliskan arti setiap perintah pada program Fortran yang telah Anda ketik.
b. Lakukan modifikasi program sehingga dapat memfilter nilai masukan. Misalnya program menolak
masukan yang nilainya sangat kecil atau sangat besar. Petunjuk: gunakan kondisional IF.
c. Modifikasi program sehingga dapat menerima nilai masukan secara berulang-ulang dan program
akan berhenti jika menerima masukan tertentu. Petunjuk: gunakan iterasi DO.
d. Modifikasi program sehingga dapat menampilkan menu pilihan. Misal: konversi ke Celcius dan
Kelvin. Petunjuk: gunakan kondisional SELECT CASE.
e. Buat program untuk menghitung nilai akar kuadrat suatu persamaan polinomial orde 2. Bentuk
persamaan kuadrat: ax2 + bx + c = 0
MODUL III
Input/Output (I/O)
1. Tujuan Praktikum
A. Mengetahui dan memanfaatkan Format dalam pemrograman Fortran.
B. Mengetahui dan memahami fungsi input/output (i/o) pada Fortran.
C. Menguasai operasi i/o dengan format biner pada Fortran.
2. Pendahuluan
2.1 Format
Format digunakan untuk mengatur tampilan luaran, yaitu mengatur tipe letak, tipe
panjang dari data yang akan dimasukkan lewat input atau yang akan ditampilkan ke
output. Berikut ini adalah contoh dari statement format:
Format Fungsi
Iw[.m] Untuk nilai integer
Zw Untuk nilai heksadesimal
Fw.d Untuk nilai real
Ew.d Untuk nilai real dengan eksponen
Gw.d Untuk nilai real dengan range extended
Dw.d Untuk nilai real dengan range double
Lw Untuk nilai logika
A[w] Untuk nilai karakter
nX Untuk spasi horizontal
/ Untuk spasi vertikal
Tc,TLc,TRc Untuk tabulasi
Keterangan:
w banyaknya digit yang dibutuhkan
d banyaknya angka di belakang koma
n banyaknya spasi
c posisi tab
READ Mentransfer data dari arsip eksternal ke memori utama atau dari suatu
daerah memori utama ke daerah memori utama yang lain.
REWIND Menempatkan posisi ke awal rekaman pertama dari arsip eksternal yang
sedang diproses.
WRITE Mentransfer data dari array (memori utama) ke arsip eksternal atau dari
arsip internal ke arsip eksternal atau dari memori utama ke daerah memori
utama yang lain.
PRINT Mentranfer data dari memori utama ke ”eksternal device”
Sintaks:
READ(unit, format) input
WRITE(unit, format)output
Keterangan:
- unit menentukan dari/ke device mana input/output dibaca/ditulis; contoh device:
keyboard, monitor, file, printer dll.
- format menentukan format data yang dibaca/ditulis.
- input harus variabel, sedangkan output bisa variabel atau ekspresi karakter.
Contoh:
1. Terminal
READ(*, format) input
…
WRITE(*, format) output
Keterangan: unit = *; membaca dari keyboard / menulis ke monitor
2. Internal file
CHARACTER(10) :: buffer
…
READ(buffer, format) input
…
WRITE(buffer, format) output
Keterangan: unit = buffer (variabel character); membaca /
menulis dari / ke buffer sebagai file internal
3. Eksternal file
OPEN(unit,argument)
…
READ(unit, format) input
…
WRITE(unit, format) output
…
CLOSE(unit)
Keterangan: OPEN file eksternal, beri nomor unit; membaca /
menulis dari / ke unit dengan nomor unit (file eksternal); argument
berisi antara lain FILE (nama file), STATUS (‘OLD, NEW,
3. Langkah Pengerjaan
a. Hidupkan aplikasi “X-Win32” dan dengan “putty” lakukan ssh ke
komputer server. Keterangan lebih lanjut baca pada bagian “Petunjuk
Praktikum”.
b. Tulis program sederhana di bawah ini.
PROGRAM TempConversion
IMPLICIT NONE
REAL, DIMENSION(:), ALLOCATABLE :: DegF, DegC, K
INTEGER :: n, i
CHARACTER(LEN=254) :: FMT1, FMT2, FMT3
LOGICAL :: fileexist
NAMELIST /input/ n
NAMELIST /formatout/ FMT1, FMT2, FMT3
INQUIRE(FILE='namelist.input',EXIST=fileexist)
IF (fileexist) THEN
OPEN(10,FILE='namelist.input',FORM='FORMATTED')
ELSE
WRITE(*,*)'FILE NOT FOUND'
STOP
END IF
OPEN(20,FILE='data.txt',FORM='FORMATTED',STATUS='OLD')
OPEN(30,FILE='tabel.txt',FORM='FORMATTED', &
& STATUS='UNKNOWN')
READ(10,NML=input)
READ(10,NML=formatout)
OPEN(40,FILE='output.bin',FORM='UNFORMATTED', &
& ACCESS='DIRECT',STATUS='UNKNOWN',RECL=4*n)
ALLOCATE(DegF(n), DegC(n), K(n))
READ(20,*)(DegF(i),i=1,n) !IMPLIED DO
DO i=1,n
DegC(i) = 5*(DegF(i)-32)/9
END DO
K = DegC + 273
WRITE(*,FMT1) "Hasil konversi adalah: ", "Fahrenheit", "Celcius", "Kelvin"
WRITE(*,FMT2) "==========" , "=======", "======"
WRITE(*,FMT3)(DegF(i),DegC(i),K(i),i=1,n)
WRITE(30,FMT1) "Hasil konversi adalah: ", "Fahrenheit", "Celcius", "Kelvin"
WRITE(30,FMT2) "==========" , "=======", "======"
WRITE(30,FMT3)(DegF(i),DegC(i),K(i),i=1,n)
WRITE(40,REC=1)DegC
DEALLOCATE(DegF, DegC, K)
END PROGRAM TempConversion
c. Modifikasi program untuk menerima masukan data REAL berformat, dan cek
apakah file data.txt dapat sukses dibuka.
4. Tugas Praktikum
a. Buatlah tabel konversi temperatur dengan format semenarik mungkin.
b. Buatlah program untuk membaca data sounding yang diberikan dalam file brunei.snd.
c. Buatlah program perkalian dua matrik, simpan hasilnya dalam bentuk binari.
program memformat_1
write(*,*)'Format ke 1 :'
write(*,'(A)')'selamat datang di modul 3'
write(*,*)
write(*,*)'Format ke 2 :'
write(*,'(1X,A)')'selamat datang di modul 3'
write(*,*)
write(*,*)'Format ke 3 :'
write(*,'(/,1X,A10)')'selamat datang di modul 3'
write(*,*)
stop
end
program memformat_2
! Integer
write(*,*)'Format ke 1 :'
write(*,*)’Masukkan 3 angka integer (pisahkan dengan spasi)’
read(*,*)i,j,k
10 format (3I5) !penulisan format
write(*,'(/,A)')'Output dengan format: '
write(*,’(3I5)’)i,j,k
write(*,'(/,A)')'Output tanpa format: '
write(*,*)i,j,k
! Real
write(*,*)
write(*,*)'Format ke 2 :'
write(*,*)’Masukkan 3 angka real (pisahkan dengan spasi)’
read(*,*)a,b,c
10 format (3F5.2) !penulisan format
write(*,'(/,A,\)')'Output dengan format: '
write(*,10)a,b,c
write(*,'(/,A,\)')'Output tanpa format: '
write(*,*)a,b,c
! Character
write(*,*)
write(*,*)'Format ke 3 :'
write(*,'(A,\)')'Komputasi'
write(*,*)'Komputasi'
write(*,*)
stop
end
MODUL IX
GrADS I/O DAN SCRIPTING
1. Tujuan Praktikum
• Memahami struktur dan cara penulisan script GrADS
• Memahami cara memanfaatkan script untuk operasi input dan output dalam GrADS
2. Pendahuluan
2.1. GrADS Script
Script memfasilitasi pengguna untuk memprogram operasi-poperasi dalam GrADS.
Walapun cukup mudah untuk menghasilkan analisa atau grafik dengan GrADS tanpa harus
menulis sebuah script, dalam beberapa kasus menggunakan script akan sangat
memudahkan pekerjaan anda.
Sebuah script dijalankan dengan perintah:
run filename <arguments>
Perintah di atas akan menjalankan script dengan nama filename, yang biasanya berekstensi
“.gs”. Sementara arguments bersifat opsional (boleh ada boleh tidak), tergantung script
yang anda tulis, apakah membutuhkan masukan dari luar atau tidak. Opsi argument akan
diteruskan ke dalam script sebagai variabel string. Anda dapat menjalankan semua
perintah GrADS di dalam script, termasuk perintah run untuk memanggil script yang lain.
Secara garis besar, sebuah script berisi baris-baris perintah berikut:
• comment
• statement
• assignment
• say / prompt / pull
• if / else / endif
• while / endwhile
• function header / return
Baris comment selalu dimulai dengan tanda asterisk (*) di kolom pertamanya. Baris
comment tidak akan dieksekusi oleh GrADS. Baris statement adalah semua perintah
GrADS, dituliskan dalam script berbentuk string yang diapit oleh tanda petik, contoh:
‘open u.ctl’
‘set lat -15 15’
‘set lon 90 150’
‘d u’
Baris assignment digunakan untuk mendefinisikan sebuah variabel dan nilainya.
Contoh:
jdl=‘Angin Meridional’
minlat=-15
maxlat=15
‘set lat ‘minlat’ ‘maxlat
‘d u’
‘draw title ‘jdl
Nama variabel dalam GrADS terdiri atas 1-8 karakter, diawali dengan alfabet dan hanya
boleh mengandung huruf atau angka. Nama variabel case sensitive (yang berarti variabel
jdl dan Jdl adalah dua variabel yang berbeda).
GrADS juga menyediakan fasilitas array sederhana dalam script, menggunakan
variabel gabungan. Sebuah variabel gabungan terdiri atas nama variabel dengan bagian-
bagian dipisahkan oleh titik. Contohnya:
i=1
j=5
var.i.j=100
atau dapat juga ditulis:
var.1.5=100
Baris perintah say/prompt digunakan untuk menampilkan informasi atau pertanyaan
ke jendela terminal GrADS.
say expression
prompt expression
akan menampilkan expression di layar terminal. Perintah prompt sedikit berbeda karena
akan menunggu pengguna menekan tombol enter.
Untuk memperoleh informasi dari pengguna lewat terminal, digunakan perintah:
pull variabel
Script akan menunggu pengguna memasukkan input melalui keyboard (diakhiri dengan
menekan tombol enter). Sebagai contoh:
'open u.ctl'
prompt 'Enter min and max latitudes: '
pull minlat maxlat
prompt 'Enter min and max longitudes: '
pull minlon maxlon
'set lat 'minlat' 'maxlat
'set lon 'minlon' 'maxlon
'd u'
Untuk mengatur alur program, dapat digunakan pengkondisian if/else/endif atau
pengulangan while/endwhile. Format dalam script sebagai berikut:
if expression
script record
script record
.
.
else
script record
.
.
endif
Sebagai catatan, dalam script GrADS tidak ditemukan elseif, sehingga jika diperlukan
ekspresi elseif anda harus menggunakan nested if (if bersarang).
Sementara format pengulangan sebagai berikut:
while expression
script record
script record
.
.
endwhile
Sebagai contoh:
ti= 1
while (ti < 10)
'set t 'ti
'd u'
ti = ti + 1
endwhile
Dua perintah tambahan untuk pengulangan adalah break dan continue. Baris perintah
break akan segera menghentikan loop dan eksekusi dilanjutkan pada baris di bawah
endwhile. Sementara perintah continue menghentikan loop yang sedang dijalankan dan
kembali melanjutkan pengulangan.
2.2. Input
Dalam script GrADS, selain input standar dari keyboard (dengan perintah pull),
anda juga dapat memperoleh input dari suatu file teks standar, dengan memanfaatkan
fungsi read. Sebagai contoh, anda memiliki file teks yang berisi nama stasiun berikut
posisi lintang bujurnya, misal:
Iswahyudi_Madiun -7.62 111.52
Surabaya_AURI -7.22 112.72
.....
sebanyak 40 baris. Contoh script dibawah ini akan membaca file di atas dan menggunakan
posisi lintang dan bujur masing-masing stasiun sebagai inputan untuk memperoleh data
time series angin meridional dari file uwnd.2008.nc.
stafile='note_stasiun.txt'
'sdfopen uwnd.2008.nc'
'set t 1 31'
ista=1
while (ista <= 40)
sta=read(stafile)
stanam=subwrd(sta,2)
stalat=subwrd(sta,3)
stalon=subwrd(sta,4)
'interp2d 'stalat' 'stalon' uwnd intpwnd'
'set gxout fwrite'
'set fwrite uwnd_'stanam '.dat'
'd intpwnd'
'undefine intpwnd'
'disable fwrite'
ista = ista + 1
endwhile
'quit'
2.2. Output
MODUL V
Fungsi dan Subroutine
1. Tujuan Praktikum
• Mengetahui dan memahami cara kerja function dan subroutine
• Memanfaatkan fasilitas function dan subroutine dalam pemrograman
2. Pendahuluan
2.1. Function
Selain fungsi intrinsik seperti disinggung pada Modul I, Fortran juga memberikan
keleluasaan pada programer untuk mendefinisikan fungsinya sendiri. Fungsi (function)
Fortran mirip dengan fungsi dalam matematika. Fungsi ini memiliki (beberapa) masukan
dan juga mempunyai nilai luaran atau biasa disebut return value. Struktur pembuatan
fungsi mengikuti sintaks sebagai berikut:
type FUNCTION function-name (arg1, arg2, ..., argn)
IMPLICIT NONE
[specification part]
[execution part]
[subprogram part]
END FUNCTION function-name
“[specification part]” merupakan bagian pendeklarasian variabel yang diperlukan.
”[execution part]” adalah isi dari fungsi dan ” [subprogram part]” adalah bagian tambahan
bila masih diperlukan. Jika tidak ada masukan yang digunakan maka bentuk struktur
fungsi dapat dituliskan sebagai berikut:
type FUNCTION function-name ()
Contoh sederhana di bawah ini merupakan fungsi untuk menjumlahkan tiga masukan
(a,b,c):
INTEGER FUNCTION Sum(a,b,c)
IMPLICIT NONE
INTEGER, INTENT(IN) :: a, b, c
Sum = a + b + c
END FUNCTION Sum
Cara pemanggilan function adalah dengan menyebutkan nama fungsi dan
argumennya.
Contoh :
N=<nama fungsi>(argument)
2.2. Subroutine
Subroutine merupakan unit yang mempunyai isi sendiri yang menerima masukan
dari luar melalui argumen, melakukan perhitungan dan kemudian mengembalikan hasilnya
pada program utama. Berbeda dengan fungsi, pemberian nama subroutine hanya berfungsi
sebagai identifikasi saja dan tidak dapat digunakan dalam perhitungan. Subroutine hanya
dapat digunakan setelah dipanggil dengan menggunakan perintah CALL. Subroutine
mempunyai tiga bentuk sintaks, yaitu; (a) menggunakan argumen, (b) argumen kosong dan
(c) tanpa argumen sama sekali. Contoh sintaks yang menggunakan argumen:
SUBROUTINE subroutine-name (arg1, arg2, …… argn)
IMPLICIT NONE
[specification part]
[execution part]
[subprogram part]
END SUBROUTINE subroutine-name
3. Langkah Pengerjaan
a. Hidupkan aplikasi “X-Win32” dan dengan “putty” lakukan ssh ke komputer server.
Keterangan lebih lanjut baca pada bagian “Petunjuk Praktikum”.
b. Tulis program sederhana di bawah ini. Compile lalu jalankan.
Program konversi_derajat_celcius
c pendeklarasian variabel
real C
c pemasukan nilai
write(*,*)'Masukkan nilai derajat celcius yang ingin dikonversi:'
read(*,*)C
c Fungsi Statement
FAH(C)=1.8*C+32
Write(*,*)’------------------------------‘
Write(*,*)’Celcius Fahrenheit’
Write(*,*)’------------------------------‘
5 WRITE(*,’(1X,f7.2,4X,F10.2)C,FAH(C)
C=C+1
Goto 5
Write(*,*)’-----------------------------’
End
Program hitung-hitungan
c pendeklarasian variabel
real a,b,c,z
c pemasukan nilai
write(*,*)'Masukkan nilai a:'
read(*,*)a
write(*,*)'Masukkan nilai b:'
read(*,*)b
write(*,*)'Masukkan nilai c :'
read(*,*)c
c proses menghitung
z=F(a)-F(b)+F(c)
write(*,*)'Luas daerah =',z
end
c fungsi
real function F(x)
F=100/(x)
end
Program Menghitung
c Penentuan cara
write(*,*)'Tentukan cara yang akan Anda pilih'
write(*,*)'Tekan 1 untuk penambahan'
write(*,*)'Tekan 2 untuk pengurangan'
c Pemilihan subroutine
read(*,*)A
if(A.eq.1) then
call Tambah(a,b,c)
else if(A.eq.2) then
call Kurang(a,b,c)
else
write(*,*)'Tekan angka yang tepat'
end if
stop
Tutorial Komputasi Kerma ITB-BMKG 3
Fungsi dan Subroutine
return
c list subroutine
SUBROUTINE Tambah(a,b,c)
integer a,b,c
write(*,*)
write(*,*)'Anda akan melakukan operasi penambahan'
write (*,*)'Masukkan nilai a'
read (*,*)a
write (*,*)'Masukkan nilai b'
read (*,*)b
c=a+b
write(*,*)
write(*,*)'hasil jumlah =',c
stop
end
SUBROUTINE Kurang(a,b,c)
integer a,b,c
write(*,*)
write(*,*)'Anda akan melakukan operasi pengurangan'
write (*,*)'Masukkan nilai a'
read (*,*)a
write (*,*)'Masukkan nilai b'
read (*,*)b
c=a-b
write(*,*)
write(*,*)'hasil kurang =',c
stop
end
c. Copy program konversisuhu.f90 dan circ.f90 dari direktori src. Compile dan jalankan
kedua program tersebut.
d. Modifikasi program konversisuhu agar bisa menghitung konversi semua satuan suhu
(Celcius, Kelvin, Fahrenheit, Reamur). Petunjuk : tambahkan function dan case-nya.
e. Tambahkan subroutine untuk menghitung luas permukaan bola dan volume bola dari
nilai radius pada program circ.
MODUL VI
Module dan Makefile
1. Tujuan Praktikum
• Mengetahui dan memahami cara kerja module
• Memanfaatkan fasilitas Makefile dalam meng-compile program
2. Pendahuluan
2.1. Module
Program Fortran yang rumit biasanya mempunyai fungsi yang lebih dari satu.
Fungsi-fungsi tersebut dapat dituliskan kedalam satu subprogram. Kumpulan fungsi yang
telah disatukan tersebut disebut Module. Module dapat juga diisi dengan subroutine.
Struktur module mirip dengan struktur program, bedanya dalam module tidak ada bagian
eksekusi sehingga module tidak dapat berdiri sendiri. Sintaks struktur module adalah:
MODULE modulename
IMPLICIT NONE
[specification part]
CONTAINS
[internalfunctions]
END MODULE modulename
”[internalfunctions]” adalah kumpulan fungsi yang kita buat. Module dapat
digunakan dalam sebuah program setelah menambahkan perintah USE pada kepala
(header) program.
2.2. Makefile
Makefile adalah suatu file yang digunakan oleh program GNU-Make untuk
menentukan program-program yang akan dicompile. Sebuah makefile terdiri dari bagian
target, dependencies dan rules. Dependecies berisikan hal-hal atau kode sumber yang
diperlukan untuk membuat sebuah target, target ini biasanya berupa sebuah file executable.
Sementara rules mendefinisikan perintah-perintah yang digunakan untuk membuat target
tersebut.
Berikut ini adalah bagan sederhana sebuah makefile :
target: dependencies
[tab] command
[tab] command
....
all :
pgf90 –o filename filename.f90
Pada contoh ini dapat kita lihat bahwa target adalah all. Ini adalah target default dari
makefile. Make akan mengeksekusi target jika tidak ada target lain yang ditentukan. Dapat
dilihat pula bahwa tidak ada dependensi untuk target all sehingga make dapat
mengeksekusi command dengan aman.
Menggunakan dependencies
Kita dapat melakukan pengaturan dependencies apabila kita ingin melakukan modifikasi
terhadap sebuah file, namun tidak ingin melakukan recompile terhadap seluruh file yang
ada. Sebagai contoh :
all: hello
hello: main.o hello.o
pgf90 main.o hello.o –o hello
main.o: main.f90
pgf90 –c main.f90
hello.o: hello.f90
pgf90 –c hello.f90
clean:
rm –rf *o hello
Dapat dilihat bahwa target all hanya memiliki dependencies tanpa command. Make dapat
mengeksekusi secara tepat ketika seluruh dependencies dari target terpenuhi. Tiap
dependencies dipanggil dan dieksekusi apabila ditemukan. Pada contoh diatas terdapat
target clean yang berfungsi untuk menghapus seluruh file object dan executable.
3. Langkah Pengerjaan
a. Hidupkan aplikasi “X-Win32” dan dengan “putty” lakukan ssh ke komputer server.
Keterangan lebih lanjut baca pada bagian “Petunjuk Praktikum”.
b. Copy direktori /work1/tutkom/src/external dan /work1/tutkom/src/taqm ke home
direktori anda masing-masing
c. Compile dan jalankan program circ.exe dan tempconv.exe
d. Compile program TAQM.
e. Buatlah sebuah program yang menggunakan subroutine, function dan module eksternal.
Buat juga makefile untuk meng-compile program tersebut.
MODUL VII
Pengenalan GrADS
1. Tujuan Praktikum
• Mengetahui dan memahami dasar-dasar pengoperasian GrADS
• Memahami struktur dan cara penulisan GrADS control file (ctl)
• Memahami struktur data binari GrADS
2. Pendahuluan
2.1. Konsep Dasar Pengoperasian GrADS
Perintah-perintah GrADS dituliskan di sebuah terminal dengan keluaran berupa
gambar ditampilkan di jendela grafik dan keluaran berupa teks ditampilkan di jendela
terminal. Ada tiga perintah dasar GrADS:
1. open berfungsi untuk membuka data
2. d merupakan perintah untuk menampilkan suatu “ekspresi” GrADS
3. set untuk memanipulasi “apa” “dimana” dan “bagaimana” data
ditampilkan
Yang dimaksud dengan suatu “ekspresi” adalah apa yang ingin anda tampilkan,
dapat berupa suatu variabel dalam data yang dibuka, misalnya d u atau hasil operasi
fungsi intrisik GrADS, misalnya d mag(u,v) (untuk menampilkan magnitude dari vektor
angin).
Perintah set digunakan untuk mengatur data yang ditampilkan (dimensi data, jenis
plot – contour, shaded, dll).
set lon lon1 lon2
set lat lat1 lat2
set t n
set gxout contour
Satu lagi perintah dasar GrADS adalah q atau query yang digunakan untuk
memperoleh informasi dari GrADS seperti file apa saja yang dibuka, variabel-variabel
yang ada dalam data, dll. Beberapa perintah q yang sering digunakan:
q file
q dim
DSET ^gridded_data_sample.dat
TITLE Gridded Data Sample
UNDEF -9.99E33
XDEF 180 LINEAR 0.0 2.0
YDEF 90 LINEAR -90 2.0
ZDEF 10 LEVELS 1000 850 700 500 400 300 250 200 150 100
TDEF 4 LINEAR 0Z10apr1991 12hr
VARS 4
slp 0 99 sea level pressure
hgt 10 99 heights
temp 10 99 temperature
shum 6 99 specific humidity
ENDVARS
dst.
3. Langkah Pengerjaan
a. Hidupkan aplikasi “X-Win32” dan dengan “putty” lakukan ssh ke komputer server.
b. Copy file u.dat dan v.dat dari direktori /work1/tutkom/src ke home direktori anda
masing-masing
c. Tulis ulang script program berikut ini, gunakan editor teks standar (misalnya vi),
compile dan jalankan.
program dump_data_grads
parameter (ni=25,nj=13,nk=17,nt=31)
dimension u(ni,nj,nk,nt),v(ni,nj,nk,nt),dum(ni,nj)
open(10,file='u.dat',form='unformatted',&
& access='direct',recl=ni*nj*4)
open(20,file='v.dat',form='unformatted',&
& access='direct',recl=ni*nj*4)
open(30,file='uv.dat',form='unformatted',&
& access='direct',recl=ni*nj*4)
do n=1,nt
do k=1,nk
read(10)dum
u(:,:,k,n)=dum
read(20)dum
v(:,:,k,n)=dum
enddo
enddo
do n=1,nt
do k=1,nk
write(30)u(:,:,k,n)
enddo
do k=1,nk
write(30)v(:,:,k,n)
enddo
enddo
stop
end
Script di atas adalah program sederhana untuk membaca variabel 4-D u dan v dari
file binari u.dat dan v.dat dengan struktur data sebagai berikut:
File u.dat:
t 1, u (x,y), semua level vertikal dari bawah ke atas
t 2, u (x,y), semua level vertikal dari bawah ke atas
…… dst
File v.dat:
t 1, v (x,y), semua level vertikal dari bawah ke atas
t 2, v (x,y), semua level vertikal dari bawah ke atas
…… dst
untuk kemudian ditulis ulang ke dalam file uv.dat dengan struktur data yang
diterima GrADS seperti yang telah dijelaskan di atas.
d. Tulis ulang file ctl di bawah ini:
DSET ^uv.dat
TITLE uv wind data
UNDEF -9.99E33
XDEF 25 LINEAR 90 2.5
YDEF 13 LINEAR -15 2.5
ZDEF 17 LEVELS 1000 925 850 700 600 500 400 300 250 200 150
100 70 50 30 20 10
TDEF 31 LINEAR 0Z1jan2008 24hr
VARS 2
u 17 99 u wind
v 17 99 v wind
ENDVARS
e. Buat symbolic link untuk file uwnd.2008.nc dan vwnd.2008.nc yang ada di direktori
/work1/model/data (gunakan perintah ln –s file_sumber nama _link)
f. Buka file ctl yang telah anda buat sebelumnya, plot vektor angin di ketinggian dan
waktu sembarang, bandingkan dengan vektor angin pada ketinggian dan waktu yang
sama dari data uwnd.2008.nc dan vwnd.2008.nc. (gunakan perintah sdfopen
nama_file.nc untuk membuka file berekstensi .nc)
MODUL VIII
Setting Display Dalam GrADS
1. Tujuan Praktikum
• Mengetahui dan memahami dasar-dasar pengaturan display dalam GrADS
2. Pendahuluan
2.1. Tipe Graphic
Pengaturan tipe graphic dilakukan dengan perintah set gxout graphic_type
dengan graphic_type adalah salah satu dari:
bar diagram batang
barb wind barb
contour kontur
errbar error bar
grfill kotak grid berwarna
fgrid kotak grid berwarna dengan nilai yg ditentukan oleh perintah
set fgvals nilai warna nilai warna ....
fwrite menulis data ke file
grid kotak grid dengan nilai
line grafik garis
linefill warna di antara dua garis
print membuat keluaran ascii, diatur dengan perintah
set prnopts format numl numb <u>
format : format C untuk ascii (e.g %10.3e)
numl : jumlah nilai yang ditulis per baris
numb : jumlah spasi antar nilai
<u> : menulis “undef”, bukan nilai yg didefinisikan dari
baris UNDEF di ctl
scatter scatter plot
shaded shaded kontur
stream streamline
stat menampilkan statistik keluaran
vector vektor angin
| | tr - right top
l + + c + r etc.
| |
+-------------+--------------+
bl bc br
dan rotation dalam derajat
set strsiz lebar tinggi (dalam inci)
Dalam membuat palet sendiri, yang harus anda ingat adalah aturan berikut:
col1: values <= lev1
col2: lev1 < values <= lev2
col3: lev2 < values <= lev3
dst.
3. Langkah Pengerjaan
a. Hidupkan aplikasi “X-Win32” dan dengan “putty” lakukan ssh ke komputer server.
b. Buat symbolic link dari data uwnd.2008.nc dan vwnd.2008.nc di direktori kerja
anda masing-masing.
c. Gunakan perintah-perintah yang telah anda pelajari di atas untuk menggambar
graphic 4 panel sebagai berikut:
- Panel kiri bawah : contour, gunakan warna garis contour yang berbeda dari
teman anda.
- Panel kiri atas : shaded, gunakan palet yang berbeda dari teman anda, legend
vertikal (sebelah kanan gambar)
- Panel kanan bawah : vektor angin, atur skala dan panjang vektornya
- Panel kanan atas : time series di suatu titik
- Buat judul di atas masing-masing panel
- Satu judul besar di bagian bawah
- Nama dan nim anda di kanan atas, program studi di kiri atas
(catatan: gunakan set grads off di masing-masing panel)