Generates synthetic incoming solar radiation series for multiple stations using physically consistent astronomical and atmospheric controls.

simulate_solar_radiation(
  stations,
  time_index,
  rainfall = NULL,
  rh = NULL,
  atmospheric_transmissivity = 0.65,
  cloud_attenuation = 0.12,
  humidity_attenuation = 0.08,
  elevation_factor = 0.00012,
  seasonal_strength = 1,
  noise_sd = 1.5,
  min_radiation = 0,
  max_radiation = 35,
  seed = NULL
)

Arguments

stations

data.frame from create_stations()

time_index

data.frame from generate_time_index()

rainfall

Optional numeric vector. Rainfall series from simulate_rainfall(). Used for cloud attenuation effects.

rh

Optional numeric vector. Relative humidity series from simulate_rh(). Used for atmospheric moisture attenuation.

atmospheric_transmissivity

Numeric. Baseline atmospheric transmissivity coefficient. Default = 0.65

cloud_attenuation

Numeric. Radiation reduction factor from rainfall/cloudiness. Default = 0.12

humidity_attenuation

Numeric. Radiation reduction factor from RH. Default = 0.08

elevation_factor

Numeric. Radiation increase per meter elevation. Default = 0.00012

seasonal_strength

Numeric. Controls annual radiation seasonality. Default = 1

noise_sd

Numeric. Standard deviation of stochastic variability. Default = 1.5

min_radiation

Numeric. Minimum allowable solar radiation. Default = 0

max_radiation

Numeric. Maximum allowable solar radiation. Default = 35

seed

Optional numeric seed.

Value

data.frame containing:

Station

Station name

LON

Longitude

LAT

Latitude

ELEV

Elevation

DATE

Simulation timestamp

Year

Calendar year

Month

Calendar month

Season

Climatological season

Solar_Radiation

Simulated solar radiation (MJ/m²/day)

Clear_Sky_Radiation

Potential clear-sky radiation

Cloud_Factor

Cloud attenuation factor

Sunshine_Fraction

Fraction of available sunshine reaching the surface

Radiation_Anomaly

Solar radiation anomaly

Details

The simulation incorporates:

  • annual solar cycle,

  • latitude-dependent extraterrestrial radiation,

  • cloud/rainfall attenuation,

  • humidity effects,

  • elevation enhancement,

  • seasonal variability,

  • stochastic atmospheric variability,

  • physically bounded radiation values.

Solar radiation is simulated as:

  • daily total radiation (MJ/m²/day) for daily simulations

  • monthly mean radiation for monthly simulations

  • yearly mean radiation for yearly simulations

Examples

stations <- create_stations(
  n = 3,
  seed = 123
)
#> Generating synthetic station network...
#> Generated 3 synthetic stations within bounding box.
#> Deriving climate-aware station attributes...

time_index <- generate_time_index(
  start_date = "2000-01-01",
  end_date = "2005-12-31",
  frequency = "monthly"
)
#> Generated 72 time steps at monthly resolution.

rain <- simulate_rainfall(
  stations,
  time_index
)
#> Rainfall simulation complete for 3 stations.

rh <- simulate_rh(
  stations,
  time_index
)
#> Relative humidity simulation complete for 3 stations.

solar <- simulate_solar_radiation(
  stations = stations,
  time_index = time_index,
  rainfall = rain$Rainfall,
  rh = rh$RH,
  seed = 123
)
#> Solar radiation simulation complete for 3 stations.

head(solar)
#>      Station       LON      LAT  ELEV       DATE Year Month  Season
#> 1  Station_1 -2.062112 10.68112 422.5 2000-01-16 2000     1     Dry
#> 4  Station_1 -2.062112 10.68112 422.5 2000-02-15 2000     2     Dry
#> 7  Station_1 -2.062112 10.68112 422.5 2000-03-16 2000     3 Pre-Wet
#> 10 Station_1 -2.062112 10.68112 422.5 2000-04-15 2000     4 Pre-Wet
#> 13 Station_1 -2.062112 10.68112 422.5 2000-05-16 2000     5 Pre-Wet
#> 16 Station_1 -2.062112 10.68112 422.5 2000-06-15 2000     6     Wet
#>    Solar_Radiation Clear_Sky_Radiation Cloud_Factor Sunshine_Fraction
#> 1            17.15               21.57         0.82         0.8037165
#> 4            23.03               23.39         0.91         0.9342460
#> 7            22.51               25.16         0.87         0.8482541
#> 10           25.10               25.92         0.91         0.9291880
#> 13           26.50               25.71         0.94         0.8963896
#> 16           19.47               25.36         0.77         0.7643867
#>    Radiation_Anomaly
#> 1              -1.28
#> 4               1.05
#> 7              -0.14
#> 10              2.69
#> 13              4.33
#> 16             -0.86