Skip to content

Instantly share code, notes, and snippets.

@bennyistanto
Created May 19, 2020 10:31
Show Gist options
  • Save bennyistanto/952e3cc42ba59fae43b81d32d895efb8 to your computer and use it in GitHub Desktop.
Save bennyistanto/952e3cc42ba59fae43b81d32d895efb8 to your computer and use it in GitHub Desktop.
Calculate radiation
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Program untuk menghitung Radiasi
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub cmdCal_Click()
Dim LAT As Double
Dim lon As Double
Dim MONTH As Double
Dim hari As Integer
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Calculate Julian Date
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dim bulan(20), bfeb As Integer
bulan(1) = 31
'Bulan kabisat
If Val(frmRad.cboTahun.Text) Mod 4 = 0 Then bfeb = 29 Else bfeb = 28
bulan(2) = bulan(1): bulan(3) = bulan(2) + bfeb: bulan(4) = bulan(3) + 31
bulan(5) = bulan(4) + 30: bulan(6) = bulan(5) + 31: bulan(7) = bulan(6) + 30
bulan(8) = bulan(7) + 31: bulan(9) = bulan(8) + 31: bulan(10) = bulan(9) + 30
bulan(11) = bulan(10) + 31: bulan(12) = bulan(11) + 30
'Isi Combo box
With cboBulan
If .Text = "January" Then MONTH = 0
If .Text = "February" Then MONTH = 1
If .Text = "March" Then MONTH = 2
If .Text = "April" Then MONTH = 3
If .Text = "May" Then MONTH = 4
If .Text = "June" Then MONTH = 5
If .Text = "July" Then MONTH = 6
If .Text = "August" Then MONTH = 7
If .Text = "September" Then MONTH = 8
If .Text = "October" Then MONTH = 9
If .Text = "November" Then MONTH = 10
If .Text = "December" Then MONTH = 11
End With
If MONTH = 0 Then JulianDate = Val(frmRad.cboTanggal.Text) Else JulianDate = bulan(MONTH) + Val(frmRad.cboTanggal.Text)
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Const pi = 3.1415926, gamma = 66.1, lhv = 2.454, dair = 1.204, cp = 1010
Const p0 = 1.000412351, p1 = -1.073807306, wind = 9
hari = JulianDate
plank = 6.626 * (10 ^ -34)
chy = 3 * (10 ^ 8)
bolztman = 5.67 * (10 ^ -8)
lon = Val(txtLon.Text)
LAT = Val(txtLat.Text)
altitude = Val(txtAlt.Text)
'Deklarasi parameter
If LAT < 0 Then lag = 102 Else lag = 285
tlag = Abs(LAT) / 2
Tm1 = 10 - 0.45 * Abs(LAT)
Td = Tm1 * (0.015 * Abs(LAT) - 0.1)
b1 = 1.47 - 0.00518 * LAT - 0.00412 * lon - 0.000483 * altitude
a1 = 19.1 - 18.3 * b1
a2 = 0.36
b2 = -0.91 - 0.00111 * LAT + 0.0111 * lon
a3 = -0.321 - 0.00488 * LAT + 0.00763 * lon
b3 = 0.0143 - 0.0493 * a3
b4 = 20.4 + 0.074 * LAT - 0.204 * lon
a4 = 0.0235 - 0.515 * b4
b5 = 0.2
a5 = -3.5
'Panjang Hari
dekl = -23.4 * Cos(2 * pi * (hari + 10) / 365)
sinld = Sin(LAT * pi / 180) * Sin(dekl * pi / 180)
cosld = Cos(LAT * pi / 180) * Cos(dekl * pi / 180)
sinb = Sin(-0.833 * pi / 180)
arg = (sinb - sinld) / cosld
arccos = 2 * Atn(1) - Atn(arg / Sqr(1 - arg * arg))
dlen = 24 / pi * arccos
sangot = 1440 / pi * 2 * (arccos * sinld + cosld * Sin(arccos)) * 0.042
'Lama Penyinaran
nN = Rnd 'a3 + b3
If nN < 0.05 Then nN = 0.05
sunshine = nN * dlen
'Solar radiation :
solar = (a2 + b2 * sunshine / dlen) * sangot
txtRad.Text = solar
End Sub
Private Sub cmdClear_Click()
Unload Me
frmRad.Show
End Sub
Private Sub Form_Load()
'Posisi form ketika pertama kali muncul
Me.Height = 5145
Me.Width = 5385
cboTanggal.Clear: cboBulan.Clear: cboTahun.Clear
'Format isian tanggal
For i = 1 To 31
cboTanggal.AddItem (i)
cboTanggal.Text = cboTanggal.List(0)
Next i
'Format isian bulan
With cboBulan
.AddItem ("January")
.AddItem ("February")
.AddItem ("March")
.AddItem ("April")
.AddItem ("May")
.AddItem ("June")
.AddItem ("July")
.AddItem ("August")
.AddItem ("September")
.AddItem ("October")
.AddItem ("November")
.AddItem ("December")
.Text = .List(5)
End With
'Format isian tahun
For j = 1998 To 2050
cboTahun.AddItem (j)
cboTahun.Text = cboTahun.List(7)
Next j
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment