Skip to content

Commit

Permalink
Merge pull request #198 from MineralsCloud:UnitfulEquivalences
Browse files Browse the repository at this point in the history
Use `UnitfulEquivalences` in `degauss` in `ElectronicTemperatureSetter`
  • Loading branch information
singularitti authored Mar 5, 2023
2 parents d15664e + 27a3dd9 commit 5dea071
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
StructEquality = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
UnitfulAtomic = "a7773ee8-282e-5fa2-be4e-bd808c38a91a"
UnitfulEquivalences = "da9c4bc3-91c8-4f02-8a40-6b990d2a7e0c"

[compat]
AbInitioSoftwareBase = "0.6.1, 0.8, 0.9"
Expand Down
17 changes: 9 additions & 8 deletions src/Inputs/PWscf/namelists.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using ConstructionBase: setproperties
using Unitful: Unitful
using Unitful: Temperature, Energy, Frequency, Wavenumber
using UnitfulEquivalences: Thermal, Spectral

export ControlNamelist,
SystemNamelist,
Expand Down Expand Up @@ -840,19 +841,19 @@ function (x::VerbositySetter)(control::ControlNamelist)
end

struct ElectronicTemperatureSetter{T<:Number} <: Setter
temp::T
value::T
end
function (x::ElectronicTemperatureSetter)(system::SystemNamelist)
@set! system.occupations = "smearing"
@set! system.smearing = "fermi-dirac"
@set! system.degauss = degauss(x.temp)
@set! system.degauss = degauss(x.value)
return system
end
degauss(temp::Real) = temp
degauss(temp::Unitful.Temperature) = ustrip(u"K", temp) / 315775.02480407 * 2
degauss(temp::Unitful.Energy) = ustrip(u"Ry", temp)
degauss(temp::Unitful.Frequency) = ustrip(u"Hz", temp) / 6579683920502000.0 * 2
degauss(temp::Unitful.Wavenumber) = ustrip(u"m^-1", temp) / 21947463.13632 * 2
degauss(value::Real) = value
degauss(value::Temperature) = ustrip(u"Ry", value, Thermal())
degauss(value::Energy) = ustrip(u"Ry", value)
degauss(value::Frequency) = ustrip(u"Ry", value, Spectral())
degauss(value::Wavenumber) = ustrip(u"Ry", value, Spectral())

const ElecTempSetter = ElectronicTemperatureSetter

Expand Down

0 comments on commit 5dea071

Please sign in to comment.