Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Jonny Schäfer
radolan
Commits
19990cc6
Commit
19990cc6
authored
Sep 14, 2016
by
Jonny Schäfer
Browse files
Add Reflectivity function
parent
3badb514
Changes
2
Hide whitespace changes
Inline
Side-by-side
conversion.go
View file @
19990cc6
...
...
@@ -11,11 +11,17 @@ type DBZ float64
type
RVP6
float64
// PrecipitationRate returns the estimated precipitation rate in mm/h for the given
// reflectivity factor. The used Z-R relation is descibed in [6].
// reflectivity factor. The used Z-R relation is desc
r
ibed in [6].
func
(
z
DBZ
)
PrecipitationRate
()
float64
{
return
math
.
Pow
(
math
.
Pow
(
10
,
float64
(
z
)
/
10
)
/
256
,
1
/
1.42
)
}
// Reflectivity returns the estimated reflectivity factor for the given precipitation
// rate (mm/h). The used Z-R relation is described in [6].
func
Reflectivity
(
rate
float64
)
DBZ
{
return
DBZ
(
10
*
math
.
Log10
(
256
*
math
.
Pow
(
rate
,
1.42
)))
}
// ToDBZ converts the given radar video processor values (rvp-6) to radar reflectivity
// factors in decibel relative to Z (dBZ).
func
(
r
RVP6
)
ToDBZ
()
DBZ
{
...
...
conversion_test.go
View file @
19990cc6
...
...
@@ -9,7 +9,7 @@ func TestConversion(t *testing.T) {
testcases
:=
[]
struct
{
rvp
RVP6
dbz
DBZ
r
ate
float64
z
r
float64
}{
{
0
,
-
32.5
,
0.0001
},
{
65
,
0
,
0.0201
},
...
...
@@ -19,7 +19,8 @@ func TestConversion(t *testing.T) {
for
_
,
test
:=
range
testcases
{
dbz
:=
test
.
rvp
.
ToDBZ
()
rate
:=
dbz
.
PrecipitationRate
()
zr
:=
dbz
.
PrecipitationRate
()
rz
:=
Reflectivity
(
zr
)
rvp
:=
dbz
.
ToRVP6
()
if
dbz
!=
test
.
dbz
{
...
...
@@ -28,8 +29,12 @@ func TestConversion(t *testing.T) {
if
rvp
!=
test
.
rvp
{
t
.
Errorf
(
"RVP6(%f).ToDBZ().ToRVP6() = %f; expected: %f"
,
test
.
rvp
,
rvp
,
test
.
rvp
)
}
if
math
.
Abs
(
test
.
rate
-
rate
)
>
0.0001
{
t
.
Errorf
(
"RVP6(%f).ToDBZ().PrecipitationRate() = %f; expected: %f"
,
test
.
rvp
,
rate
,
test
.
rate
)
if
math
.
Abs
(
test
.
zr
-
zr
)
>
0.0001
{
t
.
Errorf
(
"RVP6(%f).ToDBZ().PrecipitationRate() = %f; expected: %f"
,
test
.
rvp
,
zr
,
test
.
zr
)
}
if
math
.
Abs
(
float64
(
test
.
dbz
-
rz
))
>
0.0000001
{
t
.
Errorf
(
"Reflectivity(RVP6(%f).ToDBZ().PrecipitationRate()) = %f; expected: %f"
,
test
.
rvp
,
rz
,
test
.
dbz
)
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment