# Unitful: convert frequency to wavenumber

**URL:** <https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312>\
**Category:** General Usage\
**Tags:** question\
**Created:** [October 13, 2020, 6:56pm UTC](https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312 "2020-10-13T18:56:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![asubedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asubedi/32/18651_2.png) [@asubedi](https://discourse.julialang.org/u/asubedi)\
**Post date:** [October 13, 2020, 6:56pm UTC](https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312/1 "2020-10-13T18:56:45Z")

</div>

I am trying to convert frequency in THz to wavenumber in cm^-1 by doing `uconvert(1THz / c0, 1.0u"cm^-1")`. But I get the following error:

```julia
ERROR: MethodError: no method matching uconvert(::Quantity{Float64,𝐋⁻¹,Unitful.FreeUnits{(THz, m⁻¹, s),𝐋⁻¹,nothing}}, ::Quantity{Float64,𝐋⁻¹,Unitful.FreeUnits{(cm⁻¹,),𝐋⁻¹,nothing}})

```

How can I fix this error?

Ideally, I would like to be able to do `1THz |> cm^-1` to obtain the wavenumber from a frequency. Is this possible?

---

<div class="post-metadata">

**Author:** ![ggggggggg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ggggggggg/32/265_2.png) [@ggggggggg](https://discourse.julialang.org/u/ggggggggg)\
**Post date:** [October 13, 2020, 7:41pm UTC](https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312/2 "2020-10-13T19:41:03Z")

</div>

```julia
julia> using Unitful

julia> wn(f) = uconvert(u"cm^-1", float(f/Unitful.c))
wn (generic function with 1 method)

julia> 1u"THz" |> wn
33.3564095198152 cm⁻¹

```

I think you had the arguments in the wrong order.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [October 13, 2020, 7:47pm UTC](https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312/3 "2020-10-13T19:47:49Z")

</div>

I made a little package for this, [NaturallyUnitful.jl](https://github.com/MasonProtter/NaturallyUnitful.jl)

```julia
julia> using NaturallyUnitful

julia> natural(1u"THz")
0.0006582119459370421 eV

julia> unnatural(u"cm^-1", 1u"THz")
33.3564095198152 cm^-1

```

---

<div class="post-metadata">

**Author:** ![asubedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asubedi/32/18651_2.png) [@asubedi](https://discourse.julialang.org/u/asubedi)\
**Post date:** [October 14, 2020, 2:22pm UTC](https://discourse.julialang.org/t/unitful-convert-frequency-to-wavenumber/48312/4 "2020-10-14T14:22:08Z")

</div>

This package is nice. But it would be more useful if it were possible to redefine u"cm^-1"() so that `1THz |> cm^-1` automatically uses `unnatural(u"cm^-1", 1u"THz")`.

At the moment, I find it more convenient to define `cm1 = uconvert(u"cm^-1", float(f/Unitful.c))` and do `1THz |> cm1` than use `unnatural(u"cm^-1", 1u"THz")`.
