Skip to content

Commit

Permalink
Apply formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
sriharshakandala committed Nov 1, 2023
1 parent 482cecf commit 4568c03
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 53 deletions.
102 changes: 62 additions & 40 deletions src/ZenithAngleCalc.jl
Original file line number Diff line number Diff line change
Expand Up @@ -18,37 +18,40 @@ end
compute_orbital_parameters(od, Δt_years::FT) where {FT} = (
FT(ϖ_spline(od, Δt_years)),
FT(γ_spline(od, Δt_years)),
FT(e_spline(od, Δt_years)))
FT(e_spline(od, Δt_years)),
)

compute_orbital_parameters(param_set) = (
IP.lon_perihelion_epoch(param_set),
IP.obliq_epoch(param_set),
IP.eccentricity_epoch(param_set))
IP.eccentricity_epoch(param_set),
)

function get_Δt_years(
param_set::IP.InsolationParameters{FT},
date,
epoch_string="2000-01-01T11:58:56.816",
epoch_string = "2000-01-01T11:58:56.816",
) where {FT}
(; year_anom, day) = param_set
date0 = DateTime(epoch_string,dateformat"y-m-dTHH:MM:SS.s")
date0 = DateTime(epoch_string, dateformat"y-m-dTHH:MM:SS.s")
days_per_year = year_anom / day
return FT(datetime2julian(date) - datetime2julian(date0)) / days_per_year
end

# calculate the distance, declination, and hour angle (at lon=0)
function distance_declination_hourangle(date::DateTime,
(ϖ, γ, e)::Tuple{FT,FT,FT},
epoch_string,
param_set::IP.AIP,
eot_correction::Bool,
function distance_declination_hourangle(
date::DateTime,
(ϖ, γ, e)::Tuple{FT, FT, FT},
epoch_string,
param_set::IP.AIP,
eot_correction::Bool,
) where {FT}
Ya = IP.year_anom(param_set)
day_length = IP.day(param_set)
d0 = IP.orbit_semimaj(param_set)
M0 = IP.mean_anom_epoch(param_set)

date0 = DateTime(epoch_string,dateformat"y-m-dTHH:MM:SS.s")
date0 = DateTime(epoch_string, dateformat"y-m-dTHH:MM:SS.s")

days_per_year = Ya / day_length
Δt_years =
Expand Down Expand Up @@ -103,19 +106,26 @@ This switch functionality is implemented for easy comparisons with reanalyses.
when set to true the orbital parameters are calculated for the given DateTime
when set to false the orbital parameters at the J2000 epoch from CLIMAParameters are used.
"""
function instantaneous_zenith_angle(date::DateTime,
epoch_string,
(ϖ, γ, e)::Tuple{FT,FT,FT},
longitude::FT,
latitude::FT,
param_set::IP.AIP,
eot_correction::Bool,
function instantaneous_zenith_angle(
date::DateTime,
epoch_string,
(ϖ, γ, e)::Tuple{FT, FT, FT},
longitude::FT,
latitude::FT,
param_set::IP.AIP,
eot_correction::Bool,
) where {FT}
λ = deg2rad(longitude)
ϕ = deg2rad(latitude)


d, δ, η_UTC = distance_declination_hourangle(date, (ϖ, γ, e), epoch_string, param_set, eot_correction)
d, δ, η_UTC = distance_declination_hourangle(
date,
(ϖ, γ, e),
epoch_string,
param_set,
eot_correction,
)

# hour angle
η = mod(η_UTC + λ, FT(2π))
Expand All @@ -133,13 +143,14 @@ function instantaneous_zenith_angle(date::DateTime,
return θ, ζ, d
end

function instantaneous_zenith_angle(date::DateTime,
od::OrbitalData,
longitude::FT,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool=true,
) where {FT}
function instantaneous_zenith_angle(
date::DateTime,
od::OrbitalData,
longitude::FT,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool = true,
) where {FT}

epoch_string = "2000-01-01T11:58:56.816"
# epoch_string::String = IP.epoch(param_set)
Expand All @@ -155,12 +166,13 @@ function instantaneous_zenith_angle(date::DateTime,
)
end

function instantaneous_zenith_angle(date::DateTime,
longitude::FT,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool=true,
) where {FT}
function instantaneous_zenith_angle(
date::DateTime,
longitude::FT,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool = true,
) where {FT}
epoch_string = "2000-01-01T11:58:56.816"
# epoch_string::String = IP.epoch(param_set)

Expand Down Expand Up @@ -197,22 +209,32 @@ This switch functionality is implemented for easy comparisons with reanalyses.
when set to true the orbital parameters are calculated for the given DateTime,
when set to false the orbital parameters at the J2000 epoch from CLIMAParameters are used.
"""
function daily_zenith_angle(date::DateTime,
od::OrbitalData,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool=true,
milankovitch::Bool=true) where {FT}
function daily_zenith_angle(
date::DateTime,
od::OrbitalData,
latitude::FT,
param_set::IP.AIP;
eot_correction::Bool = true,
milankovitch::Bool = true,
) where {FT}
ϕ = deg2rad(latitude)

epoch_string = "2000-01-01T11:58:56.816"
# epoch_string::String = IP.epoch(param_set)
Δt_years = get_Δt_years(param_set, date, epoch_string)

# calculate orbital parameters or take values at J2000
(ϖ, γ, e) = milankovitch ? compute_orbital_parameters(od, Δt_years) : compute_orbital_parameters(param_set)
(ϖ, γ, e) =
milankovitch ? compute_orbital_parameters(od, Δt_years) :
compute_orbital_parameters(param_set)

d, δ, _ = distance_declination_hourangle(date, (ϖ, γ, e), epoch_string, param_set, eot_correction)
d, δ, _ = distance_declination_hourangle(
date,
(ϖ, γ, e),
epoch_string,
param_set,
eot_correction,
)

# sunrise/sunset angle
T = tan(ϕ) * tan(δ)
Expand Down
21 changes: 8 additions & 13 deletions test/test_types.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ sza, azi, d = instantaneous_zenith_angle(
lon,
lat,
param_set,
eot_correction=false,
)
eot_correction = false,
)


F = insolation(sza, d, param_set)
Expand All @@ -24,22 +24,17 @@ sza, azi, d = instantaneous_zenith_angle(
lon,
lat,
param_set,
eot_correction=false,
)
eot_correction = false,
)

F = insolation(sza, d, param_set)
@test typeof(sza) == FT
@test typeof(azi) == FT
@test typeof(d) == FT
@test typeof(F) == FT

sza, azi, d = instantaneous_zenith_angle(
date,
lon,
lat,
param_set,
eot_correction=true,
)
sza, azi, d =
instantaneous_zenith_angle(date, lon, lat, param_set, eot_correction = true)

F = insolation(sza, d, param_set)
@test typeof(sza) == FT
Expand All @@ -53,8 +48,8 @@ sza, azi, d = instantaneous_zenith_angle(
lon,
lat,
param_set,
eot_correction=true,
)
eot_correction = true,
)


F = insolation(sza, d, param_set)
Expand Down

0 comments on commit 4568c03

Please sign in to comment.