From 9ca700ac42401e98e4fc97dffc6cc2c3f2f9991b Mon Sep 17 00:00:00 2001 From: Gareth Simons Date: Tue, 20 Jan 2026 23:09:20 +0000 Subject: [PATCH 01/64] Rename package to solweig, add UTCI/PET Rust modules - Rename package from umepr to solweig (standalone, no umep dependency) - Add Rust UTCI calculation with parallel grid processing - Add Rust PET calculation with parallel grid processing - Update demos to use solweig package - Version 0.0.1a1 --- demos/athens-demo.py | 42 +- demos/small_nbhd_walls.py | 16 +- demos/solweig_gbg_test.py | 51 +- pyproject.toml | 20 +- pysrc/solweig/__init__.py | 91 + pysrc/solweig/algorithms/Kup_veg_2015a.py | 15 + pysrc/solweig/algorithms/Lvikt_veg.py | 16 + pysrc/solweig/algorithms/PET_calculations.py | 417 +++++ pysrc/solweig/algorithms/Perez_v3.py | 244 +++ pysrc/solweig/algorithms/TsWaveDelay_2015a.py | 23 + pysrc/solweig/algorithms/UTCI_calculations.py | 401 +++++ pysrc/solweig/algorithms/__init__.py | 0 .../algorithms/clearnessindex_2013b.py | 88 + pysrc/solweig/algorithms/create_patches.py | 52 + pysrc/solweig/algorithms/cylindric_wedge.py | 95 + pysrc/solweig/algorithms/daylen.py | 22 + pysrc/solweig/algorithms/diffusefraction.py | 47 + pysrc/solweig/algorithms/patch_radiation.py | 245 +++ pysrc/solweig/algorithms/sun_distance.py | 15 + pysrc/solweig/algorithms/sun_position.py | 1001 +++++++++++ .../algorithms/sunlit_shaded_patches.py | 41 + pysrc/solweig/algorithms/wall_cover.py | 77 + .../algorithms/wall_surface_temperature.py | 346 ++++ pysrc/solweig/algorithms/wallalgorithms.py | 163 ++ pysrc/solweig/configs.py | 1592 +++++++++++++++++ .../functions/daily_shading.py | 4 +- pysrc/{umepr => solweig}/functions/solweig.py | 20 +- pysrc/{umepr => solweig}/hybrid/svf.py | 5 +- pysrc/solweig/io.py | 657 +++++++ .../parametersforsolweig.json | 0 pysrc/solweig/runner.py | 1112 ++++++++++++ pysrc/{umepr => solweig}/shadows.py | 2 +- .../{umepr => solweig}/solweig_runner_rust.py | 11 +- pysrc/{umepr => solweig}/svf.py | 13 +- pysrc/solweig/tiles.py | 355 ++++ pysrc/solweig/walls.py | 57 + pysrc/umepr/__init__.py | 26 - rust/src/lib.rs | 24 +- rust/src/pet.rs | 386 ++++ rust/src/utci.rs | 362 ++++ 40 files changed, 8045 insertions(+), 109 deletions(-) create mode 100644 pysrc/solweig/__init__.py create mode 100644 pysrc/solweig/algorithms/Kup_veg_2015a.py create mode 100644 pysrc/solweig/algorithms/Lvikt_veg.py create mode 100644 pysrc/solweig/algorithms/PET_calculations.py create mode 100644 pysrc/solweig/algorithms/Perez_v3.py create mode 100644 pysrc/solweig/algorithms/TsWaveDelay_2015a.py create mode 100644 pysrc/solweig/algorithms/UTCI_calculations.py create mode 100644 pysrc/solweig/algorithms/__init__.py create mode 100644 pysrc/solweig/algorithms/clearnessindex_2013b.py create mode 100644 pysrc/solweig/algorithms/create_patches.py create mode 100644 pysrc/solweig/algorithms/cylindric_wedge.py create mode 100644 pysrc/solweig/algorithms/daylen.py create mode 100644 pysrc/solweig/algorithms/diffusefraction.py create mode 100644 pysrc/solweig/algorithms/patch_radiation.py create mode 100644 pysrc/solweig/algorithms/sun_distance.py create mode 100644 pysrc/solweig/algorithms/sun_position.py create mode 100644 pysrc/solweig/algorithms/sunlit_shaded_patches.py create mode 100644 pysrc/solweig/algorithms/wall_cover.py create mode 100644 pysrc/solweig/algorithms/wall_surface_temperature.py create mode 100644 pysrc/solweig/algorithms/wallalgorithms.py create mode 100644 pysrc/solweig/configs.py rename pysrc/{umepr => solweig}/functions/daily_shading.py (98%) rename pysrc/{umepr => solweig}/functions/solweig.py (97%) rename pysrc/{umepr => solweig}/hybrid/svf.py (97%) create mode 100644 pysrc/solweig/io.py rename pysrc/{umepr => solweig}/parametersforsolweig.json (100%) create mode 100644 pysrc/solweig/runner.py rename pysrc/{umepr => solweig}/shadows.py (99%) rename pysrc/{umepr => solweig}/solweig_runner_rust.py (94%) rename pysrc/{umepr => solweig}/svf.py (98%) create mode 100644 pysrc/solweig/tiles.py create mode 100644 pysrc/solweig/walls.py delete mode 100644 pysrc/umepr/__init__.py create mode 100644 rust/src/pet.rs create mode 100644 rust/src/utci.rs diff --git a/demos/athens-demo.py b/demos/athens-demo.py index b16442f..b4090d8 100644 --- a/demos/athens-demo.py +++ b/demos/athens-demo.py @@ -1,14 +1,19 @@ # %% +""" +Demo: Athens SOLWEIG preprocessing and run + +This demo shows how to use the solweig package for: +1. Rasterizing tree data to CDSM +2. Wall height and aspect generation +3. Sky View Factor (SVF) calculation +4. Full SOLWEIG model run +""" + from pathlib import Path import geopandas as gpd +import solweig from pyproj import CRS -from umep import ( - common, - wall_heightaspect_algorithm, -) -from umep.functions.SOLWEIGpython import solweig_runner_core -from umepr import solweig_runner_rust, svf # working folder input_folder = "demos/data/athens" @@ -28,7 +33,7 @@ working_crs = 2100 trees_gdf = gpd.read_file(input_folder + "/trees.gpkg") trees_gdf = trees_gdf.to_crs(working_crs) -cdsm_rast, cdsm_transf = common.rasterise_gdf( +cdsm_rast, cdsm_transf = solweig.io.rasterise_gdf( trees_gdf, "geometry", "height", @@ -36,7 +41,7 @@ pixel_size=1.0, ) # add to DEM then set -common.save_raster( +solweig.io.save_raster( str(output_folder_path / "CDSM.tif"), cdsm_rast, cdsm_transf.to_gdal(), @@ -44,7 +49,7 @@ ) # %% # wall info for SOLWEIG -wall_heightaspect_algorithm.generate_wall_hts( +solweig.walls.generate_wall_hts( dsm_path=input_path_str + "/DSM.tif", bbox=total_extents, out_dir=output_folder_path_str + "/walls", @@ -52,7 +57,7 @@ # %% # skyview factor for SOLWEIG -svf.generate_svf( +solweig.svf.generate_svf( dsm_path=input_path_str + "/DSM.tif", bbox=total_extents, out_dir=output_folder_path_str + "/svf", @@ -62,21 +67,23 @@ # %% # skyview factor for SOLWEIG - Tiled -svf.generate_svf( +solweig.svf.generate_svf( dsm_path=input_path_str + "/DSM.tif", bbox=total_extents, out_dir=output_folder_path_str + "/svf_tiled", cdsm_path=output_folder_path_str + "/CDSM.tif", trans_veg_perc=3, - use_tiled_loading=True, - tile_size=200, + use_tiled_loading=False, + tile_size=500, ) # %% -SRR = solweig_runner_rust.SolweigRunRust( +# Full SOLWEIG run +# Rust-optimized runner +SRR = solweig.SolweigRunRust( "demos/data/athens/configsolweig.ini", "demos/data/athens/parametersforsolweig.json", - use_tiled_loading=True, + use_tiled_loading=False, tile_size=200, ) SRR.run() @@ -85,7 +92,8 @@ """ # %% -SRC = solweig_runner_core.SolweigRunCore( +# Pure Python runner (for comparison) +SRC = solweig.SolweigRunCore( "demos/data/athens/configsolweig.ini", "demos/data/athens/parametersforsolweig.json", use_tiled_loading=False, @@ -94,3 +102,5 @@ """ Running SOLWEIG: 100%|| 72/72 [04:49<00:00, 4.02s/step] """ + +# %% diff --git a/demos/small_nbhd_walls.py b/demos/small_nbhd_walls.py index 1adb3b3..b93cd59 100644 --- a/demos/small_nbhd_walls.py +++ b/demos/small_nbhd_walls.py @@ -1,13 +1,12 @@ # %% -from importlib import reload -from pathlib import Path +""" +Demo: Small neighbourhood wall height/aspect generation -from umep import ( - solweig_algorithm, - wall_heightaspect_algorithm, -) +This demo shows how to use the solweig package for wall processing. +""" +from pathlib import Path -reload(solweig_algorithm) +import solweig # bbox = [789700, 784130, 790100, 784470] @@ -21,8 +20,7 @@ # %% dsm_path = Path("demos/data/small_nbhd/dsm_clipped.tif").absolute() -# if not Path.exists(working_path / "walls"): -wall_heightaspect_algorithm.generate_wall_hts( +solweig.walls.generate_wall_hts( dsm_path=str(dsm_path), bbox=bbox, out_dir=working_path_str + "/walls", diff --git a/demos/solweig_gbg_test.py b/demos/solweig_gbg_test.py index 1ac362e..0840145 100644 --- a/demos/solweig_gbg_test.py +++ b/demos/solweig_gbg_test.py @@ -1,51 +1,64 @@ # %% +""" +Demo: Gothenburg SOLWEIG preprocessing + +This demo shows how to use the solweig package for: +1. Wall height and aspect generation +2. Sky View Factor (SVF) calculation + +Note: Full SOLWEIG model run requires additional porting work. +""" from pathlib import Path -from umep import ( - wall_heightaspect_algorithm, -) -from umep.functions.SOLWEIGpython import Solweig_run as sr -from umepr import svf +import solweig # %% -bbox = [476070, 4203550, 477110, 4204330] +# Working folder and input files working_folder = "temp/goteborg" -pixel_resolution = 1 # metres -working_crs = 3007 - working_path = Path(working_folder).absolute() working_path.mkdir(parents=True, exist_ok=True) working_path_str = str(working_path) -# input files for computing +# Input files dsm_path = "demos/data/Goteborg_SWEREF99_1200/DSM_KRbig.tif" cdsm_path = "demos/data/Goteborg_SWEREF99_1200/CDSM_KRbig.tif" -lc_path = "" -# setup parameters +# Setup parameters trans_veg_perc = 3 trunk_ratio_perc = 25 # %% -# wall info for SOLWEIG (height and aspect) -wall_heightaspect_algorithm.generate_wall_hts( +# Wall info for SOLWEIG (height and aspect) +print("Generating wall heights and aspects...") +solweig.walls.generate_wall_hts( dsm_path=dsm_path, - bbox=None, + bbox=None, # Full extent out_dir=working_path_str + "/walls", ) +print(f" Output: {working_path_str}/walls/wall_hts.tif") +print(f" Output: {working_path_str}/walls/wall_aspects.tif") # %% -# skyview factor for SOLWEIG -svf.generate_svf( +# Sky View Factor for SOLWEIG +print("\nGenerating SVF (this may take a while for large rasters)...") +solweig.svf.generate_svf( dsm_path=dsm_path, - bbox=None, + bbox=None, # Full extent out_dir=working_path_str + "/svf", cdsm_path=cdsm_path, trans_veg_perc=trans_veg_perc, trunk_ratio_perc=trunk_ratio_perc, ) +print(f" Output: {working_path_str}/svf/") # %% -sr.solweig_run("demos/data/Goteborg_SWEREF99_1200/configsolweig.ini", feedback=None) +print("\nPreprocessing complete!") +print(f"GPU acceleration: {'enabled' if solweig.GPU_ENABLED else 'disabled'}") # %% +# TODO: Full SOLWEIG run +# The full SOLWEIG model runner is not yet fully ported to solweig package. +# For now, you can use umep.functions.SOLWEIGpython.Solweig_run if umep is installed: +# +# from umep.functions.SOLWEIGpython import Solweig_run as sr +# sr.solweig_run("demos/data/Goteborg_SWEREF99_1200/configsolweig.ini", feedback=None) diff --git a/pyproject.toml b/pyproject.toml index 7d60412..fa43624 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] -name = "umepr" -version = "0.0.1b61" -description = "rust implementation of urban multi-scale environmental predictor" +name = "solweig" +version = "0.0.1a1" +description = "High-performance SOLWEIG urban microclimate model (Rust + Python)" readme = "README.md" requires-python = ">=3.9, <3.14" license = { text = "AGPL-3.0" } @@ -47,7 +47,6 @@ dependencies = [ "scipy>=1.13.1", "shapely>=2.0.7", "tqdm>=4.67.1", - "umep==0.0.1a18", "xarray>=2024.7.0", ] @@ -58,11 +57,11 @@ build-backend = "maturin" [tool.maturin] manifest-path = "rust/Cargo.toml" python-source = "pysrc" -module-name = 'umepr.rustalgos' +module-name = 'solweig.rustalgos' features = ["pyo3/extension-module", "gpu"] [tool.setuptools] -packages = ["umepr"] +packages = ["solweig"] [dependency-groups] dev = [ @@ -76,12 +75,13 @@ dev = [ "ruff>=0.5.1", "poethepoet>=0.29.0", "pyright>=1.1.398", + "umep>=0.0.1a18", # For cross-checking tests against reference implementation ] [project.urls] -homepage = "https://github.com/UMEP-dev/umep-rust" -documentation = "https://github.com/UMEP-dev/umep-rust" -repository = "https://github.com/UMEP-dev/umep-rust" +homepage = "https://github.com/UMEP-dev/solweig" +documentation = "https://github.com/UMEP-dev/solweig" +repository = "https://github.com/UMEP-dev/solweig" [tool.poe.tasks] verify_project = { shell = "ruff format && ruff check && pyright . && pytest ./tests" } @@ -117,7 +117,7 @@ docstring-code-line-length = "dynamic" [tool.pyright] pythonVersion = "3.11" -include = ["umepr"] +include = ["solweig"] exclude = [ "**/__pycache__", "**/__pypackages__", diff --git a/pysrc/solweig/__init__.py b/pysrc/solweig/__init__.py new file mode 100644 index 0000000..f24fad6 --- /dev/null +++ b/pysrc/solweig/__init__.py @@ -0,0 +1,91 @@ +""" +SOLWEIG - High-performance urban microclimate model. + +A Python package with Rust-accelerated algorithms for computing mean radiant +temperature (Tmrt) and other urban climate parameters. + +Usage: + import solweig + + # Load raster data + dsm, transform, crs, nodata = solweig.io.load_raster("dsm.tif") + + # Calculate sky view factor + solweig.svf.generate_svf(dsm_path, bbox, out_dir) + + # Generate shadows + solweig.shadows.generate_shadows(dsm_path, date, wall_ht, wall_aspect, bbox, out_dir) + + # Generate wall heights and aspects + solweig.walls.generate_wall_hts(dsm_path, bbox, out_dir) +""" + +import logging + +logger = logging.getLogger(__name__) + +# Version +__version__ = "0.0.1a1" + +# Import I/O module +from . import io +from . import configs +from . import tiles +from . import svf +from . import shadows +from . import walls + +# Import runner classes (after configs to avoid circular imports) +try: + from .runner import SolweigRunCore + from .solweig_runner_rust import SolweigRunRust +except ImportError as e: + logger.debug(f"Runner imports deferred: {e}") + SolweigRunCore = None + SolweigRunRust = None + +# Try to import Rust algorithms +try: + from .rustalgos import GPU_ENABLED, shadowing, skyview, gvf, sky, vegetation, utci, pet + + # Enable GPU by default if available + if GPU_ENABLED: + shadowing.enable_gpu() + logger.info("GPU acceleration enabled by default") + else: + logger.debug("GPU support not compiled in this build") + +except ImportError as e: + logger.warning(f"Failed to import Rust algorithms: {e}") + GPU_ENABLED = False + shadowing = None + skyview = None + gvf = None + sky = None + vegetation = None + utci = None + pet = None + +__all__ = [ + # Version + "__version__", + # Modules + "io", + "configs", + "tiles", + "svf", + "shadows", + "walls", + # Runner classes + "SolweigRunCore", + "SolweigRunRust", + # Rust modules + "GPU_ENABLED", + "shadowing", + "skyview", + "gvf", + "sky", + "vegetation", + "utci", + "pet", +] diff --git a/pysrc/solweig/algorithms/Kup_veg_2015a.py b/pysrc/solweig/algorithms/Kup_veg_2015a.py new file mode 100644 index 0000000..c9bd317 --- /dev/null +++ b/pysrc/solweig/algorithms/Kup_veg_2015a.py @@ -0,0 +1,15 @@ +import numpy as np + +def Kup_veg_2015a(radI,radD,radG,altitude,svfbuveg,albedo_b,F_sh,gvfalb,gvfalbE,gvfalbS,gvfalbW,gvfalbN,gvfalbnosh,gvfalbnoshE,gvfalbnoshS,gvfalbnoshW,gvfalbnoshN): + + Kup=(gvfalb*radI*np.sin(altitude*(np.pi/180.)))+(radD*svfbuveg+albedo_b*(1-svfbuveg)*(radG*(1-F_sh)+radD*F_sh))*gvfalbnosh + + KupE=(gvfalbE*radI*np.sin(altitude*(np.pi/180.)))+(radD*svfbuveg+albedo_b*(1-svfbuveg)*(radG*(1-F_sh)+radD*F_sh))*gvfalbnoshE + + KupS=(gvfalbS*radI*np.sin(altitude*(np.pi/180.)))+(radD*svfbuveg+albedo_b*(1-svfbuveg)*(radG*(1-F_sh)+radD*F_sh))*gvfalbnoshS + + KupW=(gvfalbW*radI*np.sin(altitude*(np.pi/180.)))+(radD*svfbuveg+albedo_b*(1-svfbuveg)*(radG*(1-F_sh)+radD*F_sh))*gvfalbnoshW + + KupN=(gvfalbN*radI*np.sin(altitude*(np.pi/180.)))+(radD*svfbuveg+albedo_b*(1-svfbuveg)*(radG*(1-F_sh)+radD*F_sh))*gvfalbnoshN + + return Kup, KupE, KupS, KupW, KupN \ No newline at end of file diff --git a/pysrc/solweig/algorithms/Lvikt_veg.py b/pysrc/solweig/algorithms/Lvikt_veg.py new file mode 100644 index 0000000..56edc03 --- /dev/null +++ b/pysrc/solweig/algorithms/Lvikt_veg.py @@ -0,0 +1,16 @@ +def Lvikt_veg(svf,svfveg,svfaveg,vikttot): + + # Least + viktonlywall=(vikttot-(63.227*svf**6-161.51*svf**5+156.91*svf**4-70.424*svf**3+16.773*svf**2-0.4863*svf))/vikttot + + viktaveg=(vikttot-(63.227*svfaveg**6-161.51*svfaveg**5+156.91*svfaveg**4-70.424*svfaveg**3+16.773*svfaveg**2-0.4863*svfaveg))/vikttot + + viktwall=viktonlywall-viktaveg + + svfvegbu=(svfveg+svf-1) # Vegetation plus buildings + viktsky=(63.227*svfvegbu**6-161.51*svfvegbu**5+156.91*svfvegbu**4-70.424*svfvegbu**3+16.773*svfvegbu**2-0.4863*svfvegbu)/vikttot + viktrefl=(vikttot-(63.227*svfvegbu**6-161.51*svfvegbu**5+156.91*svfvegbu**4-70.424*svfvegbu**3+16.773*svfvegbu**2-0.4863*svfvegbu))/vikttot + viktveg=(vikttot-(63.227*svfvegbu**6-161.51*svfvegbu**5+156.91*svfvegbu**4-70.424*svfvegbu**3+16.773*svfvegbu**2-0.4863*svfvegbu))/vikttot + viktveg=viktveg-viktwall + + return viktveg,viktwall,viktsky,viktrefl \ No newline at end of file diff --git a/pysrc/solweig/algorithms/PET_calculations.py b/pysrc/solweig/algorithms/PET_calculations.py new file mode 100644 index 0000000..4482da5 --- /dev/null +++ b/pysrc/solweig/algorithms/PET_calculations.py @@ -0,0 +1,417 @@ +"""Adjusted code by Fredrik Lindberg, orginally from Dag Wastberg, Rambolls""" + +import numpy as np +from collections import namedtuple + +# Try to import Rust implementation for faster grid calculations +try: + from ..rustalgos import pet as _rust_pet + _RUST_AVAILABLE = True +except ImportError: + _RUST_AVAILABLE = False + +PET_person=namedtuple("PET_person","mbody age height activity sex clo") + + +def calculate_PET_index(Ta, Pa, Tmrt, va, pet): + mbody=pet.mbody + age=pet.age + height=pet.height + activity=pet.activity + sex=pet.sex + clo=pet.clo + pet_index=np.zeros_like(Tmrt) + for y in range(pet_index.shape[0]): + for x in range(pet_index.shape[1]): + pet_index[y,y]=_PET(Ta[x],Pa[x],Tmrt[x][y],va[x][y],mbody,age,height,activity,clo,sex) + +def calculate_PET_grid(Ta, RH, Tmrt, va, pet, feedback): + mbody=pet.mbody + age=pet.age + height=pet.height + activity=pet.activity + sex=pet.sex + clo=pet.clo + pet_index=np.zeros_like(Tmrt) + total = 100. / (int(pet_index.shape[0] * pet_index.shape[1])) + index = 0 + for y in range(pet_index.shape[0]): + if feedback.isCanceled(): + feedback.setProgressText("Calculation cancelled") + break + for x in range(pet_index.shape[1]): + if va[y, x] > 0: + index = index + 1 + feedback.setProgress(int(index * total)) + pet_index[y,x]=_PET(Ta,RH,Tmrt[y,x],va[y,x],mbody,age,height,activity,clo,sex) + else: + pet_index[y, x] = -9999 + + return pet_index + +def calculate_PET_index_vec(Ta, Pa, Tmrt, va,pet): + mbody=pet.mbody + age=pet.age + height=pet.height + activity=pet.activity + sex=pet.sex + clo=pet.clo + + pet_index=_PET(Ta,Pa,Tmrt,va,mbody,age,height,activity,clo,sex) + +def _PET(ta,RH,tmrt,v,mbody,age,ht,work,icl,sex): + """ + Args: + ta: air temperature + RH: relative humidity + tmrt: Mean Radiant temperature + v: wind at pedestrian heigh + mbody: body masss (kg) + age: person's age (years) + ht: height (meters) + work: activity level (W) + icl: clothing amount (0-5) + sex: 1=male 2=female + Returns: + """ + + # humidity conversion + vps = 6.107 * (10. ** (7.5 * ta / (238. + ta))) + vpa = RH * vps / 100 # water vapour presure, kPa + + po = 1013.25 # Pressure + p = 1013.25 # Pressure + rob = 1.06 + cb = 3.64 * 1000 + food = 0 + emsk = 0.99 + emcl = 0.95 + evap = 2.42e6 + sigma = 5.67e-8 + cair = 1.01 * 1000 + + eta = 0 # No idea what eta is + + c_1 = 0. + c_2 = 0. + c_3 = 0. + c_4 = 0. + c_5 = 0. + c_6 = 0. + c_7 = 0. + c_8 = 0. + c_9 = 0. + c_10 = 0. + c_11 = 0. + + # INBODY + metbf = 3.19 * mbody ** (3 / 4) * (1 + 0.004 * (30 - age) + 0.018 * ((ht * 100 / (mbody ** (1 / 3))) - 42.1)) + metbm = 3.45 * mbody ** (3 / 4) * (1 + 0.004 * (30 - age) + 0.010 * ((ht * 100 / (mbody ** (1 / 3))) - 43.4)) + if sex == 1: + met = metbm + work + else: + met = metbf + work + + h = met * (1 - eta) + rtv = 1.44e-6 * met + + # sensible respiration energy + tex = 0.47 * ta + 21.0 + eres = cair * (ta - tex) * rtv + + # latent respiration energy + vpex = 6.11 * 10 ** (7.45 * tex / (235 + tex)) + erel = 0.623 * evap / p * (vpa - vpex) * rtv + # sum of the results + ere = eres + erel + + # calcul constants + feff = 0.725 + adu = 0.203 * mbody ** 0.425 * ht ** 0.725 + facl = (-2.36 + 173.51 * icl - 100.76 * icl * icl + 19.28 * (icl ** 3)) / 100 + if facl > 1: + facl = 1 + rcl = (icl / 6.45) / facl + y = 1 + + # should these be else if statements? + if icl < 2: + y = (ht-0.2) / ht + if icl <= 0.6: + y = 0.5 + if icl <= 0.3: + y = 0.1 + + fcl = 1 + 0.15 * icl + r2 = adu * (fcl - 1. + facl) / (2 * 3.14 * ht * y) + r1 = facl * adu / (2 * 3.14 * ht * y) + di = r2 - r1 + acl = adu * facl + adu * (fcl - 1) + + tcore = [0] * 8 + + wetsk = 0 + hc = 2.67 + 6.5 * v ** 0.67 + hc = hc * (p / po) ** 0.55 + c_1 = h + ere + he = 0.633 * hc / (p * cair) + fec = 1 / (1 + 0.92 * hc * rcl) + htcl = 6.28 * ht * y * di / (rcl * np.log(r2 / r1) * acl) + aeff = adu * feff + c_2 = adu * rob * cb + c_5 = 0.0208 * c_2 + c_6 = 0.76075 * c_2 + rdsk = 0.79 * 10 ** 7 + rdcl = 0 + + count2 = 0 + j = 1 + + while count2 == 0 and j < 7: + tsk = 34 + count1 = 0 + tcl = (ta + tmrt + tsk) / 3 + count3 = 1 + enbal2 = 0 + + while count1 <= 3: + enbal = 0 + while (enbal*enbal2) >= 0 and count3 < 200: + enbal2 = enbal + # 20 + rclo2 = emcl * sigma * ((tcl + 273.2) ** 4 - (tmrt + 273.2) ** 4) * feff + tsk = 1 / htcl * (hc * (tcl - ta) + rclo2) + tcl + + # radiation balance + rbare = aeff * (1 - facl) * emsk * sigma * ((tmrt + 273.2) ** 4 - (tsk + 273.2) ** 4) + rclo = feff * acl * emcl * sigma * ((tmrt + 273.2) ** 4 - (tcl + 273.2) ** 4) + rsum = rbare + rclo + + # convection + cbare = hc * (ta - tsk) * adu * (1 - facl) + cclo = hc * (ta - tcl) * acl + csum = cbare + cclo + + # core temperature + c_3 = 18 - 0.5 * tsk + c_4 = 5.28 * adu * c_3 + c_7 = c_4 - c_6 - tsk * c_5 + c_8 = -c_1 * c_3 - tsk * c_4 + tsk * c_6 + c_9 = c_7 * c_7 - 4. * c_5 * c_8 + c_10 = 5.28 * adu - c_6 - c_5 * tsk + c_11 = c_10 * c_10 - 4 * c_5 * (c_6 * tsk - c_1 - 5.28 * adu * tsk) + if tsk == 36: + tsk = 36.01 + + tcore[7] = c_1 / (5.28 * adu + c_2 * 6.3 / 3600) + tsk + tcore[3] = c_1 / (5.28 * adu + (c_2 * 6.3 / 3600) / (1 + 0.5 * (34 - tsk))) + tsk + if c_11 >= 0: + tcore[6] = (-c_10-c_11 ** 0.5) / (2 * c_5) + if c_11 >= 0: + tcore[1] = (-c_10+c_11 ** 0.5) / (2 * c_5) + if c_9 >= 0: + tcore[2] = (-c_7+abs(c_9) ** 0.5) / (2 * c_5) + if c_9 >= 0: + tcore[5] = (-c_7-abs(c_9) ** 0.5) / (2 * c_5) + tcore[4] = c_1 / (5.28 * adu + c_2 * 1 / 40) + tsk + + # transpiration + tbody = 0.1 * tsk + 0.9 * tcore[j] + sw = 304.94 * (tbody - 36.6) * adu / 3600000 + vpts = 6.11 * 10 ** (7.45 * tsk / (235. + tsk)) + if tbody <= 36.6: + sw = 0 + if sex == 2: + sw = 0.7 * sw + eswphy = -sw * evap + + eswpot = he * (vpa - vpts) * adu * evap * fec + wetsk = eswphy / eswpot + if wetsk > 1: + wetsk = 1 + eswdif = eswphy - eswpot + if eswdif <= 0: + esw = eswpot + else: + esw = eswphy + if esw > 0: + esw = 0 + + # diffusion + ed = evap / (rdsk + rdcl) * adu * (1 - wetsk) * (vpa - vpts) + + # MAX VB + vb1 = 34 - tsk + vb2 = tcore[j] - 36.6 + if vb2 < 0: + vb2 = 0 + if vb1 < 0: + vb1 = 0 + vb = (6.3 + 75 * vb2) / (1 + 0.5 * vb1) + + # energy balance + enbal = h + ed + ere + esw + csum + rsum + food + + # clothing's temperature + if count1 == 0: + xx = 1 + if count1 == 1: + xx = 0.1 + if count1 == 2: + xx = 0.01 + if count1 == 3: + xx = 0.001 + if enbal > 0: + tcl = tcl + xx + else: + tcl = tcl - xx + + count3 = count3 + 1 + count1 = count1 + 1 + enbal2 = 0 + + if j == 2 or j == 5: + if c_9 >= 0: + if tcore[j] >= 36.6 and tsk <= 34.050: + if (j != 4 and vb >= 91) or (j == 4 and vb < 89): + pass + else: + if vb > 90: + vb = 90 + count2 = 1 + + if j == 6 or j == 1: + if c_11 > 0: + if tcore[j] >= 36.6 and tsk > 33.850: + if (j != 4 and vb >= 91) or (j == 4 and vb < 89): + pass + else: + if vb > 90: + vb = 90 + count2 = 1 + + if j == 3: + if tcore[j] < 36.6 and tsk <= 34.000: + if (j != 4 and vb >= 91) or (j == 4 and vb < 89): + pass + else: + if vb > 90: + vb = 90 + count2 = 1 + + if j == 7: + if tcore[j] < 36.6 and tsk > 34.000: + if (j != 4 and vb >= 91) or (j == 4 and vb < 89): + pass + else: + if vb > 90: + vb = 90 + count2 = 1 + + if j == 4: + if (j != 4 and vb >= 91) or (j == 4 and vb < 89): + pass + else: + if vb > 90: + vb = 90 + count2 = 1 + + j = j + 1 + + # PET_cal + tx = ta + enbal2 = 0 + count1 = 0 + enbal = 0 + + hc = 2.67 + 6.5 * 0.1 ** 0.67 + hc = hc * (p / po) ** 0.55 + + while count1 <= 3: + while (enbal * enbal2) >= 0: + enbal2 = enbal + + # radiation balance + rbare = aeff * (1 - facl) * emsk * sigma * ((tx + 273.2) ** 4 - (tsk + 273.2) ** 4) + rclo = feff * acl * emcl * sigma * ((tx + 273.2) ** 4 - (tcl + 273.2) ** 4) + rsum = rbare + rclo + + # convection + cbare = hc * (tx - tsk) * adu * (1 - facl) + cclo = hc * (tx - tcl) * acl + csum = cbare + cclo + + # diffusion + ed = evap / (rdsk + rdcl) * adu * (1 - wetsk) * (12 - vpts) + + # respiration + tex = 0.47 * tx + 21 + eres = cair * (tx - tex) * rtv + vpex = 6.11 * 10 ** (7.45 * tex / (235 + tex)) + erel = 0.623 * evap / p * (12 - vpex) * rtv + ere = eres + erel + + # energy balance + enbal = h + ed + ere + esw + csum + rsum + + # iteration concerning Tx + if count1 == 0: + xx = 1 + if count1 == 1: + xx = 0.1 + if count1 == 2: + xx = 0.01 + if count1 == 3: + xx = 0.001 + if enbal > 0: + tx = tx - xx + if enbal < 0: + tx = tx + xx + count1 = count1 + 1 + enbal2 = 0 + + return tx + + +def calculate_PET_grid_fast(Ta, RH, Tmrt, va, pet): + """ + Fast PET grid calculation using Rust when available. + + This is a simplified version without feedback/progress for use in batch processing. + Falls back to Python if Rust is not available. + + Parameters: + Ta: Air temperature (°C) - scalar + RH: Relative humidity (%) - scalar + Tmrt: Mean radiant temperature grid (°C) - 2D array + va: Wind speed grid (m/s) - 2D array + pet: PET_person namedtuple with person parameters + + Returns: + PET temperature grid (°C) + """ + # Ensure arrays are float32 and contiguous + Tmrt = np.ascontiguousarray(Tmrt, dtype=np.float32) + va = np.ascontiguousarray(va, dtype=np.float32) + + if _RUST_AVAILABLE: + # Use Rust parallel implementation + return _rust_pet.pet_grid( + float(Ta), float(RH), Tmrt, va, + float(pet.mbody), float(pet.age), float(pet.height), + float(pet.activity), float(pet.clo), int(pet.sex) + ) + else: + # Fallback to Python (slow but works) + pet_index = np.zeros_like(Tmrt, dtype=np.float32) + for y in range(pet_index.shape[0]): + for x in range(pet_index.shape[1]): + if va[y, x] > 0: + pet_index[y, x] = _PET( + Ta, RH, Tmrt[y, x], va[y, x], + pet.mbody, pet.age, pet.height, + pet.activity, pet.clo, pet.sex + ) + else: + pet_index[y, x] = -9999 + return pet_index diff --git a/pysrc/solweig/algorithms/Perez_v3.py b/pysrc/solweig/algorithms/Perez_v3.py new file mode 100644 index 0000000..47f4875 --- /dev/null +++ b/pysrc/solweig/algorithms/Perez_v3.py @@ -0,0 +1,244 @@ +from __future__ import division +import numpy as np +from .create_patches import create_patches + +def Perez_v3(zen, azimuth, radD, radI, jday, patchchoice, patch_option): + """ + This function calculates distribution of luminance on the skyvault based on + Perez luminince distribution model. + + ALL-WEATHER MODEL FOR SKY LUMINANCE DISTRIBUTION + PRELIMINARY CONFIGURATION AND VALIDATION + R. PEREZ, R. SEALS, and J. MICHALSKY + Solar Energy Vol. 50, No, 3, pp. 235-245, 1993 + + Abstract--This article reports the development and evaluation of a new model for describing, from routine + irradiance measurements, the mean instantaneous sky luminance angular distribution patterns for all sky + conditions from overcast to clear, through partly cloudy, skies. + + Created by: + Fredrik Lindberg 20120527, fredrikl@gvc.gu.se + Gothenburg University, Sweden + Urban Climte Group + + Input parameters: + - zen: Zenith angle of the Sun (in degrees) + - azimuth: Azimuth angle of the Sun (in degrees) + - radD: Horizontal diffuse radiation (W m-2) + - radI: Direct radiation perpendicular to the Sun beam (W m-2) + - jday: Day of year + + Output parameters: + - lv: Relative luminance map (same dimensions as theta. gamma) + + + acoeff=[1.353 -0.258 -0.269 -1.437 + -1.222 -0.773 1.415 1.102 + -1.100 -0.252 0.895 0.016 + -0.585 -0.665 -0.267 0.712 + -0.600 -0.347 -2.500 2.323 + -1.016 -0.367 1.008 1.405 + -1.000 0.021 0.503 -0.512 + -1.050 0.029 0.426 0.359]; + + bcoeff=[-0.767 0.001 1.273 -0.123 + -0.205 0.037 -3.913 0.916 + 0.278 -0.181 -4.500 1.177 + 0.723 -0.622 -5.681 2.630 + 0.294 0.049 -5.681 1.842 + 0.288 -0.533 -3.850 3.375 + -0.300 0.192 0.702 -1.632 + -0.325 0.116 0.778 0.003]; + + ccoeff=[2.800 0.600 1.238 1.000 + 6.975 0.177 6.448 -0.124 + 24.22 -13.08 -37.70 34.84 + 33.34 -18.30 -62.25 52.08 + 21.00 -4.766 -21.59 7.249 + 14.00 -0.999 -7.14 7.547 + 19.00 -5.000 1.243 -1.91 + 31.06 -14.50 -46.11 55.37]; + + dcoeff=[1.874 0.630 0.974 0.281 + -1.580 -0.508 -1.781 0.108 + -5.00 1.522 3.923 -2.62 + -3.50 0.002 1.148 0.106 + -3.50 -0.155 1.406 0.399 + -3.40 -0.108 -1.075 1.57 + -4.00 0.025 0.384 0.266 + -7.23 0.405 13.35 0.623]; + + ecoeff=[0.035 -0.125 -0.572 0.994 + 0.262 0.067 -0.219 -0.428 + -0.016 0.160 0.420 -0.556 + 0.466 -0.33 -0.088 -0.033 + 0.003 0.077 -0.066 -0.129 + -0.067 0.402 0.302 -0.484 + 1.047 -0.379 -2.452 1.466 + 1.500 -0.643 1.856 0.564]; + + :param zen: + :param azimuth: + :param radD: + :param radI: + :param jday: + :param patchchoice: + :return: + """ + + m_a1 = np.array([1.3525, -1.2219, -1.1000, -0.5484, -0.6000, -1.0156, -1.0000, -1.0500]) + m_a2 = np.array([-0.2576, -0.7730, -0.2515, -0.6654, -0.3566, -0.3670, 0.0211, 0.0289]) + m_a3 = np.array([-0.2690, 1.4148, 0.8952, -0.2672, -2.5000, 1.0078, 0.5025, 0.4260]) + m_a4 = np.array([-1.4366, 1.1016, 0.0156, 0.7117, 2.3250, 1.4051, -0.5119, 0.3590]) + m_b1 = np.array([-0.7670, -0.2054, 0.2782, 0.7234, 0.2937, 0.2875, -0.3000, -0.3250]) + m_b2 = np.array([0.0007, 0.0367, -0.1812, -0.6219, 0.0496, -0.5328, 0.1922, 0.1156]) + m_b3 = np.array([1.2734, -3.9128, -4.5000, -5.6812, -5.6812, -3.8500, 0.7023, 0.7781]) + m_b4 = np.array([-0.1233, 0.9156, 1.1766, 2.6297, 1.8415, 3.3750, -1.6317, 0.0025]) + m_c1 = np.array([2.8000, 6.9750, 24.7219, 33.3389, 21.0000, 14.0000, 19.0000, 31.0625]) + m_c2 = np.array([0.6004, 0.1774, -13.0812, -18.3000, -4.7656, -0.9999, -5.0000, -14.5000]) + m_c3 = np.array([1.2375, 6.4477, -37.7000, -62.2500, -21.5906, -7.1406, 1.2438, -46.1148]) + m_c4 = np.array([1.0000, -0.1239, 34.8438, 52.0781, 7.2492, 7.5469, -1.9094, 55.3750]) + m_d1 = np.array([1.8734, -1.5798, -5.0000, -3.5000, -3.5000, -3.4000, -4.0000, -7.2312]) + m_d2 = np.array([0.6297, -0.5081, 1.5218, 0.0016, -0.1554, -0.1078, 0.0250, 0.4050]) + m_d3 = np.array([0.9738, -1.7812, 3.9229, 1.1477, 1.4062, -1.0750, 0.3844, 13.3500]) + m_d4 = np.array([0.2809, 0.1080, -2.6204, 0.1062, 0.3988, 1.5702, 0.2656, 0.6234]) + m_e1 = np.array([0.0356, 0.2624, -0.0156, 0.4659, 0.0032, -0.0672, 1.0468, 1.5000]) + m_e2 = np.array([-0.1246, 0.0672, 0.1597, -0.3296, 0.0766, 0.4016, -0.3788, -0.6426]) + m_e3 = np.array([-0.5718, -0.2190, 0.4199, -0.0876, -0.0656, 0.3017, -2.4517, 1.8564]) + m_e4 = np.array([0.9938, -0.4285, -0.5562, -0.0329, -0.1294, -0.4844, 1.4656, 0.5636]) + + acoeff = np.transpose(np.atleast_2d([m_a1, m_a2, m_a3, m_a4])) + bcoeff = np.transpose(np.atleast_2d([m_b1, m_b2, m_b3, m_b4])) + ccoeff = np.transpose(np.atleast_2d([m_c1, m_c2, m_c3, m_c4])) + dcoeff = np.transpose(np.atleast_2d([m_d1, m_d2, m_d3, m_d4])) + ecoeff = np.transpose(np.atleast_2d([m_e1, m_e2, m_e3, m_e4])) + + deg2rad = np.pi/180 + rad2deg = 180/np.pi + altitude = 90-zen + zen = zen * deg2rad + azimuth = azimuth * deg2rad + altitude = altitude * deg2rad + Idh = radD + # Ibh = radI/sin(altitude) + Ibn = radI + + # Skyclearness + PerezClearness = ((Idh + Ibn) / Idh + 1.041 * np.power(zen, 3)) / (1 + 1.041 * np.power(zen, 3)) + # Extra terrestrial radiation + day_angle = jday*2*np.pi/365 + #I0=1367*(1+0.033*np.cos((2*np.pi*jday)/365)) + I0 = 1367*(1.00011+0.034221*np.cos(day_angle) + 0.00128*np.sin(day_angle)+0.000719 * + np.cos(2*day_angle)+0.000077*np.sin(2*day_angle)) # New from robinsson + + # Optical air mass + # m=1/altitude; old + if altitude >= 10*deg2rad: + AirMass = 1/np.sin(altitude) + elif altitude < 0: # below equation becomes complex + AirMass = 1/np.sin(altitude)+0.50572*np.power(180*complex(altitude)/np.pi+6.07995, -1.6364) + else: + # Added brackets to denominator: np.sin(0) was giving zero hence division by zero = infinity + AirMass = 1 / (np.sin(altitude) + 0.50572 * np.power(180 * altitude / np.pi + 6.07995, -1.6364)) + + # Skybrightness + # if altitude*rad2deg+6.07995>=0 + PerezBrightness = (AirMass*radD)/I0 + if Idh <= 10: + # m_a=0;m_b=0;m_c=0;m_d=0;m_e=0; + PerezBrightness = 0 + #if altitude < 0: + #print("Airmass") + #print(AirMass) + #print(PerezBrightness) + # sky clearness bins + if PerezClearness < 1.065: + intClearness = 0 + elif PerezClearness < 1.230: + intClearness = 1 + elif PerezClearness < 1.500: + intClearness = 2 + elif PerezClearness < 1.950: + intClearness = 3 + elif PerezClearness < 2.800: + intClearness = 4 + elif PerezClearness < 4.500: + intClearness = 5 + elif PerezClearness < 6.200: + intClearness = 6 + if PerezClearness > 6.200: + intClearness = 7 + + m_a = acoeff[intClearness, 0] + acoeff[intClearness, 1] * zen + PerezBrightness * (acoeff[intClearness, 2] + acoeff[intClearness, 3] * zen) + m_b = bcoeff[intClearness, 0] + bcoeff[intClearness, 1] * zen + PerezBrightness * (bcoeff[intClearness, 2] + bcoeff[intClearness, 3] * zen) + m_e = ecoeff[intClearness, 0] + ecoeff[intClearness, 1] * zen + PerezBrightness * (ecoeff[intClearness, 2] + ecoeff[intClearness, 3] * zen) + + if intClearness > 0: + m_c = ccoeff[intClearness, 0] + ccoeff[intClearness, 1] * zen + PerezBrightness * (ccoeff[intClearness, 2] + ccoeff[intClearness, 3] * zen) + m_d = dcoeff[intClearness, 0] + dcoeff[intClearness, 1] * zen + PerezBrightness * (dcoeff[intClearness, 2] + dcoeff[intClearness, 3] * zen) + else: + # different equations for c & d in clearness bin no. 1, from Robinsson + m_c = np.exp(np.power(PerezBrightness * (ccoeff[intClearness, 0] + ccoeff[intClearness, 1] * zen), ccoeff[intClearness, 2]))-1 + m_d = -np.exp(PerezBrightness * (dcoeff[intClearness, 0] + dcoeff[intClearness, 1] * zen)) + dcoeff[intClearness, 2] + \ + PerezBrightness * dcoeff[intClearness, 3] + + # print 'a = ', m_a + # print 'b = ', m_b + # print 'e = ', m_e + # print 'c = ', m_c + # print 'd = ', m_d + + if patchchoice == 2: + skyvaultalt = np.atleast_2d([]) + skyvaultazi = np.atleast_2d([]) + # Creating skyvault at one degree intervals + skyvaultalt = np.ones([90, 361])*90 + skyvaultazi = np.empty((90, 361)) + for j in range(90): + skyvaultalt[j, :] = 91-j + skyvaultazi[j, :] = range(361) + + elif patchchoice == 1: + # Creating skyvault of patches of constant radians (Tregeneza and Sharples, 1993) + skyvaultalt, skyvaultazi, _, _, _, _, _ = create_patches(patch_option) + + skyvaultzen = (90 - skyvaultalt) * deg2rad + skyvaultalt = skyvaultalt * deg2rad + skyvaultazi = skyvaultazi * deg2rad + + # Angular distance from the sun from Robinsson + cosSkySunAngle = np.sin(skyvaultalt) * np.sin(altitude) + \ + np.cos(altitude) * np.cos(skyvaultalt) * np.cos(np.abs(skyvaultazi-azimuth)) + + cos_zen = np.cos(skyvaultzen) + exp_arg_h = m_b / cos_zen + ang = np.arccos(cosSkySunAngle) + exp_arg_c = m_d * ang + circumsolar = 1 + m_c * np.exp(exp_arg_c) + m_e * cosSkySunAngle * cosSkySunAngle + + lv = (1 + m_a * np.exp(exp_arg_h)) * circumsolar + + # Normalisation (with safeguard) + if np.any(lv < 0): + print("Warning: found negative Perez luminances, using uniform distribution as fallback.") + lv.fill(1.0 / lv.size) # uniform fallback + else: + lv = lv / np.sum(lv) + + # plotting + # axesm('stereo','Origin',[90 180],'MapLatLimit',[0 90],'Aspect','transverse') + # framem off; gridm on; mlabel off; plabel off;axis on; + # setm(gca,'MLabelParallel',-20) + # geoshow(skyvaultalt*rad2deg,skyvaultazi*rad2deg,lv,'DisplayType','texture'); + # colorbar + # set(gcf,'Color',[1 1 1]) + # pause(1) + + if patchchoice == 1: + #x = np.atleast_2d([]) + #lv = np.transpose(np.append(np.append(np.append(x, skyvaultalt*rad2deg), skyvaultazi*rad2deg), lv)) + x = np.transpose(np.atleast_2d(skyvaultalt*rad2deg)) + y = np.transpose(np.atleast_2d(skyvaultazi*rad2deg)) + z = np.transpose(np.atleast_2d(lv)) + lv = np.append(np.append(x, y, axis=1), z, axis=1) + return lv, PerezClearness, PerezBrightness \ No newline at end of file diff --git a/pysrc/solweig/algorithms/TsWaveDelay_2015a.py b/pysrc/solweig/algorithms/TsWaveDelay_2015a.py new file mode 100644 index 0000000..11637c8 --- /dev/null +++ b/pysrc/solweig/algorithms/TsWaveDelay_2015a.py @@ -0,0 +1,23 @@ +import numpy as np + + +def TsWaveDelay_2015a(gvfLup, firstdaytime, timeadd, timestepdec, Tgmap1): + + Tgmap0 = gvfLup # current timestep + if firstdaytime == 1: # "first in morning" + Tgmap1 = Tgmap0 + + if timeadd >= (59/1440): # more or equal to 59 min + weight1 = np.exp(-33.27 * timeadd) # surface temperature delay function - 1 step + Tgmap1 = Tgmap0 * (1 - weight1) + Tgmap1 * weight1 + Lup = Tgmap1 + if timestepdec > (59/1440): + timeadd = timestepdec + else: + timeadd = 0 + else: + timeadd = timeadd + timestepdec + weight1 = np.exp(-33.27 * timeadd) # surface temperature delay function - 1 step + Lup = (Tgmap0 * (1 - weight1) + Tgmap1 * weight1) + + return Lup, timeadd, Tgmap1 \ No newline at end of file diff --git a/pysrc/solweig/algorithms/UTCI_calculations.py b/pysrc/solweig/algorithms/UTCI_calculations.py new file mode 100644 index 0000000..61c17fe --- /dev/null +++ b/pysrc/solweig/algorithms/UTCI_calculations.py @@ -0,0 +1,401 @@ +import numpy as np + +# Try to import Rust implementation for faster grid calculations +try: + from ..rustalgos import utci as _rust_utci + _RUST_AVAILABLE = True +except ImportError: + _RUST_AVAILABLE = False + + +def utci_polynomial(D_Tmrt, Ta, va, Pa): + # calculate 6th order polynomial as approximation + UTCI_approx = ( + Ta + + (6.07562052e-01) + + (-2.27712343e-02) * Ta + + (8.06470249e-04) * Ta * Ta + + (-1.54271372e-04) * Ta * Ta * Ta + + (-3.24651735e-06) * Ta * Ta * Ta * Ta + + (7.32602852e-08) * Ta * Ta * Ta * Ta * Ta + + (1.35959073e-09) * Ta * Ta * Ta * Ta * Ta * Ta + + (-2.25836520e00) * va + + (8.80326035e-02) * Ta * va + + (2.16844454e-03) * Ta * Ta * va + + (-1.53347087e-05) * Ta * Ta * Ta * va + + (-5.72983704e-07) * Ta * Ta * Ta * Ta * va + + (-2.55090145e-09) * Ta * Ta * Ta * Ta * Ta * va + + (-7.51269505e-01) * va * va + + (-4.08350271e-03) * Ta * va * va + + (-5.21670675e-05) * Ta * Ta * va * va + + (1.94544667e-06) * Ta * Ta * Ta * va * va + + (1.14099531e-08) * Ta * Ta * Ta * Ta * va * va + + (1.58137256e-01) * va * va * va + + (-6.57263143e-05) * Ta * va * va * va + + (2.22697524e-07) * Ta * Ta * va * va * va + + (-4.16117031e-08) * Ta * Ta * Ta * va * va * va + + (-1.27762753e-02) * va * va * va * va + + (9.66891875e-06) * Ta * va * va * va * va + + (2.52785852e-09) * Ta * Ta * va * va * va * va + + (4.56306672e-04) * va * va * va * va * va + + (-1.74202546e-07) * Ta * va * va * va * va * va + + (-5.91491269e-06) * va * va * va * va * va * va + + (3.98374029e-01) * D_Tmrt + + (1.83945314e-04) * Ta * D_Tmrt + + (-1.73754510e-04) * Ta * Ta * D_Tmrt + + (-7.60781159e-07) * Ta * Ta * Ta * D_Tmrt + + (3.77830287e-08) * Ta * Ta * Ta * Ta * D_Tmrt + + (5.43079673e-10) * Ta * Ta * Ta * Ta * Ta * D_Tmrt + + (-2.00518269e-02) * va * D_Tmrt + + (8.92859837e-04) * Ta * va * D_Tmrt + + (3.45433048e-06) * Ta * Ta * va * D_Tmrt + + (-3.77925774e-07) * Ta * Ta * Ta * va * D_Tmrt + + (-1.69699377e-09) * Ta * Ta * Ta * Ta * va * D_Tmrt + + (1.69992415e-04) * va * va * D_Tmrt + + (-4.99204314e-05) * Ta * va * va * D_Tmrt + + (2.47417178e-07) * Ta * Ta * va * va * D_Tmrt + + (1.07596466e-08) * Ta * Ta * Ta * va * va * D_Tmrt + + (8.49242932e-05) * va * va * va * D_Tmrt + + (1.35191328e-06) * Ta * va * va * va * D_Tmrt + + (-6.21531254e-09) * Ta * Ta * va * va * va * D_Tmrt + + (-4.99410301e-06) * va * va * va * va * D_Tmrt + + (-1.89489258e-08) * Ta * va * va * va * va * D_Tmrt + + (8.15300114e-08) * va * va * va * va * va * D_Tmrt + + (7.55043090e-04) * D_Tmrt * D_Tmrt + + (-5.65095215e-05) * Ta * D_Tmrt * D_Tmrt + + (-4.52166564e-07) * Ta * Ta * D_Tmrt * D_Tmrt + + (2.46688878e-08) * Ta * Ta * Ta * D_Tmrt * D_Tmrt + + (2.42674348e-10) * Ta * Ta * Ta * Ta * D_Tmrt * D_Tmrt + + (1.54547250e-04) * va * D_Tmrt * D_Tmrt + + (5.24110970e-06) * Ta * va * D_Tmrt * D_Tmrt + + (-8.75874982e-08) * Ta * Ta * va * D_Tmrt * D_Tmrt + + (-1.50743064e-09) * Ta * Ta * Ta * va * D_Tmrt * D_Tmrt + + (-1.56236307e-05) * va * va * D_Tmrt * D_Tmrt + + (-1.33895614e-07) * Ta * va * va * D_Tmrt * D_Tmrt + + (2.49709824e-09) * Ta * Ta * va * va * D_Tmrt * D_Tmrt + + (6.51711721e-07) * va * va * va * D_Tmrt * D_Tmrt + + (1.94960053e-09) * Ta * va * va * va * D_Tmrt * D_Tmrt + + (-1.00361113e-08) * va * va * va * va * D_Tmrt * D_Tmrt + + (-1.21206673e-05) * D_Tmrt * D_Tmrt * D_Tmrt + + (-2.18203660e-07) * Ta * D_Tmrt * D_Tmrt * D_Tmrt + + (7.51269482e-09) * Ta * Ta * D_Tmrt * D_Tmrt * D_Tmrt + + (9.79063848e-11) * Ta * Ta * Ta * D_Tmrt * D_Tmrt * D_Tmrt + + (1.25006734e-06) * va * D_Tmrt * D_Tmrt * D_Tmrt + + (-1.81584736e-09) * Ta * va * D_Tmrt * D_Tmrt * D_Tmrt + + (-3.52197671e-10) * Ta * Ta * va * D_Tmrt * D_Tmrt * D_Tmrt + + (-3.36514630e-08) * va * va * D_Tmrt * D_Tmrt * D_Tmrt + + (1.35908359e-10) * Ta * va * va * D_Tmrt * D_Tmrt * D_Tmrt + + (4.17032620e-10) * va * va * va * D_Tmrt * D_Tmrt * D_Tmrt + + (-1.30369025e-09) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (4.13908461e-10) * Ta * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (9.22652254e-12) * Ta * Ta * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (-5.08220384e-09) * va * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (-2.24730961e-11) * Ta * va * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (1.17139133e-10) * va * va * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (6.62154879e-10) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (4.03863260e-13) * Ta * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (1.95087203e-12) * va * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (-4.73602469e-12) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt + + (5.12733497e00) * Pa + + (-3.12788561e-01) * Ta * Pa + + (-1.96701861e-02) * Ta * Ta * Pa + + (9.99690870e-04) * Ta * Ta * Ta * Pa + + (9.51738512e-06) * Ta * Ta * Ta * Ta * Pa + + (-4.66426341e-07) * Ta * Ta * Ta * Ta * Ta * Pa + + (5.48050612e-01) * va * Pa + + (-3.30552823e-03) * Ta * va * Pa + + (-1.64119440e-03) * Ta * Ta * va * Pa + + (-5.16670694e-06) * Ta * Ta * Ta * va * Pa + + (9.52692432e-07) * Ta * Ta * Ta * Ta * va * Pa + + (-4.29223622e-02) * va * va * Pa + + (5.00845667e-03) * Ta * va * va * Pa + + (1.00601257e-06) * Ta * Ta * va * va * Pa + + (-1.81748644e-06) * Ta * Ta * Ta * va * va * Pa + + (-1.25813502e-03) * va * va * va * Pa + + (-1.79330391e-04) * Ta * va * va * va * Pa + + (2.34994441e-06) * Ta * Ta * va * va * va * Pa + + (1.29735808e-04) * va * va * va * va * Pa + + (1.29064870e-06) * Ta * va * va * va * va * Pa + + (-2.28558686e-06) * va * va * va * va * va * Pa + + (-3.69476348e-02) * D_Tmrt * Pa + + (1.62325322e-03) * Ta * D_Tmrt * Pa + + (-3.14279680e-05) * Ta * Ta * D_Tmrt * Pa + + (2.59835559e-06) * Ta * Ta * Ta * D_Tmrt * Pa + + (-4.77136523e-08) * Ta * Ta * Ta * Ta * D_Tmrt * Pa + + (8.64203390e-03) * va * D_Tmrt * Pa + + (-6.87405181e-04) * Ta * va * D_Tmrt * Pa + + (-9.13863872e-06) * Ta * Ta * va * D_Tmrt * Pa + + (5.15916806e-07) * Ta * Ta * Ta * va * D_Tmrt * Pa + + (-3.59217476e-05) * va * va * D_Tmrt * Pa + + (3.28696511e-05) * Ta * va * va * D_Tmrt * Pa + + (-7.10542454e-07) * Ta * Ta * va * va * D_Tmrt * Pa + + (-1.24382300e-05) * va * va * va * D_Tmrt * Pa + + (-7.38584400e-09) * Ta * va * va * va * D_Tmrt * Pa + + (2.20609296e-07) * va * va * va * va * D_Tmrt * Pa + + (-7.32469180e-04) * D_Tmrt * D_Tmrt * Pa + + (-1.87381964e-05) * Ta * D_Tmrt * D_Tmrt * Pa + + (4.80925239e-06) * Ta * Ta * D_Tmrt * D_Tmrt * Pa + + (-8.75492040e-08) * Ta * Ta * Ta * D_Tmrt * D_Tmrt * Pa + + (2.77862930e-05) * va * D_Tmrt * D_Tmrt * Pa + + (-5.06004592e-06) * Ta * va * D_Tmrt * D_Tmrt * Pa + + (1.14325367e-07) * Ta * Ta * va * D_Tmrt * D_Tmrt * Pa + + (2.53016723e-06) * va * va * D_Tmrt * D_Tmrt * Pa + + (-1.72857035e-08) * Ta * va * va * D_Tmrt * D_Tmrt * Pa + + (-3.95079398e-08) * va * va * va * D_Tmrt * D_Tmrt * Pa + + (-3.59413173e-07) * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (7.04388046e-07) * Ta * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (-1.89309167e-08) * Ta * Ta * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (-4.79768731e-07) * va * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (7.96079978e-09) * Ta * va * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (1.62897058e-09) * va * va * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (3.94367674e-08) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (-1.18566247e-09) * Ta * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (3.34678041e-10) * va * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (-1.15606447e-10) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * Pa + + (-2.80626406e00) * Pa * Pa + + (5.48712484e-01) * Ta * Pa * Pa + + (-3.99428410e-03) * Ta * Ta * Pa * Pa + + (-9.54009191e-04) * Ta * Ta * Ta * Pa * Pa + + (1.93090978e-05) * Ta * Ta * Ta * Ta * Pa * Pa + + (-3.08806365e-01) * va * Pa * Pa + + (1.16952364e-02) * Ta * va * Pa * Pa + + (4.95271903e-04) * Ta * Ta * va * Pa * Pa + + (-1.90710882e-05) * Ta * Ta * Ta * va * Pa * Pa + + (2.10787756e-03) * va * va * Pa * Pa + + (-6.98445738e-04) * Ta * va * va * Pa * Pa + + (2.30109073e-05) * Ta * Ta * va * va * Pa * Pa + + (4.17856590e-04) * va * va * va * Pa * Pa + + (-1.27043871e-05) * Ta * va * va * va * Pa * Pa + + (-3.04620472e-06) * va * va * va * va * Pa * Pa + + (5.14507424e-02) * D_Tmrt * Pa * Pa + + (-4.32510997e-03) * Ta * D_Tmrt * Pa * Pa + + (8.99281156e-05) * Ta * Ta * D_Tmrt * Pa * Pa + + (-7.14663943e-07) * Ta * Ta * Ta * D_Tmrt * Pa * Pa + + (-2.66016305e-04) * va * D_Tmrt * Pa * Pa + + (2.63789586e-04) * Ta * va * D_Tmrt * Pa * Pa + + (-7.01199003e-06) * Ta * Ta * va * D_Tmrt * Pa * Pa + + (-1.06823306e-04) * va * va * D_Tmrt * Pa * Pa + + (3.61341136e-06) * Ta * va * va * D_Tmrt * Pa * Pa + + (2.29748967e-07) * va * va * va * D_Tmrt * Pa * Pa + + (3.04788893e-04) * D_Tmrt * D_Tmrt * Pa * Pa + + (-6.42070836e-05) * Ta * D_Tmrt * D_Tmrt * Pa * Pa + + (1.16257971e-06) * Ta * Ta * D_Tmrt * D_Tmrt * Pa * Pa + + (7.68023384e-06) * va * D_Tmrt * D_Tmrt * Pa * Pa + + (-5.47446896e-07) * Ta * va * D_Tmrt * D_Tmrt * Pa * Pa + + (-3.59937910e-08) * va * va * D_Tmrt * D_Tmrt * Pa * Pa + + (-4.36497725e-06) * D_Tmrt * D_Tmrt * D_Tmrt * Pa * Pa + + (1.68737969e-07) * Ta * D_Tmrt * D_Tmrt * D_Tmrt * Pa * Pa + + (2.67489271e-08) * va * D_Tmrt * D_Tmrt * D_Tmrt * Pa * Pa + + (3.23926897e-09) * D_Tmrt * D_Tmrt * D_Tmrt * D_Tmrt * Pa * Pa + + (-3.53874123e-02) * Pa * Pa * Pa + + (-2.21201190e-01) * Ta * Pa * Pa * Pa + + (1.55126038e-02) * Ta * Ta * Pa * Pa * Pa + + (-2.63917279e-04) * Ta * Ta * Ta * Pa * Pa * Pa + + (4.53433455e-02) * va * Pa * Pa * Pa + + (-4.32943862e-03) * Ta * va * Pa * Pa * Pa + + (1.45389826e-04) * Ta * Ta * va * Pa * Pa * Pa + + (2.17508610e-04) * va * va * Pa * Pa * Pa + + (-6.66724702e-05) * Ta * va * va * Pa * Pa * Pa + + (3.33217140e-05) * va * va * va * Pa * Pa * Pa + + (-2.26921615e-03) * D_Tmrt * Pa * Pa * Pa + + (3.80261982e-04) * Ta * D_Tmrt * Pa * Pa * Pa + + (-5.45314314e-09) * Ta * Ta * D_Tmrt * Pa * Pa * Pa + + (-7.96355448e-04) * va * D_Tmrt * Pa * Pa * Pa + + (2.53458034e-05) * Ta * va * D_Tmrt * Pa * Pa * Pa + + (-6.31223658e-06) * va * va * D_Tmrt * Pa * Pa * Pa + + (3.02122035e-04) * D_Tmrt * D_Tmrt * Pa * Pa * Pa + + (-4.77403547e-06) * Ta * D_Tmrt * D_Tmrt * Pa * Pa * Pa + + (1.73825715e-06) * va * D_Tmrt * D_Tmrt * Pa * Pa * Pa + + (-4.09087898e-07) * D_Tmrt * D_Tmrt * D_Tmrt * Pa * Pa * Pa + + (6.14155345e-01) * Pa * Pa * Pa * Pa + + (-6.16755931e-02) * Ta * Pa * Pa * Pa * Pa + + (1.33374846e-03) * Ta * Ta * Pa * Pa * Pa * Pa + + (3.55375387e-03) * va * Pa * Pa * Pa * Pa + + (-5.13027851e-04) * Ta * va * Pa * Pa * Pa * Pa + + (1.02449757e-04) * va * va * Pa * Pa * Pa * Pa + + (-1.48526421e-03) * D_Tmrt * Pa * Pa * Pa * Pa + + (-4.11469183e-05) * Ta * D_Tmrt * Pa * Pa * Pa * Pa + + (-6.80434415e-06) * va * D_Tmrt * Pa * Pa * Pa * Pa + + (-9.77675906e-06) * D_Tmrt * D_Tmrt * Pa * Pa * Pa * Pa + + (8.82773108e-02) * Pa * Pa * Pa * Pa * Pa + + (-3.01859306e-03) * Ta * Pa * Pa * Pa * Pa * Pa + + (1.04452989e-03) * va * Pa * Pa * Pa * Pa * Pa + + (2.47090539e-04) * D_Tmrt * Pa * Pa * Pa * Pa * Pa + + (1.48348065e-03) * Pa * Pa * Pa * Pa * Pa * Pa + ) + + return UTCI_approx + + +def utci_calculator(Ta, RH, Tmrt, va10m): + # Program for calculating UTCI Temperature (UTCI) + # released for public use after termination of COST Action 730 + + # Translated from fortran by Fredrik Lindberg, Göteborg Urban Climate Group, Sweden + # UTCI, Version a 0.002, October 2009 + # Copyright (C) 2009 Peter Broede + + if Ta <= -999 or RH <= -999 or va10m <= -999 or Tmrt <= -999: + UTCI_approx = -999 + else: + # saturation vapour pressure (es) + g = np.array( + [ + -2.8365744e3, + -6.028076559e3, + 1.954263612e1, + -2.737830188e-2, + 1.6261698e-5, + 7.0229056e-10, + -1.8680009e-13, + 2.7150305, + ] + ) + + tk = Ta + 273.15 # ! air temp in K + es = g[7] * np.log(tk) + for i in range(0, 7): + es = es + g[i] * tk ** (i + 1 - 3.0) + + es = np.exp(es) * 0.01 + + ehPa = es * RH / 100.0 + + D_Tmrt = Tmrt - Ta + Pa = ehPa / 10.0 # use vapour pressure in kPa + va = va10m + + # Calculate 6th order polynomial as approximation + UTCI_approx = utci_polynomial(D_Tmrt, Ta, va, Pa) + + return UTCI_approx + + +def utci_calculator_grid(Ta, RH, Tmrt, va10m, feedback): + # Program for calculating UTCI Temperature (UTCI) + # released for public use after termination of COST Action 730 + + # Translated from fortran by Fredrik Lindberg, Göteborg Urban Climate Group, Sweden + # UTCI, Version a 0.002, October 2009 + # Copyright (C) 2009 Peter Broede + + rows = Tmrt.shape[0] + cols = Tmrt.shape[1] + + # If Tair or relative humidity is NaN, set all UTCI to -999 + if Ta <= -999 or RH <= -999: + UTCI_approx = np.ones((rows, cols), dtype=np.float32) * -999 + # Else, create an empty raster for UTCI and start estimating UTCI + else: + UTCI_approx = np.zeros((rows, cols), dtype=np.float32) + + # saturation vapour pressure (es) + g = np.array( + [ + -2.8365744e3, + -6.028076559e3, + 1.954263612e1, + -2.737830188e-2, + 1.6261698e-5, + 7.0229056e-10, + -1.8680009e-13, + 2.7150305, + ], + dtype=np.float32, + ) + + tk = Ta + 273.15 # ! air temp in K + es = g[7] * np.log(tk) + for i in range(0, 7): + es = es + g[i] * tk ** (i + 1 - 3.0) + + es = np.exp(es) * 0.01 + + ehPa = es * RH / 100.0 + Pa = ehPa / 10.0 # use vapour pressure in kPa + + # For progress counter + index = 0 + total = 100.0 / (rows * cols) + + # Start UTCI approximation + for iy in np.arange(rows): + if feedback.isCanceled(): + feedback.setProgressText("Calculation cancelled") + break + for ix in np.arange(cols): + D_Tmrt = Tmrt[iy, ix] - Ta + # va = va10m[iy, ix] + + # Set UTCI to NaN (-999) if Tmrt or wind speed is NaN + if Tmrt[iy, ix] <= -999 or va10m[iy, ix] <= -999: + UTCI_approx[iy, ix] = -9999 + # Calculate 6th order polynomial as approximation if wind speed is above zero + elif va10m[iy, ix] > 0: + UTCI_approx[iy, ix] = utci_polynomial(D_Tmrt, Ta, va10m[iy, ix], Pa) + + # Progress counter + index = index + 1 + feedback.setProgress(int(index * total)) + + return UTCI_approx + + +def utci_calculator_grid_fast(Ta, RH, Tmrt, va10m): + """ + Fast UTCI grid calculation using Rust when available. + + This is a simplified version without feedback/progress for use in batch processing. + Falls back to vectorized NumPy if Rust is not available. + + Parameters: + Ta: Air temperature (°C) - scalar + RH: Relative humidity (%) - scalar + Tmrt: Mean radiant temperature grid (°C) - 2D array + va10m: Wind speed grid at 10m (m/s) - 2D array + + Returns: + UTCI temperature grid (°C) + """ + # Ensure arrays are float32 and contiguous + Tmrt = np.ascontiguousarray(Tmrt, dtype=np.float32) + va10m = np.ascontiguousarray(va10m, dtype=np.float32) + + if _RUST_AVAILABLE: + # Use Rust parallel implementation + return _rust_utci.utci_grid(float(Ta), float(RH), Tmrt, va10m) + else: + # Fallback to vectorized NumPy (faster than the nested loop version) + rows, cols = Tmrt.shape + + if Ta <= -999 or RH <= -999: + return np.ones((rows, cols), dtype=np.float32) * -999 + + # Saturation vapor pressure + g = np.array([ + -2.8365744e3, -6.028076559e3, 1.954263612e1, -2.737830188e-2, + 1.6261698e-5, 7.0229056e-10, -1.8680009e-13, 2.7150305 + ], dtype=np.float32) + + tk = Ta + 273.15 + es = g[7] * np.log(tk) + for i in range(7): + es = es + g[i] * tk ** (i + 1 - 3.0) + es = np.exp(es) * 0.01 + Pa = es * RH / 100.0 / 10.0 + + # Vectorized calculation + D_Tmrt = Tmrt - Ta + + # Create mask for valid pixels + valid = (Tmrt > -999) & (va10m > 0) + + result = np.full((rows, cols), -9999.0, dtype=np.float32) + + # Calculate UTCI only for valid pixels (still uses the polynomial per-pixel) + for iy in range(rows): + for ix in range(cols): + if valid[iy, ix]: + result[iy, ix] = utci_polynomial(D_Tmrt[iy, ix], Ta, va10m[iy, ix], Pa) + + return result diff --git a/pysrc/solweig/algorithms/__init__.py b/pysrc/solweig/algorithms/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pysrc/solweig/algorithms/clearnessindex_2013b.py b/pysrc/solweig/algorithms/clearnessindex_2013b.py new file mode 100644 index 0000000..72cba49 --- /dev/null +++ b/pysrc/solweig/algorithms/clearnessindex_2013b.py @@ -0,0 +1,88 @@ +from __future__ import absolute_import +author = 'xlinfr' + +from . import sun_distance +import numpy as np +import math + +def clearnessindex_2013b(zen, jday, Ta, RH, radG, location, P): + + """ Clearness Index at the Earth's surface calculated from Crawford and Duchon 1999 + + :param zen: zenith angle in radians + :param jday: day of year + :param Ta: air temperature + :param RH: relative humidity + :param radG: global shortwave radiation + :param location: distionary including lat, lon and alt + :param P: pressure + :return: + """ + + if P == -999.0: + p = 1013. # Pressure in millibars + else: + p = P*10. # Convert from hPa to millibars + + Itoa = 1370.0 # Effective solar constant + D = sun_distance.sun_distance(jday) # irradiance differences due to Sun-Earth distances + m = 35. * np.cos(zen) * ((1224. * (np.cos(zen)**2) + 1) ** (-1/2.)) # optical air mass at p=1013 + Trpg = 1.021-0.084*(m*(0.000949*p+0.051))**0.5 # Transmission coefficient for Rayliegh scattering and permanent gases + + # empirical constant depending on latitude + if location['latitude'] < 10.: + G = [3.37, 2.85, 2.80, 2.64] + elif location['latitude'] >= 10. and location['latitude'] < 20.: + G = [2.99, 3.02, 2.70, 2.93] + elif location['latitude'] >= 20. and location['latitude'] <30.: + G = [3.60, 3.00, 2.98, 2.93] + elif location['latitude'] >= 30. and location['latitude'] <40.: + G = [3.04, 3.11, 2.92, 2.94] + elif location['latitude'] >= 40. and location['latitude'] <50.: + G = [2.70, 2.95, 2.77, 2.71] + elif location['latitude'] >= 50. and location['latitude'] <60.: + G = [2.52, 3.07, 2.67, 2.93] + elif location['latitude'] >= 60. and location['latitude'] <70.: + G = [1.76, 2.69, 2.61, 2.61] + elif location['latitude'] >= 70. and location['latitude'] <80.: + G = [1.60, 1.67, 2.24, 2.63] + elif location['latitude'] >= 80. and location['latitude'] <90.: + G = [1.11, 1.44, 1.94, 2.02] + + if jday > 335 or jday <= 60: + G = G[0] + elif jday > 60 and jday <= 152: + G = G[1] + elif jday > 152 and jday <= 244: + G = G[2] + elif jday > 244 and jday <= 335: + G = G[3] + + # dewpoint calculation + a2 = 17.27 + b2 = 237.7 + Td = (b2*(((a2*Ta)/(b2+Ta))+np.log(RH)))/(a2-(((a2*Ta)/(b2+Ta))+np.log(RH))) + Td = (Td*1.8)+32 # Dewpoint (F) + u = np.exp(0.1133-np.log(G+1)+0.0393*Td) # Precipitable water + Tw = 1-0.077*((u*m)**0.3) # Transmission coefficient for water vapor + Tar = 0.935**m # Transmission coefficient for aerosols + + I0=Itoa*np.cos(zen)*Trpg*Tw*D*Tar + if abs(zen)>np.pi/2: + I0 = 0 + # b=I0==abs(zen)>np.pi/2 + # I0(b==1)=0 + # clear b; + if not(np.isreal(I0)): + I0 = 0 + + corr=0.1473*np.log(90-(zen/np.pi*180))+0.3454 # 20070329 + + CIuncorr = radG / I0 + CI = CIuncorr + (1-corr) + I0et = Itoa*np.cos(zen)*D # extra terrestial solar radiation + Kt = radG / I0et + if math.isnan(CI): + CI = float('Inf') + + return I0, CI, Kt, I0et, CIuncorr \ No newline at end of file diff --git a/pysrc/solweig/algorithms/create_patches.py b/pysrc/solweig/algorithms/create_patches.py new file mode 100644 index 0000000..ed59e63 --- /dev/null +++ b/pysrc/solweig/algorithms/create_patches.py @@ -0,0 +1,52 @@ +import numpy as np + +def create_patches(patch_option): + + deg2rad = np.pi/180 + + # patch_option = 1 = 145 patches (Robinson & Stone, 2004) + # patch_option = 2 = 153 patches (Wallenberg et al., 2022) + # patch_option = 3 = 306 patches -> test + # patch_option = 4 = 612 patches -> test + + skyvaultalt = np.atleast_2d([]) + skyvaultazi = np.atleast_2d([]) + + # Creating skyvault of patches of constant radians (Tregeneza and Sharples, 1993) + # Patch option 1, 145 patches, Original Robinson & Stone (2004) after Tregenza (1987)/Tregenza & Sharples (1993) + if patch_option == 1: + annulino = np.array([0, 12, 24, 36, 48, 60, 72, 84, 90]) + skyvaultaltint = np.array([6, 18, 30, 42, 54, 66, 78, 90]) # Robinson & Stone (2004) + azistart = np.array([0, 4, 2, 5, 8, 0, 10, 0]) # Fredrik/Nils + patches_in_band = np.array([30, 30, 24, 24, 18, 12, 6, 1]) # Robinson & Stone (2004) + # Patch option 2, 153 patches, Wallenberg et al. (2022) + elif patch_option == 2: + annulino = np.array([0, 12, 24, 36, 48, 60, 72, 84, 90]) + skyvaultaltint = np.array([6, 18, 30, 42, 54, 66, 78, 90]) # Robinson & Stone (2004) + azistart = np.array([0, 4, 2, 5, 8, 0, 10, 0]) # Fredrik/Nils + patches_in_band = np.array([31, 30, 28, 24, 19, 13, 7, 1]) # Nils + # Patch option 3, 306 patches, test + elif patch_option == 3: + annulino = np.array([0, 12, 24, 36, 48, 60, 72, 84, 90]) + skyvaultaltint = np.array([6, 18, 30, 42, 54, 66, 78, 90]) # Robinson & Stone (2004) + azistart = np.array([0, 4, 2, 5, 8, 0, 10, 0]) # Fredrik/Nils + patches_in_band = np.array([31*2, 30*2, 28*2, 24*2, 19*2, 13*2, 7*2, 1]) # Nils + # Patch option 4, 612 patches, test + elif patch_option == 4: + annulino = np.array([0, 4.5, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 90]) # Nils + skyvaultaltint = np.array([3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 90]) # Nils + patches_in_band = np.array([31*2, 31*2, 30*2, 30*2, 28*2, 28*2, 24*2, 24*2, 19*2, 19*2, 13*2, 13*2, 7*2, 7*2, 1]) # Nils + azistart = np.array([0, 0, 4, 4, 2, 2, 5, 5, 8, 8, 0, 0, 10, 10, 0]) # Nils + + skyvaultaziint = np.array([360/patches for patches in patches_in_band]) + + for j in range(0, skyvaultaltint.shape[0]): + for k in range(0, patches_in_band[j]): + skyvaultalt = np.append(skyvaultalt, skyvaultaltint[j]) + skyvaultazi = np.append(skyvaultazi, k*skyvaultaziint[j] + azistart[j]) + + # skyvaultzen = (90 - skyvaultalt) * deg2rad + # skyvaultalt = skyvaultalt * deg2rad + # skyvaultazi = skyvaultazi * deg2rad + + return skyvaultalt, skyvaultazi, annulino, skyvaultaltint, patches_in_band, skyvaultaziint, azistart \ No newline at end of file diff --git a/pysrc/solweig/algorithms/cylindric_wedge.py b/pysrc/solweig/algorithms/cylindric_wedge.py new file mode 100644 index 0000000..d11ae97 --- /dev/null +++ b/pysrc/solweig/algorithms/cylindric_wedge.py @@ -0,0 +1,95 @@ +import numpy as np + +def cylindric_wedge(zen, svfalfa, rows, cols): + + np.seterr(divide='ignore', invalid='ignore') + + # Fraction of sunlit walls based on sun altitude and svf wieghted building angles + # input: + # sun zenith angle "beta" + # svf related angle "alfa" + + beta=zen + # alfa=svfalfa + alfa=np.zeros((rows, cols)) + svfalfa + # measure the size of the image + # sizex=size(svfalfa,2) + # sizey=size(svfalfa,1) + + xa=1-2./(np.tan(alfa)*np.tan(beta)) + ha=2./(np.tan(alfa)*np.tan(beta)) + ba=(1./np.tan(alfa)) + hkil=2.*ba*ha + + qa=np.zeros((rows, cols)) + # qa(length(svfalfa),length(svfalfa))=0; + qa[xa<0]=np.tan(beta)/2 + + Za=np.zeros((rows, cols)) + # Za(length(svfalfa),length(svfalfa))=0; + Za[xa<0]=((ba[xa<0]**2)-((qa[xa<0]**2)/4))**0.5 + + phi=np.zeros((rows, cols)) + #phi(length(svfalfa),length(svfalfa))=0; + phi[xa<0]=np.arctan(Za[xa<0]/qa[xa<0]) + + A=np.zeros((rows, cols)) + # A(length(svfalfa),length(svfalfa))=0; + A[xa<0]=(np.sin(phi[xa<0])-phi[xa<0]*np.cos(phi[xa<0]))/(1-np.cos(phi[xa<0])) + + ukil=np.zeros((rows, cols)) + # ukil(length(svfalfa),length(svfalfa))=0 + ukil[xa<0]=2*ba[xa<0]*xa[xa<0]*A[xa<0] + + Ssurf=hkil+ukil + + F_sh=(2*np.pi*ba-Ssurf)/(2*np.pi*ba)#Xa + + return F_sh + +def cylindric_wedge_voxel(zen, svfalfa): + + np.seterr(divide='ignore', invalid='ignore') + + # Fraction of sunlit walls based on sun altitude and svf wieghted building angles + # input: + # sun zenith angle "beta" + # svf related angle "alfa" + + beta=zen + # alfa=svfalfa + #alfa = voxelTable['svfalfa'].to_numpy() + # measure the size of the image + # sizex=size(svfalfa,2) + # sizey=size(svfalfa,1) + + xa=1-2./(np.tan(svfalfa)*np.tan(beta)) + ha=2./(np.tan(svfalfa)*np.tan(beta)) + ba=(1./np.tan(svfalfa)) + hkil=2.*ba*ha + + qa=np.zeros((svfalfa.shape[0])) + # qa(length(svfalfa),length(svfalfa))=0; + qa[xa<0]=np.tan(beta)/2 + + Za=np.zeros((svfalfa.shape[0])) + # Za(length(svfalfa),length(svfalfa))=0; + Za[xa<0]=((ba[xa<0]**2)-((qa[xa<0]**2)/4))**0.5 + + phi=np.zeros((svfalfa.shape[0])) + #phi(length(svfalfa),length(svfalfa))=0; + phi[xa<0]=np.arctan(Za[xa<0]/qa[xa<0]) + + A=np.zeros((svfalfa.shape[0])) + # A(length(svfalfa),length(svfalfa))=0; + A[xa<0]=(np.sin(phi[xa<0])-phi[xa<0]*np.cos(phi[xa<0]))/(1-np.cos(phi[xa<0])) + + ukil=np.zeros((svfalfa.shape[0])) + # ukil(length(svfalfa),length(svfalfa))=0 + ukil[xa<0]=2*ba[xa<0]*xa[xa<0]*A[xa<0] + + Ssurf=hkil+ukil + + F_sh=(2*np.pi*ba-Ssurf)/(2*np.pi*ba)#Xa + + return F_sh \ No newline at end of file diff --git a/pysrc/solweig/algorithms/daylen.py b/pysrc/solweig/algorithms/daylen.py new file mode 100644 index 0000000..a66cf5d --- /dev/null +++ b/pysrc/solweig/algorithms/daylen.py @@ -0,0 +1,22 @@ + +import numpy as np + +def daylen(DOY, XLAT): + # Calculation of declination of sun (Eqn. 16). Amplitude= +/-23.45 + # deg. Minimum = DOY 355 (DEC 21), maximum = DOY 172.5 (JUN 21/22). + # Sun angles. SOC limited for latitudes above polar circles. + # Calculate daylength, sunrise and sunset (Eqn. 17) + + RAD=np.pi/180.0 + + DEC = -23.45 * np.cos(2.0*np.pi*(DOY+10.0)/365.0) + + SOC = np.tan(RAD*DEC) * np.tan(RAD*XLAT) + SOC = min(max(SOC,-1.0),1.0) + # SOC=alt + + DAYL = 12.0 + 24.0*np.arcsin(SOC)/np.pi + SNUP = 12.0 - DAYL/2.0 + SNDN = 12.0 + DAYL/2.0 + + return DAYL, DEC, SNDN, SNUP diff --git a/pysrc/solweig/algorithms/diffusefraction.py b/pysrc/solweig/algorithms/diffusefraction.py new file mode 100644 index 0000000..1f74970 --- /dev/null +++ b/pysrc/solweig/algorithms/diffusefraction.py @@ -0,0 +1,47 @@ +from __future__ import division +import numpy as np + +def diffusefraction(radG,altitude,Kt,Ta,RH): + """ + This function estimates diffuse and directbeam radiation according to + Reindl et al (1990), Solar Energy 45:1 + + :param radG: + :param altitude: + :param Kt: # radiation at the top of the atmosphere + :param Ta: + :param RH: + :return: + """ + + alfa = altitude*(np.pi/180) + + if Ta <= -999.00 or RH <= -999.00 or np.isnan(Ta) or np.isnan(RH): + if Kt <= 0.3: + radD = radG*(1.020-0.248*Kt) + elif Kt > 0.3 and Kt < 0.78: + radD = radG*(1.45-1.67*Kt) + else: + radD = radG*0.147 + else: + RH = RH/100 + if Kt <= 0.3: + radD = radG*(1 - 0.232 * Kt + 0.0239 * np.sin(alfa) - 0.000682 * Ta + 0.0195 * RH) + elif Kt > 0.3 and Kt < 0.78: + radD = radG*(1.329- 1.716 * Kt + 0.267 * np.sin(alfa) - 0.00357 * Ta + 0.106 * RH) + else: + radD = radG*(0.426 * Kt - 0.256 * np.sin(alfa) + 0.00349 * Ta + 0.0734 * RH) + + radI = (radG - radD)/(np.sin(alfa)) + + # Corrections for low sun altitudes (20130307) + if radI < 0: + radI = 0 + + if altitude < 1 and radI > radG: + radI=radG + + if radD > radG: + radD = radG + + return radI, radD diff --git a/pysrc/solweig/algorithms/patch_radiation.py b/pysrc/solweig/algorithms/patch_radiation.py new file mode 100644 index 0000000..3aa6780 --- /dev/null +++ b/pysrc/solweig/algorithms/patch_radiation.py @@ -0,0 +1,245 @@ +import numpy as np +from . import sunlit_shaded_patches + +def shortwave_from_sky(sky, angle_of_incidence, lumChi, steradian, patch_azimuth, cyl): + '''Calculates the amount of diffuse shortwave radiation from the sky for a patch with: + angle of incidence = angle_of_incidence + luminance = lumChi + steradian = steradian''' + + # Diffuse vertical radiation + diffuse_shortwave_radiation = sky * lumChi * angle_of_incidence * steradian + + return diffuse_shortwave_radiation + +def longwave_from_sky(sky, Lsky_side, Lsky_down, patch_azimuth): + + # Degrees to radians + deg2rad = np.pi / 180 + + # Longwave radiation from sky to vertical surface + Ldown_sky = sky * Lsky_down + + # Longwave radiation from sky to horizontal surface + Lside_sky = sky * Lsky_side + + # + Least = np.zeros((sky.shape[0], sky.shape[1])) + Lsouth = np.zeros((sky.shape[0], sky.shape[1])) + Lwest = np.zeros((sky.shape[0], sky.shape[1])) + Lnorth = np.zeros((sky.shape[0], sky.shape[1])) + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = sky * Lsky_side * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = sky * Lsky_side * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = sky * Lsky_side * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = sky * Lsky_side * np.cos((0 - patch_azimuth) * deg2rad) + + return Lside_sky, Ldown_sky, Least, Lsouth, Lwest, Lnorth + +def longwave_from_veg(vegetation, steradian, angle_of_incidence, angle_of_incidence_h, patch_altitude, patch_azimuth, ewall, Ta): + '''Calculates the amount of longwave radiation from vegetation for a patch with: + angle of incidence = angle_of_incidence + steradian = steradian + if a patch is vegetation = vegetation + amount of radiation from vegetated patch = vegetation_surface''' + + # Stefan-Boltzmann's Constant + SBC = 5.67051e-8 + + # Degrees to radians + deg2rad = np.pi / 180 + + # Longwave radiation from vegetation surface (considered vertical) + vegetation_surface = ((ewall * SBC * ((Ta + 273.15) ** 4)) / np.pi) + + # Longwave radiation reaching a vertical surface + Lside_veg = vegetation_surface * steradian * angle_of_incidence * vegetation + + # Longwave radiation reaching a horizontal surface + Ldown_veg = vegetation_surface * steradian * angle_of_incidence_h * vegetation + + # + Least = np.zeros((vegetation.shape[0], vegetation.shape[1])) + Lsouth = np.zeros((vegetation.shape[0], vegetation.shape[1])) + Lwest = np.zeros((vegetation.shape[0], vegetation.shape[1])) + Lnorth = np.zeros((vegetation.shape[0], vegetation.shape[1])) + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = vegetation_surface * steradian * np.cos(patch_altitude * deg2rad) * vegetation * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = vegetation_surface * steradian * np.cos(patch_altitude * deg2rad) * vegetation * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = vegetation_surface * steradian * np.cos(patch_altitude * deg2rad) * vegetation * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = vegetation_surface * steradian * np.cos(patch_altitude * deg2rad) * vegetation * np.cos((0 - patch_azimuth) * deg2rad) + + return Lside_veg, Ldown_veg, Least, Lsouth, Lwest, Lnorth + +def longwave_from_buildings(building, steradian, angle_of_incidence, angle_of_incidence_h, patch_azimuth, sunlit_patches, shaded_patches, azimuth_difference, solar_altitude, ewall, Ta, Tgwall): + + # Stefan-Boltzmann's Constant + SBC = 5.67051e-8 + + # Degrees to radians + deg2rad = np.pi / 180 + + # + Least = np.zeros((building.shape[0], building.shape[1])) + Lsouth = np.zeros((building.shape[0], building.shape[1])) + Lwest = np.zeros((building.shape[0], building.shape[1])) + Lnorth = np.zeros((building.shape[0], building.shape[1])) + + # Longwave radiation from sunlit surfaces + sunlit_surface = ((ewall * SBC * ((Ta + Tgwall + 273.15) ** 4)) / np.pi) + # Longwave radiation from shaded surfaces + shaded_surface = ((ewall * SBC * ((Ta + 273.15) ** 4)) / np.pi) + if ((azimuth_difference > 90) and (azimuth_difference < 270) and (solar_altitude > 0)): + # Calculate which patches defined as buildings that are sunlit or shaded + # sunlit_patches, shaded_patches = sunlit_shaded_patches.shaded_or_sunlit(solar_altitude, solar_azimuth, patch_altitude, patch_azimuth, asvf) + + # Calculate longwave radiation from sunlit walls to vertical surface + Lside_sun = sunlit_surface * sunlit_patches * steradian * angle_of_incidence * building + # Calculate longwave radiation from shaded walls to vertical surface + Lside_sh = shaded_surface * shaded_patches * steradian * angle_of_incidence * building + + # Calculate longwave radiation from sunlit walls to horizontal surface + Ldown_sun = sunlit_surface * sunlit_patches * steradian * angle_of_incidence_h * building + # Calculate longwave radiation from shaded walls to horizontal surface + Ldown_sh = shaded_surface * shaded_patches * steradian * angle_of_incidence_h * building + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = sunlit_surface * sunlit_patches * steradian * angle_of_incidence * building * np.cos((90 - patch_azimuth) * deg2rad) + Least += shaded_surface * shaded_patches * steradian * angle_of_incidence * building * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = sunlit_surface * sunlit_patches * steradian * angle_of_incidence * building * np.cos((180 - patch_azimuth) * deg2rad) + Lsouth += shaded_surface * shaded_patches * steradian * angle_of_incidence * building * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = sunlit_surface * sunlit_patches * steradian * angle_of_incidence * building * np.cos((270 - patch_azimuth) * deg2rad) + Lwest += shaded_surface * shaded_patches * steradian * angle_of_incidence * building * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = sunlit_surface * sunlit_patches * steradian * angle_of_incidence * building * np.cos((0 - patch_azimuth) * deg2rad) + Lnorth += shaded_surface * shaded_patches * steradian * angle_of_incidence * building * np.cos((0 - patch_azimuth) * deg2rad) + + else: + # Calculate longwave radiation from shaded walls reaching a vertical surface + Lside_sh = shaded_surface * steradian * angle_of_incidence * building + Lside_sun = np.zeros((Lside_sh.shape[0], Lside_sh.shape[1])) + + # Calculate longwave radiation from shaded walls reaching a horizontal surface + Ldown_sh = shaded_surface * steradian * angle_of_incidence_h * building + Ldown_sun = np.zeros((Lside_sh.shape[0], Lside_sh.shape[1])) + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = shaded_surface * steradian * angle_of_incidence * building * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = shaded_surface * steradian * angle_of_incidence * building * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = shaded_surface * steradian * angle_of_incidence * building * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = shaded_surface * steradian * angle_of_incidence * building * np.cos((0 - patch_azimuth) * deg2rad) + + return Lside_sun, Lside_sh, Ldown_sun, Ldown_sh, Least, Lsouth, Lwest, Lnorth + +def longwave_from_buildings_wallScheme(voxelMaps, voxelTable, steradian, angle_of_incidence, angle_of_incidence_h, patch_azimuth): + + # Degrees to radians + deg2rad = np.pi / 180 + + # + Lside = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Lside_sh = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Ldown = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Ldown_sh = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Least = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Lsouth = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Lwest = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + Lnorth = np.zeros((voxelMaps.shape[0], voxelMaps.shape[1])) + + # print(voxelMaps) + #print(voxelTable.head()) + l = list(np.unique(voxelMaps)[1:]) + # print(l) + a = dict(voxelTable.loc[l, 'LongwaveRadiation']) + # print(a) + patch_radiation = np.vectorize(a.get)(voxelMaps).astype(float) + patch_radiation[np.isnan(patch_radiation)] = 0 + Lside += patch_radiation * steradian * angle_of_incidence + Ldown += patch_radiation * steradian * angle_of_incidence_h + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = patch_radiation * steradian * angle_of_incidence * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = patch_radiation * steradian * angle_of_incidence * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = patch_radiation * steradian * angle_of_incidence * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = patch_radiation * steradian * angle_of_incidence * np.cos((0 - patch_azimuth) * deg2rad) + + return Lside, Lside_sh, Ldown, Ldown_sh, Least, Lsouth, Lwest, Lnorth + +def reflected_longwave(reflecting_surface, steradian, angle_of_incidence, angle_of_incidence_h, patch_azimuth, Ldown_sky, Lup, ewall): + + # Degrees to radians + deg2rad = np.pi / 180 + + # Calculate reflected longwave in each patch + reflected_radiation = (((Ldown_sky+Lup) * (1-ewall)*0.5) / np.pi) + + # Reflected longwave radiation reaching vertical surfaces + Lside_ref = reflected_radiation * steradian * angle_of_incidence * reflecting_surface + + # Reflected longwave radiation reaching horizontal surfaces + Ldown_ref = reflected_radiation * steradian * angle_of_incidence_h * reflecting_surface + + # + Least = np.zeros((reflecting_surface.shape[0], reflecting_surface.shape[1])) + Lsouth = np.zeros((reflecting_surface.shape[0], reflecting_surface.shape[1])) + Lwest = np.zeros((reflecting_surface.shape[0], reflecting_surface.shape[1])) + Lnorth = np.zeros((reflecting_surface.shape[0], reflecting_surface.shape[1])) + + # Portion into cardinal directions to be used for standing box or POI output + if (patch_azimuth > 360) or (patch_azimuth < 180): + Least = reflected_radiation * steradian * angle_of_incidence * reflecting_surface * np.cos((90 - patch_azimuth) * deg2rad) + if (patch_azimuth > 90) and (patch_azimuth < 270): + Lsouth = reflected_radiation * steradian * angle_of_incidence * reflecting_surface * np.cos((180 - patch_azimuth) * deg2rad) + if (patch_azimuth > 180) and (patch_azimuth < 360): + Lwest = reflected_radiation * steradian * angle_of_incidence * reflecting_surface * np.cos((270 - patch_azimuth) * deg2rad) + if (patch_azimuth > 270) or (patch_azimuth < 90): + Lnorth = reflected_radiation * steradian * angle_of_incidence * reflecting_surface * np.cos((0 - patch_azimuth) * deg2rad) + + return Lside_ref, Ldown_ref, Least, Lsouth, Lwest, Lnorth + +def patch_steradians(L_patches): + ''''This function calculates the steradians of the patches''' + + # Degrees to radians + deg2rad = np.pi / 180 + + # Unique altitudes for patches + skyalt, skyalt_c = np.unique(L_patches[:, 0], return_counts=True) + + # Altitudes of the Robinson & Stone patches + patch_altitude = L_patches[:, 0] + + # Calculation of steradian for each patch + steradian = np.zeros((patch_altitude.shape[0])) + for i in range(patch_altitude.shape[0]): + # If there are more than one patch in a band + if skyalt_c[skyalt == patch_altitude[i]] > 1: + steradian[i] = ((360 / skyalt_c[skyalt == patch_altitude[i]]) * deg2rad) * (np.sin((patch_altitude[i] + patch_altitude[0]) * deg2rad) \ + - np.sin((patch_altitude[i] - patch_altitude[0]) * deg2rad)) + # If there is only one patch in band, i.e. 90 degrees + else: + steradian[i] = ((360 / skyalt_c[skyalt == patch_altitude[i]]) * deg2rad) * (np.sin((patch_altitude[i]) * deg2rad) \ + - np.sin((patch_altitude[i-1] + patch_altitude[0]) * deg2rad)) + + return steradian, skyalt, patch_altitude \ No newline at end of file diff --git a/pysrc/solweig/algorithms/sun_distance.py b/pysrc/solweig/algorithms/sun_distance.py new file mode 100644 index 0000000..b6e0673 --- /dev/null +++ b/pysrc/solweig/algorithms/sun_distance.py @@ -0,0 +1,15 @@ +__author__ = 'xlinfr' +import numpy as np + + +def sun_distance(jday): + """ + + #% Calculatesrelative earth sun distance + #% with day of year as input. + #% Partridge and Platt, 1975 + """ + b = 2.*np.pi*jday/365. + D = np.sqrt((1.00011+np.dot(0.034221, np.cos(b))+np.dot(0.001280, np.sin(b))+np.dot(0.000719, + np.cos((2.*b)))+np.dot(0.000077, np.sin((2.*b))))) + return D diff --git a/pysrc/solweig/algorithms/sun_position.py b/pysrc/solweig/algorithms/sun_position.py new file mode 100644 index 0000000..dfc00d0 --- /dev/null +++ b/pysrc/solweig/algorithms/sun_position.py @@ -0,0 +1,1001 @@ +# -*- coding: utf-8 -*- +from __future__ import division +from __future__ import print_function +import datetime +import numpy as np + + +def sun_position(time, location): + """ + % sun = sun_position(time, location) + % + % This function compute the sun position (zenith and azimuth angle at the observer + % location) as a function of the observer local time and position. + % + % It is an implementation of the algorithm presented by Reda et Andreas in: + % Reda, I., Andreas, A. (2003) Solar position algorithm for solar + % radiation application. National Renewable Energy Laboratory (NREL) + % Technical report NREL/TP-560-34302. + % This document is avalaible at www.osti.gov/bridge + % + % This algorithm is based on numerical approximation of the exact equations. + % The authors of the original paper state that this algorithm should be + % precise at +/- 0.0003 degrees. I have compared it to NOAA solar table + % (http://www.srrb.noaa.gov/highlights/sunrise/azel.html) and to USNO solar + % table (http://aa.usno.navy.mil/data/docs/AltAz.html) and found very good + % correspondance (up to the precision of those tables), except for large + % zenith angle, where the refraction by the atmosphere is significant + % (difference of about 1 degree). Note that in this code the correction + % for refraction in the atmosphere as been implemented for a temperature + % of 10C (283 kelvins) and a pressure of 1010 mbar. See the subfunction + % �sun_topocentric_zenith_angle_calculation� for a possible modification + % to explicitely model the effect of temperature and pressure as describe + % in Reda & Andreas (2003). + % + % Input parameters: + % time: a structure that specify the time when the sun position is + % calculated. + % time.year: year. Valid for [-2000, 6000] + % time.month: month [1-12] + % time.day: calendar day [1-31] + % time.hour: local hour [0-23] + % time.min: minute [0-59] + % time.sec: second [0-59] + % time.UTC: offset hour from UTC. Local time = Greenwich time + time.UTC + % This input can also be passed using the Matlab time format ('dd-mmm-yyyy HH:MM:SS'). + % In that case, the time has to be specified as UTC time (time.UTC = 0) + % + % location: a structure that specify the location of the observer + % location.latitude: latitude (in degrees, north of equator is + % positive) + % location.longitude: longitude (in degrees, positive for east of + % Greenwich) + % location.altitude: altitude above mean sea level (in meters) + % + % Output parameters + % sun: a structure with the calculated sun position + % sun.zenith = zenith angle in degrees (angle from the vertical) + % sun.azimuth = azimuth angle in degrees, eastward from the north. + % Only the sun zenith and azimuth angles are returned as output, but a lot + % of other parameters are calculated that could also extracted as output of + % this function. + % + % Exemple of use + % + % location.longitude = -105.1786; + % location.latitude = 39.742476; + % location.altitude = 1830.14; + % time.year = 2005; + % time.month = 10; + % time.day = 17; + % time.hour = 6; + % time.min = 30; + % time.sec = 30; + % time.UTC = -7; + % % + % location.longitude = 11.94; + % location.latitude = 57.70; + % location.altitude = 3.0; + % time.UTC = 1; + % sun = sun_position(time, location); + % + % sun = + % + % zenith: 50.1080438859849 + % azimuth: 194.341174010338 + % + % History + % 09/03/2004 Original creation by Vincent Roy (vincent.roy@drdc-rddc.gc.ca) + % 10/03/2004 Fixed a bug in julian_calculation subfunction (was + % incorrect for year 1582 only), Vincent Roy + % 18/03/2004 Correction to the header (help display) only. No changes to + % the code. (changed the �elevation� field in �location� structure + % information to �altitude�), Vincent Roy + % 13/04/2004 Following a suggestion from Jody Klymak (jklymak@ucsd.edu), + % allowed the 'time' input to be passed as a Matlab time string. + % 22/08/2005 Following a bug report from Bruce Bowler + % (bbowler@bigelow.org), modified the julian_calculation function. Bug + % was 'MATLAB has allowed structure assignment to a non-empty non-structure + % to overwrite the previous value. This behavior will continue in this release, + % but will be an error in a future version of MATLAB. For advice on how to + % write code that will both avoid this warning and work in future versions of + % MATLAB, see R14SP2 Release Notes'. Script should now be + % compliant with futher release of Matlab... + """ + + # 1. Calculate the Julian Day, and Century. Julian Ephemeris day, century + # and millenium are calculated using a mean delta_t of 33.184 seconds. + julian = julian_calculation(time) + #print(julian) + + # 2. Calculate the Earth heliocentric longitude, latitude, and radius + # vector (L, B, and R) + earth_heliocentric_position = earth_heliocentric_position_calculation(julian) + + # 3. Calculate the geocentric longitude and latitude + sun_geocentric_position = sun_geocentric_position_calculation(earth_heliocentric_position) + + # 4. Calculate the nutation in longitude and obliquity (in degrees). + nutation = nutation_calculation(julian) + + # 5. Calculate the true obliquity of the ecliptic (in degrees). + true_obliquity = true_obliquity_calculation(julian, nutation) + + # 6. Calculate the aberration correction (in degrees) + aberration_correction = abberation_correction_calculation(earth_heliocentric_position) + + # 7. Calculate the apparent sun longitude in degrees) + apparent_sun_longitude = apparent_sun_longitude_calculation(sun_geocentric_position, nutation, aberration_correction) + + # 8. Calculate the apparent sideral time at Greenwich (in degrees) + apparent_stime_at_greenwich = apparent_stime_at_greenwich_calculation(julian, nutation, true_obliquity) + + # 9. Calculate the sun rigth ascension (in degrees) + sun_rigth_ascension = sun_rigth_ascension_calculation(apparent_sun_longitude, true_obliquity, sun_geocentric_position) + + # 10. Calculate the geocentric sun declination (in degrees). Positive or + # negative if the sun is north or south of the celestial equator. + sun_geocentric_declination = sun_geocentric_declination_calculation(apparent_sun_longitude, true_obliquity, + sun_geocentric_position) + + # 11. Calculate the observer local hour angle (in degrees, westward from south). + observer_local_hour = observer_local_hour_calculation(apparent_stime_at_greenwich, location, sun_rigth_ascension) + + # 12. Calculate the topocentric sun position (rigth ascension, declination and + # rigth ascension parallax in degrees) + topocentric_sun_position = topocentric_sun_position_calculate(earth_heliocentric_position, location, + observer_local_hour, sun_rigth_ascension, + sun_geocentric_declination) + + # 13. Calculate the topocentric local hour angle (in degrees) + topocentric_local_hour = topocentric_local_hour_calculate(observer_local_hour, topocentric_sun_position) + + # 14. Calculate the topocentric zenith and azimuth angle (in degrees) + sun = sun_topocentric_zenith_angle_calculate(location, topocentric_sun_position, topocentric_local_hour) + + return sun + + +def julian_calculation(t_input): + """ + % This function compute the julian day and julian century from the local + % time and timezone information. Ephemeris are calculated with a delta_t=0 + % seconds. + + % If time input is a Matlab time string, extract the information from + % this string and create the structure as defined in the main header of + % this script. + """ + if not isinstance(t_input, dict): + # tt = datetime.datetime.strptime(t_input, "%Y-%m-%d %H:%M:%S.%f") # if t_input is a string of this format + # t_input should be a datetime object + time = dict() + time['UTC'] = 0 + time['year'] = t_input.year + time['month'] = t_input.month + time['day'] = t_input.day + time['hour'] = t_input.hour + time['min'] = t_input.minute + time['sec'] = t_input.second + else: + time = t_input + + if time['month'] == 1 or time['month'] == 2: + Y = time['year'] - 1 + M = time['month'] + 12 + else: + Y = time['year'] + M = time['month'] + + ut_time = ((time['hour'] - time['UTC'])/24) + (time['min']/(60*24)) + (time['sec']/(60*60*24)) # time of day in UT time. + D = time['day'] + ut_time # Day of month in decimal time, ex. 2sd day of month at 12:30:30UT, D=2.521180556 + + # In 1582, the gregorian calendar was adopted + if time['year'] == 1582: + if time['month'] == 10: + if time['day'] <= 4: # The Julian calendar ended on October 4, 1582 + B = (0) + elif time['day'] >= 15: # The Gregorian calendar started on October 15, 1582 + A = np.floor(Y/100) + B = 2 - A + np.floor(A/4) + else: + print('This date never existed!. Date automatically set to October 4, 1582') + time['month'] = 10 + time['day'] = 4 + B = 0 + elif time['month'] < 10: # Julian calendar + B = 0 + else: # Gregorian calendar + A = np.floor(Y/100) + B = 2 - A + np.floor(A/4) + elif time['year'] < 1582: # Julian calendar + B = 0 + else: + A = np.floor(Y/100) # Gregorian calendar + B = 2 - A + np.floor(A/4) + + julian = dict() + julian['day'] = D + B + np.floor(365.25*(Y+4716)) + np.floor(30.6001*(M+1)) - 1524.5 + + delta_t = 0 # 33.184; + julian['ephemeris_day'] = (julian['day']) + (delta_t/86400) + julian['century'] = (julian['day'] - 2451545) / 36525 + julian['ephemeris_century'] = (julian['ephemeris_day'] - 2451545) / 36525 + julian['ephemeris_millenium'] = (julian['ephemeris_century']) / 10 + + return julian + + +def earth_heliocentric_position_calculation(julian): + """ + % This function compute the earth position relative to the sun, using + % tabulated values. + + % Tabulated values for the longitude calculation + % L terms from the original code. + """ + # Tabulated values for the longitude calculation + # L terms from the original code. + L0_terms = np.array([[175347046.0, 0, 0], + [3341656.0, 4.6692568, 6283.07585], + [34894.0, 4.6261, 12566.1517], + [3497.0, 2.7441, 5753.3849], + [3418.0, 2.8289, 3.5231], + [3136.0, 3.6277, 77713.7715], + [2676.0, 4.4181, 7860.4194], + [2343.0, 6.1352, 3930.2097], + [1324.0, 0.7425, 11506.7698], + [1273.0, 2.0371, 529.691], + [1199.0, 1.1096, 1577.3435], + [990, 5.233, 5884.927], + [902, 2.045, 26.298], + [857, 3.508, 398.149], + [780, 1.179, 5223.694], + [753, 2.533, 5507.553], + [505, 4.583, 18849.228], + [492, 4.205, 775.523], + [357, 2.92, 0.067], + [317, 5.849, 11790.629], + [284, 1.899, 796.298], + [271, 0.315, 10977.079], + [243, 0.345, 5486.778], + [206, 4.806, 2544.314], + [205, 1.869, 5573.143], + [202, 2.4458, 6069.777], + [156, 0.833, 213.299], + [132, 3.411, 2942.463], + [126, 1.083, 20.775], + [115, 0.645, 0.98], + [103, 0.636, 4694.003], + [102, 0.976, 15720.839], + [102, 4.267, 7.114], + [99, 6.21, 2146.17], + [98, 0.68, 155.42], + [86, 5.98, 161000.69], + [85, 1.3, 6275.96], + [85, 3.67, 71430.7], + [80, 1.81, 17260.15], + [79, 3.04, 12036.46], + [71, 1.76, 5088.63], + [74, 3.5, 3154.69], + [74, 4.68, 801.82], + [70, 0.83, 9437.76], + [62, 3.98, 8827.39], + [61, 1.82, 7084.9], + [57, 2.78, 6286.6], + [56, 4.39, 14143.5], + [56, 3.47, 6279.55], + [52, 0.19, 12139.55], + [52, 1.33, 1748.02], + [51, 0.28, 5856.48], + [49, 0.49, 1194.45], + [41, 5.37, 8429.24], + [41, 2.4, 19651.05], + [39, 6.17, 10447.39], + [37, 6.04, 10213.29], + [37, 2.57, 1059.38], + [36, 1.71, 2352.87], + [36, 1.78, 6812.77], + [33, 0.59, 17789.85], + [30, 0.44, 83996.85], + [30, 2.74, 1349.87], + [25, 3.16, 4690.48]]) + + L1_terms = np.array([[628331966747.0, 0, 0], + [206059.0, 2.678235, 6283.07585], + [4303.0, 2.6351, 12566.1517], + [425.0, 1.59, 3.523], + [119.0, 5.796, 26.298], + [109.0, 2.966, 1577.344], + [93, 2.59, 18849.23], + [72, 1.14, 529.69], + [68, 1.87, 398.15], + [67, 4.41, 5507.55], + [59, 2.89, 5223.69], + [56, 2.17, 155.42], + [45, 0.4, 796.3], + [36, 0.47, 775.52], + [29, 2.65, 7.11], + [21, 5.34, 0.98], + [19, 1.85, 5486.78], + [19, 4.97, 213.3], + [17, 2.99, 6275.96], + [16, 0.03, 2544.31], + [16, 1.43, 2146.17], + [15, 1.21, 10977.08], + [12, 2.83, 1748.02], + [12, 3.26, 5088.63], + [12, 5.27, 1194.45], + [12, 2.08, 4694], + [11, 0.77, 553.57], + [10, 1.3, 3286.6], + [10, 4.24, 1349.87], + [9, 2.7, 242.73], + [9, 5.64, 951.72], + [8, 5.3, 2352.87], + [6, 2.65, 9437.76], + [6, 4.67, 4690.48]]) + + L2_terms = np.array([[52919.0, 0, 0], + [8720.0, 1.0721, 6283.0758], + [309.0, 0.867, 12566.152], + [27, 0.05, 3.52], + [16, 5.19, 26.3], + [16, 3.68, 155.42], + [10, 0.76, 18849.23], + [9, 2.06, 77713.77], + [7, 0.83, 775.52], + [5, 4.66, 1577.34], + [4, 1.03, 7.11], + [4, 3.44, 5573.14], + [3, 5.14, 796.3], + [3, 6.05, 5507.55], + [3, 1.19, 242.73], + [3, 6.12, 529.69], + [3, 0.31, 398.15], + [3, 2.28, 553.57], + [2, 4.38, 5223.69], + [2, 3.75, 0.98]]) + + L3_terms = np.array([[289.0, 5.844, 6283.076], + [35, 0, 0], + [17, 5.49, 12566.15], + [3, 5.2, 155.42], + [1, 4.72, 3.52], + [1, 5.3, 18849.23], + [1, 5.97, 242.73]]) + L4_terms = np.array([[114.0, 3.142, 0], + [8, 4.13, 6283.08], + [1, 3.84, 12566.15]]) + + L5_terms = np.array([1, 3.14, 0]) + L5_terms = np.atleast_2d(L5_terms) # since L5_terms is 1D, we have to convert it to 2D to avoid indexErrors + + A0 = L0_terms[:, 0] + B0 = L0_terms[:, 1] + C0 = L0_terms[:, 2] + + A1 = L1_terms[:, 0] + B1 = L1_terms[:, 1] + C1 = L1_terms[:, 2] + + A2 = L2_terms[:, 0] + B2 = L2_terms[:, 1] + C2 = L2_terms[:, 2] + + A3 = L3_terms[:, 0] + B3 = L3_terms[:, 1] + C3 = L3_terms[:, 2] + + A4 = L4_terms[:, 0] + B4 = L4_terms[:, 1] + C4 = L4_terms[:, 2] + + A5 = L5_terms[:, 0] + B5 = L5_terms[:, 1] + C5 = L5_terms[:, 2] + + JME = julian['ephemeris_millenium'] + + # Compute the Earth Heliochentric longitude from the tabulated values. + L0 = np.sum(A0 * np.cos(B0 + (C0 * JME))) + L1 = np.sum(A1 * np.cos(B1 + (C1 * JME))) + L2 = np.sum(A2 * np.cos(B2 + (C2 * JME))) + L3 = np.sum(A3 * np.cos(B3 + (C3 * JME))) + L4 = np.sum(A4 * np.cos(B4 + (C4 * JME))) + L5 = A5 * np.cos(B5 + (C5 * JME)) + + earth_heliocentric_position = dict() + earth_heliocentric_position['longitude'] = (L0 + (L1 * JME) + (L2 * np.power(JME, 2)) + + (L3 * np.power(JME, 3)) + + (L4 * np.power(JME, 4)) + + (L5 * np.power(JME, 5))) / 1e8 + # Convert the longitude to degrees. + earth_heliocentric_position['longitude'] = earth_heliocentric_position['longitude'] * 180/np.pi + + # Limit the range to [0,360] + earth_heliocentric_position['longitude'] = set_to_range(earth_heliocentric_position['longitude'], 0, 360) + + # Tabulated values for the earth heliocentric latitude. + # B terms from the original code. + B0_terms = np.array([[280.0, 3.199, 84334.662], + [102.0, 5.422, 5507.553], + [80, 3.88, 5223.69], + [44, 3.7, 2352.87], + [32, 4, 1577.34]]) + + B1_terms = np.array([[9, 3.9, 5507.55], + [6, 1.73, 5223.69]]) + + A0 = B0_terms[:, 0] + B0 = B0_terms[:, 1] + C0 = B0_terms[:, 2] + + A1 = B1_terms[:, 0] + B1 = B1_terms[:, 1] + C1 = B1_terms[:, 2] + + L0 = np.sum(A0 * np.cos(B0 + (C0 * JME))) + L1 = np.sum(A1 * np.cos(B1 + (C1 * JME))) + + earth_heliocentric_position['latitude'] = (L0 + (L1 * JME)) / 1e8 + + # Convert the latitude to degrees. + earth_heliocentric_position['latitude'] = earth_heliocentric_position['latitude'] * 180/np.pi + + # Limit the range to [0,360]; + earth_heliocentric_position['latitude'] = set_to_range(earth_heliocentric_position['latitude'], 0, 360) + + # Tabulated values for radius vector. + # R terms from the original code + R0_terms = np.array([[100013989.0, 0, 0], + [1670700.0, 3.0984635, 6283.07585], + [13956.0, 3.05525, 12566.1517], + [3084.0, 5.1985, 77713.7715], + [1628.0, 1.1739, 5753.3849], + [1576.0, 2.8469, 7860.4194], + [925.0, 5.453, 11506.77], + [542.0, 4.564, 3930.21], + [472.0, 3.661, 5884.927], + [346.0, 0.964, 5507.553], + [329.0, 5.9, 5223.694], + [307.0, 0.299, 5573.143], + [243.0, 4.273, 11790.629], + [212.0, 5.847, 1577.344], + [186.0, 5.022, 10977.079], + [175.0, 3.012, 18849.228], + [110.0, 5.055, 5486.778], + [98, 0.89, 6069.78], + [86, 5.69, 15720.84], + [86, 1.27, 161000.69], + [85, 0.27, 17260.15], + [63, 0.92, 529.69], + [57, 2.01, 83996.85], + [56, 5.24, 71430.7], + [49, 3.25, 2544.31], + [47, 2.58, 775.52], + [45, 5.54, 9437.76], + [43, 6.01, 6275.96], + [39, 5.36, 4694], + [38, 2.39, 8827.39], + [37, 0.83, 19651.05], + [37, 4.9, 12139.55], + [36, 1.67, 12036.46], + [35, 1.84, 2942.46], + [33, 0.24, 7084.9], + [32, 0.18, 5088.63], + [32, 1.78, 398.15], + [28, 1.21, 6286.6], + [28, 1.9, 6279.55], + [26, 4.59, 10447.39]]) + + R1_terms = np.array([[103019.0, 1.10749, 6283.07585], + [1721.0, 1.0644, 12566.1517], + [702.0, 3.142, 0], + [32, 1.02, 18849.23], + [31, 2.84, 5507.55], + [25, 1.32, 5223.69], + [18, 1.42, 1577.34], + [10, 5.91, 10977.08], + [9, 1.42, 6275.96], + [9, 0.27, 5486.78]]) + + R2_terms = np.array([[4359.0, 5.7846, 6283.0758], + [124.0, 5.579, 12566.152], + [12, 3.14, 0], + [9, 3.63, 77713.77], + [6, 1.87, 5573.14], + [3, 5.47, 18849]]) + + R3_terms = np.array([[145.0, 4.273, 6283.076], + [7, 3.92, 12566.15]]) + + R4_terms = [4, 2.56, 6283.08] + R4_terms = np.atleast_2d(R4_terms) # since L5_terms is 1D, we have to convert it to 2D to avoid indexErrors + + A0 = R0_terms[:, 0] + B0 = R0_terms[:, 1] + C0 = R0_terms[:, 2] + + A1 = R1_terms[:, 0] + B1 = R1_terms[:, 1] + C1 = R1_terms[:, 2] + + A2 = R2_terms[:, 0] + B2 = R2_terms[:, 1] + C2 = R2_terms[:, 2] + + A3 = R3_terms[:, 0] + B3 = R3_terms[:, 1] + C3 = R3_terms[:, 2] + + A4 = R4_terms[:, 0] + B4 = R4_terms[:, 1] + C4 = R4_terms[:, 2] + + # Compute the Earth heliocentric radius vector + L0 = np.sum(A0 * np.cos(B0 + (C0 * JME))) + L1 = np.sum(A1 * np.cos(B1 + (C1 * JME))) + L2 = np.sum(A2 * np.cos(B2 + (C2 * JME))) + L3 = np.sum(A3 * np.cos(B3 + (C3 * JME))) + L4 = A4 * np.cos(B4 + (C4 * JME)) + + # Units are in AU + earth_heliocentric_position['radius'] = (L0 + (L1 * JME) + (L2 * np.power(JME, 2)) + + (L3 * np.power(JME, 3)) + + (L4 * np.power(JME, 4))) / 1e8 + + return earth_heliocentric_position + + +def sun_geocentric_position_calculation(earth_heliocentric_position): + """ + % This function compute the sun position relative to the earth. + """ + sun_geocentric_position = dict() + sun_geocentric_position['longitude'] = earth_heliocentric_position['longitude'] + 180 + # Limit the range to [0,360]; + sun_geocentric_position['longitude'] = set_to_range(sun_geocentric_position['longitude'], 0, 360) + + sun_geocentric_position['latitude'] = -earth_heliocentric_position['latitude'] + # Limit the range to [0,360] + sun_geocentric_position['latitude'] = set_to_range(sun_geocentric_position['latitude'], 0, 360) + return sun_geocentric_position + + +def nutation_calculation(julian): + """ + % This function compute the nutation in longtitude and in obliquity, in + % degrees. + :param julian: + :return: nutation + """ + + # All Xi are in degrees. + JCE = julian['ephemeris_century'] + + # 1. Mean elongation of the moon from the sun + p = np.atleast_2d([(1/189474), -0.0019142, 445267.11148, 297.85036]) + + # X0 = polyval(p, JCE); + X0 = p[0, 0] * np.power(JCE, 3) + p[0, 1] * np.power(JCE, 2) + p[0, 2] * JCE + p[0, 3] # This is faster than polyval... + + # 2. Mean anomaly of the sun (earth) + p = np.atleast_2d([-(1/300000), -0.0001603, 35999.05034, 357.52772]) + + # X1 = polyval(p, JCE) + X1 = p[0, 0] * np.power(JCE, 3) + p[0, 1] * np.power(JCE, 2) + p[0, 2] * JCE + p[0, 3] + + # 3. Mean anomaly of the moon + p = np.atleast_2d([(1/56250), 0.0086972, 477198.867398, 134.96298]) + + # X2 = polyval(p, JCE); + X2 = p[0, 0] * np.power(JCE, 3) + p[0, 1] * np.power(JCE, 2) + p[0, 2] * JCE + p[0, 3] + + # 4. Moon argument of latitude + p = np.atleast_2d([(1/327270), -0.0036825, 483202.017538, 93.27191]) + + # X3 = polyval(p, JCE) + X3 = p[0, 0] * np.power(JCE, 3) + p[0, 1] * np.power(JCE, 2) + p[0, 2] * JCE + p[0, 3] + + # 5. Longitude of the ascending node of the moon's mean orbit on the + # ecliptic, measured from the mean equinox of the date + p = np.atleast_2d([(1/450000), 0.0020708, -1934.136261, 125.04452]) + + # X4 = polyval(p, JCE); + X4 = p[0, 0] * np.power(JCE, 3) + p[0, 1] * np.power(JCE, 2) + p[0, 2] * JCE + p[0, 3] + + # Y tabulated terms from the original code + Y_terms = np.array([[0, 0, 0, 0, 1], + [-2, 0, 0, 2, 2], + [0, 0, 0, 2, 2], + [0, 0, 0, 0, 2], + [0, 1, 0, 0, 0], + [0, 0, 1, 0, 0], + [-2, 1, 0, 2, 2], + [0, 0, 0, 2, 1], + [0, 0, 1, 2, 2], + [-2, -1, 0, 2, 2], + [-2, 0, 1, 0, 0], + [-2, 0, 0, 2, 1], + [0, 0, -1, 2, 2], + [2, 0, 0, 0, 0], + [0, 0, 1, 0, 1], + [2, 0, -1, 2, 2], + [0, 0, -1, 0, 1], + [0, 0, 1, 2, 1], + [-2, 0, 2, 0, 0], + [0, 0, -2, 2, 1], + [2, 0, 0, 2, 2], + [0, 0, 2, 2, 2], + [0, 0, 2, 0, 0], + [-2, 0, 1, 2, 2], + [0, 0, 0, 2, 0], + [-2, 0, 0, 2, 0], + [0, 0, -1, 2, 1], + [0, 2, 0, 0, 0], + [2, 0, -1, 0, 1], + [-2, 2, 0, 2, 2], + [0, 1, 0, 0, 1], + [-2, 0, 1, 0, 1], + [0, -1, 0, 0, 1], + [0, 0, 2, -2, 0], + [2, 0, -1, 2, 1], + [2, 0, 1, 2, 2], + [0, 1, 0, 2, 2], + [-2, 1, 1, 0, 0], + [0, -1, 0, 2, 2], + [2, 0, 0, 2, 1], + [2, 0, 1, 0, 0], + [-2, 0, 2, 2, 2], + [-2, 0, 1, 2, 1], + [2, 0, -2, 0, 1], + [2, 0, 0, 0, 1], + [0, -1, 1, 0, 0], + [-2, -1, 0, 2, 1], + [-2, 0, 0, 0, 1], + [0, 0, 2, 2, 1], + [-2, 0, 2, 0, 1], + [-2, 1, 0, 2, 1], + [0, 0, 1, -2, 0], + [-1, 0, 1, 0, 0], + [-2, 1, 0, 0, 0], + [1, 0, 0, 0, 0], + [0, 0, 1, 2, 0], + [0, 0, -2, 2, 2], + [-1, -1, 1, 0, 0], + [0, 1, 1, 0, 0], + [0, -1, 1, 2, 2], + [2, -1, -1, 2, 2], + [0, 0, 3, 2, 2], + [2, -1, 0, 2, 2]]) + + nutation_terms = np.array([[-171996, -174.2, 92025, 8.9], + [-13187, -1.6, 5736, -3.1], + [-2274, -0.2, 977, -0.5], + [2062, 0.2, -895, 0.5], + [1426, -3.4, 54, -0.1], + [712, 0.1, -7, 0], + [-517, 1.2, 224, -0.6], + [-386, -0.4, 200, 0], + [-301, 0, 129, -0.1], + [217, -0.5, -95, 0.3], + [-158, 0, 0, 0], + [129, 0.1, -70, 0], + [123, 0, -53, 0], + [63, 0, 0, 0], + [63, 0.1, -33, 0], + [-59, 0, 26, 0], + [-58, -0.1, 32, 0], + [-51, 0, 27, 0], + [48, 0, 0, 0], + [46, 0, -24, 0], + [-38, 0, 16, 0], + [-31, 0, 13, 0], + [29, 0, 0, 0], + [29, 0, -12, 0], + [26, 0, 0, 0], + [-22, 0, 0, 0], + [21, 0, -10, 0], + [17, -0.1, 0, 0], + [16, 0, -8, 0], + [-16, 0.1, 7, 0], + [-15, 0, 9, 0], + [-13, 0, 7, 0], + [-12, 0, 6, 0], + [11, 0, 0, 0], + [-10, 0, 5, 0], + [-8, 0, 3, 0], + [7, 0, -3, 0], + [-7, 0, 0, 0], + [-7, 0, 3, 0], + [-7, 0, 3, 0], + [6, 0, 0, 0], + [6, 0, -3, 0], + [6, 0, -3, 0], + [-6, 0, 3, 0], + [-6, 0, 3, 0], + [5, 0, 0, 0], + [-5, 0, 3, 0], + [-5, 0, 3, 0], + [-5, 0, 3, 0], + [4, 0, 0, 0], + [4, 0, 0, 0], + [4, 0, 0, 0], + [-4, 0, 0, 0], + [-4, 0, 0, 0], + [-4, 0, 0, 0], + [3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0], + [-3, 0, 0, 0]]) + + # Using the tabulated values, compute the delta_longitude and + # delta_obliquity. + Xi = np.array([X0, X1, X2, X3, X4]) # a col mat in octave + + tabulated_argument = Y_terms.dot(np.transpose(Xi)) * (np.pi/180) + + delta_longitude = (nutation_terms[:, 0] + (nutation_terms[:, 1] * JCE)) * np.sin(tabulated_argument) + delta_obliquity = (nutation_terms[:, 2] + (nutation_terms[:, 3] * JCE)) * np.cos(tabulated_argument) + + nutation = dict() # init nutation dictionary + # Nutation in longitude + nutation['longitude'] = np.sum(delta_longitude) / 36000000 + + # Nutation in obliquity + nutation['obliquity'] = np.sum(delta_obliquity) / 36000000 + + return nutation + + +def true_obliquity_calculation(julian, nutation): + """ + This function compute the true obliquity of the ecliptic. + + :param julian: + :param nutation: + :return: + """ + + p = np.atleast_2d([2.45, 5.79, 27.87, 7.12, -39.05, -249.67, -51.38, 1999.25, -1.55, -4680.93, 84381.448]) + + # mean_obliquity = polyval(p, julian.ephemeris_millenium/10); + U = julian['ephemeris_millenium'] / 10 + mean_obliquity = p[0, 0] * np.power(U, 10) + p[0, 1] * np.power(U, 9) + \ + p[0, 2] * np.power(U, 8) + p[0, 3] * np.power(U, 7) + \ + p[0, 4] * np.power(U, 6) + p[0, 5] * np.power(U, 5) + \ + p[0, 6] * np.power(U, 4) + p[0, 7] * np.power(U, 3) + \ + p[0, 8] * np.power(U, 2) + p[0, 9] * U + p[0, 10] + + true_obliquity = (mean_obliquity/3600) + nutation['obliquity'] + + return true_obliquity + + +def abberation_correction_calculation(earth_heliocentric_position): + """ + This function compute the aberration_correction, as a function of the + earth-sun distance. + + :param earth_heliocentric_position: + :return: + """ + aberration_correction = -20.4898/(3600*earth_heliocentric_position['radius']) + return aberration_correction + + +def apparent_sun_longitude_calculation(sun_geocentric_position, nutation, aberration_correction): + """ + This function compute the sun apparent longitude + + :param sun_geocentric_position: + :param nutation: + :param aberration_correction: + :return: + """ + apparent_sun_longitude = sun_geocentric_position['longitude'] + nutation['longitude'] + aberration_correction + return apparent_sun_longitude + + +def apparent_stime_at_greenwich_calculation(julian, nutation, true_obliquity): + """ + This function compute the apparent sideral time at Greenwich. + + :param julian: + :param nutation: + :param true_obliquity: + :return: + """ + + JD = julian['day'] + JC = julian['century'] + + # Mean sideral time, in degrees + mean_stime = 280.46061837 + (360.98564736629*(JD-2451545)) + \ + (0.000387933*np.power(JC, 2)) - \ + (np.power(JC, 3)/38710000) + + # Limit the range to [0-360]; + mean_stime = set_to_range(mean_stime, 0, 360) + + apparent_stime_at_greenwich = mean_stime + (nutation['longitude'] * np.cos(true_obliquity * np.pi/180)) + return apparent_stime_at_greenwich + + +def sun_rigth_ascension_calculation(apparent_sun_longitude, true_obliquity, sun_geocentric_position): + """ + This function compute the sun rigth ascension. + :param apparent_sun_longitude: + :param true_obliquity: + :param sun_geocentric_position: + :return: + """ + + argument_numerator = (np.sin(apparent_sun_longitude * np.pi/180) * np.cos(true_obliquity * np.pi/180)) - \ + (np.tan(sun_geocentric_position['latitude'] * np.pi/180) * np.sin(true_obliquity * np.pi/180)) + argument_denominator = np.cos(apparent_sun_longitude * np.pi/180); + + sun_rigth_ascension = np.arctan2(argument_numerator, argument_denominator) * 180/np.pi + # Limit the range to [0,360]; + sun_rigth_ascension = set_to_range(sun_rigth_ascension, 0, 360) + return sun_rigth_ascension + + +def sun_geocentric_declination_calculation(apparent_sun_longitude, true_obliquity, sun_geocentric_position): + """ + + :param apparent_sun_longitude: + :param true_obliquity: + :param sun_geocentric_position: + :return: + """ + + argument = (np.sin(sun_geocentric_position['latitude'] * np.pi/180) * np.cos(true_obliquity * np.pi/180)) + \ + (np.cos(sun_geocentric_position['latitude'] * np.pi/180) * np.sin(true_obliquity * np.pi/180) * + np.sin(apparent_sun_longitude * np.pi/180)) + + sun_geocentric_declination = np.arcsin(argument) * 180/np.pi + return sun_geocentric_declination + + +def observer_local_hour_calculation(apparent_stime_at_greenwich, location, sun_rigth_ascension): + """ + This function computes observer local hour. + + :param apparent_stime_at_greenwich: + :param location: + :param sun_rigth_ascension: + :return: + """ + + observer_local_hour = apparent_stime_at_greenwich + location['longitude'] - sun_rigth_ascension + # Set the range to [0-360] + observer_local_hour = set_to_range(observer_local_hour, 0, 360) + return observer_local_hour + + +def topocentric_sun_position_calculate(earth_heliocentric_position, location, + observer_local_hour, sun_rigth_ascension, sun_geocentric_declination): + """ + This function compute the sun position (rigth ascension and declination) + with respect to the observer local position at the Earth surface. + + :param earth_heliocentric_position: + :param location: + :param observer_local_hour: + :param sun_rigth_ascension: + :param sun_geocentric_declination: + :return: + """ + + # Equatorial horizontal parallax of the sun in degrees + eq_horizontal_parallax = 8.794 / (3600 * earth_heliocentric_position['radius']) + + # Term u, used in the following calculations (in radians) + u = np.arctan(0.99664719 * np.tan(location['latitude'] * np.pi/180)) + + # Term x, used in the following calculations + x = np.cos(u) + ((location['altitude']/6378140) * np.cos(location['latitude'] * np.pi/180)) + + # Term y, used in the following calculations + y = (0.99664719 * np.sin(u)) + ((location['altitude']/6378140) * np.sin(location['latitude'] * np.pi/180)) + + # Parallax in the sun rigth ascension (in radians) + nominator = -x * np.sin(eq_horizontal_parallax * np.pi/180) * np.sin(observer_local_hour * np.pi/180) + denominator = np.cos(sun_geocentric_declination * np.pi/180) - (x * np.sin(eq_horizontal_parallax * np.pi/180) * + np.cos(observer_local_hour * np.pi/180)) + sun_rigth_ascension_parallax = np.arctan2(nominator, denominator) + # Conversion to degrees. + topocentric_sun_position = dict() + topocentric_sun_position['rigth_ascension_parallax'] = sun_rigth_ascension_parallax * 180/np.pi + + # Topocentric sun rigth ascension (in degrees) + topocentric_sun_position['rigth_ascension'] = sun_rigth_ascension + (sun_rigth_ascension_parallax * 180/np.pi) + + # Topocentric sun declination (in degrees) + nominator = (np.sin(sun_geocentric_declination * np.pi/180) - (y*np.sin(eq_horizontal_parallax * np.pi/180))) * \ + np.cos(sun_rigth_ascension_parallax) + denominator = np.cos(sun_geocentric_declination * np.pi/180) - (y*np.sin(eq_horizontal_parallax * np.pi/180)) * \ + np.cos(observer_local_hour * np.pi/180) + topocentric_sun_position['declination'] = np.arctan2(nominator, denominator) * 180/np.pi + return topocentric_sun_position + + +def topocentric_local_hour_calculate(observer_local_hour, topocentric_sun_position): + """ + This function compute the topocentric local jour angle in degrees + + :param observer_local_hour: + :param topocentric_sun_position: + :return: + """ + + topocentric_local_hour = observer_local_hour - topocentric_sun_position['rigth_ascension_parallax'] + return topocentric_local_hour + + +def sun_topocentric_zenith_angle_calculate(location, topocentric_sun_position, topocentric_local_hour): + """ + This function compute the sun zenith angle, taking into account the + atmospheric refraction. A default temperature of 283K and a + default pressure of 1010 mbar are used. + + :param location: + :param topocentric_sun_position: + :param topocentric_local_hour: + :return: + """ + + # Topocentric elevation, without atmospheric refraction + argument = (np.sin(location['latitude'] * np.pi/180) * np.sin(topocentric_sun_position['declination'] * np.pi/180)) + \ + (np.cos(location['latitude'] * np.pi/180) * np.cos(topocentric_sun_position['declination'] * np.pi/180) * + np.cos(topocentric_local_hour * np.pi/180)) + true_elevation = np.arcsin(argument) * 180/np.pi + + # Atmospheric refraction correction (in degrees) + argument = true_elevation + (10.3/(true_elevation + 5.11)) + refraction_corr = 1.02 / (60 * np.tan(argument * np.pi/180)) + + # For exact pressure and temperature correction, use this, + # with P the pressure in mbar amd T the temperature in Kelvins: + # refraction_corr = (P/1010) * (283/T) * 1.02 / (60 * tan(argument * pi/180)); + + # Apparent elevation + apparent_elevation = true_elevation + refraction_corr + + sun = dict() + sun['zenith'] = 90 - apparent_elevation + + # Topocentric azimuth angle. The +180 conversion is to pass from astronomer + # notation (westward from south) to navigation notation (eastward from + # north); + nominator = np.sin(topocentric_local_hour * np.pi/180) + denominator = (np.cos(topocentric_local_hour * np.pi/180) * np.sin(location['latitude'] * np.pi/180)) - \ + (np.tan(topocentric_sun_position['declination'] * np.pi/180) * np.cos(location['latitude'] * np.pi/180)) + sun['azimuth'] = (np.arctan2(nominator, denominator) * 180/np.pi) + 180 + + # Set the range to [0-360] + sun['azimuth'] = set_to_range(sun['azimuth'], 0, 360) + return sun + + +def set_to_range(var, min_interval, max_interval): + """ + Sets a variable in range min_interval and max_interval + + :param var: + :param min_interval: + :param max_interval: + :return: + """ + var = var - max_interval * np.floor(var/max_interval) + + if var < min_interval: + var = var + max_interval + return var + diff --git a/pysrc/solweig/algorithms/sunlit_shaded_patches.py b/pysrc/solweig/algorithms/sunlit_shaded_patches.py new file mode 100644 index 0000000..c935c08 --- /dev/null +++ b/pysrc/solweig/algorithms/sunlit_shaded_patches.py @@ -0,0 +1,41 @@ +import numpy as np + +''' This function calculates whether a point is sunlit or shaded + based on a sky view factor (in a cylinder), solar altitude, solar azimuth ''' + +def shaded_or_sunlit(solar_altitude, solar_azimuth, patch_altitude, patch_azimuth, asvf): + + # Patch azimuth in relation to sun azimuth + patch_to_sun_azi = np.abs(solar_azimuth - patch_azimuth) + + # Degrees to radians + deg2rad = np.pi/180 + + # Radians to degrees + rad2deg = 180/np.pi + + # + xi = np.cos(patch_to_sun_azi * deg2rad) + + # + yi = 2 * xi * np.tan(solar_altitude * deg2rad) + + hsvf = np.tan(asvf) + + if yi > 0: + yi_ = 0 + else: + yi_ = yi + + # + tan_delta = hsvf + yi_ + + # Degrees where below is in shade and above is sunlit + sunlit_degrees = np.arctan(tan_delta) * rad2deg + + # Boolean for pixels where patch is sunlit + sunlit_patches = sunlit_degrees < patch_altitude + # Boolean for pixels where patch is shaded + shaded_patches = sunlit_degrees > patch_altitude + + return sunlit_patches, shaded_patches \ No newline at end of file diff --git a/pysrc/solweig/algorithms/wall_cover.py b/pysrc/solweig/algorithms/wall_cover.py new file mode 100644 index 0000000..b302e00 --- /dev/null +++ b/pysrc/solweig/algorithms/wall_cover.py @@ -0,0 +1,77 @@ +import numpy as np + +def get_wall_cover(voxelTable, lcgrid, dsm, lc_params): + '''Function to set thermal properties of wall used in surface temperature scheme of walls''' + + # Y-position of wall pixel in raster + ypos = voxelTable['ypos'].to_numpy().astype(int) + # X-position of wall pixel in raster + xpos = voxelTable['xpos'].to_numpy().astype(int) + # Empty array to store wall code + wallCode = np.zeros((voxelTable.shape[0])) + # Empty array to store thermal effusivity + wallTu = np.zeros((voxelTable.shape[0])) + # Empty array to store thermal conductivity + wallTd = np.zeros((voxelTable.shape[0])) + # Empty array to store albedo + wallAlbedo = np.zeros((voxelTable.shape[0])) + # Empty array to store emissivity + wallEmissivity = np.zeros((voxelTable.shape[0])) + # Empty array to store wall thickness + wallThickness = np.zeros((voxelTable.shape[0])) + # Search kernel used to find wall code + domain = np.array([[1, 1, 1], [1, 0, 1], [1, 1, 1]]) + # Loop through all wall pixels in voxel table + for i in range(voxelTable.shape[0]): + # Temporary lc_grid based on kernel and wall y and x position + temp_lc = lcgrid[ypos[i]-1:ypos[i]+2, xpos[i]-1:xpos[i]+2] * domain + # Temporary dsm based on kernel and wall y and x position + temp_dsm = dsm[ypos[i]-1:ypos[i]+2, xpos[i]-1:xpos[i]+2] * domain + # Temporary code based on highest pixel in temp_dsm where temp_lc is a building + temp_code = temp_lc[((temp_lc > 99) & (temp_dsm == temp_dsm.max()))] + + # If more than one option in temp_code, use the first one #TODO CHANGE TO MOST COMMON + if len(temp_code) > 1: + temp_code = temp_code[0].astype(int) + elif len(temp_code) == 1: + temp_code = temp_code[0].astype(int) + # If no wall type specified in land cover for specific wall pixel, set to concrete + elif temp_code.size == 0: + temp_code = 101 + + # Save wall code in array + wallCode[i] = temp_code + # Volumetric heat capacity + temp_Tc = lc_params['Specific_heat']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Thermal conductivity + temp_Tk = lc_params['Thermal_conductivity']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Material density + temp_D = lc_params['Density']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Calculate thermal effusivity + temp_Tu = np.sqrt(temp_Tc * temp_D * temp_Tk) + # Calculate thermal diffusivity + temp_Td = temp_Tk/(temp_Tc*temp_D) + # Save thermal effusivity of wall pixel in array + wallTu[i] = temp_Tu + # Save thermal diffusivity of wall pixel in array + wallTd[i] = temp_Td + # Get wall albedo + temp_a = lc_params['Albedo']['Material']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Save wall albedo + wallAlbedo[i] = temp_a + # Get wall emissivity + temp_e = lc_params['Emissivity']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Save wall emissivity + wallEmissivity[i] = temp_e + # Get wall thickness + temp_wt = lc_params['Wall_thickness']['Value'][lc_params['Names']['Value'][str(temp_code)]] + # Save wall thickness + wallThickness[i] = temp_wt + + voxelTable['thermalEffusivity'] = wallTu + voxelTable['thermalDiffusivity'] = wallTd + voxelTable['wallAlbedo'] = wallAlbedo + voxelTable['wallEmissivity'] = wallEmissivity + voxelTable['wallThickness'] = wallThickness + + return voxelTable diff --git a/pysrc/solweig/algorithms/wall_surface_temperature.py b/pysrc/solweig/algorithms/wall_surface_temperature.py new file mode 100644 index 0000000..76c60b7 --- /dev/null +++ b/pysrc/solweig/algorithms/wall_surface_temperature.py @@ -0,0 +1,346 @@ +import numpy as np +import pandas as pd +import math +from .wall_cover import get_wall_cover +from .cylindric_wedge import cylindric_wedge_voxel +from .Lvikt_veg import Lvikt_veg + +# Stefan Boltzmans Constant +SBC = 5.67051e-8 + +def load_walls(voxelTable, solweig_parameters, wall_type, wallaspect, Ta, timeStep, albedo_grid, landcover, lcgrid, dsm): + '''This function loads the voxel data created in sky view factor calculator and turns it into a Pandas DataFrame.''' + + # Load data as Pandas DataFrame and add column names + voxelTable = pd.DataFrame(voxelTable, columns = ['voxelId', 'voxelHeight', 'wallHeight', 'wallHeight_exact', 'wallId', 'ypos', 'xpos', + 'SVF_height', 'SVF', 'SVF_fix', 'svfbu', 'svfveg', 'svfaveg']) + + # Initiate/declare new columns used by SOLWEIG and parameterization scheme for wall surface temperatures + voxelTable['wallTemperature'] = Ta # Initial wall temperature is set to air temperature + voxelTable['timeStep'] = timeStep + + # Add columns filled later + columns_to_add = ['SVF_ground', 'svfbu_at_ground', 'svfaveg_at_ground', 'wallAspect', 'wallEmissivity', 'wallThickness', + 'wallAlbedo', 'thermalEffusivity', 'thermalDiffusivity', 'groundAlbedo', 'wallShade', 'wallShadeHeight', + 'LongwaveRadiation', 'K_in', 'L_in', 'Lwallsun', 'Lwallsh', 'Lrefl', 'Lveg', 'Lground', 'Lsky', 'esky', 'voxelHeightMasl'] + for col in columns_to_add: + voxelTable[col] = 0 + + + # tmp = svf + svfveg - 1. + # tmp[tmp < 0.] = 0. + # %matlab crazyness around 0 + # svfalfa = np.arcsin(np.exp((np.log((1. - tmp)) / 2.))) + tmp = voxelTable['SVF_fix'].to_numpy() + voxelTable['svfveg'].to_numpy() - 1. + tmp[tmp < 0.] = 0. + voxelTable['svfalfa'] = np.arcsin(np.exp((np.log((1. - tmp)) / 2.))) + + # Add wall aspect of each voxel + # temp_table = np.column_stack([voxelTable['voxelId'].to_numpy(), voxelTable['ypos'].to_numpy(), voxelTable['xpos'].to_numpy()]) + temp_table = np.column_stack([voxelTable['wallId'].to_numpy(), voxelTable['ypos'].to_numpy(), voxelTable['xpos'].to_numpy()]) + temp_table = np.unique(temp_table, axis = 0) + # Add wall aspect + for i in np.arange(temp_table.shape[0]): + temp_aspect = wallaspect[temp_table[i,1].astype(int), temp_table[i,2].astype(int)] + voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'wallAspect'] = temp_aspect + temp_building = voxelTable.loc[((voxelTable['wallId'] == temp_table[i,0]) & (voxelTable['voxelHeight'] == voxelTable['voxelHeight'].min())), 'svfbu'].copy().to_numpy()[0] + temp_veg = voxelTable.loc[((voxelTable['wallId'] == temp_table[i,0]) & (voxelTable['voxelHeight'] == voxelTable['voxelHeight'].min())), 'svfaveg'].copy().to_numpy()[0] + temp_albedo = albedo_grid[temp_table[i,1].astype(int), temp_table[i,2].astype(int)] + temp_dsm = dsm[temp_table[i,1].astype(int), temp_table[i,2].astype(int)] + + voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'svfbu_at_ground'] = temp_building + voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'svfaveg_at_ground'] = temp_veg + voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'groundAlbedo'] = temp_albedo + voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'voxelHeightMasl'] = voxelTable.loc[voxelTable['wallId'] == temp_table[i,0], 'voxelHeight'].to_numpy() + temp_dsm + + # Set voxelId to index + voxelTable = voxelTable.set_index('voxelId') + + # Calculate fractions + # voxelTable.loc[voxelTable['svfbu'] > 0.5, 'svfbu'] = 0.5 + # voxelTable.loc[voxelTable['svfaveg'] > 0.5, 'svfaveg'] = 0.5 + # Non-sky fraction = (1 - svf at ground level) - 0.5 (ground surface seen from wall) + building_fraction = 1 - voxelTable['svfbu_at_ground'].to_numpy() - 0.5 + building_fraction[building_fraction < 0] = 0. + veg_fraction = 1 - voxelTable['svfaveg_at_ground'].to_numpy() - 0.5 + veg_fraction[veg_fraction < 0] = 0. + voxelTable['building_fraction'] = building_fraction + voxelTable['veg_fraction'] = veg_fraction + sky_fraction = voxelTable['SVF_fix'].to_numpy() + ground_fraction = 1 - sky_fraction - building_fraction - veg_fraction + voxelTable['ground_fraction'] = ground_fraction + + voxelTable['total_fraction'] = building_fraction + sky_fraction + ground_fraction + veg_fraction + + # Set thermal effusivity according to wall type (either from GUI or from landcover) + if landcover == 1: + unique_landcover = np.unique(lcgrid) + # Unique wall codes for unique wall types, e.g. brick, concrete, wood, etc. + unique_walls = unique_landcover[unique_landcover > 99].astype(int) + # Get wall properties for wall surface temperature scheme + if unique_walls.size > 1: + voxelTable = get_wall_cover(voxelTable, lcgrid, dsm, solweig_parameters) + elif unique_walls.size == 1: + # Specific heat capacity + wallTc = solweig_parameters['Specific_heat']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + # Thermal conductivity + wallTk = solweig_parameters['Thermal_conductivity']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + # Material density + wallD = solweig_parameters['Density']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + # Thermal effusivity + wallTu = np.sqrt(wallTc * wallD * wallTk) + # Thermal diffusivity + wallTd = wallTk/(wallTc*wallD) + # Set thermal effusivity + voxelTable['thermalEffusivity'] = wallTu + # Set thermal diffusivity + voxelTable['thermalDiffusivity'] = wallTd + # Set wall albedo + voxelTable['wallAlbedo'] = solweig_parameters['Albedo']['Material']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + # Set wall emissivity + voxelTable['wallEmissivity'] = solweig_parameters['Emissivity']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + # Set thickness + voxelTable['wallThickness'] = solweig_parameters['Wall_thickness']['Value'][solweig_parameters['Names']['Value'][str(unique_walls[0])]] + else: + landcover = 0 + + if landcover == 0: + # Specific heat capacity + wallTc = solweig_parameters['Specific_heat']['Value'][solweig_parameters['Names']['Value'][wall_type]] + # Thermal conductivity + wallTk = solweig_parameters['Thermal_conductivity']['Value'][solweig_parameters['Names']['Value'][wall_type]] + # Material density + wallD = solweig_parameters['Density']['Value'][solweig_parameters['Names']['Value'][wall_type]] + # Thermal effusivity + wallTu = np.sqrt(wallTc * wallD * wallTk) + # Set thermal effusivity + voxelTable['thermalEffusivity'] = wallTu + # Calculate thermal diffusivity + wallTd = wallTk/(wallTc*wallD) + # Set thermal diffusivity + voxelTable['thermalDiffusivity'] = wallTd + # Get wall albedo + voxelTable['wallAlbedo'] = solweig_parameters['Albedo']['Material']['Value'][solweig_parameters['Names']['Value'][wall_type]] + # Get wall emissivity + voxelTable['wallEmissivity'] = solweig_parameters['Emissivity']['Value'][solweig_parameters['Names']['Value'][wall_type]] + # Get wall thickness + voxelTable['wallThickness'] = solweig_parameters['Wall_thickness']['Value'][solweig_parameters['Names']['Value'][wall_type]] + + gvc_sim = False + kolumbus_sim = True + eqTime = True + if gvc_sim: + # Changed aspect on GVC walls + print('wall aspect for wall 919 before change:') + print(voxelTable.loc[voxelTable['wallId'] == 919, 'wallAspect']) + print('wall aspect for wall 925 before change:') + print(voxelTable.loc[voxelTable['wallId'] == 925, 'wallAspect']) + + east_angle = 130 + west_angle = 210 + # print('wall aspect for wall 919 after change:') + voxelTable.loc[voxelTable['wallId'] == 914, 'wallAspect'] = east_angle # 914 = east + voxelTable.loc[voxelTable['wallId'] == 920, 'wallAspect'] = east_angle # 920 = southeast + voxelTable.loc[voxelTable['wallId'] == 926, 'wallAspect'] = east_angle # 926 = south/southeast + voxelTable.loc[voxelTable['wallId'] == 919, 'wallAspect'] = west_angle # 919 = west + voxelTable.loc[voxelTable['wallId'] == 925, 'wallAspect'] = west_angle # 925 = southwest + + print('wall aspect for wall 920 after change:') + print(voxelTable.loc[voxelTable['wallId'] == 920, 'wallAspect']) + print('wall aspect for wall 925 after change:') + print(voxelTable.loc[voxelTable['wallId'] == 925, 'wallAspect']) + wall_id = np.array([914, 919, 920, 925, 926]) + aspect_dict = {914: 135, 919: 220, 920: 135, 925: 220, 926: 135} + for temp_id in wall_id: + temp_y = voxelTable.loc[voxelTable['wallId'] == temp_id, 'ypos'].to_numpy().astype(int) + temp_x = voxelTable.loc[voxelTable['wallId'] == temp_id, 'xpos'].to_numpy().astype(int) + wallaspect[temp_y, temp_x] = aspect_dict[temp_id] + + elif kolumbus_sim == True: + voxelTable.loc[voxelTable['voxelHeight'] >= 4, 'thermalEffusivity'] = 472 + voxelTable.loc[voxelTable['voxelHeight'] >= 4, 'wallAlbedo'] = 0.6 + voxelTable.loc[voxelTable['voxelHeight'] >= 4, 'wallEmissivity'] = 0.95 + voxelTable.loc[voxelTable['voxelHeight'] >= 4, 'timeStep'] = 0.03**2/(np.pi**2*0.13*10**-6) + + voxelTable.loc[voxelTable['voxelHeight'] < 4, 'thermalEffusivity'] = (1068+860)/2 + voxelTable.loc[voxelTable['voxelHeight'] < 4, 'wallAlbedo'] = 0.5 + voxelTable.loc[voxelTable['voxelHeight'] < 4, 'wallEmissivity'] = 0.95 + voxelTable.loc[voxelTable['voxelHeight'] < 4, 'timeStep'] = 0.1**2/(np.pi**2*((0.62+0.44)/2)*10**-6) + # voxelTable['thermalEffusivity'] = 472 + # voxelTable['wallAlbedo'] = 0.52 + # voxelTable['wallEmissivity'] = 0.95 + # voxelTable['timeStep'] = 0.03**2/(np.pi**2*0.13*10**-6) + + # voxelTable['thermalEffusivity'] = (1068+860)/2 + # voxelTable['wallAlbedo'] = 0.52 + # voxelTable['wallEmissivity'] = 0.95 + # voxelTable['timeStep'] = 0.1**2/(np.pi**2*((0.62+0.44)/2)*10**-6) + + if eqTime: + voxelTable['timeStep'] = voxelTable['wallThickness'].to_numpy()**2/(np.pi**2 * voxelTable['thermalDiffusivity'].to_numpy()) + + return voxelTable, wallaspect + +def step_heating(q, e, t): + '''Function to calculate delta surface temperature based on heat flux (q), thermal effusivity (e) and time (t)''' + return (2*q)/e*np.sqrt(t/np.pi) + +def surface_temperature_calc(effusivity, t, Kin, Lin, Ta, wall_emissivity, Ts_previous): + '''Function to get surface temperature''' + + dT = np.zeros((effusivity.shape[0])) + Ts = np.zeros((effusivity.shape[0])) + # Calculate heat flux based on Ts in previous time step and Kin, Lin and Ta from current time step + Lout_temp = wall_emissivity * SBC * (Ts_previous + 273.15)**4 + # sensible_temp = 20 * (Ts_previous - Ta) + energy_in_temp = Kin + Lin - Lout_temp #- sensible_temp + # Calculate dT (Ts - Ta) with step wise heating + dT = step_heating(energy_in_temp, effusivity, t) + + # Surface temperature + Ts_current = Ta + dT + # Estimate surface temperature with Ts of current timestep, i.e. not Ts_previous + Lout_temp = wall_emissivity * SBC * (Ts_current + 273.15)**4 + energy_in_temp = Kin + Lin - Lout_temp #- sensible_temp + dT = step_heating(energy_in_temp, effusivity, t) + # Surface temperature after second iteration + Ts = Ta + dT + + return Ts, dT + +def wall_surface_temperature(voxelTable, wallsh, altitude, azimuth, timeStep, K_direct, K_diff, K_down, Ldown, Lup, Ta, esky): + '''Wall surface temperature parameterization + + This parameterization scheme estimates a wall temperature based on the + incoming energy (short- and longwave radiation), outgoing longwave radiation and sensible heat.''' + + # Stefan Boltzmans Constant + SBC = 5.67051e-8 + + # Degrees fo radians conversion factor + deg2rad = np.pi/180 + + # Estimate shadow on wall, i.e. how far up the wall that the shade stretches (or how far down the wall that the sun reaches) + voxelTable['wallShade'] = 0 # Starting value is zero, i.e. the entire wall is shaded + # If sun is above horizon, get wall shadow height on wall from wallsh calculated in shadowingfunction_wallheight_23/13 in Solweig_2022a_calc_forprocessing.py + if altitude > 0: + # Starting value of wallShadeHeight + voxelTable['wallShadeHeight'] = 0 + # Find number of unique walls in model domain + unique_walls = np.unique(voxelTable['wallId']) + # Find wall shade height of each unique wall + for unique_wall in unique_walls: + # temp_sh is the shadow height of a wall + temp_sh = wallsh[voxelTable.loc[voxelTable.wallId == unique_wall, 'ypos'].to_numpy().astype(int)[0], voxelTable.loc[voxelTable.wallId == unique_wall, 'xpos'].to_numpy().astype(int)[0]] + #print(temp_sh) + # Change to sunlit (1) for voxels that are above wall shade height + voxelTable.loc[(voxelTable['wallId'] == unique_wall) & (voxelTable['voxelHeight'] >= temp_sh) & (voxelTable['wallHeight_exact'] > temp_sh), 'wallShade'] = 1 + # Add wall shade height to pandas dataframe + voxelTable.loc[(voxelTable['wallId'] == unique_wall), 'wallShadeHeight'] = temp_sh + # If sun is below horizon, everything is in "shade" + else: + voxelTable['wallShadeHeight'] = voxelTable['wallHeight_exact'] + + # Ldown and Lup for wall pixels used when estimating the amount of longwave received from surrounding surfaces (ground and reflected) + Ldown_array = np.zeros((voxelTable.shape[0])) + Lup_array = np.zeros((voxelTable.shape[0])) + for idx in np.arange(voxelTable.shape[0]): + temp_y = voxelTable.iloc[idx]['ypos'].astype(int) + temp_x = voxelTable.iloc[idx]['xpos'].astype(int) + Ldown_array[idx] = Ldown[temp_y, temp_x] + Lup_array[idx] = Lup[temp_y, temp_x] + + # Estimate longwave in based on old methods by Bogren et al. + # If sun above horizon + if altitude > 0: + # Cylindric wedge based on building height angle from svf and solar zenith angle + F_sh = cylindric_wedge_voxel((90 - altitude) * deg2rad, voxelTable['svfalfa'].to_numpy()) # Fraction shadow on building walls based on sun alt and svf + F_sh[np.isnan(F_sh)] = 0.5 + + # Only half of hemisphere visible from a wall, therefore the entire seen area can be sunlit, compared to an open space where only half can be sunlit + F_sh = 2. * F_sh - 1. #(cylindric_wedge scaled 0-1) + + # Fraction of sunlit and shaded building surfaces seen by a building wall based on its aspect and the azimuth of the sun + wallSun = np.abs(voxelTable['wallAspect'].to_numpy() - azimuth) + wallSun = wallSun/180. + wallSun[wallSun > 1.] = 2 - (wallSun[wallSun > 1.]) + wallSun = 0.2 + wallSun * 0.6 # Scaling wall shadows to avoid totally shaded and totally sunlit walls + + # Temperature in shade and sun based on mean values for all voxels, i.e. shade = mean of all shaded and sun = mean of all sunlit + ts_shade = voxelTable.loc[voxelTable['wallShade'] == 0, 'wallTemperature'].to_numpy().mean() + ts_sun = voxelTable.loc[voxelTable['wallShade'] == 1, 'wallTemperature'].to_numpy().mean() + + # Calculation of longwave radiation received by the voxels based on sunlit and shaded surroundings + Lwallsun = (SBC * voxelTable['wallEmissivity'].to_numpy() * ((ts_sun + 273.15)**4) * voxelTable['building_fraction'].to_numpy() * (1. - F_sh)) * wallSun # (1 - svf - 0.5) istället för viktwall? + Lwallsh = (SBC * voxelTable['wallEmissivity'].to_numpy() * ((ts_shade + 273.15)**4) * voxelTable['building_fraction'].to_numpy() * (1. - F_sh)) * (1 - wallSun) # (1 - svf - 0.5) istället för viktwall? + + Lwallsh += SBC * voxelTable['wallEmissivity'].to_numpy() * ((ts_shade + 273.15)**4) * voxelTable['building_fraction'].to_numpy() * F_sh # * 0.5 # (1 - svf - 0.5) istället för viktwall? + + # If sun below horizon + else: + Lwallsun = 0. + ts_shade = voxelTable.loc[voxelTable['wallShade'] == 0, 'wallTemperature'].to_numpy().mean() + Lwallsh = SBC * voxelTable['wallEmissivity'].to_numpy() * (ts_shade + 273.15)**4 * voxelTable['building_fraction'].to_numpy() # * 0.5 # (1 - svf - 0.5) istället för viktwall? + + # Received longwave radiation from vegetation + Lveg = SBC * voxelTable['wallEmissivity'].to_numpy() * (Ta + 273.15)**4 * voxelTable['veg_fraction'].to_numpy() # * 0.5 # (1 - svf - 0.5) istället för viktwall? + # Received longwave radiation from the sky + Lsky = SBC * esky * ((Ta + 273.15)**4) * voxelTable['SVF_fix'].to_numpy() # * 0.5 # svf istället för viktwall? + # Received reflected longwave radiation + Lrefl = (1. - voxelTable['wallEmissivity'].to_numpy()) * (Ldown_array + Lup_array) * voxelTable['building_fraction'].to_numpy() # * 0.5 # (1 - svf - 0.5) istället för viktwall? + # Received longwave radiation from ground + Lground = Lup_array * voxelTable['ground_fraction'].to_numpy() + + # Total amount of longwave radiation received by a wall surface + L_in = Lwallsun + Lwallsh + Lrefl + Lveg + Lground + Lsky #TODO ground?? + + voxelTable['Lwallsun'] = Lwallsun + voxelTable['Lwallsh'] = Lwallsh + voxelTable['Lrefl'] = Lrefl + voxelTable['Lveg'] = Lveg + voxelTable['Lground'] = Lground + voxelTable['Lsky'] = Lsky + voxelTable['esky'] = esky + if altitude > 0: + voxelTable['F_sh'] = F_sh + voxelTable['wallSun'] = wallSun + else: + voxelTable['F_sh'] = 0. + voxelTable['wallSun'] = 0. + + # Angle of incidence (wall aspect vs solar position (altitude and azimuth)) + sun_x = 1 * np.cos(math.radians(altitude)) * np.cos(math.radians(azimuth)) * np.cos(deg2rad * voxelTable['wallAspect'].to_numpy()) + sun_y = 1 * np.cos(math.radians(altitude)) * np.sin(math.radians(azimuth)) * np.sin(deg2rad * voxelTable['wallAspect'].to_numpy()) + cf = sun_x + sun_y + cf[cf <= 0] = 0. + + # If sun above horizon + if altitude > 0: + K_in = (1 - voxelTable['wallAlbedo'].to_numpy()) * (K_direct * cf * voxelTable['wallShade'].to_numpy() + + K_diff * voxelTable['SVF_fix'].to_numpy() + + K_down * voxelTable['wallAlbedo'].to_numpy() * voxelTable['building_fraction'] + + (K_down * voxelTable['groundAlbedo']) * voxelTable['ground_fraction']) + # If sun below horizon + else: + K_in = 0. + + voxelTable['K_in'] = K_in + voxelTable['L_in'] = L_in + + # Calculate wall surface temperature with step-wise heating + Ts_previous = voxelTable['wallTemperature'].to_numpy() + if voxelTable['timeStep'].unique().size == 1: + timeStep = voxelTable.iloc[0]['timeStep'] + else: + timeStep = voxelTable['timeStep'].to_numpy() + Ts, dT = surface_temperature_calc(voxelTable['thermalEffusivity'].to_numpy(), timeStep, K_in, L_in, Ta, voxelTable['wallEmissivity'].to_numpy(), Ts_previous) + voxelTable['wallTemperature'] = Ts + + # Convert wall temperature to longwave radiation + voxelTable['LongwaveRadiation'] = ((voxelTable['wallEmissivity'] * SBC * ((voxelTable['wallTemperature'] + 273.15) ** 4)) / np.pi) + + # Position of the sun for current timestep (can be removed?) + voxelTable['sunAltitude'] = altitude + voxelTable['sunAzimuth'] = azimuth + + return voxelTable \ No newline at end of file diff --git a/pysrc/solweig/algorithms/wallalgorithms.py b/pysrc/solweig/algorithms/wallalgorithms.py new file mode 100644 index 0000000..0a9fa12 --- /dev/null +++ b/pysrc/solweig/algorithms/wallalgorithms.py @@ -0,0 +1,163 @@ +from builtins import range + +# -*- coding: utf-8 -*- +__author__ = "xlinfr" + +import math + +import numpy as np +import scipy.ndimage.interpolation as sc +from tqdm import tqdm + + +def findwalls(a, walllimit): + # This function identifies walls based on a DSM and a wall-height limit + # Walls are represented by outer pixels within building footprints + # + # Fredrik Lindberg, Goteborg Urban Climate Group + # fredrikl@gvc.gu.se + # 20150625 + + col = a.shape[0] + row = a.shape[1] + walls = np.zeros((col, row)) + domain = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]]) + index = 0 + for i in tqdm(np.arange(1, row - 1)): + for j in np.arange(1, col - 1): + dom = a[j - 1 : j + 2, i - 1 : i + 2] + walls[j, i] = np.max(dom[np.where(domain == 1)]) # new 20171006 + index = index + 1 + + walls = np.copy(walls - a) # new 20171006 + walls[(walls < walllimit)] = 0 + + walls[0 : walls.shape[0], 0] = 0 + walls[0 : walls.shape[0], walls.shape[1] - 1] = 0 + walls[0, 0 : walls.shape[0]] = 0 + walls[walls.shape[0] - 1, 0 : walls.shape[1]] = 0 + + return walls + + +def filter1Goodwin_as_aspect_v3(walls, scale, a): + """ + tThis function applies the filter processing presented in Goodwin et al (2010) but instead for removing + linear fetures it calculates wall aspect based on a wall pixels grid, a dsm (a) and a scale factor + + Fredrik Lindberg, 2012-02-14 + fredrikl@gvc.gu.se + + Translated: 2015-09-15 + + :param walls: + :param scale: + :param a: + :return: dirwalls + """ + + row = a.shape[0] + col = a.shape[1] + + filtersize = np.floor((scale + 0.0000000001) * 9) + if filtersize <= 2: + filtersize = 3 + else: + if filtersize != 9: + if filtersize % 2 == 0: + filtersize = filtersize + 1 + + filthalveceil = int(np.ceil(filtersize / 2.0)) + filthalvefloor = int(np.floor(filtersize / 2.0)) + + filtmatrix = np.zeros((int(filtersize), int(filtersize))) + buildfilt = np.zeros((int(filtersize), int(filtersize))) + + filtmatrix[:, filthalveceil - 1] = 1 + n = filtmatrix.shape[0] - 1 + buildfilt[filthalveceil - 1, 0:filthalvefloor] = 1 + buildfilt[filthalveceil - 1, filthalveceil : int(filtersize)] = 2 + + y = np.zeros((row, col)) # final direction + z = np.zeros((row, col)) # temporary direction + x = np.zeros((row, col)) # building side + walls[walls > 0.5] = 1 + + for h in tqdm(range(0, 180)): # =0:1:180 #%increased resolution to 1 deg 20140911 + filtmatrix1temp = sc.rotate(filtmatrix, h, order=1, reshape=False, mode="nearest") # bilinear + filtmatrix1 = np.round(filtmatrix1temp) + # filtmatrix1temp = sc.imrotate(filtmatrix, h, 'bilinear') + # filtmatrix1 = np.round(filtmatrix1temp / 255.) + # filtmatrixbuildtemp = sc.imrotate(buildfilt, h, 'nearest') + filtmatrixbuildtemp = sc.rotate(buildfilt, h, order=0, reshape=False, mode="nearest") # Nearest neighbor + # filtmatrixbuild = np.round(filtmatrixbuildtemp / 127.) + filtmatrixbuild = np.round(filtmatrixbuildtemp) + index = 270 - h + if h == 150: + filtmatrixbuild[:, n] = 0 + if h == 30: + filtmatrixbuild[:, n] = 0 + if index == 225: + # n = filtmatrix.shape[0] - 1 # length(filtmatrix); + filtmatrix1[0, 0] = 1 + filtmatrix1[n, n] = 1 + if index == 135: + # n = filtmatrix.shape[0] - 1 # length(filtmatrix); + filtmatrix1[0, n] = 1 + filtmatrix1[n, 0] = 1 + + for i in range(int(filthalveceil) - 1, row - int(filthalveceil) - 1): # i=filthalveceil:sizey-filthalveceil + for j in range( + int(filthalveceil) - 1, col - int(filthalveceil) - 1 + ): # (j=filthalveceil:sizex-filthalveceil + if walls[i, j] == 1: + wallscut = ( + walls[ + i - filthalvefloor : i + filthalvefloor + 1, + j - filthalvefloor : j + filthalvefloor + 1, + ] + * filtmatrix1 + ) + dsmcut = a[ + i - filthalvefloor : i + filthalvefloor + 1, + j - filthalvefloor : j + filthalvefloor + 1, + ] + if z[i, j] < wallscut.sum(): # sum(sum(wallscut)) + z[i, j] = wallscut.sum() # sum(sum(wallscut)); + if np.sum(dsmcut[filtmatrixbuild == 1]) > np.sum(dsmcut[filtmatrixbuild == 2]): + x[i, j] = 1 + else: + x[i, j] = 2 + + y[i, j] = index + + y[(x == 1)] = y[(x == 1)] - 180 + y[(y < 0)] = y[(y < 0)] + 360 + + grad, asp = get_ders(a, scale) + + y = y + ((walls == 1) * 1) * ((y == 0) * 1) * (asp / (math.pi / 180.0)) + + dirwalls = y + + return dirwalls + + +def cart2pol(x, y, units="deg"): + radius = np.sqrt(x**2 + y**2) + theta = np.arctan2(y, x) + if units in ["deg", "degs"]: + theta = theta * 180 / np.pi + return theta, radius + + +def get_ders(dsm, scale): + # dem,_,_=read_dem_grid(dem_file) + dx = 1 / scale + # dx=0.5 + fy, fx = np.gradient(dsm, dx, dx) + asp, grad = cart2pol(fy, fx, "rad") + grad = np.arctan(grad) + asp = asp * -1 + asp = asp + (asp < 0) * (np.pi * 2) + return grad, asp diff --git a/pysrc/solweig/configs.py b/pysrc/solweig/configs.py new file mode 100644 index 0000000..b22719c --- /dev/null +++ b/pysrc/solweig/configs.py @@ -0,0 +1,1592 @@ +import datetime +import logging +import zipfile +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Optional, Union + +import numpy as np +import scipy.ndimage as ndi + +from .algorithms.clearnessindex_2013b import clearnessindex_2013b + +# Attempt to import pandas for DataFrame support +# If pandas is not available in QGIS... set it to None +try: + import pandas as pd +except ImportError: + pd = None + +from . import io as common +from .algorithms import wallalgorithms as wa +from .algorithms.wall_surface_temperature import load_walls +from .tiles import TileManager, TileSpec +from .algorithms import sun_position as sp + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +@dataclass +class SolweigConfig: + """Configuration class for SOLWEIG parameters.""" + + output_dir: Optional[str] = None + working_dir: Optional[str] = None + dsm_path: Optional[str] = None + svf_path: Optional[str] = None + wh_path: Optional[str] = None + wa_path: Optional[str] = None + use_epw_file: bool = False + epw_path: Optional[str] = None + epw_start_date: Optional[str] = None + epw_end_date: Optional[str] = None + epw_hours: Optional[str] = None + met_path: Optional[str] = None + cdsm_path: Optional[str] = None + tdsm_path: Optional[str] = None + dem_path: Optional[str] = None + lc_path: Optional[str] = None + aniso_path: Optional[str] = None + poi_path: Optional[str] = None + poi_field: Optional[str] = None + wall_path: Optional[str] = None + woi_path: Optional[str] = None + woi_field: Optional[str] = None + only_global: bool = True + use_veg_dem: bool = True + conifer: bool = False + person_cylinder: bool = True + utc: int = 0 + use_landcover: bool = True + use_dem_for_buildings: bool = False + use_aniso: bool = False + use_wall_scheme: bool = False + wall_type: Optional[str] = "Brick" + output_tmrt: bool = True + output_kup: bool = True + output_kdown: bool = True + output_lup: bool = True + output_ldown: bool = True + output_sh: bool = True + save_buildings: bool = True + output_kdiff: bool = True + output_tree_planter: bool = True + wall_netcdf: bool = False + plot_poi_patches: bool = False + + def to_file(self, file_path: str): + """ + Save configuration to a file. + + Note: use_tiled_loading enables memory-efficient processing of large datasets + by loading tiles on-demand with overlaps calculated from amaxvalue and pixel size. + """ + logger.info("Saving configuration to %s", file_path) + with open(file_path, "w") as f: + for key in type(self).__annotations__: + value = getattr(self, key) + if value is None: + value = "" # Default to empty string if None + if type(self).__annotations__[key] == bool or type(self).__annotations__[key] == int: + f.write(f"{key}={int(value)}\n") + else: + f.write(f"{key}={value}\n") + + def from_file(self, config_path_str: str): + """Load configuration from a file.""" + config_path = common.check_path(config_path_str) + logger.info("Loading configuration from %s", config_path) + with open(config_path) as f: + for line in f: + if "=" in line: + key, value = line.strip().split("=", 1) + if key in type(self).__annotations__: + if value.strip() == "": + value = None + if type(self).__annotations__[key] == bool: + setattr(self, key, value == "1" or value.lower() == "true") + else: + setattr(self, key, value) + else: + logger.warning("Unknown key in config: %s", key) + + def validate(self): + """Validate configuration parameters.""" + logger.info("Validating SOLWEIG configuration.") + if not self.output_dir: + logger.error("Output directory must be set.") + raise ValueError("Output directory must be set.") + self.output_dir = str(common.check_path(self.output_dir, make_dir=True)) + if not self.working_dir: + logger.error("Working directory must be set.") + raise ValueError("Working directory must be set.") + self.working_dir = str(common.check_path(self.working_dir, make_dir=True)) + if not self.dsm_path: + logger.error("DSM path must be set.") + raise ValueError("DSM path must be set.") + if not isinstance(self.utc, int): + try: + self.utc = int(self.utc) + except ValueError as err: + raise ValueError("UTC offset must be an integer.") from err + if (self.met_path is None and self.epw_path is None) or (self.met_path and self.epw_path): + logger.error("Provide either MET or EPW weather file.") + raise ValueError("Provide either MET or EPW weather file.") + if self.epw_path is not None: + if self.epw_start_date is None or self.epw_end_date is None: + logger.error("EPW start and end dates must be provided if EPW path is set.") + raise ValueError("EPW start and end dates must be provided if EPW path is set.") + try: + if isinstance(self.epw_start_date, str): + self.epw_start_date = [int(x) for x in self.epw_start_date.split(",")] + if isinstance(self.epw_end_date, str): + self.epw_end_date = [int(x) for x in self.epw_end_date.split(",")] + if len(self.epw_start_date) != 4 or len(self.epw_end_date) != 4: + logger.error("EPW start and end dates must be in the format: year,month,day,hour") + raise ValueError("EPW start and end dates must be in the format: year,month,day,hour") + except ValueError as err: + logger.error("Invalid EPW date format: %s or %s", self.epw_start_date, self.epw_end_date) + raise ValueError(f"Invalid EPW date format: {self.epw_start_date} or {self.epw_end_date}") from err + if self.epw_hours is None: + self.epw_hours = list(range(24)) + elif isinstance(self.epw_hours, str): + self.epw_hours = [int(h) for h in self.epw_hours.split(",")] + if not all(0 <= h < 24 for h in self.epw_hours): + logger.error("EPW hours must be between 0 and 23.") + raise ValueError("EPW hours must be between 0 and 23.") + if self.use_landcover and self.lc_path is None: + logger.error("Land cover path must be set if use_landcover is True.") + raise ValueError("Land cover path must be set if use_landcover is True.") + if self.use_dem_for_buildings and self.dem_path is None: + logger.error("DEM path must be set if use_dem_for_buildings is True.") + raise ValueError("DEM path must be set if use_dem_for_buildings is True.") + if not self.use_landcover and not self.use_dem_for_buildings: + logger.error("Either use_landcover or use_dem_for_buildings must be True.") + raise ValueError("Either use_landcover or use_dem_for_buildings must be True.") + if self.use_aniso and self.aniso_path is None: + logger.error("Anisotropic sky path must be set if use_aniso is True.") + raise ValueError("Anisotropic sky path must be set if use_aniso is True.") + if self.use_wall_scheme and self.wall_path is None: + logger.error("Wall scheme path must be set if use_wall_scheme is True.") + raise ValueError("Wall scheme path must be set if use_wall_scheme is True.") + if self.plot_poi_patches and (not self.use_aniso or not self.poi_path): + logger.error("POI path and use_aniso must be set if plot_poi_patches is True.") + raise ValueError("POI path and use_aniso must be set if plot_poi_patches is True.") + + +@dataclass +class EnvironData: + """Class to handle weather data loading and processing.""" + + YYYY: np.ndarray + DOY: np.ndarray + hours: np.ndarray + minu: np.ndarray + Ta: np.ndarray + RH: np.ndarray + radG: np.ndarray + radD: np.ndarray + radI: np.ndarray + P: np.ndarray + Ws: np.ndarray + altitude: np.ndarray + azimuth: np.ndarray + zen: np.ndarray + jday: np.ndarray + leafon: np.ndarray + psi: np.ndarray + dectime: np.ndarray + altmax: np.ndarray + Twater: np.ndarray + CI: np.ndarray + + def __init__( + self, + model_configs: SolweigConfig, + model_params, + YYYY: np.ndarray, + DOY: np.ndarray, + hours: np.ndarray, + minu: np.ndarray, + Ta: np.ndarray, + RH: np.ndarray, + radG: np.ndarray, + radD: np.ndarray, + radI: np.ndarray, + P: np.ndarray, + Ws: np.ndarray, + location: dict | None, + UTC: int = 0, + ): + """ + This function is used to process the input meteorological file. + It also calculates Sun position based on the time specified in the met-file + """ + if location is None: + raise ValueError("Location must be set before loading MET data.") + # Initialize attributes + self.YYYY = YYYY + self.DOY = DOY + self.hours = hours + self.minu = minu + self.Ta = Ta + self.RH = RH + self.radG = radG + self.radD = radD + self.radI = radI + self.P = P + self.Ws = Ws + # Calculate remaining attributes + data_len = len(self.YYYY) + self.dectime = self.DOY + self.hours / 24 + self.minu / (60 * 24.0) + if data_len == 1: + halftimestepdec = 0.0 + else: + halftimestepdec = float((self.dectime[1] - self.dectime[0]) / 2.0) # convert from f32 + time = { + "sec": 0, + "UTC": UTC, + } + sunmaximum = 0.0 + + # initialize arrays + self.altitude = np.empty(data_len, dtype=np.float32) + self.azimuth = np.empty(data_len, dtype=np.float32) + self.zen = np.empty(data_len, dtype=np.float32) + self.jday = np.empty(data_len, dtype=np.float32) + self.leafon = np.empty(data_len, dtype=np.float32) + self.psi = np.empty(data_len, dtype=np.float32) + self.altmax = np.empty(data_len, dtype=np.float32) + self.Twater = np.empty(data_len, dtype=np.float32) + self.CI = np.empty(data_len, dtype=np.float32) + + sunmax = dict() + + # These variables lag across days until updated + Twater = None + CI = 1 + + def _scalar(value: Any) -> float: + """Convert sun-position outputs to native float scalars.""" + if isinstance(value, (int, float, np.floating)): + return float(value) + arr = np.asarray(value) + if arr.ndim == 0: + return float(arr) + return float(arr.reshape(-1)[0]) + + # Iterate over time steps and set vars + for i in range(data_len): + YMD = datetime.datetime(int(self.YYYY[i]), 1, 1) + datetime.timedelta(int(self.DOY[i]) - 1) + # Finding maximum altitude in 15 min intervals (20141027) + if (i == 0) or (np.mod(self.dectime[i], np.floor(self.dectime[i])) == 0): + fifteen = 0.0 + sunmaximum = -90.0 + sunmax["zenith"] = 90.0 + while sunmaximum <= 90.0 - _scalar(sunmax["zenith"]): + sunmaximum = 90.0 - _scalar(sunmax["zenith"]) + fifteen = fifteen + 15.0 / 1440.0 + HM = datetime.timedelta(days=(60 * 10) / 1440.0 + fifteen) + YMDHM = YMD + HM + time["year"] = YMDHM.year + time["month"] = YMDHM.month + time["day"] = YMDHM.day + time["hour"] = YMDHM.hour + time["min"] = YMDHM.minute + sunmax = sp.sun_position(time, location) + self.altmax[i] = float(sunmaximum) + # Calculate sun position + half = datetime.timedelta(days=halftimestepdec) + H = datetime.timedelta(hours=int(self.hours[i])) + M = datetime.timedelta(minutes=int(self.minu[i])) + YMDHM = YMD + H + M - half + time["year"] = YMDHM.year + time["month"] = YMDHM.month + time["day"] = YMDHM.day + time["hour"] = YMDHM.hour + time["min"] = YMDHM.minute + sun = sp.sun_position(time, location) + sun_zenith = _scalar(sun["zenith"]) + if (sun_zenith > 89.0) & ( + sun_zenith <= 90.0 + ): # Hopefully fixes weird values in Perez et al. when altitude < 1.0, i.e. close to sunrise/sunset + sun_zenith = 89.0 + sun_azimuth = _scalar(sun["azimuth"]) + self.altitude[i] = 90.0 - sun_zenith + self.zen[i] = sun_zenith * (np.pi / 180.0) + self.azimuth[i] = sun_azimuth + # day of year and check for leap year + # if calendar.isleap(time["year"]): + # dayspermonth = np.atleast_2d([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]) + # else: + # dayspermonth = np.atleast_2d([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]) + # jday[0, i] = np.sum(dayspermonth[0, 0:time['month']-1]) + time['day'] # bug when a new day 20191015 + doy = YMD.timetuple().tm_yday + self.jday[i] = doy + # Leaf on/off + if model_configs.conifer: + # Conifer trees are always leaf on + self.leafon[i] = 1 + else: + # Deciduous trees + self.leafon[i] = 0 + # Check leaf on period + if model_params.Tree_settings.Value.First_day_leaf > model_params.Tree_settings.Value.Last_day_leaf: + self.leafon[i] = int( + (model_params.Tree_settings.Value.First_day_leaf < doy) + | (model_params.Tree_settings.Value.Last_day_leaf > doy) + ) + else: + self.leafon[i] = int( + (model_params.Tree_settings.Value.First_day_leaf < doy) + & (model_params.Tree_settings.Value.Last_day_leaf > doy) + ) + # Check if the current time is the start of a new day + if (self.dectime[i] - np.floor(self.dectime[i])) == 0 or (i == 0): + # Find average temperature for the current day + Twater = np.mean(self.Ta[self.jday == np.floor(self.dectime[i])]) + # Lags across hours until updated + self.Twater[i] = Twater + + # Nocturnal cloudfraction from Offerle et al. 2003 + # Check for start of day + if (self.dectime[i] - np.floor(self.dectime[i])) == 0: + # Fallback + CI = 1.0 + # Find all current day idxs + daylines = np.where(np.floor(self.dectime) == self.dectime[i]) + # np.where returns a tuple, so check the first element + if len(daylines[0]) > 1: + # Get the altitudes for day's idxs + alt_day = self.altitude[daylines[0]] + # Find all idxs with altitude greater than 1 + alt2 = np.where(alt_day > 1) + # np.where returns a tuple, so check the first element + if len(alt2[0]) > 0: + # Take the first altitude greater than 1 + rise = alt2[0][0] + # Calculate clearness index for the next time step after sunrise + [_, CI_candidate, _, _, _] = clearnessindex_2013b( + self.zen[i + rise + 1], + self.jday[i + rise + 1], + self.Ta[i + rise + 1], + self.RH[i + rise + 1] / 100.0, + self.radG[i + rise + 1], + location, + self.P[i + rise + 1], + ) + if np.isfinite(CI_candidate) and CI_candidate <= 1.0: + CI = CI_candidate + # Lags across hours until updated + self.CI[i] = CI + # Calculate psi (transmissivity) + self.psi = self.leafon * model_params.Tree_settings.Value.Transmissivity + # TODO: check if this is correct + self.psi[self.leafon == 0] = 0.5 + + +class SvfData: + """Class to handle SVF data loading and processing.""" + + svf: np.ndarray + svf_east: np.ndarray + svf_south: np.ndarray + svf_west: np.ndarray + svf_north: np.ndarray + svf_veg: np.ndarray + svf_veg_east: np.ndarray + svf_veg_south: np.ndarray + svf_veg_west: np.ndarray + svf_veg_north: np.ndarray + svf_veg_blocks_bldg_sh: np.ndarray + svf_veg_blocks_bldg_sh_east: np.ndarray + svf_veg_blocks_bldg_sh_south: np.ndarray + svf_veg_blocks_bldg_sh_west: np.ndarray + svf_veg_blocks_bldg_sh_north: np.ndarray + svfalfa: np.ndarray + + def __init__(self, model_configs: SolweigConfig, tile_spec: Optional[TileSpec] = None): + if not tile_spec: + logger.info("Loading SVF data from %s", model_configs.svf_path) + in_path_str = str(common.check_path(model_configs.working_dir, make_dir=False)) + + # Check if SVF files are already extracted + svf_tif_path = Path(in_path_str) / "svf.tif" + if not svf_tif_path.exists(): + # Need to unzip - verify the zip file exists + svf_path = Path(model_configs.svf_path).absolute() + if not svf_path.exists(): + raise FileNotFoundError( + f"SVF zip file not found at {svf_path} and extracted files not found in {in_path_str}. " + "Please run SVF generation first." + ) + if not tile_spec: + logger.info("Extracting SVF files from %s", svf_path) + with zipfile.ZipFile(str(svf_path), "r") as zip_ref: + zip_ref.extractall(in_path_str) + elif not tile_spec: + logger.info("Using existing SVF files from %s", in_path_str) + + # Helper to load raster or window + def load(filename): + path = in_path_str + "/" + filename + if tile_spec: + data = common.read_raster_window(path, tile_spec.full_slice, band=1) + if data.dtype == np.float64: + data = data.astype(np.float32) + return data + else: + data, _, _, _ = common.load_raster(path, coerce_f64_to_f32=True) + return data + + # Load SVF rasters + self.svf = load("svf.tif") + self.svf_east = load("svfE.tif") + self.svf_south = load("svfS.tif") + self.svf_west = load("svfW.tif") + self.svf_north = load("svfN.tif") + + if model_configs.use_veg_dem: + self.svf_veg = load("svfveg.tif") + self.svf_veg_east = load("svfEveg.tif") + self.svf_veg_south = load("svfSveg.tif") + self.svf_veg_west = load("svfWveg.tif") + self.svf_veg_north = load("svfNveg.tif") + self.svf_veg_blocks_bldg_sh = load("svfaveg.tif") + self.svf_veg_blocks_bldg_sh_east = load("svfEaveg.tif") + self.svf_veg_blocks_bldg_sh_south = load("svfSaveg.tif") + self.svf_veg_blocks_bldg_sh_west = load("svfWaveg.tif") + self.svf_veg_blocks_bldg_sh_north = load("svfNaveg.tif") + if not tile_spec: + logger.info("Vegetation SVF data loaded.") + else: + self.svf_veg = np.ones_like(self.svf) + self.svf_veg_east = np.ones_like(self.svf) + self.svf_veg_south = np.ones_like(self.svf) + self.svf_veg_west = np.ones_like(self.svf) + self.svf_veg_north = np.ones_like(self.svf) + self.svf_veg_blocks_bldg_sh = np.ones_like(self.svf) + self.svf_veg_blocks_bldg_sh_east = np.ones_like(self.svf) + self.svf_veg_blocks_bldg_sh_south = np.ones_like(self.svf) + self.svf_veg_blocks_bldg_sh_west = np.ones_like(self.svf) + self.svf_veg_blocks_bldg_sh_north = np.ones_like(self.svf) + + # Calculate SVF alpha + tmp = self.svf + self.svf_veg - 1.0 + tmp[tmp < 0.0] = 0.0 + eps = np.finfo(np.float32).tiny + safe_term = np.clip(1.0 - tmp, eps, 1.0) + self.svfalfa = np.arcsin(np.exp(np.log(safe_term) / 2.0)) + if not tile_spec: + logger.info("SVF data loaded and processed.") + + +def raster_preprocessing( + dsm: np.ndarray, + dem: Optional[np.ndarray], + cdsm: Optional[np.ndarray], + tdsm: Optional[np.ndarray], + trunk_ratio: float, + pix_size: float, + amax_local_window_m: int = 100, + amax_local_perc: float = 99.9, + quiet: bool = False, +): + nan32 = np.float32(np.nan) + zero32 = np.float32(0.0) + threshold = np.float32(0.1) + # amax + if dem is None: + amaxvalue = float(np.nanmax(dsm) - np.nanmin(dsm)) + else: + # Calculate local maxima/minima ranges + # Number of pixels to cover ~amax_local_window_m radius (use a square window) + radius_pix = max(1, int(np.ceil(amax_local_window_m / pix_size))) + window = 2 * radius_pix + 1 + try: + local_min = ndi.minimum_filter(dsm, size=window, mode="nearest") + local_range = dsm - local_min + amaxvalue = float(np.nanpercentile(local_range, amax_local_perc)) + if not quiet: + logger.info( + f"amax {amaxvalue}m derived from {amax_local_window_m}m window and {amax_local_perc}th percentile." + ) + except Exception: + # Fallback to global range if filtering fails for any reason + amaxvalue = float(np.nanmax(dsm) - np.nanmin(dsm)) + logger.warning(f"Failed to calculate local amax; using global range of {amaxvalue}m instead.") + + # CDSM is relative to flat surface without DEM + if cdsm is None: + cdsm = np.zeros_like(dsm) + tdsm = np.zeros_like(dsm) + else: + if np.nanmax(cdsm) > 50: + logger.warning( + f"CDSM max {np.nanmax(cdsm)} exceeds 50 m, vegetation heights to be relative to ground (no DEM)." + ) + cdsm[np.isnan(cdsm)] = 0.0 + # TDSM is relative to flat surface without DEM + if tdsm is None: + if not quiet: + logger.info("Tree trunk TDSM not provided; using trunk ratio for TDSM.") + tdsm = cdsm * trunk_ratio + if np.nanmax(tdsm) > 50: + logger.warning( + f"TDSM max {np.nanmax(tdsm)} exceeds 50m, vegetation heights to be relative to ground (no DEM)." + ) + if np.nanmax(tdsm) > np.nanmax(cdsm): + logger.warning("Found TDSM heights exceeding CDSM heights, check input rasters.") + tdsm[np.isnan(tdsm)] = 0.0 + + # Compare veg heights against DSM and update amax if necessary + # Do before boosting to DEM / CDSM + vegmax = np.nanmax(cdsm) - np.nanmin(cdsm) + vegmax = min(vegmax, 50) + if vegmax > amaxvalue: + if not quiet: + logger.warning(f"Overriding amax {amaxvalue}m with veg max height of {vegmax}m.") + amaxvalue = vegmax + + # Set vegetated pixels to DEM + CDSM otherwise DSM + CDSM + if dem is not None: + cdsm = np.where(~np.isnan(dem), dem + cdsm, nan32) + cdsm = np.where(cdsm - dem < threshold, zero32, cdsm) + tdsm = np.where(~np.isnan(dem), dem + tdsm, nan32) + tdsm = np.where(tdsm - dem < threshold, zero32, tdsm) + else: + cdsm = np.where(~np.isnan(dsm), dsm + cdsm, nan32) + cdsm = np.where(cdsm - dsm < threshold, zero32, cdsm) + tdsm = np.where(~np.isnan(dsm), dsm + tdsm, nan32) + tdsm = np.where(tdsm - dsm < threshold, zero32, tdsm) + + if not quiet: + logger.info("Calculated max height for shadows: %.2fm", amaxvalue) + if amaxvalue > 100: + if not quiet: + logger.warning("Max shadow height exceeds 100m, double-check the input rasters for anomalies.") + + dsm = np.asarray(dsm, dtype=np.float32) + dem = None if dem is None else np.asarray(dem, dtype=np.float32) + cdsm = np.asarray(cdsm, dtype=np.float32) + tdsm = np.asarray(tdsm, dtype=np.float32) + + return dsm, dem, cdsm, tdsm, amaxvalue + + +class RasterData: + """Class to represent vegetation parameters.""" + + amaxvalue: float + dsm: np.ndarray + crs_wkt: Optional[str] + trf_arr: list[float] + nd_val: Optional[float] + scale: float + rows: int + cols: int + wallheight: np.ndarray + wallaspect: np.ndarray + dem: Optional[np.ndarray] + cdsm: Optional[np.ndarray] + tdsm: Optional[np.ndarray] + bush: np.ndarray + svfbuveg: np.ndarray + lcgrid: Optional[np.ndarray] + buildings: Optional[np.ndarray] + + def __init__( + self, + model_configs: SolweigConfig, + model_params, + svf_data: SvfData, + amax_local_window_m: int = 100, + amax_local_perc: float = 99.9, + tile_spec: Optional[TileSpec] = None, + ): + if model_configs.dsm_path is None: + raise ValueError("DSM path must be provided before initializing raster data.") + if model_configs.wh_path is None or model_configs.wa_path is None: + raise ValueError("Wall height and aspect rasters must be provided.") + if model_configs.output_dir is None: + raise ValueError("Output directory must be configured before initializing raster data.") + output_dir = model_configs.output_dir + dsm_path = model_configs.dsm_path + wh_path = model_configs.wh_path + wa_path = model_configs.wa_path + + # Helper to load raster or window + def load(path, band=1): + if tile_spec: + data = common.read_raster_window(path, tile_spec.full_slice, band=band) + if data.dtype == np.float64: + data = data.astype(np.float32) + return data + else: + data, _, _, _ = common.load_raster(path, bbox=None, coerce_f64_to_f32=True) + return data + + # Load DSM + if tile_spec: + self.dsm = load(dsm_path) + meta = common.get_raster_metadata(dsm_path) + # Transform is already in GDAL format [c, a, b, f, d, e] + self.trf_arr = meta["transform"] + self.crs_wkt = meta["crs"] + self.nd_val = meta["nodata"] + else: + self.dsm, self.trf_arr, self.crs_wkt, self.nd_val = common.load_raster( + dsm_path, bbox=None, coerce_f64_to_f32=True + ) + + if not tile_spec: + logger.info("DSM loaded from %s", dsm_path) + self.scale = 1 / self.trf_arr[1] + self.rows = self.dsm.shape[0] + self.cols = self.dsm.shape[1] + one32 = np.float32(1.0) + zero32 = np.float32(0.0) + + self.dsm = np.ascontiguousarray(self.dsm, dtype=np.float32) + # TODO: is this needed? + # if self.dsm.min() < 0: + # dsmraise = np.abs(self.dsm.min()) + # self.dsm = self.dsm + dsmraise + # else: + # dsmraise = 0 + + # WALLS + # heights + if tile_spec: + self.wallheight = load(wh_path) + else: + self.wallheight, wh_trf, wh_crs, _ = common.load_raster(wh_path, bbox=None, coerce_f64_to_f32=True) + if not self.wallheight.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for wall heights and DSM.") + if not np.allclose(self.trf_arr, wh_trf): + raise ValueError("Mismatching spatial transform for wall heights and DSM.") + if not self.crs_wkt == wh_crs: + raise ValueError("Mismatching CRS for wall heights and DSM.") + + if not tile_spec: + logger.info("Wall heights loaded") + self.wallheight = np.ascontiguousarray(self.wallheight, dtype=np.float32) + # aspects + if tile_spec: + self.wallaspect = load(wa_path) + else: + self.wallaspect, wa_trf, wa_crs, _ = common.load_raster(wa_path, bbox=None, coerce_f64_to_f32=True) + if not self.wallaspect.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for wall aspects and DSM.") + if not np.allclose(self.trf_arr, wa_trf): + raise ValueError("Mismatching spatial transform for wall aspects and DSM.") + if not self.crs_wkt == wa_crs: + raise ValueError("Mismatching CRS for wall aspects and DSM.") + + if not tile_spec: + logger.info("Wall aspects loaded") + self.wallaspect = np.ascontiguousarray(self.wallaspect, dtype=np.float32) + + # DEM + # TODO: Is DEM always provided? + if model_configs.dem_path: + dem_path_str = str(common.check_path(model_configs.dem_path)) + if tile_spec: + self.dem = load(dem_path_str) + else: + self.dem, dem_trf, dem_crs, dem_nd_val = common.load_raster( + dem_path_str, bbox=None, coerce_f64_to_f32=True + ) + if not self.dem.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for DEM and CDSM.") + if dem_crs is not None and dem_crs != self.crs_wkt: + raise ValueError("Mismatching CRS for DEM and CDSM.") + if not np.allclose(self.trf_arr, dem_trf): + raise ValueError("Mismatching spatial transform for DEM and CDSM.") + + if not tile_spec: + logger.info("DEM loaded from %s", model_configs.dem_path) + self.dem = np.ascontiguousarray(self.dem, dtype=np.float32) + # dem[dem == dem_nd_val] = 0.0 + # TODO: Check if this is needed re DSM ramifications + # if dem.min() < 0: + # demraise = np.abs(dem.min()) + # dem = dem + demraise + else: + self.dem = None + + # Vegetation + if model_configs.use_veg_dem: + if tile_spec: + self.cdsm = load(model_configs.cdsm_path) + else: + self.cdsm, vegdsm_trf, vegdsm_crs, _ = common.load_raster( + model_configs.cdsm_path, bbox=None, coerce_f64_to_f32=True + ) + if not self.cdsm.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for DSM and CDSM.") + if vegdsm_crs is not None and vegdsm_crs != self.crs_wkt: + raise ValueError("Mismatching CRS for DSM and CDSM.") + if not np.allclose(self.trf_arr, vegdsm_trf): + raise ValueError("Mismatching spatial transform for DSM and CDSM.") + + if not tile_spec: + logger.info("Vegetation DSM loaded from %s", model_configs.cdsm_path) + self.cdsm = np.ascontiguousarray(self.cdsm, dtype=np.float32) + # Tree DSM + if model_configs.tdsm_path: + if tile_spec: + self.tdsm = load(model_configs.tdsm_path) + else: + self.tdsm, vegdsm2_trf, vegdsm2_crs, _ = common.load_raster( + model_configs.tdsm_path, bbox=None, coerce_f64_to_f32=True + ) + if not self.tdsm.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for DSM and CDSM.") + if vegdsm2_crs is not None and vegdsm2_crs != self.crs_wkt: + raise ValueError("Mismatching CRS for DSM and CDSM.") + if not np.allclose(self.trf_arr, vegdsm2_trf): + raise ValueError("Mismatching spatial transform for DSM and CDSM.") + + if not tile_spec: + logger.info("Tree DSM loaded from %s", model_configs.tdsm_path) + self.tdsm = np.ascontiguousarray(self.tdsm, dtype=np.float32) + else: + self.tdsm = None + else: + self.cdsm = None + self.tdsm = None + + self.dsm, self.dem, self.cdsm, self.tdsm, self.amaxvalue = raster_preprocessing( # type: ignore + self.dsm, + self.dem, + self.cdsm, + self.tdsm, + model_params.Tree_settings.Value.Trunk_ratio, + self.trf_arr[1], + amax_local_window_m, + amax_local_perc, + quiet=bool(tile_spec), + ) + + # Clamp amaxvalue for tiled processing + if tile_spec and self.amaxvalue > 150.0: + logger.info(f"Clamping amaxvalue {self.amaxvalue} to 150m for tiled processing.") + self.amaxvalue = 150.0 + + self.dsm = np.ascontiguousarray(self.dsm, dtype=np.float32) + if self.dem is not None: + self.dem = np.ascontiguousarray(self.dem, dtype=np.float32) + if self.cdsm is not None: + self.cdsm = np.ascontiguousarray(self.cdsm, dtype=np.float32) + if self.tdsm is not None: + self.tdsm = np.ascontiguousarray(self.tdsm, dtype=np.float32) + + # bushes etc + if model_configs.use_veg_dem: + transmissivity = np.float32(model_params.Tree_settings.Value.Transmissivity) + self.bush = np.logical_not(self.tdsm * self.cdsm) * self.cdsm + self.bush = np.ascontiguousarray(self.bush, dtype=np.float32) + self.svfbuveg = svf_data.svf - (one32 - svf_data.svf_veg) * (one32 - transmissivity) + self.svfbuveg = np.ascontiguousarray(self.svfbuveg, dtype=np.float32) + else: + if not tile_spec: + logger.info("Vegetation DEM not used; vegetation arrays set to None.") + self.bush = np.zeros([self.rows, self.cols], dtype=np.float32) + self.svfbuveg = np.ascontiguousarray(svf_data.svf, dtype=np.float32) + + if not tile_spec: + common.save_raster( + output_dir + "/input-dsm.tif", + self.dsm, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + common.save_raster( + output_dir + "/input-cdsm.tif", + self.cdsm, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + common.save_raster( + output_dir + "/input-tdsm.tif", + self.tdsm, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + common.save_raster( + output_dir + "/input-svfbuveg.tif", + self.svfbuveg, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + common.save_raster( + output_dir + "/input-bush.tif", + self.bush, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + + # Land cover + if model_configs.use_landcover: + lc_path = model_configs.lc_path + if lc_path is None: + raise ValueError("Land cover path must be provided when use_landcover is True.") + lc_path_str = str(common.check_path(lc_path)) + if tile_spec: + self.lcgrid = load(lc_path_str) + else: + self.lcgrid, lc_trf, lc_crs, _ = common.load_raster(lc_path_str, bbox=None, coerce_f64_to_f32=True) + if not self.lcgrid.shape == self.dsm.shape: + raise ValueError("Mismatching raster shapes for land cover and DSM.") + if lc_crs is not None and lc_crs != self.crs_wkt: + raise ValueError("Mismatching CRS for land cover and DSM.") + if not np.allclose(self.trf_arr, lc_trf): + raise ValueError("Mismatching spatial transform for land cover and DSM.") + + if not tile_spec: + logger.info("Land cover loaded from %s", lc_path) + self.lcgrid = np.ascontiguousarray(self.lcgrid, dtype=np.float32) + else: + self.lcgrid = None + if not tile_spec: + logger.info("Land cover not used; lcgrid set to None.") + + # Buildings from land cover option + # TODO: Check intended logic here + if not model_configs.use_dem_for_buildings and self.lcgrid is not None: + # Create building boolean raster from either land cover if no DEM is used + buildings = np.copy(self.lcgrid) + buildings[buildings == 7] = 1 + buildings[buildings == 6] = 1 + buildings[buildings == 5] = 1 + buildings[buildings == 4] = 1 + buildings[buildings == 3] = 1 + buildings[buildings == 2] = 0 + self.buildings = np.ascontiguousarray(buildings, dtype=np.float32) + if not tile_spec: + logger.info("Buildings raster created from land cover data.") + elif model_configs.use_dem_for_buildings: + if self.dem is None: + raise ValueError("DEM raster must be available when use_dem_for_buildings is True.") + height_diff = self.dsm - self.dem + buildings = np.where( + ~np.isnan(self.dem) & ~np.isnan(self.dsm), + height_diff, + zero32, + ) + # TODO: Check intended logic here - 1 vs 0 + buildings[buildings < 2.0] = 1.0 + buildings[buildings >= 2.0] = 0.0 + self.buildings = np.ascontiguousarray(buildings, dtype=np.float32) + if not tile_spec: + logger.info("Buildings raster created from DSM and DEM data.") + else: + self.buildings = None + if not tile_spec: + logger.info("Buildings raster not created.") + # Save buildings raster if requested + if self.buildings is not None and model_configs.save_buildings: + common.save_raster( + output_dir + "/buildings.tif", + self.buildings, + self.trf_arr, + self.crs_wkt, + self.nd_val, + coerce_f64_to_f32=True, + ) + if not tile_spec: + logger.info("Buildings raster saved to %s/buildings.tif", output_dir) + + +class ShadowMatrices: + """Shadow matrices and related anisotropic sky data.""" + + use_aniso: bool + shmat: Optional[np.ndarray] + diffsh: Optional[np.ndarray] + vegshmat: Optional[np.ndarray] + vbshvegshmat: Optional[np.ndarray] + asvf: Optional[np.ndarray] + patch_option: int + steradians: Union[int, np.ndarray] + + def __init__( + self, + model_configs: SolweigConfig, + model_params, + svf_data: SvfData, + tile_spec: Optional[TileSpec] = None, + ): + self.use_aniso = model_configs.use_aniso + if self.use_aniso: + if not tile_spec: + logger.info("Loading anisotropic shadow matrices from %s", model_configs.aniso_path) + aniso_path_str = str(common.check_path(model_configs.aniso_path, make_dir=False)) + + # Load data. If tiled, we try to slice to save memory. + # Note: np.load on .npz reads the whole array into memory when accessed. + # Ideally these should be .npy or memory-mapped if they are huge. + data = np.load(aniso_path_str) + + def load_slice(key): + if tile_spec: + row_slice, col_slice = tile_spec.full_slice + arr = data[key][row_slice, col_slice, :] + else: + arr = data[key] + + # Handle uint8 format (new optimized format - 75% smaller) + # Convert uint8 (0-255) back to float32 (0.0-1.0) + if arr.dtype == np.uint8: + return arr.astype(np.float32) / 255.0 + else: + # Legacy float32 format + return arr.astype(np.float32) + + self.shmat = load_slice("shadowmat") + self.vegshmat = load_slice("vegshadowmat") + self.vbshvegshmat = load_slice("vbshmat") + + if model_configs.use_veg_dem: + # TODO: thoughts on memory optimization for smaller machines / large arrays? + self.diffsh = ( + self.shmat - (1 - self.vegshmat) * (1 - model_params.Tree_settings.Value.Transmissivity) + ).astype(np.float32) + if not tile_spec: + logger.info("Shadow matrices with vegetation loaded.") + else: + self.diffsh = self.shmat + if not tile_spec: + logger.info("Shadow matrices loaded (no vegetation).") + + # Estimate number of patches based on shadow matrices + if self.shmat.shape[2] == 145: + self.patch_option = 1 # patch_option = 1 # 145 patches + elif self.shmat.shape[2] == 153: + self.patch_option = 2 # patch_option = 2 # 153 patches + elif self.shmat.shape[2] == 306: + self.patch_option = 3 # patch_option = 3 # 306 patches + elif self.shmat.shape[2] == 612: + self.patch_option = 4 # patch_option = 4 # 612 patches + + # asvf to calculate sunlit and shaded patches + self.asvf = np.arccos(np.sqrt(svf_data.svf)) + + # Empty array for steradians + self.steradians = np.zeros(self.shmat.shape[2], dtype=np.float32) + else: + # no anisotropic sky + # downstream functions only access these if use_aniso is True + # be aware that Solweig_2025a_calc expects an int not bool for use_aniso + self.diffsh = None + self.shmat = None + self.vegshmat = None + self.vbshvegshmat = None + self.asvf = None + self.patch_option = 0 + self.steradians = 0 + if not tile_spec: + logger.info("Anisotropic sky not used; shadow matrices not loaded.") + + +class TgMaps: + """ + Get land cover properties for Tg wave (land cover scheme based on Bogren et al. 2000, + explained in Lindberg et al., 2008 and Lindberg, Onomura & Grimmond, 2016) + """ + + TgK: np.ndarray + Tstart: np.ndarray + alb_grid: np.ndarray + emis_grid: np.ndarray + TgK_wall: float + Tstart_wall: float + TmaxLST: Union[np.ndarray, float] + TmaxLST_wall: float + Knight: np.ndarray + Tgmap1: np.ndarray + Tgmap1E: np.ndarray + Tgmap1S: np.ndarray + Tgmap1W: np.ndarray + Tgmap1N: np.ndarray + TgOut1: np.ndarray + + def __init__(self, use_landcover: bool, model_params, raster_data: RasterData, quiet: bool = False): + """ + This is a vectorized version that avoids looping over pixels. + """ + # Initialization of maps + self.Knight = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.Tgmap1 = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.Tgmap1E = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.Tgmap1S = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.Tgmap1W = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.Tgmap1N = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + self.TgOut1 = np.zeros((raster_data.rows, raster_data.cols), dtype=np.float32) + + # Set up the Tg maps based on whether land cover is used + if use_landcover is False: + self.TgK = self.Knight + model_params.Ts_deg.Value.Cobble_stone_2014a + self.Tstart = self.Knight - model_params.Tstart.Value.Cobble_stone_2014a + self.alb_grid = self.Knight + model_params.Albedo.Effective.Value.Cobble_stone_2014a + self.emis_grid = self.Knight + model_params.Emissivity.Value.Cobble_stone_2014a + self.TmaxLST = model_params.TmaxLST.Value.Cobble_stone_2014a # Assuming this is a float + self.TgK_wall = model_params.Ts_deg.Value.Walls + self.Tstart_wall = model_params.Tstart.Value.Walls + self.TmaxLST_wall = model_params.TmaxLST.Value.Walls + if not quiet: + logger.info("TgMaps initialized with default (no land cover) parameters.") + else: + if raster_data.lcgrid is None: + raise ValueError("Land cover grid is not available.") + # Copy land cover grid + lc_grid = np.copy(raster_data.lcgrid) + # Sanitize + lc_grid[lc_grid >= 100] = 2 + # Get unique land cover IDs and filter them + unique_ids = np.unique(lc_grid) + valid_ids = unique_ids[unique_ids <= 7].astype(int) + # Initialize output grids by copying the original land cover grid + self.TgK = np.copy(lc_grid) + self.Tstart = np.copy(lc_grid) + self.alb_grid = np.copy(lc_grid) + self.emis_grid = np.copy(lc_grid) + self.TmaxLST = np.copy(lc_grid) + # Create mapping dictionaries from land cover ID to parameter values + id_to_name = {i: getattr(model_params.Names.Value, str(i)) for i in valid_ids} + name_to_tstart = {name: getattr(model_params.Tstart.Value, name) for name in id_to_name.values()} + name_to_albedo = {name: getattr(model_params.Albedo.Effective.Value, name) for name in id_to_name.values()} + name_to_emissivity = {name: getattr(model_params.Emissivity.Value, name) for name in id_to_name.values()} + name_to_tmaxlst = {name: getattr(model_params.TmaxLST.Value, name) for name in id_to_name.values()} + name_to_tsdeg = {name: getattr(model_params.Ts_deg.Value, name) for name in id_to_name.values()} + # Check for invalid land cover IDs in the grid + unique_lc_ids = np.unique(lc_grid[~np.isnan(lc_grid)]) + invalid_ids = set(unique_lc_ids) - set(valid_ids) + if invalid_ids: + logger.warning(f"Land cover grid contains invalid IDs: {sorted(invalid_ids)}. These will be ignored.") + # Perform replacements for each valid land cover ID + for i in valid_ids: + mask = lc_grid == i + if not np.any(mask): + continue + name = id_to_name[i] + self.Tstart[mask] = name_to_tstart[name] + self.alb_grid[mask] = name_to_albedo[name] + self.emis_grid[mask] = name_to_emissivity[name] + self.TmaxLST[mask] = name_to_tmaxlst[name] + self.TgK[mask] = name_to_tsdeg[name] + # Get wall-specific parameters + self.TgK_wall = getattr(model_params.Ts_deg.Value, "Walls", None) + self.Tstart_wall = getattr(model_params.Tstart.Value, "Walls", None) + self.TmaxLST_wall = getattr(model_params.TmaxLST.Value, "Walls", None) + if not quiet: + logger.info("TgMaps initialized using land cover grid.") + + +class WallsData: + """Class to represent wall characteristics and configurations.""" + + voxelMaps: Optional[np.ndarray] + voxelTable: Optional[np.ndarray] + timeStep: int + walls_scheme: np.ndarray + dirwalls_scheme: np.ndarray + met_for_xarray: Optional[Any] + + def __init__( + self, + model_configs: SolweigConfig, + model_params, + raster_data: RasterData, + weather_data: EnvironData, + tg_maps: TgMaps, + tile_spec: Optional[TileSpec] = None, + ): + if model_configs.use_wall_scheme: + if not tile_spec: + logger.info("Loading wall scheme data from %s", model_configs.wall_path) + wall_path_str = str(common.check_path(model_configs.wall_path, make_dir=False)) + wallData = np.load(wall_path_str) + # + if tile_spec: + row_slice, col_slice = tile_spec.full_slice + self.voxelMaps = wallData["voxelId"][row_slice, col_slice] + else: + self.voxelMaps = wallData["voxelId"] + + self.voxelTable = wallData["voxelTable"] + # Get wall type + # TODO: + # wall_type_standalone = {"Brick_wall": "100", "Concrete_wall": "101", "Wood_wall": "102"} + wall_type = model_configs.wall_type + # Get heights of walls including corners + self.walls_scheme = wa.findwalls_sp(raster_data.dsm, 2, np.array([[1, 1, 1], [1, 0, 1], [1, 1, 1]])) + # Get aspects of walls including corners + self.dirwalls_scheme = wa.filter1Goodwin_as_aspect_v3( + self.walls_scheme.copy(), raster_data.scale, raster_data.dsm, None, 100.0 / 180.0 + ) + # Calculate timeStep + if len(weather_data.YYYY) < 2: + raise ValueError( + "Weather data must contain at least 2 timesteps to calculate timeStep for wall scheme." + ) + first_timestep = ( + pd.to_datetime(weather_data.YYYY[0], format="%Y") + + pd.to_timedelta(weather_data.DOY[0] - 1, unit="d") + + pd.to_timedelta(weather_data.hours[0], unit="h") + + pd.to_timedelta(weather_data.minu[0], unit="m") + ) + second_timestep = ( + pd.to_datetime(weather_data.YYYY[1], format="%Y") + + pd.to_timedelta(weather_data.DOY[1] - 1, unit="d") + + pd.to_timedelta(weather_data.hours[1], unit="h") + + pd.to_timedelta(weather_data.minu[1], unit="m") + ) + self.timeStep = (second_timestep - first_timestep).seconds + # Load voxelTable as Pandas DataFrame + self.voxelTable, self.dirwalls_scheme = load_walls( + self.voxelTable, + model_params, + wall_type, + self.dirwalls_scheme, + weather_data.Ta[0], + self.timeStep, + tg_maps.alb_grid, + model_configs.use_landcover, + raster_data.lcgrid, + raster_data.dsm, + ) + # Create pandas datetime object for NetCDF output + self.met_for_xarray = ( + pd.to_datetime(weather_data.YYYY, format="%Y") + + pd.to_timedelta(weather_data.DOY - 1, unit="d") + + pd.to_timedelta(weather_data.hours, unit="h") + + pd.to_timedelta(weather_data.minu, unit="m") + ) + if not tile_spec: + logger.info("Wall scheme data loaded and processed.") + else: + self.voxelMaps = None + self.voxelTable = None + self.timeStep = 0 + self.walls_scheme = np.ones((raster_data.rows, raster_data.cols), dtype=np.float32) * 10.0 + self.dirwalls_scheme = np.ones((raster_data.rows, raster_data.cols), dtype=np.float32) * 10.0 + self.met_for_xarray = None + if not tile_spec: + logger.info("Wall scheme not used; default wall data initialized.") + + +class TiledRasterData(RasterData): + """ + Tiled version of RasterData that uses lazy loading. + + This class extends RasterData to support tiled loading of large rasters, + reducing memory usage by loading tiles on demand. + """ + + def __init__( + self, + model_configs: SolweigConfig, + model_params, + svf_data, # Can be SvfData or TiledSvfData + amax_local_window_m: int = 100, + amax_local_perc: float = 99.9, + tile_manager=None, # Optional: pass in an existing TileManager + ): + """Initialize tiled raster data with lazy loading.""" + from .tile_manager import LazyRasterLoader, TileManager + + if model_configs.dsm_path is None: + raise ValueError("DSM path must be provided before initializing raster data.") + if model_configs.wh_path is None or model_configs.wa_path is None: + raise ValueError("Wall height and aspect rasters must be provided.") + if model_configs.output_dir is None: + raise ValueError("Output directory must be configured before initializing raster data.") + + # Load only metadata without reading full raster data + # Use a small sample to get dimensions and transform + sample_dsm, trf_arr, crs_wkt, nd_val = common.load_raster( + model_configs.dsm_path, bbox=None, coerce_f64_to_f32=True + ) + + # Store metadata + self.trf_arr = trf_arr + self.crs_wkt = crs_wkt + self.nd_val = nd_val + self.scale = 1 / trf_arr[1] + self.rows = sample_dsm.shape[0] + self.cols = sample_dsm.shape[1] + pixel_size = trf_arr[1] + + # Store configuration for lazy amax calculation + self.model_configs = model_configs + self.model_params = model_params + self.amax_local_window_m = amax_local_window_m + self.amax_local_perc = amax_local_perc + + # Calculate a conservative global amaxvalue for tile overlap + # Use the sample data we already loaded + if model_configs.dem_path is None: + # Without DEM, use DSM range as conservative estimate + global_amax = float(np.nanmax(sample_dsm) - np.nanmin(sample_dsm)) + else: + # With DEM, estimate from sample (conservative) + # Load just a sample of DEM for quick estimate + sample_dem, _, _, _ = common.load_raster(model_configs.dem_path, bbox=None, coerce_f64_to_f32=True) + height_diff = sample_dsm - sample_dem + global_amax = float(np.nanpercentile(height_diff[~np.isnan(height_diff)], 99.9)) + + # Add safety margin and cap at reasonable maximum + global_amax = min(global_amax * 1.2, 200.0) # 20% safety margin, max 200m + self.amaxvalue = global_amax + + # Clean up sample data to free memory immediately + del sample_dsm + if model_configs.dem_path is not None and "sample_dem" in locals(): + del sample_dem + + # Get or create tile manager + if tile_manager is not None: + # Use provided tile manager and update with shadow-aware amax + self.tile_manager = tile_manager + self.tile_manager.amaxvalue = global_amax + self.tile_manager._generate_tiles() # Regenerate with new overlap + logger.info( + f"Using provided TileManager, updated with amax={global_amax:.1f}m, " + f"{len(self.tile_manager.tiles)} tiles" + ) + else: + # Create new tile manager with conservative overlap + self.tile_manager = TileManager( + rows=self.rows, + cols=self.cols, + tile_size=model_configs.tile_size, + amaxvalue=global_amax, + pixel_size=pixel_size, + ) + + logger.info( + f"TiledRasterData initialized: {self.rows}x{self.cols}, " + f"tile_size={model_configs.tile_size}, {len(self.tile_manager.tiles)} tiles, " + f"conservative amax={global_amax:.1f}m for overlap calculation" + ) + + # Create lazy loaders for rasters (but don't load data yet) + self.dsm_loader = LazyRasterLoader(model_configs.dsm_path, self.tile_manager) + self.wh_loader = LazyRasterLoader(model_configs.wh_path, self.tile_manager) + self.wa_loader = LazyRasterLoader(model_configs.wa_path, self.tile_manager) + + # Optional rasters + self.dem_loader = None + if model_configs.dem_path: + self.dem_loader = LazyRasterLoader(model_configs.dem_path, self.tile_manager) + + self.cdsm_loader = None + self.tdsm_loader = None + if model_configs.use_veg_dem and model_configs.cdsm_path: + self.cdsm_loader = LazyRasterLoader(model_configs.cdsm_path, self.tile_manager) + if model_configs.tdsm_path: + self.tdsm_loader = LazyRasterLoader(model_configs.tdsm_path, self.tile_manager) + + self.lc_loader = None + if model_configs.use_landcover and model_configs.lc_path: + self.lc_loader = LazyRasterLoader(model_configs.lc_path, self.tile_manager) + + logger.info("TiledRasterData loaders initialized (data not loaded yet)") + logger.info("Note: Direct property access (e.g., .dsm) is disabled. Use load_tile() instead.") + + def compute_tile_amaxvalue(self, tile_idx: int) -> float: + """ + Compute amaxvalue dynamically for a specific tile. + + This loads only the tile data and computes the local amax, + which is more accurate than the global conservative estimate. + + Args: + tile_idx: Index of tile + + Returns: + Local amaxvalue for the tile in meters + """ + tile_data = self.load_tile(tile_idx) + + dsm_tile = tile_data["dsm"] + dem_tile = tile_data["dem"] + cdsm_tile = tile_data["cdsm"] + tdsm_tile = tile_data["tdsm"] + + # Compute local amax for this tile + _, _, _, _, tile_amax = raster_preprocessing( + dsm_tile, + dem_tile, + cdsm_tile, + tdsm_tile, + self.model_params.Tree_settings.Value.Trunk_ratio, + self.trf_arr[1], + self.amax_local_window_m, + self.amax_local_perc, + quiet=True, + ) + + return tile_amax + + def load_tile(self, tile_idx: int, preprocess: bool = False) -> dict: + """ + Load all raster data for a specific tile. + + Args: + tile_idx: Index of tile to load + preprocess: If True, apply raster preprocessing to tile data + + Returns: + Dictionary with tile data for all rasters + """ + tile_spec = self.tile_manager.get_tile(tile_idx) + + tile_data = { + "tile_spec": tile_spec, + "dsm": self.dsm_loader.load_tile(tile_idx), + "wallheight": self.wh_loader.load_tile(tile_idx), + "wallaspect": self.wa_loader.load_tile(tile_idx), + } + + if self.dem_loader: + tile_data["dem"] = self.dem_loader.load_tile(tile_idx) + else: + tile_data["dem"] = None + + if self.cdsm_loader: + tile_data["cdsm"] = self.cdsm_loader.load_tile(tile_idx) + else: + tile_data["cdsm"] = None + + if self.tdsm_loader: + tile_data["tdsm"] = self.tdsm_loader.load_tile(tile_idx) + else: + tile_data["tdsm"] = None + + if self.lc_loader: + tile_data["lcgrid"] = self.lc_loader.load_tile(tile_idx) + else: + tile_data["lcgrid"] = None + + # Apply preprocessing if requested + if preprocess: + dsm, dem, cdsm, tdsm, tile_amax = raster_preprocessing( + tile_data["dsm"], + tile_data["dem"], + tile_data["cdsm"], + tile_data["tdsm"], + self.model_params.Tree_settings.Value.Trunk_ratio, + self.trf_arr[1], + self.amax_local_window_m, + self.amax_local_perc, + quiet=True, + ) + + # Update tile data with preprocessed arrays + tile_data["dsm"] = dsm + tile_data["dem"] = dem + tile_data["cdsm"] = cdsm + tile_data["tdsm"] = tdsm + tile_data["tile_amax"] = tile_amax + + # Compute derived properties for tile + if self.model_configs.use_veg_dem and cdsm is not None and tdsm is not None: + tile_data["bush"] = np.ascontiguousarray(np.logical_not(tdsm * cdsm) * cdsm, dtype=np.float32) + else: + tile_data["bush"] = np.zeros(tile_data["dsm"].shape, dtype=np.float32) + + # Compute buildings for tile + if not self.model_configs.use_dem_for_buildings and tile_data["lcgrid"] is not None: + lcgrid = tile_data["lcgrid"] + buildings = np.copy(lcgrid) + buildings[buildings == 7] = 1 + buildings[buildings == 6] = 1 + buildings[buildings == 5] = 1 + buildings[buildings == 4] = 1 + buildings[buildings == 3] = 1 + buildings[buildings == 2] = 0 + tile_data["buildings"] = np.ascontiguousarray(buildings, dtype=np.float32) + elif self.model_configs.use_dem_for_buildings and dem is not None: + height_diff = dsm - dem + buildings = np.where( + ~np.isnan(dem) & ~np.isnan(dsm), + height_diff, + np.float32(0.0), + ) + buildings[buildings < 2.0] = 1.0 + buildings[buildings >= 2.0] = 0.0 + tile_data["buildings"] = np.ascontiguousarray(buildings, dtype=np.float32) + else: + tile_data["buildings"] = None + + return tile_data + + def clear_cache(self): + """Clear all cached tile data to free memory.""" + self.dsm_loader.clear_cache() + self.wh_loader.clear_cache() + self.wa_loader.clear_cache() + if self.dem_loader: + self.dem_loader.clear_cache() + if self.cdsm_loader: + self.cdsm_loader.clear_cache() + if self.tdsm_loader: + self.tdsm_loader.clear_cache() + if self.lc_loader: + self.lc_loader.clear_cache() + + +class TiledSvfData(SvfData): + """ + Tiled version of SvfData that uses lazy loading. + + This class extends SvfData to support tiled loading of SVF rasters, + reducing memory usage by loading tiles on demand. + """ + + @staticmethod + def create_tile_manager(model_configs: SolweigConfig): + """ + Create an independent TileManager based on raster dimensions. + + Args: + model_configs: SOLWEIG configuration + + Returns: + TileManager instance + """ + + # Get raster dimensions from DSM + dsm_arr, trf_arr, _, _ = common.load_raster(model_configs.dsm_path) + rows, cols = dsm_arr.shape + pixel_size = trf_arr[1] + + # Create tile manager (amaxvalue will be updated later by TiledRasterData) + tile_manager = TileManager( + rows=rows, + cols=cols, + tile_size=model_configs.tile_size, + pixel_size=pixel_size, + amaxvalue=0.0, # Placeholder, will be updated by TiledRasterData + ) + logger.info("Created independent TileManager: %d tiles", len(tile_manager.tiles)) + return tile_manager + + def __init__(self, model_configs: SolweigConfig, tile_manager): + """Initialize tiled SVF data with lazy loading.""" + from .tile_manager import LazyRasterLoader + + logger.info("Loading SVF data (tiled) from %s", model_configs.svf_path) + in_path_str = str(common.check_path(model_configs.working_dir, make_dir=False)) + + # Check if SVF files are already extracted + svf_tif_path = Path(in_path_str) / "svf.tif" + if not svf_tif_path.exists(): + # Need to unzip - verify the zip file exists + svf_path = Path(model_configs.svf_path).absolute() + if not svf_path.exists(): + raise FileNotFoundError( + f"SVF zip file not found at {svf_path} and extracted files not found in {in_path_str}. " + "Please run SVF generation first." + ) + logger.info("Extracting SVF files from %s", svf_path) + with zipfile.ZipFile(str(svf_path), "r") as zip_ref: + zip_ref.extractall(in_path_str) + else: + logger.info("Using existing SVF files from %s", in_path_str) + + # Store the provided tile manager + self.tile_manager = tile_manager + logger.info("Using provided TileManager for SVF data: %d tiles", len(self.tile_manager.tiles)) + + # Create lazy loaders for SVF rasters + self.svf_loader = LazyRasterLoader(in_path_str + "/svf.tif", self.tile_manager) + self.svf_east_loader = LazyRasterLoader(in_path_str + "/svfE.tif", self.tile_manager) + self.svf_south_loader = LazyRasterLoader(in_path_str + "/svfS.tif", self.tile_manager) + self.svf_west_loader = LazyRasterLoader(in_path_str + "/svfW.tif", self.tile_manager) + self.svf_north_loader = LazyRasterLoader(in_path_str + "/svfN.tif", self.tile_manager) + + if model_configs.use_veg_dem: + self.svf_veg_loader = LazyRasterLoader(in_path_str + "/svfveg.tif", self.tile_manager) + self.svf_veg_east_loader = LazyRasterLoader(in_path_str + "/svfEveg.tif", self.tile_manager) + self.svf_veg_south_loader = LazyRasterLoader(in_path_str + "/svfSveg.tif", self.tile_manager) + self.svf_veg_west_loader = LazyRasterLoader(in_path_str + "/svfWveg.tif", self.tile_manager) + self.svf_veg_north_loader = LazyRasterLoader(in_path_str + "/svfNveg.tif", self.tile_manager) + self.svf_veg_blocks_bldg_sh_loader = LazyRasterLoader(in_path_str + "/svfaveg.tif", self.tile_manager) + self.svf_veg_blocks_bldg_sh_east_loader = LazyRasterLoader(in_path_str + "/svfEaveg.tif", self.tile_manager) + self.svf_veg_blocks_bldg_sh_south_loader = LazyRasterLoader( + in_path_str + "/svfSaveg.tif", self.tile_manager + ) + self.svf_veg_blocks_bldg_sh_west_loader = LazyRasterLoader(in_path_str + "/svfWaveg.tif", self.tile_manager) + self.svf_veg_blocks_bldg_sh_north_loader = LazyRasterLoader( + in_path_str + "/svfNaveg.tif", self.tile_manager + ) + self.use_veg = True + else: + self.use_veg = False + + logger.info("TiledSvfData loaders initialized (data not loaded yet)") + logger.info("Use load_tile(tile_idx) for memory-efficient tile-based access") + logger.info("Note: Direct property access (e.g., .svf) is disabled. Use load_tile() instead.") + + def load_tile(self, tile_idx: int) -> dict: + """ + Load all SVF data for a specific tile. + + Returns: + Dictionary with tile data for all SVF rasters + """ + tile_data = { + "svf": self.svf_loader.load_tile(tile_idx), + "svf_east": self.svf_east_loader.load_tile(tile_idx), + "svf_south": self.svf_south_loader.load_tile(tile_idx), + "svf_west": self.svf_west_loader.load_tile(tile_idx), + "svf_north": self.svf_north_loader.load_tile(tile_idx), + } + + if self.use_veg: + tile_data["svf_veg"] = self.svf_veg_loader.load_tile(tile_idx) + tile_data["svf_veg_east"] = self.svf_veg_east_loader.load_tile(tile_idx) + tile_data["svf_veg_south"] = self.svf_veg_south_loader.load_tile(tile_idx) + tile_data["svf_veg_west"] = self.svf_veg_west_loader.load_tile(tile_idx) + tile_data["svf_veg_north"] = self.svf_veg_north_loader.load_tile(tile_idx) + tile_data["svf_veg_blocks_bldg_sh"] = self.svf_veg_blocks_bldg_sh_loader.load_tile(tile_idx) + tile_data["svf_veg_blocks_bldg_sh_east"] = self.svf_veg_blocks_bldg_sh_east_loader.load_tile(tile_idx) + tile_data["svf_veg_blocks_bldg_sh_south"] = self.svf_veg_blocks_bldg_sh_south_loader.load_tile(tile_idx) + tile_data["svf_veg_blocks_bldg_sh_west"] = self.svf_veg_blocks_bldg_sh_west_loader.load_tile(tile_idx) + tile_data["svf_veg_blocks_bldg_sh_north"] = self.svf_veg_blocks_bldg_sh_north_loader.load_tile(tile_idx) + + return tile_data + + def clear_cache(self): + """Clear all cached tile data to free memory.""" + self.svf_loader.clear_cache() + self.svf_east_loader.clear_cache() + self.svf_south_loader.clear_cache() + self.svf_west_loader.clear_cache() + self.svf_north_loader.clear_cache() + if self.use_veg: + self.svf_veg_loader.clear_cache() + self.svf_veg_east_loader.clear_cache() + self.svf_veg_south_loader.clear_cache() + self.svf_veg_west_loader.clear_cache() + self.svf_veg_north_loader.clear_cache() + self.svf_veg_blocks_bldg_sh_loader.clear_cache() + self.svf_veg_blocks_bldg_sh_east_loader.clear_cache() + self.svf_veg_blocks_bldg_sh_south_loader.clear_cache() + self.svf_veg_blocks_bldg_sh_west_loader.clear_cache() + self.svf_veg_blocks_bldg_sh_north_loader.clear_cache() diff --git a/pysrc/umepr/functions/daily_shading.py b/pysrc/solweig/functions/daily_shading.py similarity index 98% rename from pysrc/umepr/functions/daily_shading.py rename to pysrc/solweig/functions/daily_shading.py index 0e9a851..514db52 100644 --- a/pysrc/umepr/functions/daily_shading.py +++ b/pysrc/solweig/functions/daily_shading.py @@ -8,8 +8,8 @@ import numpy as np from tqdm import tqdm -from umep import common -from umep.util.SEBESOLWEIGCommonFiles import sun_position as sp +from .. import io as common +from ..algorithms import sun_position as sp from ..rustalgos import shadowing diff --git a/pysrc/umepr/functions/solweig.py b/pysrc/solweig/functions/solweig.py similarity index 97% rename from pysrc/umepr/functions/solweig.py rename to pysrc/solweig/functions/solweig.py index 25b02d0..b942d12 100644 --- a/pysrc/umepr/functions/solweig.py +++ b/pysrc/solweig/functions/solweig.py @@ -9,20 +9,20 @@ from copy import deepcopy import numpy as np -from umep.functions.SOLWEIGpython.cylindric_wedge import cylindric_wedge -from umep.functions.SOLWEIGpython.daylen import daylen -from umep.functions.SOLWEIGpython.Kup_veg_2015a import Kup_veg_2015a +from ..algorithms.cylindric_wedge import cylindric_wedge +from ..algorithms.daylen import daylen +from ..algorithms.Kup_veg_2015a import Kup_veg_2015a # Anisotropic longwave -from umep.functions.SOLWEIGpython.patch_radiation import patch_steradians -from umep.functions.SOLWEIGpython.TsWaveDelay_2015a import TsWaveDelay_2015a +from ..algorithms.patch_radiation import patch_steradians +from ..algorithms.TsWaveDelay_2015a import TsWaveDelay_2015a # Wall surface temperature scheme -from umep.functions.SOLWEIGpython.wall_surface_temperature import wall_surface_temperature -from umep.util.SEBESOLWEIGCommonFiles.clearnessindex_2013b import clearnessindex_2013b -from umep.util.SEBESOLWEIGCommonFiles.create_patches import create_patches -from umep.util.SEBESOLWEIGCommonFiles.diffusefraction import diffusefraction -from umep.util.SEBESOLWEIGCommonFiles.Perez_v3 import Perez_v3 +from ..algorithms.wall_surface_temperature import wall_surface_temperature +from ..algorithms.clearnessindex_2013b import clearnessindex_2013b +from ..algorithms.create_patches import create_patches +from ..algorithms.diffusefraction import diffusefraction +from ..algorithms.Perez_v3 import Perez_v3 from ..rustalgos import gvf, shadowing, sky, vegetation diff --git a/pysrc/umepr/hybrid/svf.py b/pysrc/solweig/hybrid/svf.py similarity index 97% rename from pysrc/umepr/hybrid/svf.py rename to pysrc/solweig/hybrid/svf.py index 9aa5f61..f042fac 100644 --- a/pysrc/umepr/hybrid/svf.py +++ b/pysrc/solweig/hybrid/svf.py @@ -7,8 +7,9 @@ import numpy as np from tqdm import tqdm -from umep.util import shadowingfunctions as shadow -from umep.util.SEBESOLWEIGCommonFiles.create_patches import create_patches +# TODO: shadowingfunctions not yet copied - this file is for testing only +# from ..algorithms import shadowingfunctions as shadow +from ..algorithms.create_patches import create_patches from ..rustalgos import shadowing diff --git a/pysrc/solweig/io.py b/pysrc/solweig/io.py new file mode 100644 index 0000000..8ec24c7 --- /dev/null +++ b/pysrc/solweig/io.py @@ -0,0 +1,657 @@ +import logging +import math +import os +import sys +from pathlib import Path + +import numpy as np + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +def _detect_osgeo_environment() -> bool: + """ + Detect if we're running in an OSGeo4W or QGIS environment. + + These environments have their own GDAL installation and pip-installed + rasterio will cause DLL conflicts on Windows. + """ + # Check for QGIS + if "qgis" in sys.modules or "qgis.core" in sys.modules: + return True + + # Check for QGIS environment variables + if any(key in os.environ for key in ("QGIS_PREFIX_PATH", "QGIS_DEBUG")): + return True + + # Check for OSGeo4W environment + if "OSGEO4W_ROOT" in os.environ: + return True + + # Check if Python executable is inside OSGeo4W or QGIS directory (Windows) + exe_path = sys.executable.lower() + return any(marker in exe_path for marker in ("osgeo4w", "qgis")) + + +def _try_import_gdal() -> bool: + """Try to import GDAL and return True if successful.""" + try: + from osgeo import gdal, osr # noqa: F401 + + return True + except (ImportError, OSError) as e: + logger.debug(f"GDAL import failed: {e}") + return False + + +def _try_import_rasterio() -> bool: + """ + Try to import rasterio and return True if successful. + + This catches both ImportError and OSError (DLL load failures). + """ + try: + import pyproj # noqa: F401 + import rasterio # noqa: F401 + from rasterio.features import rasterize # noqa: F401 + from rasterio.mask import mask # noqa: F401 + from rasterio.transform import Affine, from_origin # noqa: F401 + from rasterio.windows import Window # noqa: F401 + from shapely import geometry # noqa: F401 + + return True + except (ImportError, OSError) as e: + logger.debug(f"Rasterio import failed: {e}") + return False + + +def _setup_geospatial_backend() -> bool: + """ + Set up the geospatial backend (rasterio or GDAL). + + Returns GDAL_ENV: True if using GDAL, False if using rasterio. + + Priority: + 1. UMEP_USE_GDAL=1 environment variable forces GDAL + 2. In OSGeo4W/QGIS environments: prefer GDAL (avoids DLL conflicts) + 3. Otherwise: try rasterio first, fall back to GDAL + """ + # Allow forcing GDAL via environment variable + if os.environ.get("UMEP_USE_GDAL", "").lower() in ("1", "true", "yes"): + if _try_import_gdal(): + logger.info("Using GDAL for raster operations (forced via UMEP_USE_GDAL).") + return True + else: + raise ImportError( + "UMEP_USE_GDAL is set but GDAL could not be imported. " + "Install GDAL or unset UMEP_USE_GDAL." + ) + + # In OSGeo4W/QGIS: prefer GDAL to avoid DLL conflicts + in_osgeo = _detect_osgeo_environment() + if in_osgeo: + logger.debug("Detected OSGeo4W/QGIS environment, preferring GDAL backend.") + if _try_import_gdal(): + logger.info("Using GDAL for raster operations (OSGeo4W/QGIS environment).") + return True + # GDAL should always be available in OSGeo4W/QGIS, but fall back just in case + logger.warning("GDAL import failed in OSGeo4W/QGIS environment, trying rasterio...") + if _try_import_rasterio(): + logger.info("Using rasterio for raster operations.") + return False + raise ImportError( + "Failed to import both GDAL and rasterio in OSGeo4W/QGIS environment.\n" + "This is unexpected - GDAL should be available. Check your installation." + ) + + # Standard environment: prefer rasterio, fall back to GDAL + if _try_import_rasterio(): + logger.info("Using rasterio for raster operations.") + return False + + logger.warning("Rasterio import failed, trying GDAL...") + if _try_import_gdal(): + logger.info("Using GDAL for raster operations.") + return True + + # Neither worked + raise ImportError( + "Neither rasterio nor GDAL could be imported.\n" + "Install with: pip install rasterio\n" + "Or for QGIS/OSGeo4W environments, ensure GDAL is properly configured." + ) + + +# Determine which backend to use +GDAL_ENV = _setup_geospatial_backend() + +# Now do the actual imports based on the backend +if GDAL_ENV: + from osgeo import gdal, osr +else: + import pyproj + import rasterio + from rasterio.features import rasterize + from rasterio.mask import mask + from rasterio.transform import Affine, from_origin + from rasterio.windows import Window + from shapely import geometry + + +FLOAT_TOLERANCE = 1e-9 + + +def _assert_north_up(transform) -> None: + """Ensure the raster transform describes a north-up raster.""" + if hasattr(transform, "b") and hasattr(transform, "d"): + if not math.isclose(transform.b, 0.0, abs_tol=FLOAT_TOLERANCE) or not math.isclose( + transform.d, 0.0, abs_tol=FLOAT_TOLERANCE + ): + raise ValueError("Only north-up rasters (no rotation) are supported.") + else: + # GDAL-style tuple (c, a, b, f, d, e) + if len(transform) < 6: + raise ValueError("Transform must contain 6 elements.") + if not math.isclose(transform[2], 0.0, abs_tol=FLOAT_TOLERANCE) or not math.isclose( + transform[4], 0.0, abs_tol=FLOAT_TOLERANCE + ): + raise ValueError("Only north-up rasters (no rotation) are supported.") + + +def _shrink_axis_to_grid(min_val: float, max_val: float, origin: float, pixel_size: float) -> tuple[float, float]: + if pixel_size == 0: + raise ValueError("Pixel size must be non-zero to shrink bbox to pixel grid.") + step = abs(pixel_size) + start_idx = math.ceil(((min_val - origin) / step) - FLOAT_TOLERANCE) + end_idx = math.floor(((max_val - origin) / step) + FLOAT_TOLERANCE) + new_min = origin + start_idx * step + new_max = origin + end_idx * step + if not new_max > new_min: + raise ValueError("Bounding box collapsed after snapping to the pixel grid.") + return new_min, new_max + + +def shrink_bbox_to_pixel_grid( + bbox: tuple[float, float, float, float], + origin_x: float, + origin_y: float, + pixel_width: float, + pixel_height: float, +) -> tuple[float, float, float, float]: + """Shrink bbox so its edges land on the pixel grid defined by the raster origin.""" + + minx, miny, maxx, maxy = bbox + if minx >= maxx or miny >= maxy: + raise ValueError("Bounding box is invalid (min must be < max for both axes).") + snapped_minx, snapped_maxx = _shrink_axis_to_grid(minx, maxx, origin_x, pixel_width) + snapped_miny, snapped_maxy = _shrink_axis_to_grid(miny, maxy, origin_y, pixel_height) + return snapped_minx, snapped_miny, snapped_maxx, snapped_maxy + + +def _bounds_to_tuple(bounds) -> tuple[float, float, float, float]: + if hasattr(bounds, "left"): + return bounds.left, bounds.bottom, bounds.right, bounds.top + return tuple(bounds) + + +def _validate_bbox_within_bounds( + bbox: tuple[float, float, float, float], bounds, *, tol: float = FLOAT_TOLERANCE +) -> None: + minx, miny, maxx, maxy = bbox + left, bottom, right, top = _bounds_to_tuple(bounds) + if minx < left - tol or maxx > right + tol or miny < bottom - tol or maxy > top + tol: + raise ValueError("Bounding box is not fully contained within the raster dataset bounds") + + +def _compute_bounds_from_transform(transform, width: int, height: int) -> tuple[float, float, float, float]: + """Return raster bounds for a GDAL-style transform tuple.""" + left = transform[0] + top = transform[3] + right = transform[0] + width * transform[1] + bottom = transform[3] + height * transform[5] + minx = min(left, right) + maxx = max(left, right) + miny = min(top, bottom) + maxy = max(top, bottom) + return minx, miny, maxx, maxy + + +def _normalise_bbox(bbox_sequence) -> tuple[float, float, float, float]: + try: + minx, miny, maxx, maxy = bbox_sequence + except Exception as exc: # noqa: BLE001 + raise ValueError("Bounding box must contain exactly four numeric values") from exc + return float(minx), float(miny), float(maxx), float(maxy) + + +def rasterise_gdf(gdf, geom_col, ht_col, bbox=None, pixel_size: int = 1): + # Define raster parameters + if bbox is not None: + # Unpack bbox values + minx, miny, maxx, maxy = _normalise_bbox(bbox) + else: + # Use the total bounds of the GeoDataFrame + minx, miny, maxx, maxy = map(float, gdf.total_bounds) + if pixel_size <= 0: + raise ValueError("Pixel size must be a positive number.") + minx, miny, maxx, maxy = shrink_bbox_to_pixel_grid( + (minx, miny, maxx, maxy), + origin_x=minx, + origin_y=maxy, + pixel_width=pixel_size, + pixel_height=pixel_size, + ) + width = int(round((maxx - minx) / pixel_size)) + height = int(round((maxy - miny) / pixel_size)) + if width <= 0 or height <= 0: + raise ValueError("Bounding box collapsed after snapping to pixel grid.") + transform = from_origin(minx, maxy, pixel_size, pixel_size) + # Create a blank array for the raster + raster = np.zeros((height, width), dtype=np.float32) + # Burn geometries into the raster + shapes = ((geom, value) for geom, value in zip(gdf[geom_col], gdf[ht_col], strict=True)) + raster = rasterize(shapes, out_shape=raster.shape, transform=transform, fill=0, dtype=np.float32) + + return raster, transform + + +def check_path(path_str: str | Path, make_dir: bool = False) -> Path: + # Ensure path exists + path = Path(path_str).absolute() + if not path.parent.exists(): + if make_dir: + path.parent.mkdir(parents=True, exist_ok=True) + else: + raise OSError(f"Parent directory {path.parent} does not exist for path {path}. Set make_dir=True to create it.") + if not path.exists() and not path.suffix: + if make_dir: + path.mkdir(parents=True, exist_ok=True) + else: + raise OSError(f"Path {path} does not exist. Set make_dir=True to create it.") + return path + + +def save_raster( + out_path_str: str, + data_arr: np.ndarray, + trf_arr: list[float], + crs_wkt: str, + no_data_val: float = -9999, + coerce_f64_to_f32: bool = True, +): + """ + Save raster to GeoTIFF. + + Args: + out_path_str: Output file path + data_arr: 2D numpy array to save + trf_arr: GDAL-style geotransform [top_left_x, pixel_width, rotation, top_left_y, rotation, pixel_height] + crs_wkt: CRS in WKT format + no_data_val: No-data value to use + coerce_f64_to_f32: If True, convert float64 arrays to float32 before saving + (default: True for memory efficiency) + """ + # Only convert float64 to float32, leave ints/bools unchanged + if coerce_f64_to_f32 and data_arr.dtype == np.float64: + data_arr = data_arr.astype(np.float32) + + attempts = 2 + while attempts > 0: + attempts -= 1 + try: + # Save raster using GDAL or rasterio + out_path = check_path(out_path_str, make_dir=True) + height, width = data_arr.shape + if GDAL_ENV is False: + trf = Affine.from_gdal(*trf_arr) + crs = None + if crs_wkt: + crs = pyproj.CRS(crs_wkt) + with rasterio.open( + out_path, + "w", + driver="GTiff", + height=height, + width=width, + count=1, + dtype=data_arr.dtype, + crs=crs, + transform=trf, + nodata=no_data_val, + ) as dst: + dst.write(data_arr, 1) + else: + driver = gdal.GetDriverByName("GTiff") + ds = driver.Create(str(out_path), width, height, 1, gdal.GDT_Float32) + ds.SetGeoTransform(trf_arr) + if crs_wkt: + ds.SetProjection(crs_wkt) + band = ds.GetRasterBand(1) + band.SetNoDataValue(no_data_val) + band.WriteArray(data_arr) + ds = None + return + except Exception as e: + if attempts == 0: + raise e + logger.warning(f"Failed to save raster to {out_path_str}: {e}. Retrying...") + + +def get_raster_metadata(path_str: str | Path) -> dict: + """ + Get raster metadata without loading the whole file. + Returns dict with keys: rows, cols, transform, crs, nodata, res. + Transform is always a list [c, a, b, f, d, e] (GDAL-style). + CRS is always a WKT string (or None). + """ + path = check_path(path_str) + if GDAL_ENV is False: + with rasterio.open(path) as src: + # Convert Affine to GDAL-style list + trf = src.transform + transform_list = [trf.c, trf.a, trf.b, trf.f, trf.d, trf.e] + # Convert CRS to WKT string + crs_wkt = src.crs.to_wkt() if src.crs is not None else None + return { + "rows": src.height, + "cols": src.width, + "transform": transform_list, + "crs": crs_wkt, + "nodata": src.nodata, + "res": src.res, # (xres, yres) + "bounds": src.bounds, + } + else: + ds = gdal.Open(str(path)) + if ds is None: + raise OSError(f"Could not open {path}") + gt = ds.GetGeoTransform() + return { + "rows": ds.RasterYSize, + "cols": ds.RasterXSize, + "transform": gt, + "crs": ds.GetProjection() or None, + "nodata": ds.GetRasterBand(1).GetNoDataValue(), + "res": (gt[1], abs(gt[5])), # Approximate resolution + } + + +def read_raster_window(path_str: str | Path, window: tuple[slice, slice], band: int = 1) -> np.ndarray: + """ + Read a window from a raster file. + window is (row_slice, col_slice). + """ + path = check_path(path_str) + row_slice, col_slice = window + + # Handle None slices (read full dimension) + # This is tricky without knowing full shape, so we assume caller provides valid slices + # or we'd need to open file to check shape first. + # For now, assume valid integer slices. + + if GDAL_ENV is False: + with rasterio.open(path) as src: + # rasterio Window(col_off, row_off, width, height) + # Slices are start:stop + r_start = row_slice.start if row_slice.start is not None else 0 + r_stop = row_slice.stop if row_slice.stop is not None else src.height + c_start = col_slice.start if col_slice.start is not None else 0 + c_stop = col_slice.stop if col_slice.stop is not None else src.width + + win = Window( + col_off=c_start, + row_off=r_start, + width=c_stop - c_start, + height=r_stop - r_start, + ) + return src.read(band, window=win) + else: + ds = gdal.Open(str(path)) + if ds is None: + raise OSError(f"Could not open {path}") + + r_start = row_slice.start if row_slice.start is not None else 0 + r_stop = row_slice.stop if row_slice.stop is not None else ds.RasterYSize + c_start = col_slice.start if col_slice.start is not None else 0 + c_stop = col_slice.stop if col_slice.stop is not None else ds.RasterXSize + + xoff = c_start + yoff = r_start + xsize = c_stop - c_start + ysize = r_stop - r_start + + return ds.GetRasterBand(band).ReadAsArray(xoff, yoff, xsize, ysize) + + +def load_raster( + path_str: str, bbox: list[int] | None = None, band: int = 0, coerce_f64_to_f32: bool = True +) -> tuple[np.ndarray, list[float], str | None, float | None]: + """ + Load raster, optionally crop to bbox. + + Args: + path_str: Path to raster file + bbox: Optional bounding box [minx, miny, maxx, maxy] + band: Band index to read (0-based) + coerce_f64_to_f32: If True, coerce array to float32 (default: True for memory efficiency) + + Returns: + Tuple of (array, transform, crs_wkt, no_data_value) + """ + # Load raster, optionally crop to bbox + path = check_path(path_str, make_dir=False) + if not path.exists(): + raise FileNotFoundError(f"Raster file {path} does not exist.") + if GDAL_ENV is False: + with rasterio.open(path) as dataset: + _assert_north_up(dataset.transform) + crs_wkt = dataset.crs.to_wkt() if dataset.crs is not None else None + no_data_val = dataset.nodata + transform = dataset.transform + if bbox is not None: + bbox_tuple = _normalise_bbox(bbox) + snapped_bbox = shrink_bbox_to_pixel_grid( + bbox_tuple, + origin_x=transform.c, + origin_y=transform.f, + pixel_width=transform.a, + pixel_height=transform.e, + ) + _validate_bbox_within_bounds(snapped_bbox, dataset.bounds) + bbox_geom = geometry.box(*snapped_bbox) + rast, trf = mask(dataset, [bbox_geom], crop=True) + else: + rast = dataset.read() + trf = transform + # Convert rasterio Affine to GDAL-style list + trf_arr = [trf.c, trf.a, trf.b, trf.f, trf.d, trf.e] + # rast shape: (bands, rows, cols) + if rast.ndim == 3: + if band < 0 or band >= rast.shape[0]: + raise IndexError(f"Requested band {band} out of range; raster has {rast.shape[0]} band(s)") + rast_arr = rast[band] + # Only convert float64 to float32, leave ints/bools unchanged + if coerce_f64_to_f32 and rast_arr.dtype == np.float64: + rast_arr = rast_arr.astype(np.float32) + else: + rast_arr = rast + # Only convert float64 to float32, leave ints/bools unchanged + if coerce_f64_to_f32 and rast_arr.dtype == np.float64: + rast_arr = rast_arr.astype(np.float32) + else: + dataset = gdal.Open(str(path)) + if dataset is None: + raise FileNotFoundError(f"Could not open {path}") + trf = dataset.GetGeoTransform() + _assert_north_up(trf) + # GetProjection returns WKT string (or empty string) + crs_wkt = dataset.GetProjection() or None + rb = dataset.GetRasterBand(band + 1) + if rb is None: + dataset = None + raise IndexError(f"Requested band {band} out of range in GDAL dataset") + rast_arr = rb.ReadAsArray() + # Only convert float64 to float32, leave ints/bools unchanged + if coerce_f64_to_f32 and rast_arr.dtype == np.float64: + rast_arr = rast_arr.astype(np.float32) + no_data_val = rb.GetNoDataValue() + if bbox is not None: + bbox_tuple = _normalise_bbox(bbox) + snapped_bbox = shrink_bbox_to_pixel_grid( + bbox_tuple, + origin_x=trf[0], + origin_y=trf[3], + pixel_width=trf[1], + pixel_height=trf[5], + ) + bounds = _compute_bounds_from_transform(trf, dataset.RasterXSize, dataset.RasterYSize) + _validate_bbox_within_bounds(snapped_bbox, bounds) + min_x, min_y, max_x, max_y = snapped_bbox + pixel_width = trf[1] + pixel_height = abs(trf[5]) + xoff = int(round((min_x - trf[0]) / pixel_width)) + yoff = int(round((trf[3] - max_y) / pixel_height)) + xsize = int(round((max_x - min_x) / pixel_width)) + ysize = int(round((max_y - min_y) / pixel_height)) + # guard offsets/sizes + if xoff < 0 or yoff < 0 or xsize <= 0 or ysize <= 0: + dataset = None + raise ValueError("Computed window from bbox is out of raster bounds or invalid") + rast_arr = rast_arr[yoff : yoff + ysize, xoff : xoff + xsize] + trf_arr = [min_x, trf[1], 0, max_y, 0, trf[5]] + else: + trf_arr = [trf[0], trf[1], 0, trf[3], 0, trf[5]] + dataset = None # ensure dataset closed + # Handle no-data (support NaN) + if no_data_val is not None and not np.isnan(no_data_val): + logger.info(f"No-data value is {no_data_val}, replacing with NaN") + rast_arr[rast_arr == no_data_val] = np.nan + if rast_arr.size == 0: + raise ValueError("Raster array is empty after loading/cropping") + if rast_arr.min() < 0: + raise ValueError("Raster contains negative values") + return rast_arr, trf_arr, crs_wkt, no_data_val + + +def xy_to_lnglat(crs_wkt: str | None, x, y): + """Convert x, y coordinates to longitude and latitude. + + Accepts scalar or array-like x/y. If crs_wkt is None the inputs are + assumed already to be lon/lat and are returned unchanged. + """ + if crs_wkt is None: + logger.info("No CRS provided, assuming coordinates are already in WGS84 (lon/lat).") + return x, y + + try: + if GDAL_ENV is False: + source_crs = pyproj.CRS(crs_wkt) + target_crs = pyproj.CRS(4326) # WGS84 + transformer = pyproj.Transformer.from_crs(source_crs, target_crs, always_xy=True) + lng, lat = transformer.transform(x, y) + else: + old_cs = gdal.osr.SpatialReference() + old_cs.ImportFromWkt(crs_wkt) + new_cs = gdal.osr.SpatialReference() + new_cs.ImportFromEPSG(4326) + transform = gdal.osr.CoordinateTransformation(old_cs, new_cs) + out = transform.TransformPoint(float(x), float(y)) + lng, lat = out[0], out[1] + + return lng, lat + + except Exception: + logger.exception("Failed to transform coordinates") + raise + + +def create_empty_raster( + path_str: str | Path, + rows: int, + cols: int, + transform: list[float], + crs_wkt: str, + dtype=np.float32, + nodata: float = -9999, + bands: int = 1, +): + """ + Create an empty GeoTIFF file initialized with nodata. + """ + path = check_path(path_str, make_dir=True) + + if GDAL_ENV is False: + trf = Affine.from_gdal(*transform) + crs = None + if crs_wkt: + crs = pyproj.CRS(crs_wkt) + + with rasterio.open( + path, + "w", + driver="GTiff", + height=rows, + width=cols, + count=bands, + dtype=dtype, + crs=crs, + transform=trf, + nodata=nodata, + ) as dst: + pass # Just create + else: + driver = gdal.GetDriverByName("GTiff") + # Map numpy dtype to GDAL type + gdal_type = gdal.GDT_Float32 # Default + if dtype == np.float64: + gdal_type = gdal.GDT_Float64 + elif dtype == np.int32: + gdal_type = gdal.GDT_Int32 + elif dtype == np.int16: + gdal_type = gdal.GDT_Int16 + elif dtype == np.uint8: + gdal_type = gdal.GDT_Byte + + ds = driver.Create(str(path), cols, rows, bands, gdal_type) + ds.SetGeoTransform(transform) + if crs_wkt: + ds.SetProjection(crs_wkt) + for b in range(1, bands + 1): + band = ds.GetRasterBand(b) + band.SetNoDataValue(nodata) + band.Fill(nodata) + ds = None + + +def write_raster_window(path_str: str | Path, data: np.ndarray, window: tuple[slice, slice], band: int = 1): + """ + Write a data array to a specific window in an existing raster. + window is (row_slice, col_slice). + """ + path = check_path(path_str) + row_slice, col_slice = window + + if GDAL_ENV is False: + from rasterio.windows import Window + + with rasterio.open(path, "r+") as dst: + win = Window( + col_off=col_slice.start, + row_off=row_slice.start, + width=col_slice.stop - col_slice.start, + height=row_slice.stop - row_slice.start, + ) + dst.write(data, band, window=win) + else: + ds = gdal.Open(str(path), gdal.GA_Update) + if ds is None: + raise OSError(f"Could not open {path} for update") + + xoff = col_slice.start + yoff = row_slice.start + xsize = col_slice.stop - col_slice.start + ysize = row_slice.stop - row_slice.start + + ds.GetRasterBand(band).WriteArray(data, xoff, yoff) + ds = None diff --git a/pysrc/umepr/parametersforsolweig.json b/pysrc/solweig/parametersforsolweig.json similarity index 100% rename from pysrc/umepr/parametersforsolweig.json rename to pysrc/solweig/parametersforsolweig.json diff --git a/pysrc/solweig/runner.py b/pysrc/solweig/runner.py new file mode 100644 index 0000000..5b62ce1 --- /dev/null +++ b/pysrc/solweig/runner.py @@ -0,0 +1,1112 @@ +""" +Standalone SOLWEIG runner - no umep dependency required. + +This module provides the core SOLWEIG model runner that works independently +of the umep package. For Rust-optimized execution, use SolweigRunRust from +solweig_runner_rust.py which subclasses SolweigRunCore. +""" + +import json +import logging +import zipfile +from pathlib import Path +from types import SimpleNamespace +from typing import Any, Dict, List, Optional, Tuple + +import geopandas as gpd +import numpy as np +import pandas as pd +from pvlib.iotools import read_epw +from rasterio.transform import Affine, rowcol +from tqdm import tqdm + +from . import io as common +from .configs import ( + EnvironData, + RasterData, + ShadowMatrices, + SolweigConfig, + SvfData, + TgMaps, + WallsData, +) +from .tiles import TileManager +from .algorithms import PET_calculations +from .algorithms import UTCI_calculations as utci + +# Import the Solweig calculation function +from .functions.solweig import Solweig_2025a_calc as Solweig_2025a_calc_default + +try: + from matplotlib import pyplot as plt + PLT = True +except ImportError: + PLT = False + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +def dict_to_namespace(d): + """Recursively convert dicts to SimpleNamespace.""" + if isinstance(d, dict): + return SimpleNamespace(**{k: dict_to_namespace(v) for k, v in d.items()}) + elif isinstance(d, list): + return [dict_to_namespace(i) for i in d] + else: + return d + + +class SolweigRunCore: + """ + Standalone SOLWEIG runner - works without QGIS or umep dependency. + + This class handles: + - Loading configuration and parameters + - Loading raster data (DSM, CDSM, SVF, etc.) + - Loading weather data (MET or EPW files) + - Running the SOLWEIG model + - Saving outputs + + For Rust-optimized calculations, subclass this and override calc_solweig(). + """ + + config: SolweigConfig + progress: Optional[Any] + iters_total: Optional[int] + iters_count: int = 0 + poi_names: List[Any] = [] + poi_pixel_xys: Optional[np.ndarray] + poi_results = [] + woi_names: List[Any] = [] + woi_pixel_xys: Optional[np.ndarray] + woi_results = [] + raster_data: RasterData + location: Dict[str, float] + svf_data: SvfData + environ_data: EnvironData + tg_maps: TgMaps + shadow_mats: ShadowMatrices + walls_data: WallsData + + def __init__( + self, + config_path_str: str, + params_json_path: str, + amax_local_window_m: int = 100, + amax_local_perc: float = 99.9, + use_tiled_loading: bool = False, + tile_size: int = 1024, + ): + """ + Initialize the SOLWEIG runner. + + Args: + config_path_str: Path to the SOLWEIG configuration file (.ini) + params_json_path: Path to the parameters JSON file + amax_local_window_m: Window size for local amax calculation (meters) + amax_local_perc: Percentile for amax calculation + use_tiled_loading: Enable tiled processing for large rasters + tile_size: Tile size when using tiled loading + """ + logger.info("Starting SOLWEIG setup") + + # Load configuration + self.config = SolweigConfig() + self.config.from_file(config_path_str) + self.use_tiled_loading = use_tiled_loading + self.tile_size = tile_size + self.config.validate() + + # Progress tracking settings + self.progress = None + self.iters_total = None + self.iters_count = 0 + self.proceed = True + + # Initialize POI data + self.poi_names = [] + self.poi_pixel_xys = None + self.poi_results = [] + + # Initialize WOI data + self.woi_names = [] + self.woi_pixel_xys = None + self.woi_results = [] + + # Load parameters from JSON file + params_path = common.check_path(params_json_path) + try: + with open(params_path) as f: + params_dict = json.load(f) + self.params = dict_to_namespace(params_dict) + except Exception as e: + raise RuntimeError(f"Failed to load parameters from {params_json_path}: {e}") + + # Initialize SVF and Raster data + if self.use_tiled_loading: + self._init_tiled(amax_local_window_m, amax_local_perc) + else: + self._init_standard(amax_local_window_m, amax_local_perc) + + # Load weather data + if self.config.use_epw_file: + self.environ_data = self.load_epw_weather() + logger.info("Weather data loaded from EPW file") + else: + self.environ_data = self.load_met_weather(header_rows=1, delim=" ") + logger.info("Weather data loaded from MET file") + + # Load POI data if configured + if self.config.poi_path: + self.load_poi_data() + logger.info("POI data loaded from %s", self.config.poi_path) + + # Load WOI data if configured + if self.config.woi_path: + self.load_woi_data() + logger.info("WOI data loaded from %s", self.config.woi_path) + + def _init_standard(self, amax_local_window_m: int, amax_local_perc: float): + """Initialize with standard (non-tiled) loading.""" + logger.info("Using eager loading for raster data") + self.svf_data = SvfData(self.config) + self.raster_data = RasterData( + self.config, + self.params, + self.svf_data, + amax_local_window_m, + amax_local_perc, + ) + # Location data + left_x = self.raster_data.trf_arr[0] + top_y = self.raster_data.trf_arr[3] + lng, lat = common.xy_to_lnglat(self.raster_data.crs_wkt, left_x, top_y) + alt = float(np.nanmedian(self.raster_data.dsm)) + if alt < 0: + alt = 3 + self.location = {"longitude": lng, "latitude": lat, "altitude": alt} + + self.rows = self.raster_data.rows + self.cols = self.raster_data.cols + self.transform = self.raster_data.trf_arr + self.crs = self.raster_data.crs_wkt + + def _init_tiled(self, amax_local_window_m: int, amax_local_perc: float): + """Initialize with tiled loading for large rasters.""" + logger.info("Using tiled loading for raster data") + + # Get metadata from DSM to initialize TileManager and Location + dsm_meta = common.get_raster_metadata(self.config.dsm_path) + rows = dsm_meta["rows"] + cols = dsm_meta["cols"] + pixel_size = dsm_meta["transform"][1] + + # Check if svf.tif exists, if not unzip + svf_file = Path(self.config.working_dir) / "svf.tif" + if not svf_file.exists(): + svf_zip_path = Path(self.config.svf_path).absolute() + if not svf_zip_path.exists(): + raise FileNotFoundError( + f"SVF zip file not found at {svf_zip_path} and extracted files not found in {self.config.working_dir}. " + "Please run SVF generation first." + ) + logger.info("Unzipping SVF files for tiled access...") + with zipfile.ZipFile(str(svf_zip_path), "r") as zip_ref: + zip_ref.extractall(self.config.working_dir) + + # Initialize TileManager + self.tile_manager = TileManager( + rows=rows, + cols=cols, + tile_size=self.tile_size, + pixel_size=pixel_size, + buffer_dist=150.0, + ) + + # Location data from metadata + left_x = dsm_meta["transform"][0] + top_y = dsm_meta["transform"][3] + lng, lat = common.xy_to_lnglat(dsm_meta["crs"], left_x, top_y) + + # Read center altitude + center_r, center_c = rows // 2, cols // 2 + center_val = common.read_raster_window( + self.config.dsm_path, (slice(center_r, center_r + 1), slice(center_c, center_c + 1)) + ) + alt = float(center_val[0, 0]) + if alt < 0: + alt = 3 + + self.location = {"longitude": lng, "latitude": lat, "altitude": alt} + + # Store metadata + self.rows = rows + self.cols = cols + self.transform = dsm_meta["transform"] + self.crs = dsm_meta["crs"] + + # Defer data loading + self.raster_data = None + self.svf_data = None + self.shadow_mats = None + self.tg_maps = None + self.walls_data = None + + # Store params for tiled instantiation + self.amax_local_window_m = amax_local_window_m + self.amax_local_perc = amax_local_perc + + def prep_progress(self, num: int) -> None: + """Prepare progress bar for CLI.""" + self.iters_total = num + self.iters_count = 0 + self.progress = tqdm(total=num, desc="Running SOLWEIG", unit="step") + + def iter_progress(self) -> bool: + """Update progress bar.""" + self.progress.update(1) + return True + + def load_poi_data(self) -> Tuple[Any, Any]: + """Load points of interest (POIs) from a file.""" + poi_path_str = str(common.check_path(self.config.poi_path)) + pois_gdf = gpd.read_file(poi_path_str) + trf = Affine.from_gdal(*self.transform) + self.poi_pixel_xys = np.zeros((len(pois_gdf), 3), dtype=np.float32) - 999 + self.poi_names = [] + for n, (idx, row) in enumerate(pois_gdf.iterrows()): + self.poi_names.append(idx) + y, x = rowcol(trf, row["geometry"].centroid.x, row["geometry"].centroid.y) + self.poi_pixel_xys[n] = (n, x, y) + + def save_poi_results(self) -> None: + """Save points of interest (POIs) results to a file.""" + xs = [r["col_idx"] * self.transform[1] + self.transform[0] for r in self.poi_results] + ys = [r["row_idx"] * self.transform[1] + self.transform[3] for r in self.poi_results] + pois_gdf = gpd.GeoDataFrame( + self.poi_results, + geometry=gpd.points_from_xy(xs, ys), + crs=self.crs, + ) + pois_gdf["snapshot"] = pd.to_datetime( + pois_gdf["yyyy"].astype(int).astype(str) + + "-" + + pois_gdf["id"].astype(int).astype(str).str.zfill(3) + + " " + + pois_gdf["it"].astype(int).astype(str).str.zfill(2) + + ":" + + pois_gdf["imin"].astype(int).astype(str).str.zfill(2), + format="%Y-%j %H:%M", + ) + pois_gdf.to_file(self.config.output_dir + "/POI.gpkg", driver="GPKG") + + def load_woi_data(self) -> Tuple[Any, Any]: + """Load walls of interest (WOIs) from a file.""" + woi_gdf = gpd.read_file(self.config.woi_file) + trf = Affine.from_gdal(*self.transform) + self.woi_pixel_xys = np.zeros((len(woi_gdf), 3), dtype=np.float32) - 999 + self.woi_names = [] + for n, (idx, row) in enumerate(woi_gdf.iterrows()): + self.woi_names.append(idx) + y, x = rowcol(trf, row["geometry"].centroid.x, row["geometry"].centroid.y) + self.woi_pixel_xys[n] = (n, x, y) + + def save_woi_results(self) -> None: + """Save walls of interest (WOIs) results to a file.""" + xs = [r["col_idx"] * self.transform[1] + self.transform[0] for r in self.woi_results] + ys = [r["row_idx"] * self.transform[1] + self.transform[3] for r in self.woi_results] + woi_gdf = gpd.GeoDataFrame( + self.woi_results, + geometry=gpd.points_from_xy(xs, ys), + crs=self.crs, + ) + woi_gdf["snapshot"] = pd.to_datetime( + woi_gdf["yyyy"].astype(int).astype(str) + + "-" + + woi_gdf["id"].astype(int).astype(str).str.zfill(3) + + " " + + woi_gdf["it"].astype(int).astype(str).str.zfill(2) + + ":" + + woi_gdf["imin"].astype(int).astype(str).str.zfill(2), + format="%Y-%j %H:%M", + ) + woi_gdf.to_file(self.config.output_dir + "/WOI.gpkg", driver="GPKG") + + def load_epw_weather(self) -> EnvironData: + """Load weather data from an EPW file.""" + epw_path_str = str(common.check_path(self.config.epw_path)) + epw_df, epw_info = read_epw(epw_path_str) + tz = epw_df.index.tz + start_date = pd.Timestamp( + year=self.config.epw_start_date[0], + month=self.config.epw_start_date[1], + day=self.config.epw_start_date[2], + hour=self.config.epw_start_date[3], + tzinfo=tz, + ) + end_date = pd.Timestamp( + year=self.config.epw_end_date[0], + month=self.config.epw_end_date[1], + day=self.config.epw_end_date[2], + hour=self.config.epw_end_date[3], + tzinfo=tz, + ) + filtered_df = epw_df.loc[start_date:end_date] + filtered_df = filtered_df[filtered_df.index.hour.isin(self.config.epw_hours)] + + if len(filtered_df) == 0: + raise ValueError("No EPW dates intersect start and end dates and / or hours.") + + umep_df = pd.DataFrame( + { + "iy": filtered_df.index.year, + "id": filtered_df.index.dayofyear, + "it": filtered_df.index.hour, + "imin": filtered_df.index.minute, + "Q": -999, + "QH": -999, + "QE": -999, + "Qs": -999, + "Qf": -999, + "Wind": filtered_df["wind_speed"], + "RH": filtered_df["relative_humidity"], + "Tair": filtered_df["temp_air"], + "pres": filtered_df["atmospheric_pressure"].astype(np.float32), + "rain": -999, + "Kdown": filtered_df["ghi"], + "snow": filtered_df["snow_depth"], + "ldown": filtered_df["ghi_infrared"], + "fcld": filtered_df["total_sky_cover"], + "wuh": filtered_df["precipitable_water"], + "xsmd": -999, + "lai_hr": -999, + "Kdiff": filtered_df["dhi"], + "Kdir": filtered_df["dni"], + "Wdir": filtered_df["wind_direction"], + } + ) + + umep_df_filt = umep_df[(umep_df["Kdown"] < 0) & (umep_df["Kdown"] > 1300)] + if len(umep_df_filt): + raise ValueError("Error: Kdown - beyond what is expected") + + umep_df = umep_df.fillna(-999) + + return EnvironData( + self.config, + self.params, + YYYY=umep_df["iy"].to_numpy(dtype=np.float32), + DOY=umep_df["id"].to_numpy(dtype=np.float32), + hours=umep_df["it"].to_numpy(dtype=np.float32), + minu=umep_df["imin"].to_numpy(dtype=np.float32), + Ta=umep_df["Tair"].to_numpy(dtype=np.float32), + RH=umep_df["RH"].to_numpy(dtype=np.float32), + radG=umep_df["Kdown"].to_numpy(dtype=np.float32), + radD=umep_df["ldown"].to_numpy(dtype=np.float32), + radI=umep_df["Kdiff"].to_numpy(dtype=np.float32), + P=umep_df["pres"].to_numpy(dtype=np.float32) / 100.0, + Ws=umep_df["Wind"].to_numpy(dtype=np.float32), + location=self.location, + UTC=self.config.utc, + ) + + def load_met_weather(self, header_rows: int = 1, delim: str = " ") -> EnvironData: + """Load weather data from a MET file.""" + met_path_str = str(common.check_path(self.config.met_path)) + met_data = np.loadtxt(met_path_str, skiprows=header_rows, delimiter=delim, dtype=np.float32) + return EnvironData( + self.config, + self.params, + YYYY=met_data[:, 0], + DOY=met_data[:, 1], + hours=met_data[:, 2], + minu=met_data[:, 3], + Ta=met_data[:, 11], + RH=met_data[:, 10], + radG=met_data[:, 14], + radD=met_data[:, 21], + radI=met_data[:, 22], + P=met_data[:, 12], + Ws=met_data[:, 9], + location=self.location, + UTC=self.config.utc, + ) + + def calc_solweig( + self, + iter: int, + elvis: float, + first: float, + second: float, + firstdaytime: float, + timeadd: float, + timestepdec: float, + posture, + ): + """ + Calculate SOLWEIG results for a given iteration. + + Override this method in subclasses to use Rust-optimized calculations. + """ + return Solweig_2025a_calc_default( + iter, + self.raster_data.dsm, + self.raster_data.scale, + self.raster_data.rows, + self.raster_data.cols, + self.svf_data.svf, + self.svf_data.svf_north, + self.svf_data.svf_west, + self.svf_data.svf_east, + self.svf_data.svf_south, + self.svf_data.svf_veg, + self.svf_data.svf_veg_north, + self.svf_data.svf_veg_east, + self.svf_data.svf_veg_south, + self.svf_data.svf_veg_west, + self.svf_data.svf_veg_blocks_bldg_sh, + self.svf_data.svf_veg_blocks_bldg_sh_east, + self.svf_data.svf_veg_blocks_bldg_sh_south, + self.svf_data.svf_veg_blocks_bldg_sh_west, + self.svf_data.svf_veg_blocks_bldg_sh_north, + self.raster_data.cdsm, + self.raster_data.tdsm, + self.params.Albedo.Effective.Value.Walls, + self.params.Tmrt_params.Value.absK, + self.params.Tmrt_params.Value.absL, + self.params.Emissivity.Value.Walls, + posture.Fside, + posture.Fup, + posture.Fcyl, + self.environ_data.altitude[iter], + self.environ_data.azimuth[iter], + self.environ_data.zen[iter], + self.environ_data.jday[iter], + self.config.use_veg_dem, + self.config.only_global, + self.raster_data.buildings, + self.location, + self.environ_data.psi[iter], + self.config.use_landcover, + self.raster_data.lcgrid, + self.environ_data.dectime[iter], + self.environ_data.altmax[iter], + self.raster_data.wallaspect, + self.raster_data.wallheight, + int(self.config.person_cylinder), + elvis, + self.environ_data.Ta[iter], + self.environ_data.RH[iter], + self.environ_data.radG[iter], + self.environ_data.radD[iter], + self.environ_data.radI[iter], + self.environ_data.P[iter], + self.raster_data.amaxvalue, + self.raster_data.bush, + self.environ_data.Twater[iter], + self.tg_maps.TgK, + self.tg_maps.Tstart, + self.tg_maps.alb_grid, + self.tg_maps.emis_grid, + self.tg_maps.TgK_wall, + self.tg_maps.Tstart_wall, + self.tg_maps.TmaxLST, + self.tg_maps.TmaxLST_wall, + first, + second, + self.svf_data.svfalfa, + self.raster_data.svfbuveg, + firstdaytime, + timeadd, + timestepdec, + self.tg_maps.Tgmap1, + self.tg_maps.Tgmap1E, + self.tg_maps.Tgmap1S, + self.tg_maps.Tgmap1W, + self.tg_maps.Tgmap1N, + self.environ_data.CI[iter], + self.tg_maps.TgOut1, + self.shadow_mats.diffsh, + self.shadow_mats.shmat, + self.shadow_mats.vegshmat, + self.shadow_mats.vbshvegshmat, + int(self.config.use_aniso), + self.shadow_mats.asvf, + self.shadow_mats.patch_option, + self.walls_data.voxelMaps, + self.walls_data.voxelTable, + self.environ_data.Ws[iter], + self.config.use_wall_scheme, + self.walls_data.timeStep, + self.shadow_mats.steradians, + self.walls_data.walls_scheme, + self.walls_data.dirwalls_scheme, + ) + + def run(self) -> None: + """Run the SOLWEIG model.""" + if self.use_tiled_loading: + self.run_tiled() + else: + self.run_standard() + + def run_standard(self) -> None: + """Run SOLWEIG with standard (non-tiled) processing.""" + logger.info("Initializing data for standard execution...") + + # Initialize shadow matrices + self.shadow_mats = ShadowMatrices(self.config, self.params, self.svf_data) + logger.info("Shadow matrices initialized") + + # Initialize Tg maps + self.tg_maps = TgMaps( + self.config.use_landcover, + self.params, + self.raster_data, + ) + logger.info("TgMaps initialized") + + # Initialize walls data + self.walls_data = WallsData( + self.config, + self.params, + self.raster_data, + self.environ_data, + self.tg_maps, + ) + logger.info("WallsData initialized") + + # Posture settings + if self.params.Tmrt_params.Value.posture == "Standing": + posture = self.params.Posture.Standing.Value + else: + posture = self.params.Posture.Sitting.Value + + first = np.round(posture.height) + if first == 0.0: + first = 1.0 + second = np.round(posture.height * 20.0) + + # Time initialization + if self.environ_data.Ta.__len__() == 1: + timestepdec = 0 + else: + timestepdec = self.environ_data.dectime[1] - self.environ_data.dectime[0] + timeadd = 0.0 + firstdaytime = 1.0 + + # Tmrt aggregation + tmrt_agg = np.zeros((self.raster_data.rows, self.raster_data.cols), dtype=np.float32) + + # Number of iterations + num = len(self.environ_data.Ta) + self.prep_progress(num) + logger.info("Progress tracking prepared for %d iterations", num) + + elvis = 0.0 + + for i in range(num): + self.proceed = self.iter_progress() + if not self.proceed: + break + self.iters_count += 1 + + # Run SOLWEIG calculation + ( + Tmrt, + Kdown, + Kup, + Ldown, + Lup, + Tg, + ea, + esky, + I0, + CI, + shadow, + firstdaytime, + timestepdec, + timeadd, + self.tg_maps.Tgmap1, + self.tg_maps.Tgmap1E, + self.tg_maps.Tgmap1S, + self.tg_maps.Tgmap1W, + self.tg_maps.Tgmap1N, + Keast, + Ksouth, + Kwest, + Knorth, + Least, + Lsouth, + Lwest, + Lnorth, + KsideI, + self.tg_maps.TgOut1, + TgOut, + radIout, + radDout, + Lside, + Lsky_patch_characteristics, + CI_Tg, + CI_TgG, + KsideD, + dRad, + Kside, + self.shadow_mats.steradians, + voxelTable, + ) = self.calc_solweig( + i, + elvis, + first, + second, + firstdaytime, + timeadd, + timestepdec, + posture, + ) + + # Aggregate Tmrt + if (~np.isfinite(Tmrt)).any() and self.iters_count > 1: + logger.warning("Tmrt contains non-finite values, replacing with preceding average.") + tmrt_avg = tmrt_agg / self.iters_count + tmrt_agg = np.where(np.isfinite(Tmrt), tmrt_agg + Tmrt, tmrt_avg) + elif (~np.isfinite(tmrt_agg)).any(): + raise ValueError("Tmrt aggregation contains non-finite values.") + else: + tmrt_agg = tmrt_agg + Tmrt + + # Time code for output files + if self.environ_data.altitude[i] > 0: + w = "D" + else: + w = "N" + XH = "0" if self.environ_data.hours[i] < 10 else "" + XM = "0" if self.environ_data.minu[i] < 10 else "" + + # Process POIs + if self.poi_pixel_xys is not None: + for n in range(self.poi_pixel_xys.shape[0]): + idx, row_idx, col_idx = self.poi_pixel_xys[n] + row_idx = int(row_idx) + col_idx = int(col_idx) + result_row = { + "poi_idx": idx, + "col_idx": col_idx, + "row_idx": row_idx, + "yyyy": self.environ_data.YYYY[i], + "id": self.environ_data.jday[i], + "it": self.environ_data.hours[i], + "imin": self.environ_data.minu[i], + "dectime": self.environ_data.dectime[i], + "altitude": self.environ_data.altitude[i], + "azimuth": self.environ_data.azimuth[i], + "kdir": radIout, + "kdiff": radDout, + "kglobal": self.environ_data.radG[i], + "kdown": Kdown[row_idx, col_idx], + "kup": Kup[row_idx, col_idx], + "keast": Keast[row_idx, col_idx], + "ksouth": Ksouth[row_idx, col_idx], + "kwest": Kwest[row_idx, col_idx], + "knorth": Knorth[row_idx, col_idx], + "ldown": Ldown[row_idx, col_idx], + "lup": Lup[row_idx, col_idx], + "least": Least[row_idx, col_idx], + "lsouth": Lsouth[row_idx, col_idx], + "lwest": Lwest[row_idx, col_idx], + "lnorth": Lnorth[row_idx, col_idx], + "Ta": self.environ_data.Ta[i], + "Tg": TgOut[row_idx, col_idx], + "RH": self.environ_data.RH[i], + "Esky": esky, + "Tmrt": Tmrt[row_idx, col_idx], + "I0": I0, + "CI": CI, + "Shadow": shadow[row_idx, col_idx], + "SVF_b": self.svf_data.svf[row_idx, col_idx], + "SVF_bv": self.raster_data.svfbuveg[row_idx, col_idx], + "KsideI": KsideI[row_idx, col_idx], + } + # PET and UTCI calculations + WsPET = (1.1 / self.params.Wind_Height.Value.magl) ** 0.2 * self.environ_data.Ws[i] + WsUTCI = (10.0 / self.params.Wind_Height.Value.magl) ** 0.2 * self.environ_data.Ws[i] + resultPET = PET_calculations._PET( + self.environ_data.Ta[i], + self.environ_data.RH[i], + Tmrt[row_idx, col_idx], + WsPET, + self.params.PET_settings.Value.Weight, + self.params.PET_settings.Value.Age, + self.params.PET_settings.Value.Height, + self.params.PET_settings.Value.Activity, + self.params.PET_settings.Value.clo, + self.params.PET_settings.Value.Sex, + ) + result_row["PET"] = resultPET + resultUTCI = utci.utci_calculator( + self.environ_data.Ta[i], self.environ_data.RH[i], Tmrt[row_idx, col_idx], WsUTCI + ) + result_row["UTCI"] = resultUTCI + result_row["CI_Tg"] = CI_Tg + result_row["CI_TgG"] = CI_TgG + result_row["KsideD"] = KsideD[row_idx, col_idx] + result_row["Lside"] = Lside[row_idx, col_idx] + result_row["diffDown"] = dRad[row_idx, col_idx] + result_row["Kside"] = Kside[row_idx, col_idx] + self.poi_results.append(result_row) + + time_code = ( + str(int(self.environ_data.YYYY[i])) + + "_" + + str(int(self.environ_data.DOY[i])) + + "_" + + XH + + str(int(self.environ_data.hours[i])) + + XM + + str(int(self.environ_data.minu[i])) + + w + ) + + # Save outputs + if self.config.output_tmrt: + common.save_raster( + self.config.output_dir + "/Tmrt_" + time_code + ".tif", + Tmrt, + self.raster_data.trf_arr, + self.raster_data.crs_wkt, + self.raster_data.nd_val, + coerce_f64_to_f32=True, + ) + if self.config.output_kup: + common.save_raster( + self.config.output_dir + "/Kup_" + time_code + ".tif", + Kup, + self.raster_data.trf_arr, + self.raster_data.crs_wkt, + self.raster_data.nd_val, + coerce_f64_to_f32=True, + ) + if self.config.output_kdown: + common.save_raster( + self.config.output_dir + "/Kdown_" + time_code + ".tif", + Kdown, + self.raster_data.trf_arr, + self.raster_data.crs_wkt, + self.raster_data.nd_val, + coerce_f64_to_f32=True, + ) + if self.config.output_sh: + common.save_raster( + self.config.output_dir + "/Shadow_" + time_code + ".tif", + shadow, + self.raster_data.trf_arr, + self.raster_data.crs_wkt, + self.raster_data.nd_val, + coerce_f64_to_f32=True, + ) + + # Abort if loop was broken + if not self.proceed: + return + + # Save POI results + if self.poi_results: + self.save_poi_results() + + # Save WOI results + if self.woi_results: + self.save_woi_results() + + # Save average Tmrt + if self.iters_count > 0: + tmrt_avg = tmrt_agg / self.iters_count + common.save_raster( + self.config.output_dir + "/Tmrt_average.tif", + tmrt_avg, + self.raster_data.trf_arr, + self.raster_data.crs_wkt, + self.raster_data.nd_val, + coerce_f64_to_f32=True, + ) + + def run_tiled(self) -> None: + """Run SOLWEIG with tiled processing for large rasters (Tile -> Timestep loop).""" + logger.info("Starting tiled execution") + + # Posture settings (same as standard) + if self.params.Tmrt_params.Value.posture == "Standing": + posture = self.params.Posture.Standing.Value + else: + posture = self.params.Posture.Sitting.Value + + first = np.round(posture.height) + if first == 0.0: + first = 1.0 + second = np.round(posture.height * 20.0) + + # Time variables + num = len(self.environ_data.Ta) + if num == 0: + logger.error("No timesteps to process") + return + + if self.environ_data.Ta.__len__() == 1: + timestepdec = 0 + else: + timestepdec = self.environ_data.dectime[1] - self.environ_data.dectime[0] + + # Prepare output files - generate time codes and create empty rasters + logger.info("Initializing output rasters...") + time_codes = [] + for i in range(num): + if self.environ_data.altitude[i] > 0: + w = "D" + else: + w = "N" + XH = "0" if self.environ_data.hours[i] < 10 else "" + XM = "0" if self.environ_data.minu[i] < 10 else "" + + time_code = ( + str(int(self.environ_data.YYYY[i])) + + "_" + + str(int(self.environ_data.DOY[i])) + + "_" + + XH + + str(int(self.environ_data.hours[i])) + + XM + + str(int(self.environ_data.minu[i])) + + w + ) + time_codes.append(time_code) + + # Create empty rasters for enabled outputs + outputs = [ + ("output_tmrt", "Tmrt"), + ("output_kup", "Kup"), + ("output_kdown", "Kdown"), + ("output_sh", "Shadow"), + ] + + for cfg_attr, prefix in outputs: + if getattr(self.config, cfg_attr): + out_path = str(self.config.output_dir) + "/" + prefix + "_" + time_code + ".tif" + common.create_empty_raster( + out_path, + self.rows, + self.cols, + self.transform, + str(self.crs) if self.crs else "", + nodata=-9999.0, + ) + + # Create average Tmrt raster + common.create_empty_raster( + str(self.config.output_dir) + "/Tmrt_average.tif", + self.rows, + self.cols, + self.transform, + str(self.crs) if self.crs else "", + nodata=-9999.0, + ) + + # Prepare progress + self.prep_progress(self.tile_manager.total_tiles * num) + + # Initialize state for all tiles + logger.info("Initializing state for all tiles...") + tile_states = [] + tmrt_agg_tiles = [] + + tiles_list = list(self.tile_manager.get_tiles()) + if len(tiles_list) == 0: + logger.error("No tiles generated by TileManager") + return + + logger.info(f"Initializing {len(tiles_list)} tiles...") + + for tile in tiles_list: + # Load minimal data for TgMaps (lcgrid) + if self.config.use_landcover: + lcgrid = common.read_raster_window(self.config.lc_path, tile.full_slice) + else: + lcgrid = None + + # Mock RasterData for TgMaps initialization + mock_rd = SimpleNamespace( + rows=tile.full_shape[0], + cols=tile.full_shape[1], + lcgrid=lcgrid, + ) + + tg_maps = TgMaps(self.config.use_landcover, self.params, mock_rd) + tile_states.append(tg_maps) + tmrt_agg_tiles.append(np.zeros(tile.core_shape, dtype=np.float32)) + + # Reset time variables + elvis = 0.0 + firstdaytime = 1.0 + timeadd = 0.0 + + # Cache for steradians (constant across tiles and timesteps) + cached_steradians = None + + # Iterate timesteps + for i in range(num): + logger.debug(f"Processing timestep {i + 1}/{num}") + + # Capture current time state + current_firstdaytime = firstdaytime + current_timeadd = timeadd + current_timestepdec = timestepdec + + next_firstdaytime = None + next_timeadd = None + next_timestepdec = None + + # Iterate tiles + for tile_idx, tile in enumerate(self.tile_manager.get_tiles()): + self.proceed = self.iter_progress() + if not self.proceed: + break + + # Load tile data + self.svf_data = SvfData(self.config, tile_spec=tile) + self.raster_data = RasterData( + self.config, + self.params, + self.svf_data, + self.amax_local_window_m, + self.amax_local_perc, + tile_spec=tile, + ) + + # Restore state + self.tg_maps = tile_states[tile_idx] + + # Initialize other components for this tile + self.shadow_mats = ShadowMatrices(self.config, self.params, self.svf_data, tile_spec=tile) + + # Restore cached steradians if available + if cached_steradians is not None: + self.shadow_mats.steradians = cached_steradians + + self.walls_data = WallsData( + self.config, + self.params, + self.raster_data, + self.environ_data, + self.tg_maps, + tile_spec=tile, + ) + + # Run calculation + ( + Tmrt, Kdown, Kup, Ldown, Lup, Tg, ea, esky, I0, CI, shadow, + res_firstdaytime, res_timestepdec, res_timeadd, + Tgmap1_new, Tgmap1E_new, Tgmap1S_new, Tgmap1W_new, Tgmap1N_new, + Keast, Ksouth, Kwest, Knorth, Least, Lsouth, Lwest, Lnorth, + KsideI, TgOut1_new, TgOut, radIout, radDout, Lside, + Lsky_patch_characteristics, CI_Tg, CI_TgG, KsideD, dRad, Kside, + steradians_new, voxelTable, + ) = self.calc_solweig( + i, elvis, first, second, + current_firstdaytime, current_timeadd, current_timestepdec, posture, + ) + + # Update tile state with new thermal arrays + tile_states[tile_idx].Tgmap1 = Tgmap1_new + tile_states[tile_idx].Tgmap1E = Tgmap1E_new + tile_states[tile_idx].Tgmap1S = Tgmap1S_new + tile_states[tile_idx].Tgmap1W = Tgmap1W_new + tile_states[tile_idx].Tgmap1N = Tgmap1N_new + tile_states[tile_idx].TgOut1 = TgOut1_new + + # Update steradians cache + if steradians_new is not None: + self.shadow_mats.steradians = steradians_new + + # Capture next state + next_firstdaytime = res_firstdaytime + next_timestepdec = res_timestepdec + next_timeadd = res_timeadd + + # Cache steradians if first calculation + if cached_steradians is None and steradians_new is not None and np.any(steradians_new): + cached_steradians = steradians_new + + # Crop results to core (remove buffer) + core_slice = tile.core_slice() + Tmrt_core = Tmrt[core_slice] + + # Write outputs + time_code = time_codes[i] + + if self.config.output_tmrt: + common.write_raster_window( + str(self.config.output_dir) + "/Tmrt_" + time_code + ".tif", + Tmrt_core, + tile.write_window.to_slices(), + ) + if self.config.output_kup: + common.write_raster_window( + str(self.config.output_dir) + "/Kup_" + time_code + ".tif", + Kup[core_slice], + tile.write_window.to_slices(), + ) + if self.config.output_kdown: + common.write_raster_window( + str(self.config.output_dir) + "/Kdown_" + time_code + ".tif", + Kdown[core_slice], + tile.write_window.to_slices(), + ) + if self.config.output_sh: + common.write_raster_window( + str(self.config.output_dir) + "/Shadow_" + time_code + ".tif", + shadow[core_slice], + tile.write_window.to_slices(), + ) + + # Aggregate Tmrt (handle NaN and inf values safely) + if (~np.isfinite(Tmrt_core)).any(): + n_invalid = (~np.isfinite(Tmrt_core)).sum() + logger.warning(f"Timestep {i + 1}, Tile {tile_idx + 1}: {n_invalid} non-finite Tmrt values") + + tmrt_core_safe = np.nan_to_num(Tmrt_core, nan=0.0, posinf=0.0, neginf=0.0) + tmrt_agg_tiles[tile_idx] += tmrt_core_safe + + # Clean up tile data to free memory + self.svf_data = None + self.raster_data = None + self.shadow_mats = None + self.walls_data = None + + if not self.proceed: + break + + # Update state for next timestep + if next_firstdaytime is not None: + firstdaytime = next_firstdaytime + timestepdec = next_timestepdec + timeadd = next_timeadd + + # Abort if loop was broken + if not self.proceed: + return + + # Save POI results if any + if self.poi_results: + self.save_poi_results() + + # Write average Tmrt + logger.info("Writing average Tmrt raster...") + for tile_idx, tile in enumerate(self.tile_manager.get_tiles()): + tmrt_avg_tile = tmrt_agg_tiles[tile_idx] / num + common.write_raster_window( + str(self.config.output_dir) + "/Tmrt_average.tif", + tmrt_avg_tile, + tile.write_window.to_slices(), + ) + + logger.info("Tiled execution complete") diff --git a/pysrc/umepr/shadows.py b/pysrc/solweig/shadows.py similarity index 99% rename from pysrc/umepr/shadows.py rename to pysrc/solweig/shadows.py index c23c55b..69c6d08 100644 --- a/pysrc/umepr/shadows.py +++ b/pysrc/solweig/shadows.py @@ -10,7 +10,7 @@ import pyproj from rasterio.transform import Affine, xy -from umep import common +from . import io as common from .functions import daily_shading as dsh diff --git a/pysrc/umepr/solweig_runner_rust.py b/pysrc/solweig/solweig_runner_rust.py similarity index 94% rename from pysrc/umepr/solweig_runner_rust.py rename to pysrc/solweig/solweig_runner_rust.py index 2971486..e46f168 100644 --- a/pysrc/umepr/solweig_runner_rust.py +++ b/pysrc/solweig/solweig_runner_rust.py @@ -1,15 +1,18 @@ """ -Subclasses SolweigRunCore - swaps in solweig function which calls Rust implementations of shadowing and GVF calculations +Subclasses SolweigRunCore - swaps in solweig function which calls Rust implementations +of shadowing and GVF calculations. + +This module uses the standalone SolweigRunCore from the solweig package, +with Rust-optimized calculation functions. """ from typing import Any -from umep.functions.SOLWEIGpython.solweig_runner_core import SolweigRunCore - +from .runner import SolweigRunCore from .functions.solweig import Solweig_2025a_calc as Solweig_2025a_calc_hybrid -class SolweigRunRust(SolweigRunCore): +class SolweigRunRust(SolweigRunCore): # type: ignore """Class to run the SOLWEIG algorithm with Rust optimisations.""" def calc_solweig( diff --git a/pysrc/umepr/svf.py b/pysrc/solweig/svf.py similarity index 98% rename from pysrc/umepr/svf.py rename to pysrc/solweig/svf.py index 8955c92..3fcb138 100644 --- a/pysrc/umepr/svf.py +++ b/pysrc/solweig/svf.py @@ -11,8 +11,9 @@ from pathlib import Path import numpy as np -from umep import class_configs, common -from umep.tile_manager import TileManager +from . import configs as class_configs +from . import io as common +from .tiles import TileManager from .rustalgos import skyview @@ -57,13 +58,7 @@ def generate_svf( rows = dsm_meta["rows"] cols = dsm_meta["cols"] - # Handle rasterio vs GDAL transform - if "res" in dsm_meta: - # Convert Rasterio Affine to GDAL transform - # Affine: (a, b, c, d, e, f) -> GDAL: (c, a, b, f, d, e) - t = dsm_trf - dsm_trf = [t.c, t.a, t.b, t.f, t.d, t.e] - + # get_raster_metadata already returns transform as GDAL-style list [c, a, b, f, d, e] dsm_pix_size = dsm_trf[1] dsm_scale = 1 / dsm_pix_size diff --git a/pysrc/solweig/tiles.py b/pysrc/solweig/tiles.py new file mode 100644 index 0000000..aab2e79 --- /dev/null +++ b/pysrc/solweig/tiles.py @@ -0,0 +1,355 @@ +""" +Tile manager for lazy loading of large raster datasets with overlaps. +Enables memory-efficient processing by loading data on-demand. +""" + +import logging +from dataclasses import dataclass + +import numpy as np + +from . import io as common + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +@dataclass +class Window: + """Simple window specification with row/col offset and dimensions.""" + + row_off: int + col_off: int + height: int + width: int + + def to_slices(self) -> tuple[slice, slice]: + """Convert to tuple of slices (row_slice, col_slice).""" + return ( + slice(self.row_off, self.row_off + self.height), + slice(self.col_off, self.col_off + self.width), + ) + + +@dataclass +class TileSpec: + """Specification for a tile with overlap.""" + + # Core tile bounds (without overlap) + row_start: int + row_end: int + col_start: int + col_end: int + # Full tile bounds (with overlap) + row_start_full: int + row_end_full: int + col_start_full: int + col_end_full: int + # Overlap sizes + overlap_top: int + overlap_bottom: int + overlap_left: int + overlap_right: int + + @property + def core_shape(self) -> tuple[int, int]: + """Shape of core tile (without overlap).""" + return (self.row_end - self.row_start, self.col_end - self.col_start) + + @property + def full_shape(self) -> tuple[int, int]: + """Shape of full tile (with overlap).""" + return (self.row_end_full - self.row_start_full, self.col_end_full - self.col_start_full) + + def core_slice(self) -> tuple[slice, slice]: + """Get slices for extracting core from full tile.""" + return ( + slice(self.overlap_top, self.overlap_top + self.core_shape[0]), + slice(self.overlap_left, self.overlap_left + self.core_shape[1]), + ) + + @property + def full_slice(self) -> tuple[slice, slice]: + """Get slices for full tile (with overlap).""" + return ( + slice(self.row_start_full, self.row_end_full), + slice(self.col_start_full, self.col_end_full), + ) + + @property + def read_window(self) -> Window: + """Get window for reading full tile (with overlap) from global raster.""" + return Window( + row_off=self.row_start_full, + col_off=self.col_start_full, + height=self.row_end_full - self.row_start_full, + width=self.col_end_full - self.col_start_full, + ) + + @property + def write_window(self) -> Window: + """Get window for writing core tile to global raster.""" + return Window( + row_off=self.row_start, + col_off=self.col_start, + height=self.row_end - self.row_start, + width=self.col_end - self.col_start, + ) + + +class TileManager: + """ + Manages tiled loading of raster data with overlaps for shadow calculations. + + The overlap is calculated based on amaxvalue (max building height) and pixel size + to ensure shadow calculations at tile edges are accurate. + """ + + def __init__( + self, + rows: int, + cols: int, + tile_size: int, + pixel_size: float, + buffer_dist: float = 150.0, + ): + """ + Initialize tile manager. + + Args: + rows: Total number of rows in raster + cols: Total number of columns in raster + tile_size: Size of tiles (without overlap) in pixels + pixel_size: Pixel size in meters + buffer_dist: Buffer distance in meters for overlap (default: 150.0) + """ + self.rows = rows + self.cols = cols + self.tile_size = tile_size + self.pixel_size = pixel_size + self.buffer_dist = buffer_dist + + # Calculate overlap in pixels based on buffer distance + overlap_pixels = int(np.ceil(buffer_dist / pixel_size)) + + # Ensure overlap doesn't exceed tile size + # self.overlap = min(overlap_pixels, tile_size // 2) + # For 150m buffer, we strictly want that coverage. If tile is too small, so be it. + self.overlap = overlap_pixels + + logger.info( + f"TileManager initialized: {rows}x{cols} raster, " + f"tile_size={tile_size}, overlap={self.overlap} pixels " + f"({self.overlap * pixel_size:.1f}m)" + ) + + # Pre-calculate tile specifications + self.tiles = self._generate_tiles() + logger.info(f"Generated {len(self.tiles)} tiles") + + def _generate_tiles(self) -> list[TileSpec]: + """Generate tile specifications with overlaps.""" + tiles = [] + + # Calculate number of tiles in each dimension + n_tiles_row = int(np.ceil(self.rows / self.tile_size)) + n_tiles_col = int(np.ceil(self.cols / self.tile_size)) + + for i in range(n_tiles_row): + for j in range(n_tiles_col): + # Core tile bounds + row_start = i * self.tile_size + row_end = min((i + 1) * self.tile_size, self.rows) + col_start = j * self.tile_size + col_end = min((j + 1) * self.tile_size, self.cols) + + # Calculate overlaps (bounded by raster edges) + overlap_top = self.overlap if i > 0 else 0 + overlap_bottom = self.overlap if row_end < self.rows else 0 + overlap_left = self.overlap if j > 0 else 0 + overlap_right = self.overlap if col_end < self.cols else 0 + + # Full tile bounds with overlap + row_start_full = max(0, row_start - overlap_top) + row_end_full = min(self.rows, row_end + overlap_bottom) + col_start_full = max(0, col_start - overlap_left) + col_end_full = min(self.cols, col_end + overlap_right) + + tiles.append( + TileSpec( + row_start=row_start, + row_end=row_end, + col_start=col_start, + col_end=col_end, + row_start_full=row_start_full, + row_end_full=row_end_full, + col_start_full=col_start_full, + col_end_full=col_end_full, + overlap_top=overlap_top, + overlap_bottom=overlap_bottom, + overlap_left=overlap_left, + overlap_right=overlap_right, + ) + ) + + return tiles + + def get_tile(self, tile_idx: int) -> TileSpec: + """Get tile specification by index.""" + return self.tiles[tile_idx] + + @property + def total_tiles(self) -> int: + """Get total number of tiles.""" + return len(self.tiles) + + def get_tiles(self) -> list[TileSpec]: + """Get list of all tiles.""" + return self.tiles + + +class LazyRasterLoader: + """ + Lazy loader for raster data that loads tiles on demand. + """ + + def __init__( + self, + raster_path: str, + tile_manager: TileManager, + band: int = 0, + coerce_f64_to_f32: bool = True, + ): + """ + Initialize lazy raster loader. + + Args: + raster_path: Path to raster file + tile_manager: TileManager instance + band: Band index to read + coerce_f64_to_f32: Convert float64 to float32 + """ + self.raster_path = raster_path + self.tile_manager = tile_manager + self.band = band + self.coerce_f64_to_f32 = coerce_f64_to_f32 + + # Load metadata only + self._load_metadata() + + # Cache for loaded tiles + self._tile_cache = {} + + def _load_metadata(self): + """Load raster metadata without reading data.""" + meta = common.get_raster_metadata(self.raster_path) + self.shape = (meta["rows"], meta["cols"]) + # We assume float32 if coercing, otherwise we'd need to check meta['dtype'] if we exposed it + self.dtype = np.float32 if self.coerce_f64_to_f32 else np.float64 # Simplified assumption + self.trf_arr = meta["transform"] + self.crs_wkt = meta["crs"] + self.nd_val = meta["nodata"] + + # Verify shape matches tile manager + if self.shape != (self.tile_manager.rows, self.tile_manager.cols): + raise ValueError( + f"Raster shape {self.shape} doesn't match tile manager " + f"({self.tile_manager.rows}, {self.tile_manager.cols})" + ) + + def load_tile(self, tile_idx: int, use_cache: bool = True) -> np.ndarray: + """ + Load a specific tile with overlap. + + Args: + tile_idx: Index of tile to load + use_cache: Whether to use cached tile if available + + Returns: + Tile data with overlap as numpy array + """ + if use_cache and tile_idx in self._tile_cache: + return self._tile_cache[tile_idx] + + tile_spec = self.tile_manager.get_tile(tile_idx) + + window = ( + slice(tile_spec.row_start_full, tile_spec.row_end_full), + slice(tile_spec.col_start_full, tile_spec.col_end_full), + ) + + # Load tile with window + tile_data = common.read_raster_window( + self.raster_path, + window=window, + band=self.band, + ) + + if self.coerce_f64_to_f32 and tile_data.dtype == np.float64: + tile_data = tile_data.astype(np.float32) + + # Ensure contiguous array + tile_data = np.ascontiguousarray(tile_data, dtype=np.float32) + + if use_cache: + self._tile_cache[tile_idx] = tile_data + + return tile_data + + def load_full_raster(self) -> np.ndarray: + """ + Load entire raster (for compatibility with non-tiled code). + Warning: This defeats the purpose of lazy loading! + """ + logger.warning("Loading full raster - this may use significant memory!") + full_data, _, _, _ = common.load_raster( + self.raster_path, + bbox=None, + band=self.band, + coerce_f64_to_f32=self.coerce_f64_to_f32, + ) + return np.ascontiguousarray(full_data, dtype=np.float32) + + def clear_cache(self): + """Clear tile cache to free memory.""" + self._tile_cache.clear() + logger.debug(f"Cleared tile cache for {self.raster_path}") + + +class TiledRasterData: + """ + Container for tiled raster data that mimics the interface of regular numpy arrays + while loading tiles on demand. + """ + + def __init__(self, lazy_loader: LazyRasterLoader): + """ + Initialize tiled raster data. + + Args: + lazy_loader: LazyRasterLoader instance + """ + self.loader = lazy_loader + self.tile_manager = lazy_loader.tile_manager + self.shape = lazy_loader.shape + self.dtype = lazy_loader.dtype + + def get_tile(self, tile_idx: int) -> tuple[np.ndarray, TileSpec]: + """ + Get tile data and specification. + + Returns: + Tuple of (tile_data, tile_spec) + """ + tile_data = self.loader.load_tile(tile_idx) + tile_spec = self.tile_manager.get_tile(tile_idx) + return tile_data, tile_spec + + def to_array(self) -> np.ndarray: + """Convert to full numpy array (loads all data).""" + return self.loader.load_full_raster() + + def __getitem__(self, key): + """Support basic indexing (loads full raster).""" + logger.warning("Direct indexing loads full raster - consider using get_tile()") + return self.to_array()[key] diff --git a/pysrc/solweig/walls.py b/pysrc/solweig/walls.py new file mode 100644 index 0000000..b41beaf --- /dev/null +++ b/pysrc/solweig/walls.py @@ -0,0 +1,57 @@ +""" +Wall height and aspect generation from DSM. + +This algorithm identifies wall pixels and their height from ground and building +digital surface models (DSM) using filters as presented by Lindberg et al. (2015a). +Wall aspect is estimated using a specific linear filter as presented by +Goodwin et al. (1999) and further developed by Lindberg et al. (2015b). + +References: +- Goodwin NR, Coops NC, Tooke TR, Christen A, Voogt JA (2009) + Characterizing urban surface cover and structure with airborne lidar technology. + Can J Remote Sens 35:297–309 +- Lindberg F., Grimmond, C.S.B. and Martilli, A. (2015a) + Sunlit fractions on urban facets - Impact of spatial resolution and approach + Urban Climate DOI: 10.1016/j.uclim.2014.11.006 +- Lindberg F., Jonsson, P. & Honjo, T. and Wästberg, D. (2015b) + Solar energy on building envelopes - 3D modelling in a 2D environment + Solar Energy 115 369–378 +""" + +from pathlib import Path + +from . import io as common +from .algorithms import wallalgorithms as wa + + +def generate_wall_hts( + dsm_path: str, + bbox: list[int] | None, + out_dir: str, + wall_limit: float = 1, +): + """ + Generate wall height and aspect rasters from a DSM. + + Args: + dsm_path: Path to the Digital Surface Model raster + bbox: Bounding box [minx, miny, maxx, maxy] or None for full extent + out_dir: Output directory for wall_hts.tif and wall_aspects.tif + wall_limit: Minimum height to be considered a wall (default: 1m) + + Outputs: + wall_hts.tif: Wall heights in meters + wall_aspects.tif: Wall aspect in degrees (0 = North) + """ + dsm_rast, dsm_transf, dsm_crs, _dsm_nd = common.load_raster(dsm_path, bbox, coerce_f64_to_f32=True) + dsm_scale = 1 / dsm_transf[1] + + out_path = Path(out_dir) + out_path.mkdir(parents=True, exist_ok=True) + out_path_str = str(out_path) + + walls = wa.findwalls(dsm_rast, wall_limit) + common.save_raster(out_path_str + "/" + "wall_hts.tif", walls, dsm_transf, dsm_crs, coerce_f64_to_f32=True) + + dirwalls = wa.filter1Goodwin_as_aspect_v3(walls, dsm_scale, dsm_rast) + common.save_raster(out_path_str + "/" + "wall_aspects.tif", dirwalls, dsm_transf, dsm_crs, coerce_f64_to_f32=True) diff --git a/pysrc/umepr/__init__.py b/pysrc/umepr/__init__.py deleted file mode 100644 index f52e4a5..0000000 --- a/pysrc/umepr/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -UMEP-Rust: Urban Multi-scale Environmental Predictor (Rust implementation) -""" - -import logging - -logger = logging.getLogger(__name__) - -try: - from .rustalgos import GPU_ENABLED, shadowing - - # Export GPU functions at package level - __all__ = ["GPU_ENABLED", "shadowing"] - - # Enable GPU by default if available - if GPU_ENABLED: - shadowing.enable_gpu() - logger.info("GPU acceleration enabled by default") - else: - logger.info("GPU support not compiled in this build") - -except ImportError as e: - # If rustalgos is not available or GPU feature not compiled - logger.warning(f"Failed to import rustalgos GPU functions: {e}") - GPU_ENABLED = False - __all__ = ["GPU_ENABLED"] diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 8bf7fbf..e2416ca 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -5,11 +5,13 @@ mod emissivity_models; mod gpu; mod gvf; mod patch_radiation; +mod pet; mod shadowing; mod sky; mod skyview; mod sun; mod sunlit_shaded_patches; +mod utci; mod vegetation; #[pymodule] @@ -24,6 +26,8 @@ fn rustalgos(py_module: &Bound<'_, PyModule>) -> PyResult<()> { register_gvf_module(py_module)?; register_sky_module(py_module)?; register_vegetation_module(py_module)?; + register_utci_module(py_module)?; + register_pet_module(py_module)?; // Add GPU feature flag #[cfg(feature = "gpu")] @@ -31,7 +35,7 @@ fn rustalgos(py_module: &Bound<'_, PyModule>) -> PyResult<()> { #[cfg(not(feature = "gpu"))] py_module.add("GPU_ENABLED", false)?; - py_module.add("__doc__", "UMEP algorithms implemented in Rust.")?; + py_module.add("__doc__", "SOLWEIG urban microclimate algorithms implemented in Rust.")?; Ok(()) } @@ -92,3 +96,21 @@ fn register_vegetation_module(py_module: &Bound<'_, PyModule>) -> PyResult<()> { py_module.add_submodule(&submodule)?; Ok(()) } + +fn register_utci_module(py_module: &Bound<'_, PyModule>) -> PyResult<()> { + let submodule = PyModule::new(py_module.py(), "utci")?; + submodule.add("__doc__", "UTCI (Universal Thermal Climate Index) calculations.")?; + submodule.add_function(wrap_pyfunction!(utci::utci_single, &submodule)?)?; + submodule.add_function(wrap_pyfunction!(utci::utci_grid, &submodule)?)?; + py_module.add_submodule(&submodule)?; + Ok(()) +} + +fn register_pet_module(py_module: &Bound<'_, PyModule>) -> PyResult<()> { + let submodule = PyModule::new(py_module.py(), "pet")?; + submodule.add("__doc__", "PET (Physiological Equivalent Temperature) calculations.")?; + submodule.add_function(wrap_pyfunction!(pet::pet_calculate, &submodule)?)?; + submodule.add_function(wrap_pyfunction!(pet::pet_grid, &submodule)?)?; + py_module.add_submodule(&submodule)?; + Ok(()) +} diff --git a/rust/src/pet.rs b/rust/src/pet.rs new file mode 100644 index 0000000..546e86c --- /dev/null +++ b/rust/src/pet.rs @@ -0,0 +1,386 @@ +use numpy::{PyArray2, PyReadonlyArray2}; +use pyo3::prelude::*; +use rayon::prelude::*; + +/// Physical constants for PET calculation +const PO: f32 = 1013.25; // Reference pressure (hPa) +const P: f32 = 1013.25; // Atmospheric pressure (hPa) +const ROB: f32 = 1.06; +const CB: f32 = 3.64 * 1000.0; +const EMSK: f32 = 0.99; +const EMCL: f32 = 0.95; +const EVAP: f32 = 2.42e6; +const SIGMA: f32 = 5.67e-8; +const CAIR: f32 = 1.01 * 1000.0; + +/// Calculate PET for a single point. +/// +/// Parameters: +/// - ta: Air temperature (°C) +/// - rh: Relative humidity (%) +/// - tmrt: Mean radiant temperature (°C) +/// - v: Wind speed at pedestrian height (m/s) +/// - mbody: Body mass (kg) +/// - age: Age (years) +/// - ht: Height (m) +/// - work: Activity level (W) +/// - icl: Clothing insulation (clo, 0-5) +/// - sex: 1=male, 2=female +#[inline] +fn pet_single( + ta: f32, + rh: f32, + tmrt: f32, + v: f32, + mbody: f32, + age: f32, + ht: f32, + work: f32, + icl: f32, + sex: i32, +) -> f32 { + // Humidity conversion + let vps = 6.107 * 10.0_f32.powf(7.5 * ta / (238.0 + ta)); + let vpa = rh * vps / 100.0; + + let eta = 0.0; + + // INBODY - metabolic rate calculation + let metbf = 3.19 * mbody.powf(0.75) * (1.0 + 0.004 * (30.0 - age) + 0.018 * ((ht * 100.0 / mbody.powf(1.0 / 3.0)) - 42.1)); + let metbm = 3.45 * mbody.powf(0.75) * (1.0 + 0.004 * (30.0 - age) + 0.010 * ((ht * 100.0 / mbody.powf(1.0 / 3.0)) - 43.4)); + + let met = if sex == 1 { metbm + work } else { metbf + work }; + + let h = met * (1.0 - eta); + let rtv = 1.44e-6 * met; + + // Sensible respiration energy + let tex = 0.47 * ta + 21.0; + let eres = CAIR * (ta - tex) * rtv; + + // Latent respiration energy + let vpex = 6.11 * 10.0_f32.powf(7.45 * tex / (235.0 + tex)); + let erel = 0.623 * EVAP / P * (vpa - vpex) * rtv; + let ere = eres + erel; + + // Calculation constants + let feff = 0.725; + let adu = 0.203 * mbody.powf(0.425) * ht.powf(0.725); + let mut facl = (-2.36 + 173.51 * icl - 100.76 * icl * icl + 19.28 * icl.powi(3)) / 100.0; + if facl > 1.0 { + facl = 1.0; + } + let rcl = (icl / 6.45) / facl; + + let mut y = 1.0; + if icl < 2.0 { + y = (ht - 0.2) / ht; + } + if icl <= 0.6 { + y = 0.5; + } + if icl <= 0.3 { + y = 0.1; + } + + let fcl = 1.0 + 0.15 * icl; + let r2 = adu * (fcl - 1.0 + facl) / (2.0 * std::f32::consts::PI * ht * y); + let r1 = facl * adu / (2.0 * std::f32::consts::PI * ht * y); + let di = r2 - r1; + let acl = adu * facl + adu * (fcl - 1.0); + + let mut tcore = [0.0_f32; 8]; + + let mut wetsk = 0.0; + let mut hc = 2.67 + 6.5 * v.powf(0.67); + hc *= (P / PO).powf(0.55); + + let c_1 = h + ere; + let he = 0.633 * hc / (P * CAIR); + let fec = 1.0 / (1.0 + 0.92 * hc * rcl); + let htcl = 6.28 * ht * y * di / (rcl * (r2 / r1).ln() * acl); + let aeff = adu * feff; + let c_2 = adu * ROB * CB; + let c_5 = 0.0208 * c_2; + let c_6 = 0.76075 * c_2; + let rdsk = 0.79e7; + let rdcl = 0.0; + + let mut count2 = 0; + let mut j = 1_usize; + + let mut tsk = 34.0_f32; + let mut tcl = (ta + tmrt + tsk) / 3.0; + let mut vb = 0.0_f32; + let mut esw = 0.0_f32; + let mut vpts = 0.0_f32; + let mut c_9 = 0.0_f32; + let mut c_11 = 0.0_f32; + + while count2 == 0 && j < 7 { + tsk = 34.0; + let mut count1 = 0; + tcl = (ta + tmrt + tsk) / 3.0; + let mut count3 = 1; + let mut enbal2 = 0.0_f32; + + while count1 <= 3 { + let mut enbal = 0.0_f32; + + while enbal * enbal2 >= 0.0 && count3 < 200 { + enbal2 = enbal; + + let rclo2 = EMCL * SIGMA * ((tcl + 273.2).powi(4) - (tmrt + 273.2).powi(4)) * feff; + tsk = 1.0 / htcl * (hc * (tcl - ta) + rclo2) + tcl; + + // Radiation balance + let rbare = aeff * (1.0 - facl) * EMSK * SIGMA * ((tmrt + 273.2).powi(4) - (tsk + 273.2).powi(4)); + let rclo = feff * acl * EMCL * SIGMA * ((tmrt + 273.2).powi(4) - (tcl + 273.2).powi(4)); + let rsum = rbare + rclo; + + // Convection + let cbare = hc * (ta - tsk) * adu * (1.0 - facl); + let cclo = hc * (ta - tcl) * acl; + let csum = cbare + cclo; + + // Core temperature + let c_3 = 18.0 - 0.5 * tsk; + let c_4 = 5.28 * adu * c_3; + let c_7 = c_4 - c_6 - tsk * c_5; + let c_8 = -c_1 * c_3 - tsk * c_4 + tsk * c_6; + c_9 = c_7 * c_7 - 4.0 * c_5 * c_8; + let c_10 = 5.28 * adu - c_6 - c_5 * tsk; + c_11 = c_10 * c_10 - 4.0 * c_5 * (c_6 * tsk - c_1 - 5.28 * adu * tsk); + + let tsk_adj = if tsk == 36.0 { 36.01 } else { tsk }; + + tcore[7] = c_1 / (5.28 * adu + c_2 * 6.3 / 3600.0) + tsk_adj; + tcore[3] = c_1 / (5.28 * adu + (c_2 * 6.3 / 3600.0) / (1.0 + 0.5 * (34.0 - tsk_adj))) + tsk_adj; + + if c_11 >= 0.0 { + tcore[6] = (-c_10 - c_11.sqrt()) / (2.0 * c_5); + tcore[1] = (-c_10 + c_11.sqrt()) / (2.0 * c_5); + } + if c_9 >= 0.0 { + tcore[2] = (-c_7 + c_9.abs().sqrt()) / (2.0 * c_5); + tcore[5] = (-c_7 - c_9.abs().sqrt()) / (2.0 * c_5); + } + tcore[4] = c_1 / (5.28 * adu + c_2 * 1.0 / 40.0) + tsk_adj; + + // Transpiration + let tbody = 0.1 * tsk + 0.9 * tcore[j]; + let mut sw = 304.94 * (tbody - 36.6) * adu / 3600000.0; + vpts = 6.11 * 10.0_f32.powf(7.45 * tsk / (235.0 + tsk)); + + if tbody <= 36.6 { + sw = 0.0; + } + if sex == 2 { + sw *= 0.7; + } + let eswphy = -sw * EVAP; + + let eswpot = he * (vpa - vpts) * adu * EVAP * fec; + wetsk = eswphy / eswpot; + if wetsk > 1.0 { + wetsk = 1.0; + } + let eswdif = eswphy - eswpot; + esw = if eswdif <= 0.0 { eswpot } else { eswphy }; + if esw > 0.0 { + esw = 0.0; + } + + // Diffusion + let ed = EVAP / (rdsk + rdcl) * adu * (1.0 - wetsk) * (vpa - vpts); + + // MAX VB + let mut vb1 = 34.0 - tsk; + let mut vb2 = tcore[j] - 36.6; + if vb2 < 0.0 { + vb2 = 0.0; + } + if vb1 < 0.0 { + vb1 = 0.0; + } + vb = (6.3 + 75.0 * vb2) / (1.0 + 0.5 * vb1); + + // Energy balance + enbal = h + ed + ere + esw + csum + rsum; + + // Clothing temperature iteration + let xx = match count1 { + 0 => 1.0, + 1 => 0.1, + 2 => 0.01, + _ => 0.001, + }; + + if enbal > 0.0 { + tcl += xx; + } else { + tcl -= xx; + } + + count3 += 1; + } + count1 += 1; + enbal2 = 0.0; + } + + // Check convergence conditions for different j modes + let converged = match j { + 2 | 5 => c_9 >= 0.0 && tcore[j] >= 36.6 && tsk <= 34.050, + 6 | 1 => c_11 > 0.0 && tcore[j] >= 36.6 && tsk > 33.850, + 3 => tcore[j] < 36.6 && tsk <= 34.000, + 7 => tcore[j] < 36.6 && tsk > 34.000, + 4 => true, + _ => false, + }; + + if converged { + let vb_check = (j != 4 && vb >= 91.0) || (j == 4 && vb < 89.0); + if !vb_check { + if vb > 90.0 { + vb = 90.0; + } + count2 = 1; + } + } + + j += 1; + } + + // PET calculation phase + let mut tx = ta; + let mut enbal2 = 0.0_f32; + let mut count1 = 0; + + hc = 2.67 + 6.5 * 0.1_f32.powf(0.67); + hc *= (P / PO).powf(0.55); + + while count1 <= 3 { + let mut enbal = 0.0_f32; + + while enbal * enbal2 >= 0.0 { + enbal2 = enbal; + + // Radiation balance + let rbare = aeff * (1.0 - facl) * EMSK * SIGMA * ((tx + 273.2).powi(4) - (tsk + 273.2).powi(4)); + let rclo = feff * acl * EMCL * SIGMA * ((tx + 273.2).powi(4) - (tcl + 273.2).powi(4)); + let rsum = rbare + rclo; + + // Convection + let cbare = hc * (tx - tsk) * adu * (1.0 - facl); + let cclo = hc * (tx - tcl) * acl; + let csum = cbare + cclo; + + // Diffusion + let ed = EVAP / (rdsk + rdcl) * adu * (1.0 - wetsk) * (12.0 - vpts); + + // Respiration + let tex = 0.47 * tx + 21.0; + let eres = CAIR * (tx - tex) * rtv; + let vpex = 6.11 * 10.0_f32.powf(7.45 * tex / (235.0 + tex)); + let erel = 0.623 * EVAP / P * (12.0 - vpex) * rtv; + let ere = eres + erel; + + // Energy balance + enbal = h + ed + ere + esw + csum + rsum; + + // Iteration step + let xx = match count1 { + 0 => 1.0, + 1 => 0.1, + 2 => 0.01, + _ => 0.001, + }; + + if enbal > 0.0 { + tx -= xx; + } else if enbal < 0.0 { + tx += xx; + } + } + count1 += 1; + enbal2 = 0.0; + } + + tx +} + +/// Calculate PET for a single point (Python interface). +#[pyfunction] +pub fn pet_calculate( + ta: f32, + rh: f32, + tmrt: f32, + va: f32, + mbody: f32, + age: f32, + height: f32, + activity: f32, + clo: f32, + sex: i32, +) -> f32 { + pet_single(ta, rh, tmrt, va, mbody, age, height, activity, clo, sex) +} + +/// Calculate PET for a 2D grid using parallel processing. +/// +/// Parameters: +/// - ta: Air temperature (°C) - scalar +/// - rh: Relative humidity (%) - scalar +/// - tmrt: Mean radiant temperature grid (°C) +/// - va: Wind speed grid (m/s) +/// - mbody: Body mass (kg) +/// - age: Age (years) +/// - height: Height (m) +/// - activity: Activity level (W) +/// - clo: Clothing insulation (clo) +/// - sex: 1=male, 2=female +#[pyfunction] +pub fn pet_grid<'py>( + py: Python<'py>, + ta: f32, + rh: f32, + tmrt: PyReadonlyArray2<'py, f32>, + va: PyReadonlyArray2<'py, f32>, + mbody: f32, + age: f32, + height: f32, + activity: f32, + clo: f32, + sex: i32, +) -> PyResult>> { + let tmrt_arr = tmrt.as_array(); + let va_arr = va.as_array(); + + let (rows, cols) = tmrt_arr.dim(); + + // Create output array + let mut result = ndarray::Array2::zeros((rows, cols)); + + // Process in parallel using rayon + result + .as_slice_mut() + .unwrap() + .par_iter_mut() + .enumerate() + .for_each(|(idx, out)| { + let row = idx / cols; + let col = idx % cols; + + let tmrt_val = tmrt_arr[[row, col]]; + let va_val = va_arr[[row, col]]; + + // Check for invalid pixel values + if va_val <= 0.0 || tmrt_val <= -999.0 { + *out = -9999.0; + } else { + *out = pet_single(ta, rh, tmrt_val, va_val, mbody, age, height, activity, clo, sex); + } + }); + + Ok(PyArray2::from_owned_array(py, result)) +} diff --git a/rust/src/utci.rs b/rust/src/utci.rs new file mode 100644 index 0000000..91a29e1 --- /dev/null +++ b/rust/src/utci.rs @@ -0,0 +1,362 @@ +use numpy::{PyArray2, PyReadonlyArray2}; +use pyo3::prelude::*; +use rayon::prelude::*; + +/// Calculate UTCI polynomial approximation for a single point. +/// This is the 6th order polynomial from Bröde et al. +#[inline] +fn utci_polynomial(d_tmrt: f32, ta: f32, va: f32, pa: f32) -> f32 { + // Pre-compute powers to reduce redundant calculations + let ta2 = ta * ta; + let ta3 = ta2 * ta; + let ta4 = ta3 * ta; + let ta5 = ta4 * ta; + let ta6 = ta5 * ta; + + let va2 = va * va; + let va3 = va2 * va; + let va4 = va3 * va; + let va5 = va4 * va; + let va6 = va5 * va; + + let d2 = d_tmrt * d_tmrt; + let d3 = d2 * d_tmrt; + let d4 = d3 * d_tmrt; + let d5 = d4 * d_tmrt; + let d6 = d5 * d_tmrt; + + let pa2 = pa * pa; + let pa3 = pa2 * pa; + let pa4 = pa3 * pa; + let pa5 = pa4 * pa; + let pa6 = pa5 * pa; + + ta + 6.07562052e-01 + + (-2.27712343e-02) * ta + + (8.06470249e-04) * ta2 + + (-1.54271372e-04) * ta3 + + (-3.24651735e-06) * ta4 + + (7.32602852e-08) * ta5 + + (1.35959073e-09) * ta6 + + (-2.25836520e00) * va + + (8.80326035e-02) * ta * va + + (2.16844454e-03) * ta2 * va + + (-1.53347087e-05) * ta3 * va + + (-5.72983704e-07) * ta4 * va + + (-2.55090145e-09) * ta5 * va + + (-7.51269505e-01) * va2 + + (-4.08350271e-03) * ta * va2 + + (-5.21670675e-05) * ta2 * va2 + + (1.94544667e-06) * ta3 * va2 + + (1.14099531e-08) * ta4 * va2 + + (1.58137256e-01) * va3 + + (-6.57263143e-05) * ta * va3 + + (2.22697524e-07) * ta2 * va3 + + (-4.16117031e-08) * ta3 * va3 + + (-1.27762753e-02) * va4 + + (9.66891875e-06) * ta * va4 + + (2.52785852e-09) * ta2 * va4 + + (4.56306672e-04) * va5 + + (-1.74202546e-07) * ta * va5 + + (-5.91491269e-06) * va6 + + (3.98374029e-01) * d_tmrt + + (1.83945314e-04) * ta * d_tmrt + + (-1.73754510e-04) * ta2 * d_tmrt + + (-7.60781159e-07) * ta3 * d_tmrt + + (3.77830287e-08) * ta4 * d_tmrt + + (5.43079673e-10) * ta5 * d_tmrt + + (-2.00518269e-02) * va * d_tmrt + + (8.92859837e-04) * ta * va * d_tmrt + + (3.45433048e-06) * ta2 * va * d_tmrt + + (-3.77925774e-07) * ta3 * va * d_tmrt + + (-1.69699377e-09) * ta4 * va * d_tmrt + + (1.69992415e-04) * va2 * d_tmrt + + (-4.99204314e-05) * ta * va2 * d_tmrt + + (2.47417178e-07) * ta2 * va2 * d_tmrt + + (1.07596466e-08) * ta3 * va2 * d_tmrt + + (8.49242932e-05) * va3 * d_tmrt + + (1.35191328e-06) * ta * va3 * d_tmrt + + (-6.21531254e-09) * ta2 * va3 * d_tmrt + + (-4.99410301e-06) * va4 * d_tmrt + + (-1.89489258e-08) * ta * va4 * d_tmrt + + (8.15300114e-08) * va5 * d_tmrt + + (7.55043090e-04) * d2 + + (-5.65095215e-05) * ta * d2 + + (-4.52166564e-07) * ta2 * d2 + + (2.46688878e-08) * ta3 * d2 + + (2.42674348e-10) * ta4 * d2 + + (1.54547250e-04) * va * d2 + + (5.24110970e-06) * ta * va * d2 + + (-8.75874982e-08) * ta2 * va * d2 + + (-1.50743064e-09) * ta3 * va * d2 + + (-1.56236307e-05) * va2 * d2 + + (-1.33895614e-07) * ta * va2 * d2 + + (2.49709824e-09) * ta2 * va2 * d2 + + (6.51711721e-07) * va3 * d2 + + (1.94960053e-09) * ta * va3 * d2 + + (-1.00361113e-08) * va4 * d2 + + (-1.21206673e-05) * d3 + + (-2.18203660e-07) * ta * d3 + + (7.51269482e-09) * ta2 * d3 + + (9.79063848e-11) * ta3 * d3 + + (1.25006734e-06) * va * d3 + + (-1.81584736e-09) * ta * va * d3 + + (-3.52197671e-10) * ta2 * va * d3 + + (-3.36514630e-08) * va2 * d3 + + (1.35908359e-10) * ta * va2 * d3 + + (4.17032620e-10) * va3 * d3 + + (-1.30369025e-09) * d4 + + (4.13908461e-10) * ta * d4 + + (9.22652254e-12) * ta2 * d4 + + (-5.08220384e-09) * va * d4 + + (-2.24730961e-11) * ta * va * d4 + + (1.17139133e-10) * va2 * d4 + + (6.62154879e-10) * d5 + + (4.03863260e-13) * ta * d5 + + (1.95087203e-12) * va * d5 + + (-4.73602469e-12) * d6 + + (5.12733497e00) * pa + + (-3.12788561e-01) * ta * pa + + (-1.96701861e-02) * ta2 * pa + + (9.99690870e-04) * ta3 * pa + + (9.51738512e-06) * ta4 * pa + + (-4.66426341e-07) * ta5 * pa + + (5.48050612e-01) * va * pa + + (-3.30552823e-03) * ta * va * pa + + (-1.64119440e-03) * ta2 * va * pa + + (-5.16670694e-06) * ta3 * va * pa + + (9.52692432e-07) * ta4 * va * pa + + (-4.29223622e-02) * va2 * pa + + (5.00845667e-03) * ta * va2 * pa + + (1.00601257e-06) * ta2 * va2 * pa + + (-1.81748644e-06) * ta3 * va2 * pa + + (-1.25813502e-03) * va3 * pa + + (-1.79330391e-04) * ta * va3 * pa + + (2.34994441e-06) * ta2 * va3 * pa + + (1.29735808e-04) * va4 * pa + + (1.29064870e-06) * ta * va4 * pa + + (-2.28558686e-06) * va5 * pa + + (-3.69476348e-02) * d_tmrt * pa + + (1.62325322e-03) * ta * d_tmrt * pa + + (-3.14279680e-05) * ta2 * d_tmrt * pa + + (2.59835559e-06) * ta3 * d_tmrt * pa + + (-4.77136523e-08) * ta4 * d_tmrt * pa + + (8.64203390e-03) * va * d_tmrt * pa + + (-6.87405181e-04) * ta * va * d_tmrt * pa + + (-9.13863872e-06) * ta2 * va * d_tmrt * pa + + (5.15916806e-07) * ta3 * va * d_tmrt * pa + + (-3.59217476e-05) * va2 * d_tmrt * pa + + (3.28696511e-05) * ta * va2 * d_tmrt * pa + + (-7.10542454e-07) * ta2 * va2 * d_tmrt * pa + + (-1.24382300e-05) * va3 * d_tmrt * pa + + (-7.38584400e-09) * ta * va3 * d_tmrt * pa + + (2.20609296e-07) * va4 * d_tmrt * pa + + (-7.32469180e-04) * d2 * pa + + (-1.87381964e-05) * ta * d2 * pa + + (4.80925239e-06) * ta2 * d2 * pa + + (-8.75492040e-08) * ta3 * d2 * pa + + (2.77862930e-05) * va * d2 * pa + + (-5.06004592e-06) * ta * va * d2 * pa + + (1.14325367e-07) * ta2 * va * d2 * pa + + (2.53016723e-06) * va2 * d2 * pa + + (-1.72857035e-08) * ta * va2 * d2 * pa + + (-3.95079398e-08) * va3 * d2 * pa + + (-3.59413173e-07) * d3 * pa + + (7.04388046e-07) * ta * d3 * pa + + (-1.89309167e-08) * ta2 * d3 * pa + + (-4.79768731e-07) * va * d3 * pa + + (7.96079978e-09) * ta * va * d3 * pa + + (1.62897058e-09) * va2 * d3 * pa + + (3.94367674e-08) * d4 * pa + + (-1.18566247e-09) * ta * d4 * pa + + (3.34678041e-10) * va * d4 * pa + + (-1.15606447e-10) * d5 * pa + + (-2.80626406e00) * pa2 + + (5.48712484e-01) * ta * pa2 + + (-3.99428410e-03) * ta2 * pa2 + + (-9.54009191e-04) * ta3 * pa2 + + (1.93090978e-05) * ta4 * pa2 + + (-3.08806365e-01) * va * pa2 + + (1.16952364e-02) * ta * va * pa2 + + (4.95271903e-04) * ta2 * va * pa2 + + (-1.90710882e-05) * ta3 * va * pa2 + + (2.10787756e-03) * va2 * pa2 + + (-6.98445738e-04) * ta * va2 * pa2 + + (2.30109073e-05) * ta2 * va2 * pa2 + + (4.17856590e-04) * va3 * pa2 + + (-1.27043871e-05) * ta * va3 * pa2 + + (-3.04620472e-06) * va4 * pa2 + + (5.14507424e-02) * d_tmrt * pa2 + + (-4.32510997e-03) * ta * d_tmrt * pa2 + + (8.99281156e-05) * ta2 * d_tmrt * pa2 + + (-7.14663943e-07) * ta3 * d_tmrt * pa2 + + (-2.66016305e-04) * va * d_tmrt * pa2 + + (2.63789586e-04) * ta * va * d_tmrt * pa2 + + (-7.01199003e-06) * ta2 * va * d_tmrt * pa2 + + (-1.06823306e-04) * va2 * d_tmrt * pa2 + + (3.61341136e-06) * ta * va2 * d_tmrt * pa2 + + (2.29748967e-07) * va3 * d_tmrt * pa2 + + (3.04788893e-04) * d2 * pa2 + + (-6.42070836e-05) * ta * d2 * pa2 + + (1.16257971e-06) * ta2 * d2 * pa2 + + (7.68023384e-06) * va * d2 * pa2 + + (-5.47446896e-07) * ta * va * d2 * pa2 + + (-3.59937910e-08) * va2 * d2 * pa2 + + (-4.36497725e-06) * d3 * pa2 + + (1.68737969e-07) * ta * d3 * pa2 + + (2.67489271e-08) * va * d3 * pa2 + + (3.23926897e-09) * d4 * pa2 + + (-3.53874123e-02) * pa3 + + (-2.21201190e-01) * ta * pa3 + + (1.55126038e-02) * ta2 * pa3 + + (-2.63917279e-04) * ta3 * pa3 + + (4.53433455e-02) * va * pa3 + + (-4.32943862e-03) * ta * va * pa3 + + (1.45389826e-04) * ta2 * va * pa3 + + (2.17508610e-04) * va2 * pa3 + + (-6.66724702e-05) * ta * va2 * pa3 + + (3.33217140e-05) * va3 * pa3 + + (-2.26921615e-03) * d_tmrt * pa3 + + (3.80261982e-04) * ta * d_tmrt * pa3 + + (-5.45314314e-09) * ta2 * d_tmrt * pa3 + + (-7.96355448e-04) * va * d_tmrt * pa3 + + (2.53458034e-05) * ta * va * d_tmrt * pa3 + + (-6.31223658e-06) * va2 * d_tmrt * pa3 + + (3.02122035e-04) * d2 * pa3 + + (-4.77403547e-06) * ta * d2 * pa3 + + (1.73825715e-06) * va * d2 * pa3 + + (-4.09087898e-07) * d3 * pa3 + + (6.14155345e-01) * pa4 + + (-6.16755931e-02) * ta * pa4 + + (1.33374846e-03) * ta2 * pa4 + + (3.55375387e-03) * va * pa4 + + (-5.13027851e-04) * ta * va * pa4 + + (1.02449757e-04) * va2 * pa4 + + (-1.48526421e-03) * d_tmrt * pa4 + + (-4.11469183e-05) * ta * d_tmrt * pa4 + + (-6.80434415e-06) * va * d_tmrt * pa4 + + (-9.77675906e-06) * d2 * pa4 + + (8.82773108e-02) * pa5 + + (-3.01859306e-03) * ta * pa5 + + (1.04452989e-03) * va * pa5 + + (2.47090539e-04) * d_tmrt * pa5 + + (1.48348065e-03) * pa6 +} + +/// Calculate saturation vapor pressure using the polynomial from UTCI. +#[inline] +fn saturation_vapor_pressure(ta: f32) -> f32 { + const G: [f32; 8] = [ + -2.8365744e3, + -6.028076559e3, + 1.954263612e1, + -2.737830188e-2, + 1.6261698e-5, + 7.0229056e-10, + -1.8680009e-13, + 2.7150305, + ]; + + let tk = ta + 273.15; + let mut es = G[7] * tk.ln(); + + // Compute tk^(-2), tk^(-1), tk^0, tk^1, ..., tk^4 + let tk_inv2 = 1.0 / (tk * tk); + let tk_inv = 1.0 / tk; + + es += G[0] * tk_inv2; + es += G[1] * tk_inv; + es += G[2]; + es += G[3] * tk; + es += G[4] * tk * tk; + es += G[5] * tk * tk * tk; + es += G[6] * tk * tk * tk * tk; + + (es.exp()) * 0.01 +} + +/// Calculate UTCI for a single point. +/// +/// Parameters: +/// - ta: Air temperature (°C) +/// - rh: Relative humidity (%) +/// - tmrt: Mean radiant temperature (°C) +/// - va10m: Wind speed at 10m height (m/s) +/// +/// Returns: UTCI temperature (°C) or -999 for invalid inputs +#[pyfunction] +pub fn utci_single(ta: f32, rh: f32, tmrt: f32, va10m: f32) -> f32 { + if ta <= -999.0 || rh <= -999.0 || va10m <= -999.0 || tmrt <= -999.0 { + return -999.0; + } + + let es = saturation_vapor_pressure(ta); + let eh_pa = es * rh / 100.0; + let pa = eh_pa / 10.0; // vapor pressure in kPa + let d_tmrt = tmrt - ta; + + utci_polynomial(d_tmrt, ta, va10m, pa) +} + +/// Calculate UTCI for a 2D grid using parallel processing. +/// +/// Parameters: +/// - ta: Air temperature (°C) - scalar +/// - rh: Relative humidity (%) - scalar +/// - tmrt: Mean radiant temperature grid (°C) +/// - va10m: Wind speed grid at 10m height (m/s) +/// +/// Returns: UTCI temperature grid (°C), -9999 for invalid pixels +#[pyfunction] +pub fn utci_grid<'py>( + py: Python<'py>, + ta: f32, + rh: f32, + tmrt: PyReadonlyArray2<'py, f32>, + va10m: PyReadonlyArray2<'py, f32>, +) -> PyResult>> { + let tmrt_arr = tmrt.as_array(); + let va_arr = va10m.as_array(); + + let (rows, cols) = tmrt_arr.dim(); + + // Handle invalid scalar inputs + if ta <= -999.0 || rh <= -999.0 { + let result = ndarray::Array2::from_elem((rows, cols), -999.0f32); + return Ok(PyArray2::from_owned_array(py, result)); + } + + // Pre-compute vapor pressure (constant for entire grid) + let es = saturation_vapor_pressure(ta); + let eh_pa = es * rh / 100.0; + let pa = eh_pa / 10.0; + + // Create output array + let mut result = ndarray::Array2::zeros((rows, cols)); + + // Process in parallel using rayon + result + .as_slice_mut() + .unwrap() + .par_iter_mut() + .enumerate() + .for_each(|(idx, out)| { + let row = idx / cols; + let col = idx % cols; + + let tmrt_val = tmrt_arr[[row, col]]; + let va_val = va_arr[[row, col]]; + + // Check for invalid pixel values + if tmrt_val <= -999.0 || va_val <= -999.0 { + *out = -9999.0; + } else if va_val > 0.0 { + let d_tmrt = tmrt_val - ta; + *out = utci_polynomial(d_tmrt, ta, va_val, pa); + } else { + *out = -9999.0; // Invalid wind speed + } + }); + + Ok(PyArray2::from_owned_array(py, result)) +} From 4b4293981681113cf0613a6e6c4f2ed3091f6c2c Mon Sep 17 00:00:00 2001 From: Gareth Simons Date: Tue, 20 Jan 2026 23:19:57 +0000 Subject: [PATCH 02/64] cleanup packages --- demos/small_nbhd_walls.py | 1 + demos/solweig_gbg_test.py | 1 + pyproject.toml | 9 ++------- pysrc/solweig/runner.py | 7 ------- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/demos/small_nbhd_walls.py b/demos/small_nbhd_walls.py index b93cd59..7569c05 100644 --- a/demos/small_nbhd_walls.py +++ b/demos/small_nbhd_walls.py @@ -4,6 +4,7 @@ This demo shows how to use the solweig package for wall processing. """ + from pathlib import Path import solweig diff --git a/demos/solweig_gbg_test.py b/demos/solweig_gbg_test.py index 0840145..20e0c4a 100644 --- a/demos/solweig_gbg_test.py +++ b/demos/solweig_gbg_test.py @@ -8,6 +8,7 @@ Note: Full SOLWEIG model run requires additional porting work. """ + from pathlib import Path import solweig diff --git a/pyproject.toml b/pyproject.toml index fa43624..c7df7c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,20 +34,14 @@ classifiers = [ ] dependencies = [ "geopandas>=1.0.1", - "matplotlib>=3.9.4", - "momepy>=0.6.0", "numpy>=2.0.2", "pandas>=2.3.1", "pvlib>=0.13.0", - "pyepw>=0.1", "pyproj>=3.6.1", - "pytz>=2025.2", "rasterio>=1.4.3", - "rioxarray>=0.15.0", "scipy>=1.13.1", "shapely>=2.0.7", "tqdm>=4.67.1", - "xarray>=2024.7.0", ] [build-system] @@ -75,7 +69,8 @@ dev = [ "ruff>=0.5.1", "poethepoet>=0.29.0", "pyright>=1.1.398", - "umep>=0.0.1a18", # For cross-checking tests against reference implementation + "umep>=0.0.1a18", # For cross-checking tests against reference implementation + "ty>=0.0.12", ] [project.urls] diff --git a/pysrc/solweig/runner.py b/pysrc/solweig/runner.py index 5b62ce1..a7f5068 100644 --- a/pysrc/solweig/runner.py +++ b/pysrc/solweig/runner.py @@ -37,13 +37,6 @@ # Import the Solweig calculation function from .functions.solweig import Solweig_2025a_calc as Solweig_2025a_calc_default -try: - from matplotlib import pyplot as plt - PLT = True -except ImportError: - PLT = False - - logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) From bd79063e4ca28cba54995dd456bf4b60887744be Mon Sep 17 00:00:00 2001 From: Gareth Simons Date: Wed, 21 Jan 2026 09:47:29 +0000 Subject: [PATCH 03/64] Phase 1 complete: Testing infrastructure with UMEP Python ground truth Testing Infrastructure: - 52 tests passing (36 spec + 16 golden) - Golden fixtures generated using UMEP Python as ground truth - Spec tests verify physical properties with synthetic data - Golden tests verify Rust matches UMEP Python outputs Specs Created: - specs/shadows.md, svf.md, gvf.md, radiation.md, tmrt.md, utci.md, pet.md - Each spec documents inputs, outputs, and testable properties Key Findings (documented in CHANGES.md): - Shadow calculation: Rust matches UMEP Python exactly - SVF: ~1% intentional difference (Rust uses newer shadow algorithm) Accepted: Rust uses shadowingfunction_wallheight_23 throughout Package rename: umepr -> solweig in test imports --- CHANGES.md | 227 ++++++++++ CLAUDE.md | 61 +++ MODERNIZATION_PLAN.md | 421 ++++++++++++++++++ pyproject.toml | 25 +- specs/OVERVIEW.md | 149 +++++++ specs/gvf.md | 101 +++++ specs/pet.md | 147 ++++++ specs/radiation.md | 172 +++++++ specs/shadows.md | 107 +++++ specs/svf.md | 108 +++++ specs/technical.md | 152 +++++++ specs/tmrt.md | 130 ++++++ specs/utci.md | 127 ++++++ tests/README.md | 142 ++++++ tests/golden/__init__.py | 6 + tests/golden/fixtures/input_bush.npy | Bin 0 -> 640128 bytes tests/golden/fixtures/input_cdsm.npy | Bin 0 -> 640128 bytes tests/golden/fixtures/input_dsm.npy | Bin 0 -> 640128 bytes tests/golden/fixtures/input_params.npz | Bin 0 -> 530 bytes tests/golden/fixtures/input_tdsm.npy | Bin 0 -> 640128 bytes tests/golden/fixtures/input_wall_asp.npy | Bin 0 -> 640128 bytes tests/golden/fixtures/input_wall_ht.npy | Bin 0 -> 640128 bytes .../fixtures/shadow_afternoon_bldg_sh.npy | Bin 0 -> 1280128 bytes .../fixtures/shadow_afternoon_veg_sh.npy | Bin 0 -> 1280128 bytes .../fixtures/shadow_afternoon_wall_sh.npy | Bin 0 -> 1280128 bytes .../fixtures/shadow_afternoon_wall_sun.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/shadow_metadata.npz | Bin 0 -> 796 bytes .../fixtures/shadow_morning_bldg_sh.npy | Bin 0 -> 1280128 bytes .../golden/fixtures/shadow_morning_veg_sh.npy | Bin 0 -> 1280128 bytes .../fixtures/shadow_morning_wall_sh.npy | Bin 0 -> 1280128 bytes .../fixtures/shadow_morning_wall_sun.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/shadow_noon_bldg_sh.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/shadow_noon_veg_sh.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/shadow_noon_wall_sh.npy | Bin 0 -> 1280128 bytes .../golden/fixtures/shadow_noon_wall_sun.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_east.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_metadata.npz | Bin 0 -> 796 bytes tests/golden/fixtures/svf_north.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_south.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_total.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_veg.npy | Bin 0 -> 1280128 bytes tests/golden/fixtures/svf_west.npy | Bin 0 -> 1280128 bytes tests/golden/generate_fixtures.py | 214 +++++++++ tests/golden/test_golden_shadows.py | 190 ++++++++ tests/golden/test_golden_svf.py | 173 +++++++ tests/rustalgos/test_rustalgos.py | 6 +- tests/spec/__init__.py | 2 + tests/spec/test_pet.py | 240 ++++++++++ tests/spec/test_shadows.py | 225 ++++++++++ tests/spec/test_svf.py | 192 ++++++++ tests/spec/test_utci.py | 134 ++++++ 51 files changed, 3427 insertions(+), 24 deletions(-) create mode 100644 CHANGES.md create mode 100644 CLAUDE.md create mode 100644 MODERNIZATION_PLAN.md create mode 100644 specs/OVERVIEW.md create mode 100644 specs/gvf.md create mode 100644 specs/pet.md create mode 100644 specs/radiation.md create mode 100644 specs/shadows.md create mode 100644 specs/svf.md create mode 100644 specs/technical.md create mode 100644 specs/tmrt.md create mode 100644 specs/utci.md create mode 100644 tests/README.md create mode 100644 tests/golden/__init__.py create mode 100644 tests/golden/fixtures/input_bush.npy create mode 100644 tests/golden/fixtures/input_cdsm.npy create mode 100644 tests/golden/fixtures/input_dsm.npy create mode 100644 tests/golden/fixtures/input_params.npz create mode 100644 tests/golden/fixtures/input_tdsm.npy create mode 100644 tests/golden/fixtures/input_wall_asp.npy create mode 100644 tests/golden/fixtures/input_wall_ht.npy create mode 100644 tests/golden/fixtures/shadow_afternoon_bldg_sh.npy create mode 100644 tests/golden/fixtures/shadow_afternoon_veg_sh.npy create mode 100644 tests/golden/fixtures/shadow_afternoon_wall_sh.npy create mode 100644 tests/golden/fixtures/shadow_afternoon_wall_sun.npy create mode 100644 tests/golden/fixtures/shadow_metadata.npz create mode 100644 tests/golden/fixtures/shadow_morning_bldg_sh.npy create mode 100644 tests/golden/fixtures/shadow_morning_veg_sh.npy create mode 100644 tests/golden/fixtures/shadow_morning_wall_sh.npy create mode 100644 tests/golden/fixtures/shadow_morning_wall_sun.npy create mode 100644 tests/golden/fixtures/shadow_noon_bldg_sh.npy create mode 100644 tests/golden/fixtures/shadow_noon_veg_sh.npy create mode 100644 tests/golden/fixtures/shadow_noon_wall_sh.npy create mode 100644 tests/golden/fixtures/shadow_noon_wall_sun.npy create mode 100644 tests/golden/fixtures/svf_east.npy create mode 100644 tests/golden/fixtures/svf_metadata.npz create mode 100644 tests/golden/fixtures/svf_north.npy create mode 100644 tests/golden/fixtures/svf_south.npy create mode 100644 tests/golden/fixtures/svf_total.npy create mode 100644 tests/golden/fixtures/svf_veg.npy create mode 100644 tests/golden/fixtures/svf_west.npy create mode 100644 tests/golden/generate_fixtures.py create mode 100644 tests/golden/test_golden_shadows.py create mode 100644 tests/golden/test_golden_svf.py create mode 100644 tests/spec/__init__.py create mode 100644 tests/spec/test_pet.py create mode 100644 tests/spec/test_shadows.py create mode 100644 tests/spec/test_svf.py create mode 100644 tests/spec/test_utci.py diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..28485e9 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,227 @@ +# Algorithm Changes and Observations + +This document tracks algorithm-related changes, differences, and observations discovered during the SOLWEIG modernization project. It is intended for discussion with the original authors. + +## Purpose + +During the Rust modernization of SOLWEIG, we are: + +1. Creating golden fixtures using the **UMEP Python module** as ground truth +2. Verifying that Rust implementations match UMEP Python outputs +3. Documenting any discrepancies or algorithmic questions + +## Testing Strategy + +### Three-Layer Testing Approach + +| Layer | Purpose | Data Source | +| ----------------- | ------------------------------- | -------------------- | +| Spec Tests | Verify physical properties | Synthetic/mock data | +| Golden Tests | Verify Rust matches UMEP Python | Athens demo data | +| Performance Tests | Benchmark Rust vs Python | Large tiled datasets | + +### Golden Fixtures + +Golden fixtures are generated using **UMEP Python** functions, not Rust: + +- `shadowingfunction_wallheight_23` for shadow calculations +- `svfForProcessing153` for SVF calculations +- `gvf_2018a` for Ground View Factor +- `Kside_veg_v2022a` / `Lside_veg_v2022a` for radiation + +This ensures a neutral reference that doesn't change during modernization. + +--- + +## Observed Differences + +### 1. Shadow Calculation (shadowingfunction_wallheight_23) + +**Status:** VERIFIED - Rust matches UMEP Python exactly + +**UMEP Python function:** `umep.util.SEBESOLWEIGCommonFiles.shadowingfunction_wallheight_23` + +**Rust function:** `solweig.rustalgos.shadowing.calculate_shadows_wall_ht_25` + +**Test Results:** +All shadow components match within tolerance 1e-5: + +- `bldg_sh` (building shadows) - PASS +- `veg_sh` (vegetation shadows) - PASS +- `wall_sh` (wall shadows) - PASS +- `wall_sun` (wall sun exposure) - PASS + +**Findings:** + +- The Rust `_25` is a direct port of Python `_23` - the version increment was for internal tracking +- No algorithmic changes were made during the Rust modernization +- Both implementations produce identical results + +**Conclusion:** No action needed - implementations are equivalent. + +--- + +### 2. Sky View Factor (svfForProcessing153) + +**Status:** INTENTIONAL DIFFERENCE - documented in earlier modernization + +**UMEP Python function:** `umep.functions.svf_functions.svfForProcessing153` + +**Rust function:** `solweig.rustalgos.skyview.calculate_svf` + +**Test Results (Golden Test Comparison):** + +| Component | Match Status | Notes | +| --------- | ------------ | ----------------------------------- | +| svf_total | ~1% diff | Different underlying shadow | +| svf_north | ~1% diff | Different underlying shadow | +| svf_east | ~1% diff | Different underlying shadow | +| svf_south | EXACT | matches within 1e-5 | +| svf_west | EXACT | matches within 1e-5 | +| svf_veg | ~1% diff | Different underlying shadow | + +**Root Cause (from `test_rustalgos.py`):** + +This difference was **intentional and documented** during the earlier modernization: + +```python +# Line 201: "# uses older shadowingfunction_20" +# Line 205-206: "# uses rust shadowing based on shadowingfunction_wallheight_23" +# Line 282-283: print("Small differences expected for N and E and totals +# due to different shadowing implementations") +``` + +The UMEP Python `svfForProcessing153` internally calls the older `shadowingfunction_20`, while Rust uses the newer `shadowingfunction_wallheight_23` throughout for architectural consistency. + +**Verification:** + +A hybrid implementation (`svfForProcessing153_rust_shdw`) exists that uses Python SVF logic with Rust shadows. This hybrid matches the full Rust implementation exactly, proving: + +1. The SVF algorithm itself is correctly ported +2. The ~1% difference comes solely from using different shadow algorithms + +**Decision:** ACCEPTED + +The ~1% difference is accepted. Rust uses the newer `shadowingfunction_wallheight_23` throughout, which is architecturally cleaner and more consistent. The older `shadowingfunction_20` used by Python SVF is legacy code. + +Golden tests use 2% tolerance for affected components (total, north, east, veg) and strict 1e-5 tolerance for unaffected components (south, west). + +--- + +### 3. Ground View Factor (gvf_2018a) + +**Status:** Not yet tested + +**UMEP Python function:** `umep.functions.SOLWEIGpython.gvf_2018a.gvf_2018a` + +**Rust function:** `solweig.rustalgos.gvf.gvf_calc` + +**Output fields:** + +- `gvfSum`, `gvfNorm` +- `gvfLup`, `gvfLupE/S/W/N` +- `gvfalb`, `gvfalbE/S/W/N` +- `gvfalbnosh`, `gvfalbnoshE/S/W/N` + +--- + +### 4. Radiation Calculations + +**Status:** Not yet tested + +#### Kside (Shortwave Side Radiation) + +- **Python:** `Kside_veg_v2022a` +- **Rust:** `vegetation.kside_veg` + +#### Lside (Longwave Side Radiation) + +- **Python:** `Lside_veg_v2022a` +- **Rust:** `vegetation.lside_veg` + +--- + +### 5. Thermal Comfort Indices + +**Status:** Spec tests created, golden fixtures pending + +#### UTCI (Universal Thermal Climate Index) + +- **Rust:** `solweig.rustalgos.utci` +- Spec tests verify property-based behavior + +#### PET (Physiological Equivalent Temperature) + +- **Rust:** `solweig.rustalgos.pet` +- Spec tests verify property-based behavior + +--- + +## Bug Fixes Applied + +_Document any bug fixes discovered and applied during testing._ + +### Example Template + +``` +### [Date] Bug Title + +**Location:** file:line +**Symptom:** Description of incorrect behavior +**Root Cause:** Why it was happening +**Fix:** What was changed +**Impact:** How significant was this bug +``` + +--- + +## Numerical Precision Notes + +### Tolerance Levels Used + +| Test Type | rtol | atol | Rationale | +| ---------------- | ---- | ---- | ------------------------------------ | +| Shadow masks | 1e-5 | 1e-5 | Binary-like values (0/1) | +| SVF values | 1e-5 | 1e-5 | Range [0, 1] | +| Radiation (W/m²) | 1e-4 | 0.01 | Physical units, ~1% error acceptable | +| Temperature (°C) | 1e-4 | 0.01 | Physical units | + +### Known Precision Issues + +_Document any known floating-point precision issues._ + +--- + +## Version Information + +- **UMEP Python version:** (check with `pip show umep`) +- **SOLWEIG Rust version:** See Cargo.toml +- **Test data:** Athens demo dataset + +--- + +## Discussion Log + +_Record discussions with original authors here._ + +### [Date] Discussion Topic + +--- + +## Version Information + +- **UMEP Python version:** (check with `pip show umep`) +- **SOLWEIG Rust version:** See Cargo.toml +- **Test data:** Athens demo dataset + +--- + +## Discussion Log + +_Record discussions with original authors here._ + +### [Date] Discussion Topic + +- Participants: +- Decision: +- Action items: diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..1791407 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,61 @@ +# CLAUDE.md - Project Notes for Claude Code + +## Project Overview + +SOLWEIG is a high-performance urban microclimate model (Rust + Python via maturin). +It calculates Mean Radiant Temperature (Tmrt), UTCI, and PET for urban thermal comfort analysis. + +## Key Files + +- `MODERNIZATION_PLAN.md` - API simplification roadmap (Phase 1 complete, Phases 2-6 pending) +- `specs/` - Markdown specifications for each module (shadows, svf, radiation, tmrt, utci, pet) +- `rust/` - Rust implementation via maturin +- `pysrc/` - Python source code + +## Agent Model Selection Preferences + +When spawning agents via the Task tool, use these guidelines: + +| Task Type | Model | +| ----------------------------------------------- | ------ | +| Quick file searches, grep patterns | haiku | +| Codebase exploration | haiku | +| Implementing features, writing tests | sonnet | +| Complex debugging, architectural analysis | opus | +| Multi-step reasoning with significant ambiguity | opus | + +Default to **haiku** for exploration/search to minimize cost and latency. +Escalate to **sonnet** for implementation work. +Reserve **opus** for higher-level or complex reasoning tasks. + +## Build & Test Commands + +```bash +# Build Rust extension +maturin develop + +# Run tests +pytest ./tests + +# Full verification (format, lint, typecheck, test) +poe verify_project +``` + +## Tooling Preferences + +Use these tools instead of alternatives: + +| Tool | Use For | Instead Of | +| -------- | ---------------------- | ---------------------------- | +| **uv** | Package management | pip, poetry, pipenv | +| **ruff** | Linting and formatting | black, isort, flake8, pylint | +| **ty** | Type checking | mypy, pyright | + +When writing commands or suggesting workflows, prefer these tools. + +## Architecture Notes + +- Shadow calculations use ray tracing from sun position +- SVF (Sky View Factor) computed once per DSM, should be cached +- UTCI uses fast polynomial (~200 terms), PET uses slow iterative solver +- Target: POI-only mode for 100x speedup when sampling specific points diff --git a/MODERNIZATION_PLAN.md b/MODERNIZATION_PLAN.md new file mode 100644 index 0000000..c73e6ea --- /dev/null +++ b/MODERNIZATION_PLAN.md @@ -0,0 +1,421 @@ +# SOLWEIG Modernization Plan + +**Updated: January 2026** - Simplified based on expert analysis + +## Core Principles + +1. **Simplicity first** - Minimize parameters, auto-compute what we can +2. **Spec-driven testing** - Simple markdown specs, handwritten tests +3. **POI-focused** - Support computing only at points of interest +4. **Progressive complexity** - Simple defaults, advanced options available + +--- + +## 1. Current State → Target State + +### Parameter Explosion Problem + +Current API has 13+ parameters scattered across functions: + +```python +# CURRENT: Too many parameters, hard to use +calculate_tmrt( + dsm, cdsm, dem, svf_grid, shadow_grid, + kdown, kup, ldown, lup, + sun_altitude, sun_azimuth, + ta, rh, ws, + abs_k=0.7, abs_l=0.97, + posture="standing", + pixel_size=1.0, + max_height=None, # User must calculate + ... +) +``` + +### Target: Grouped Configuration + +```python +# TARGET: Clean, grouped parameters +@dataclass +class SurfaceData: + dsm: np.ndarray # Required + cdsm: np.ndarray | None # Optional vegetation + dem: np.ndarray | None # Optional terrain + pixel_size: float = 1.0 + +@dataclass +class Location: + latitude: float + longitude: float + utc_offset: int = 0 + +@dataclass +class Weather: + datetime: datetime # Sun position computed internally + ta: float # Air temperature (°C) + rh: float # Relative humidity (%) + global_rad: float # Global radiation (W/m²) + ws: float = 1.0 # Wind speed (m/s) + # Direct/diffuse split computed internally via Erbs model + +@dataclass +class HumanParams: + """Optional - defaults to standard reference person""" + posture: str = "standing" + abs_k: float = 0.7 + abs_l: float = 0.97 + # PET-specific params only if using PET + age: int = 35 + weight: float = 75 + height: float = 1.75 + +# CLEAN API +result = solweig.calculate( + surface=SurfaceData(dsm=dsm), + location=Location(lat=57.7, lon=12.0), + weather=Weather(datetime=dt, ta=25, rh=50, global_rad=800), +) +``` + +--- + +## 2. Auto-Computed Values + +Values that should be computed internally, not required from user: + +| Value | Computation | Source | +| ---------------- | ------------------------------------ | ------------------- | +| `sun_altitude` | From lat/lon/datetime | pysolar or internal | +| `sun_azimuth` | From lat/lon/datetime | pysolar or internal | +| `max_dsm_height` | `np.nanmax(dsm) - np.nanmin(dsm)` | Automatic | +| `direct_rad` | Erbs model from global_rad + sun_alt | Literature | +| `diffuse_rad` | `global_rad - direct_rad` | Derived | +| `svf_grid` | Computed once, cached | Internal | +| `gvf_grid` | `1 - svf` for flat ground | Simplified | + +### Erbs Diffuse Fraction Model + +```python +def erbs_diffuse_fraction(kt: float, altitude_deg: float) -> float: + """ + Erbs et al. (1982) correlation for diffuse fraction. + + kt = clearness index = global_rad / extraterrestrial_rad + """ + if kt <= 0.22: + return 1.0 - 0.09 * kt + elif kt <= 0.80: + return 0.9511 - 0.1604*kt + 4.388*kt**2 - 16.638*kt**3 + 12.336*kt**4 + else: + return 0.165 +``` + +--- + +## 3. POI-Only Mode + +For most use cases, users want Tmrt at specific points, not full grids. + +### Current: Full Grid (slow) + +```python +# Computes Tmrt for ALL 1 million pixels +tmrt_grid = calculate_tmrt(dsm_1000x1000, ...) # ~30 seconds +``` + +### Target: POI Mode (fast) + +```python +# Computes Tmrt only at 10 points of interest +poi_coords = [(100, 200), (150, 300), ...] # (row, col) pairs +tmrt_values = calculate_tmrt_poi(dsm, poi_coords, ...) # ~0.1 seconds +``` + +### Implementation Strategy + +1. **Shadow at POI**: Only trace rays from POI locations +2. **SVF at POI**: Compute view factors only at POI +3. **Radiation at POI**: Full calculation but only at points +4. **Result**: 99%+ reduction for typical monitoring use case + +--- + +## 4. Memory Optimizations + +| Current | Optimized | Savings | +| ----------------------- | --------------- | ------- | +| `shadow: float32` | `shadow: uint8` | 75% | +| `svf: float64` | `svf: float32` | 50% | +| Full intermediate grids | POI arrays | 99%+ | + +### Shadow Storage + +```rust +// Current: wasteful +shadow_grid: Array2 // 4 bytes per pixel, values only 0.0 or 1.0 + +// Optimized +shadow_grid: Array2 // 1 byte per pixel, values 0 or 1 +``` + +--- + +## 5. Simplified Algorithm Options + +### UTCI vs PET + +| Index | Use When | Computation | +| -------- | ------------------------ | ---------------------------- | +| **UTCI** | Standard outdoor comfort | Fast polynomial (~200 terms) | +| **PET** | Person-specific analysis | Slow iterative solver | + +**Recommendation**: Make PET optional, UTCI is sufficient for most urban climate studies. + +```python +# Default: UTCI only +result = solweig.calculate(surface, location, weather) +print(result.utci) # Available + +# Optional: Include PET +result = solweig.calculate(surface, location, weather, compute_pet=True) +print(result.pet) # Now available +``` + +### Simplified GVF + +For areas without tall walls (parks, open spaces), GVF ≈ 1 - SVF: + +```python +def calculate_gvf(svf: np.ndarray, has_walls: bool = False) -> np.ndarray: + """ + Ground View Factor. + + For open areas: GVF = 1 - SVF (horizontal surface assumption) + For urban canyons: Full wall view factor calculation + """ + if not has_walls: + return 1.0 - svf # Fast path + else: + return _calculate_gvf_with_walls(svf) # Full calculation +``` + +--- + +## 6. Specification Format (Simplified) + +We use **simple markdown files** that scientists can read and edit. +Tests are handwritten based on these specs (no YAML parsing). + +### Current Specs + +``` +specs/ +├── OVERVIEW.md # Pipeline diagram, module relationships +├── shadows.md # Shadow calculation (8 properties) +├── svf.md # Sky View Factor (8 properties) +├── gvf.md # Ground View Factor (6 properties) +├── radiation.md # Shortwave + Longwave components +├── tmrt.md # Mean Radiant Temperature (10 properties) +├── utci.md # Universal Thermal Climate Index (8 properties) +├── pet.md # Physiological Equivalent Temperature (8 properties) +└── technical.md # Float32, tiling, GPU, NaN handling +``` + +### Spec → Test Mapping + +Each property in specs becomes one or more test functions: + +```markdown +# In specs/shadows.md + +## Properties + +1. No shadows when sun ≤ 0° (below horizon) +2. Flat terrain → no shadows +3. Lower sun → longer shadows +``` + +```python +# In tests/spec/test_shadows.py +def test_no_shadows_below_horizon(): + """Property 1: No shadows when sun ≤ 0°""" + ... + +def test_flat_terrain_no_shadows(): + """Property 2: Flat terrain → no shadows""" + ... + +def test_lower_sun_longer_shadows(): + """Property 3: Lower sun → longer shadows""" + ... +``` + +--- + +## 7. Rust Integration Strategy + +### Move Time Loop to Rust + +Current: Python loops over timesteps, calling Rust for each + +```python +for hour in range(24): + shadow = rust.calculate_shadow(dsm, sun_pos[hour]) + svf = rust.calculate_svf(dsm) # Redundant! + tmrt[hour] = rust.calculate_tmrt(shadow, svf, ...) +``` + +Target: Single Rust call for full day + +```python +# One call, Rust handles time loop internally +results = rust.calculate_day( + dsm=dsm, + timestamps=timestamps, + weather=weather_array, + location=location, +) +# Returns: Dict with tmrt[24], utci[24], shadows[24] +``` + +### Shared Weight Polynomial + +Both `calculate_tmrt()` and other functions use similar weighting: + +```rust +// Extract common helper +fn directional_weights(altitude: f64, azimuth: f64) -> [f64; 6] { + // Returns weights for [up, down, N, E, S, W] + ... +} +``` + +--- + +## 8. Implementation Phases + +### Phase 1: API Simplification ✓ (Specs Complete) + +- [x] Create simple markdown specs +- [x] Define property-based tests +- [x] Document physical invariants + +### Phase 2: Config Consolidation + +- [ ] Create `SurfaceData`, `Location`, `Weather`, `HumanParams` dataclasses +- [ ] Add internal sun position calculation +- [ ] Add Erbs diffuse fraction model +- [ ] Auto-compute `max_dsm_height` + +### Phase 3: POI Mode + +- [ ] Add `poi_coords` parameter to key functions +- [ ] Implement shadow-at-point calculation +- [ ] Implement SVF-at-point calculation +- [ ] Benchmark: target 100x speedup for 10 POIs vs 1M grid + +### Phase 4: Memory Optimization + +- [ ] Change shadow storage to uint8 +- [ ] Ensure float32 throughout +- [ ] Add POI-only intermediate storage + +### Phase 5: Rust Time Loop + +- [ ] Move hourly loop into Rust +- [ ] Single `calculate_day()` entry point +- [ ] Cache SVF/GVF (computed once per DSM) + +### Phase 6: Optional Complexity + +- [ ] Make PET computation optional +- [ ] Add simplified GVF for open areas +- [ ] UTCI lookup table option for extreme speed + +--- + +## 9. Migration Path + +### Breaking Changes + +| Old API | New API | +| ------------------------------------------ | --------------------------------------- | +| `calculate_tmrt(dsm, cdsm, dem, svf, ...)` | `calculate(surface, location, weather)` | +| User computes sun position | Auto from datetime + location | +| User splits direct/diffuse | Auto via Erbs model | +| Full grid always | POI mode available | + +### Compatibility Layer + +```python +# Deprecated wrapper for old code +def calculate_tmrt_legacy(dsm, cdsm, dem, svf, shadow, ...): + """DEPRECATED: Use solweig.calculate() instead""" + warnings.warn("Use solweig.calculate()", DeprecationWarning) + surface = SurfaceData(dsm=dsm, cdsm=cdsm, dem=dem) + ... + return calculate(surface, location, weather).tmrt +``` + +--- + +## 10. Success Metrics + +| Metric | Current | Target | +| -------------------- | ------- | ------------------- | +| API parameters | 13+ | 3-4 config objects | +| POI calculation time | N/A | <0.1s for 10 points | +| Memory per megapixel | ~200MB | <50MB | +| Lines to basic usage | ~50 | ~10 | + +### Example: Before vs After + +**Before (50+ lines)**: + +```python +import numpy as np +from pysolar.solar import get_altitude, get_azimuth +from solweig import calculate_svf, calculate_shadow, calculate_tmrt + +# Load data +dsm = load_raster("dsm.tif") +cdsm = load_raster("cdsm.tif") + +# Calculate sun position +lat, lon = 57.7, 12.0 +dt = datetime(2024, 7, 15, 12, 0) +altitude = get_altitude(lat, lon, dt) +azimuth = get_azimuth(lat, lon, dt) + +# Pre-compute SVF +svf = calculate_svf(dsm, cdsm) + +# Calculate shadows +max_height = np.nanmax(dsm) - np.nanmin(dsm) +shadow = calculate_shadow(dsm, cdsm, altitude, azimuth, 1.0, max_height) + +# Split radiation +global_rad = 800 +# ... complex diffuse fraction calculation ... + +# Finally calculate Tmrt +tmrt = calculate_tmrt(dsm, cdsm, None, svf, shadow, kdown, kup, ...) +``` + +**After (10 lines)**: + +```python +import solweig +from datetime import datetime + +result = solweig.calculate( + surface=solweig.SurfaceData(dsm="dsm.tif", cdsm="cdsm.tif"), + location=solweig.Location(lat=57.7, lon=12.0), + weather=solweig.Weather( + datetime=datetime(2024, 7, 15, 12, 0), + ta=25, rh=50, global_rad=800 + ), +) +print(f"Tmrt: {result.tmrt.mean():.1f}°C") +print(f"UTCI: {result.utci.mean():.1f}°C") +``` diff --git a/pyproject.toml b/pyproject.toml index c7df7c5..4a24b17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,11 +26,15 @@ keywords = [ authors = [{ name = "UMEP Developers" }] maintainers = [{ name = "UMEP Developers" }] classifiers = [ + "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Rust", + "Topic :: Scientific/Engineering :: Atmospheric Science", + "Topic :: Scientific/Engineering :: GIS", ] dependencies = [ "geopandas>=1.0.1", @@ -110,27 +114,6 @@ line-ending = "auto" docstring-code-format = true docstring-code-line-length = "dynamic" -[tool.pyright] -pythonVersion = "3.11" -include = ["solweig"] -exclude = [ - "**/__pycache__", - "**/__pypackages__", - "build", - "docs", - "**/temp/", - "tests/", - "dist", - ".venv", -] -typeCheckingMode = "strict" -useLibraryCodeForTypes = true -reportUntypedFunctionDecorator = false -reportUntypedClassDecorator = false -reportUnknownMemberType = false -reportMissingTypeStubs = false -reportUnnecessaryIsInstance = false - [tool.pytest.ini_options] console_output_style = "count" log_cli = true diff --git a/specs/OVERVIEW.md b/specs/OVERVIEW.md new file mode 100644 index 0000000..87389a5 --- /dev/null +++ b/specs/OVERVIEW.md @@ -0,0 +1,149 @@ +# SOLWEIG Algorithm Overview + +SOLWEIG (Solar and Longwave Environmental Irradiance Geometry) calculates mean radiant temperature (Tmrt) and thermal comfort indices in complex urban environments. + +**Primary References:** + +- Lindberg et al. (2008) - SOLWEIG 1.0 core model +- Lindberg & Grimmond (2011) - Vegetation and building morphology +- Lindberg et al. (2015) - Sunlit fractions methodology + +## Specification Files + +| File | Description | +| ---- | ----------- | +| [OVERVIEW.md](OVERVIEW.md) | This file - pipeline and relationships | +| [shadows.md](shadows.md) | Shadow casting algorithm | +| [svf.md](svf.md) | Sky View Factor calculation | +| [gvf.md](gvf.md) | Ground View Factor calculation | +| [radiation.md](radiation.md) | Shortwave and longwave radiation | +| [tmrt.md](tmrt.md) | Mean Radiant Temperature | +| [utci.md](utci.md) | Universal Thermal Climate Index | +| [pet.md](pet.md) | Physiological Equivalent Temperature | +| [technical.md](technical.md) | Implementation details (tiling, precision, GPU) | + +## Pipeline + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ INPUT DATA │ +├─────────────────────────────────────────────────────────────────────────┤ +│ Geometry │ Weather │ Time │ +│ - DSM │ - Air temp (Ta) │ - Date/time │ +│ - CDSM (veg) │ - Humidity (RH) │ - Location (lat/lon) │ +│ - Buildings │ - Wind speed │ │ +│ - Walls │ - Global rad (G) │ │ +└────────┬────────────────────┬─────────────────────┬────────────────────┘ + │ │ │ + ▼ │ │ +┌─────────────────┐ │ │ +│ SHADOWS │◄──────────┼─────────────────────┘ +│ (shadows.md) │ │ Sun position +└────────┬────────┘ │ + │ shadow mask │ + ▼ │ +┌─────────────────┐ │ +│ SVF │ │ +│ (svf.md) │ │ +└────────┬────────┘ │ + │ sky view factors │ + ▼ │ +┌─────────────────┐ │ +│ GVF │ │ +│ (gvf.md) │ │ +└────────┬────────┘ │ + │ ground view factors│ + ▼ ▼ +┌─────────────────────────────────────────┐ +│ RADIATION │ +│ (radiation.md) │ +│ ┌─────────────┐ ┌─────────────┐ │ +│ │ Shortwave K │ │ Longwave L │ │ +│ │ Kdown, Kup │ │ Ldown, Lup │ │ +│ │ Kside │ │ Lside │ │ +│ └─────────────┘ └─────────────┘ │ +└────────────────────┬────────────────────┘ + │ all radiation fluxes + ▼ + ┌─────────────────┐ + │ Tmrt │ + │ (tmrt.md) │ + └────────┬────────┘ + │ mean radiant temperature + ┌─────────┴─────────┐ + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ UTCI │ │ PET │ +│ (utci.md) │ │ (pet.md) │ +└─────────────────┘ └─────────────────┘ + thermal comfort indices +``` + +## Module Dependencies + +| Module | Depends On | Produces | +|--------|------------|----------| +| **Shadows** | DSM, sun position | Shadow mask (per timestep) | +| **SVF** | DSM, CDSM | Sky view factors (static) | +| **GVF** | SVF, walls, albedo | Ground view factors | +| **Radiation** | Shadows, SVF, GVF, weather | K and L fluxes | +| **Tmrt** | All radiation fluxes | Mean radiant temperature | +| **UTCI** | Tmrt, Ta, RH, wind | Thermal comfort index | +| **PET** | Tmrt, Ta, RH, wind, human params | Thermal comfort index | + +## Static vs Dynamic Calculations + +**Calculated Once (static geometry):** +- SVF - depends only on DSM geometry +- GVF - depends on SVF and surface properties + +**Calculated Per Timestep:** +- Shadows - sun position changes +- Radiation - sun position + weather changes +- Tmrt - radiation changes +- UTCI/PET - all inputs change + +## Key Physical Principles + +### 1. Shadow Casting +Shadows are cast opposite to the sun direction. Shadow length depends on obstacle height and sun altitude: `L = h / tan(α)`. + +### 2. Sky View Factor +SVF represents the fraction of sky visible from a point. In open terrain SVF=1, in deep canyons SVF<0.5. Affects how much sky radiation reaches the surface. + +### 3. Radiation Balance +Total radiation at a point combines: +- **Direct shortwave (I)** - blocked by shadows +- **Diffuse shortwave (D)** - reduced by low SVF +- **Reflected shortwave** - from ground and walls +- **Longwave from sky** - depends on SVF and cloud cover +- **Longwave from ground** - depends on ground temperature +- **Longwave from walls** - depends on wall temperature and view factor + +### 4. Mean Radiant Temperature +Tmrt integrates radiation from all directions, weighted by human body geometry: +``` +Tmrt = (Sstr / (ε × σ))^0.25 - 273.15 +``` +Where Sstr = absorbed radiation from all 6 directions. + +### 5. Thermal Comfort +UTCI and PET translate the physical environment (Tmrt, Ta, wind, humidity) into equivalent temperatures that represent physiological response. + +## Coordinate Conventions + +- **DSM arrays**: Row 0 = North, increasing rows = South +- **Azimuth**: 0° = North, 90° = East, 180° = South, 270° = West +- **Altitude**: 0° = horizon, 90° = zenith (directly overhead) + +## Units + +| Quantity | Unit | +|----------|------| +| Elevation/height | meters (m) | +| Temperature | degrees Celsius (°C) | +| Radiation | W/m² | +| Wind speed | m/s | +| Humidity | % (relative) | +| SVF/GVF | dimensionless (0-1) | +| Pixel size | meters | diff --git a/specs/gvf.md b/specs/gvf.md new file mode 100644 index 0000000..ae6dbbb --- /dev/null +++ b/specs/gvf.md @@ -0,0 +1,101 @@ +# Ground View Factor (GVF) + +Fraction of the hemisphere occupied by ground and wall surfaces (as opposed to sky). Determines how much reflected shortwave and emitted longwave radiation from surfaces reaches a point. + +**Reference:** Lindberg et al. (2008) Section 2.3 + +## Equation + +GVF is complementary to SVF for an unobstructed point: + +```text +GVF = 1 - SVF (simplified, for flat ground) +``` + +In practice, GVF accounts for the actual ground and wall surfaces visible: + +```text +GVF = Σ (surface_area × view_factor × surface_property) +``` + +Where surface_property can be albedo (for reflected shortwave) or emissivity (for longwave). + +## Inputs + +| Input | Type | Description | +| ----- | ---- | ----------- | +| SVF arrays | 2D arrays (0-1) | Sky view factors (overall + directional) | +| walls | 2D array (m) | Wall height grid | +| albedo | float or 2D array | Ground surface albedo (0-1) | +| emissivity | float or 2D array | Ground surface emissivity (~0.95) | + +## Outputs + +| Output | Type | Description | +| ------ | ---- | ----------- | +| gvf_lup | 2D array | Ground view factor for longwave up | +| gvf_alb | 2D array | Ground view factor weighted by albedo | +| gvf_east | 2D array | GVF from eastern direction | +| gvf_south | 2D array | GVF from southern direction | +| gvf_west | 2D array | GVF from western direction | +| gvf_north | 2D array | GVF from northern direction | + +## Properties + +### Range Properties + +1. **GVF in range [0, 1]** + - GVF = 0: no ground/walls visible (open sky above) + - GVF = 1: completely enclosed (no sky visible) + +2. **GVF + SVF ≈ 1** + - For horizontal surfaces: GVF ≈ 1 - SVF + - Small deviations due to wall contributions + +### Geometric Properties + +3. **Flat open terrain has GVF ≈ 0** + - No walls or elevated surfaces to reflect/emit + - Only ground below contributes + +4. **Urban canyon has high GVF** + - Walls on both sides increase GVF + - More reflected radiation in canyons + +5. **Higher walls increase GVF** + - Taller buildings → more wall surface visible + - More longwave emission from walls + +### Directional Properties + +6. **Directional GVF depends on wall orientation** + - East-facing wall contributes to gvf_west (seen from west) + - Asymmetric building layout → asymmetric directional GVF + +## Role in Radiation + +GVF determines how much radiation comes from surfaces vs sky: + +**Reflected Shortwave (Kup)**: +```text +Kup = (I + D) × GVF_alb × ground_albedo +``` + +**Longwave from Ground (Lup)**: +```text +Lup = ε × σ × Tground^4 × GVF_lup +``` + +**Longwave from Walls**: +```text +Lwall = ε × σ × Twall^4 × wall_view_factor +``` + +## Relationship to SVF + +| Location | SVF | GVF | Characteristic | +| -------- | --- | --- | -------------- | +| Open field | ~1.0 | ~0.0 | Sky-dominated | +| Street canyon | ~0.4 | ~0.6 | Mixed | +| Courtyard | ~0.2 | ~0.8 | Surface-dominated | +| Under canopy | ~0.1 | ~0.9 | Enclosed | diff --git a/specs/pet.md b/specs/pet.md new file mode 100644 index 0000000..f5221ec --- /dev/null +++ b/specs/pet.md @@ -0,0 +1,147 @@ +# Physiological Equivalent Temperature (PET) + +The air temperature at which, in a typical indoor setting, the human energy budget is balanced with the same core and skin temperature as under the actual outdoor conditions. + +**Reference:** Höppe (1999), Mayer & Höppe (1987) + +## Equation + +PET is calculated using the Munich Energy Balance Model for Individuals (MEMI): + +```text +M + W = R + C + E_sk + E_re + S +``` + +Where: +- M = metabolic rate (W) +- W = mechanical work (W) +- R = net radiation heat flow (W) +- C = convective heat flow (W) +- E_sk = latent heat flow from skin (W) +- E_re = respiratory heat loss (W) +- S = storage (body heating/cooling) (W) + +PET is the Ta at which, in a reference indoor environment (Tmrt=Ta, v=0.1m/s, RH=50%), the same S would result. + +## Inputs + +| Input | Type | Description | +| ----- | ---- | ----------- | +| Ta | float or 2D array (°C) | Air temperature | +| Tmrt | float or 2D array (°C) | Mean radiant temperature | +| v | float or 2D array (m/s) | Wind speed | +| RH | float or 2D array (%) | Relative humidity | +| age | float (years) | Person's age | +| height | float (m) | Person's height | +| weight | float (kg) | Person's weight | +| sex | int | 1=male, 2=female | +| activity | float (W/m²) | Metabolic activity level | +| clothing | float (clo) | Clothing insulation | + +## Outputs + +| Output | Type | Description | +| ------ | ---- | ----------- | +| PET | float or 2D array (°C) | Physiological Equivalent Temperature | + +## Default Human Parameters + +| Parameter | Default | Description | +| --------- | ------- | ----------- | +| age | 35 years | Middle-aged adult | +| height | 1.75 m | Average height | +| weight | 75 kg | Average weight | +| sex | 1 (male) | Reference person | +| activity | 80 W/m² | Light walking | +| clothing | 0.9 clo | Summer business attire | + +## Comfort Categories + +| PET (°C) | Thermal Perception | Grade of Stress | +| -------- | ------------------ | --------------- | +| > 41 | Very hot | Extreme heat stress | +| 35 to 41 | Hot | Strong heat stress | +| 29 to 35 | Warm | Moderate heat stress | +| 23 to 29 | Slightly warm | Slight heat stress | +| 18 to 23 | Comfortable | No thermal stress | +| 13 to 18 | Slightly cool | Slight cold stress | +| 8 to 13 | Cool | Moderate cold stress | +| 4 to 8 | Cold | Strong cold stress | +| < 4 | Very cold | Extreme cold stress | + +## Properties + +### Fundamental Properties + +1. **PET is person-specific** + - Varies with age, sex, fitness level + - Same environment can have different PET for different people + +2. **PET reference is indoor** + - Reference: Tmrt=Ta, v=0.1m/s, RH=50% + - PET=21°C is comfortable indoors + +### Radiation Properties + +3. **Higher Tmrt → higher PET** + - Radiation increases heat load + - Sun to shade: ΔPET ≈ 5-15°C + +4. **PET more sensitive to radiation than UTCI** + - Direct sun has larger effect on PET + - Better captures radiant heat stress + +### Personal Factor Properties + +5. **Activity increases PET** + - Higher metabolic rate → more heat generated + - Running vs standing: ΔPET ≈ 5-10°C + +6. **Clothing affects PET bidirectionally** + - In heat: more clothing → higher PET + - In cold: more clothing → lower PET (better insulated) + +7. **Age affects thermoregulation** + - Elderly have reduced sweating capacity + - Children have higher surface-to-mass ratio + +### Wind Properties + +8. **Wind generally reduces PET** + - Convective heat loss increases + - Less effective at high humidity + +## Comparison: PET vs UTCI + +| Aspect | PET | UTCI | +| ------ | --- | ---- | +| Reference | Indoor environment | Outdoor walking | +| Personal factors | Yes (age, sex, etc.) | No (fixed person) | +| Clothing | Variable input | Fixed (adaptive) | +| Activity | Variable input | Fixed (walking 4 km/h) | +| Computation | Iterative solver | Polynomial | +| Speed | Slower | Faster | + +## Typical Values + +| Condition | Ta | Tmrt | PET | Perception | +| --------- | -- | ---- | --- | ---------- | +| Hot sunny | 35 | 65 | 48 | Very hot | +| Hot shaded | 35 | 40 | 38 | Hot | +| Pleasant | 22 | 25 | 22 | Comfortable | +| Cool shade | 18 | 18 | 17 | Slightly cool | +| Cold | 5 | 5 | 5 | Cold | + +## Implementation Notes + +1. **Iterative solution** + - PET requires solving energy balance iteratively + - Convergence typically within 10-20 iterations + +2. **Body surface area** + - Calculated from height and weight (DuBois formula) + - A_body = 0.203 × height^0.725 × weight^0.425 + +3. **Clothing area factor** + - Clothing increases effective surface area + - f_cl = 1 + 0.15 × I_cl (where I_cl in clo) diff --git a/specs/radiation.md b/specs/radiation.md new file mode 100644 index 0000000..9857da6 --- /dev/null +++ b/specs/radiation.md @@ -0,0 +1,172 @@ +# Radiation + +Shortwave (solar) and longwave (thermal) radiation calculations. + +**Reference:** Lindberg et al. (2008) Sections 2.4-2.6 + +## Overview + +Radiation at any point comes from six directions (up, down, and four cardinal sides), split into shortwave (K) and longwave (L) components: + +```text +Total radiation = Shortwave (K) + Longwave (L) + = (Kdown + Kup + Kside) + (Ldown + Lup + Lside) +``` + +## Shortwave Radiation (K) + +Solar radiation, wavelengths ~0.3-3 μm. + +### Diffuse Fraction + +Global radiation (G) is split into direct (I) and diffuse (D): + +```text +G = I + D +D/G = f(clearness_index, altitude, temperature, humidity) +``` + +**Properties:** + +1. Clear sky: D/G ≈ 0.1-0.2 (mostly direct) +2. Overcast: D/G ≈ 0.9-1.0 (mostly diffuse) +3. D/G increases at low sun altitudes + +### Kdown (Diffuse from Sky) + +Diffuse shortwave from the sky hemisphere: + +```text +Kdown = D × SVF +``` + +**Properties:** + +1. Kdown proportional to SVF +2. Higher SVF → more diffuse radiation +3. Range: 0 to ~500 W/m² (typical clear sky diffuse) + +### Kup (Reflected from Ground) + +Shortwave reflected upward from ground: + +```text +Kup = (I × shadow + D) × albedo × GVF +``` + +**Properties:** + +1. Higher albedo → more reflection +2. Shaded areas reflect less (no direct component) +3. Range: 0 to ~200 W/m² (depends on albedo) + +### Kside (Direct + Reflected to Walls) + +Shortwave reaching vertical surfaces: + +```text +Kside = I × cos(incidence_angle) × shadow_factor + reflected +``` + +**Properties:** + +1. Depends on wall orientation relative to sun +2. South-facing walls receive more in Northern Hemisphere +3. Directional: Keast, Ksouth, Kwest, Knorth + +## Longwave Radiation (L) + +Thermal radiation, wavelengths ~3-100 μm. + +### Ldown (Sky Longwave) + +Thermal emission from atmosphere: + +```text +Ldown = ε_sky × σ × T_sky^4 × SVF +``` + +Where: +- ε_sky = sky emissivity (function of humidity, clouds) +- σ = Stefan-Boltzmann constant (5.67 × 10⁻⁸ W/m²K⁴) +- T_sky = effective sky temperature + +**Properties:** + +1. Increases with humidity and cloud cover +2. Clear sky: Ldown ≈ 250-350 W/m² +3. Overcast: Ldown ≈ 350-450 W/m² + +### Lup (Ground Longwave) + +Thermal emission from ground surface: + +```text +Lup = ε_ground × σ × T_ground^4 × GVF +``` + +**Properties:** + +1. Increases with ground temperature +2. Hot asphalt can emit >500 W/m² +3. ε_ground typically 0.90-0.98 + +### Lside (Wall Longwave) + +Thermal emission from building walls: + +```text +Lside = ε_wall × σ × T_wall^4 × wall_view_factor +``` + +**Properties:** + +1. Sun-heated walls emit more +2. Directional: Least, Lsouth, Lwest, Lnorth +3. Important in urban canyons + +## Properties Summary + +### Conservation + +1. **Energy conservation**: Total radiation balanced +2. **Reciprocity**: View factors are symmetric + +### Shadow Effects + +3. **Shadows block direct shortwave only** + - Diffuse and longwave unaffected by shadows + - Shaded areas still receive Kdown, Ldown, Lup + +4. **Shadow reduces total K significantly** + - Sun to shade: ΔK ≈ 200-800 W/m² (depending on direct beam) + +### SVF Effects + +5. **Low SVF reduces sky radiation** + - Both Kdown and Ldown reduced + - But Lside from walls increases + +6. **Urban canyon radiation balance** + - Lower Kdown, Ldown (less sky) + - Higher Kup, Lside (more surfaces) + +### Temperature Effects + +7. **Hot surfaces increase longwave** + - Lup increases with ground temperature + - Can dominate radiation budget on hot days + +### Typical Values + +| Component | Clear Day Noon | Shaded | Night | +| --------- | -------------- | ------ | ----- | +| Kdown | 100-200 | 100-200 | 0 | +| Kup | 50-150 | 30-100 | 0 | +| Kside (sunlit) | 200-600 | 0 | 0 | +| I (direct) | 600-900 | 0 | 0 | +| Ldown | 300-400 | 300-400 | 250-350 | +| Lup | 400-600 | 350-500 | 300-450 | +| Lside | 350-550 | 350-500 | 300-450 | + +All values in W/m². diff --git a/specs/shadows.md b/specs/shadows.md new file mode 100644 index 0000000..59be7a0 --- /dev/null +++ b/specs/shadows.md @@ -0,0 +1,107 @@ +# Shadow Calculation + +Calculates where shadows fall based on sun position, buildings, and vegetation. + +**Reference:** Lindberg et al. (2008) Section 2.2 - Shadow casting algorithm + +## Equations + +### Shadow Length +``` +L = h / tan(α) +``` +- L = shadow length (meters) +- h = obstacle height above ground (meters) +- α = sun altitude angle (degrees) + +### Ray Marching +The algorithm traces rays from each ground pixel toward the sun: +``` +dx = -sign(cos(θ)) × step / tan(θ) # When E-W dominant +dy = sign(sin(θ)) × step # When E-W dominant +dz = (ds × step × tan(α)) / scale # Height gain per step +``` +- θ = sun azimuth (radians) +- ds = path length correction for diagonal movement + +### Shadow Condition +A pixel is in shadow if any obstacle along the ray to the sun is tall enough: +``` +shadow[y,x] = 1 if propagated_height > DSM[y,x] + = 0 otherwise +``` + +## Inputs + +| Input | Type | Description | +|-------|------|-------------| +| DSM | 2D array (m) | Digital Surface Model - elevation including buildings | +| sun_altitude | float (0-90°) | Sun elevation above horizon | +| sun_azimuth | float (0-360°) | Sun direction (0=N, 90=E, 180=S, 270=W) | +| pixel_size | float (m) | Resolution of DSM | +| CDSM | 2D array (m) | Optional: Canopy DSM for vegetation shadows | + +## Outputs + +| Output | Type | Description | +|--------|------|-------------| +| bldg_sh | 2D array | Building shadow mask (1=sunlit, 0=shadow) | +| veg_sh | 2D array | Vegetation shadow (accounts for transmissivity) | +| wall_sh | 2D array | Shadow height on walls | + +## Properties + +### Critical Properties + +1. **No shadows below horizon** + - When: sun_altitude ≤ 0° + - Then: all pixels are "sunlit" (no shadows cast) + - Reason: No direct beam radiation when sun below horizon + +2. **Flat terrain = no shadows** + - When: DSM is uniform (no elevation differences) + - Then: shadow mask is all zeros + - Reason: No obstacles to cast shadows + +3. **Binary shadow values** + - Building shadows are discrete: 0 or 1 + - No partial shadows (penumbra) in building shadow model + - Vegetation can have fractional values due to transmissivity + +### Geometric Properties + +4. **Shadows opposite sun direction** + - Sun from south (180°) → shadows extend north (toward row 0) + - Sun from east (90°) → shadows extend west (toward col 0) + +5. **Lower sun = longer shadows** + - As altitude decreases, shadow area increases + - At 45°: shadow length = obstacle height + - At 30°: shadow length ≈ 1.73 × height + - At 15°: shadow length ≈ 3.73 × height + +6. **Taller obstacles = longer shadows** + - Shadow length proportional to height: L ∝ h + +7. **Shadow length follows equation** + - Measured shadow length ≈ h / tan(α) within ±15% + - Tolerance accounts for pixel discretization + +### Rooftop Properties + +8. **Building tops are sunlit** + - Rooftops (local maxima) receive direct sun when altitude > 0 + - Unless shaded by taller neighboring buildings + +## Vegetation Shadows + +Vegetation shadows differ from building shadows: + +- **Transmissivity**: Light partially passes through foliage (typically 3-50%) +- **Trunk zone**: Lower portion of tree trunk doesn't cast foliage shadow +- **Pergola effect**: Dappled shadow where canopy partially blocks sun + +``` +veg_shadow = 1 if ray passes through canopy but not trunk + = 0 if ray passes through trunk (solid shadow) +``` diff --git a/specs/svf.md b/specs/svf.md new file mode 100644 index 0000000..481577c --- /dev/null +++ b/specs/svf.md @@ -0,0 +1,108 @@ +# Sky View Factor (SVF) + +Fraction of the sky hemisphere visible from each point. Determines how much diffuse sky radiation and longwave sky emission reaches the surface. + +**Reference:** Lindberg et al. (2008) Section 2.1, Lindberg & Grimmond (2011) + +## Equation + +SVF is the ratio of radiation received from the sky to that from an unobstructed hemisphere: + +```text +SVF = Ω_sky / 2π +``` + +Where Ω_sky is the solid angle of visible sky (steradians). + +For computational purposes, the sky is divided into patches and SVF is accumulated: + +```text +SVF = Σ (patch_weight × visibility) +``` + +Where visibility is 1 if the patch is unobstructed, 0 if blocked. + +## Inputs + +| Input | Type | Description | +| ----- | ---- | ----------- | +| DSM | 2D array (m) | Digital Surface Model | +| CDSM | 2D array (m) | Canopy DSM for vegetation (optional) | +| pixel_size | float (m) | Resolution | + +## Outputs + +| Output | Type | Description | +| ------ | ---- | ----------- | +| svf | 2D array (0-1) | Overall sky view factor | +| svf_north | 2D array (0-1) | SVF from northern sky quadrant | +| svf_east | 2D array (0-1) | SVF from eastern sky quadrant | +| svf_south | 2D array (0-1) | SVF from southern sky quadrant | +| svf_west | 2D array (0-1) | SVF from western sky quadrant | +| svf_veg | 2D array (0-1) | SVF accounting for vegetation | + +## Properties + +### Range Properties + +1. **SVF in range [0, 1]** + - SVF = 0: no sky visible (e.g., inside building) + - SVF = 1: full hemisphere visible (open field) + - All intermediate values valid + +2. **Directional SVF in range [0, 1]** + - Each directional component (N, E, S, W) also bounded by [0, 1] + +### Geometric Properties + +3. **Flat open terrain = SVF of 1** + - No obstructions → full sky visibility + - Tolerance: SVF > 0.95 for truly flat DSM + +4. **Deep canyon has low SVF** + - Urban canyon with H/W ratio > 2 → SVF < 0.5 + - H = building height, W = street width + +5. **Taller obstacles reduce SVF** + - Higher buildings nearby → lower ground-level SVF + - SVF decreases monotonically with obstacle height + +6. **Rooftops have high SVF** + - Building tops (local maxima) have SVF close to 1 + - Only reduced if taller buildings nearby + +7. **Building density reduces SVF** + - More buildings → lower ground-level SVF + - SVF is a measure of urban density/openness + +### Symmetry Properties + +8. **Symmetric obstacles give symmetric directional SVF** + - Square courtyard center has equal N/E/S/W SVF + - Asymmetric buildings create asymmetric directional SVF + +## Directional SVF + +Directional components split the sky into quadrants: + +```text + N (svf_north) + | + W ---+--- E + | + S +``` + +Used for calculating radiation from different sky directions, important for: + +- Anisotropic sky radiance (brighter near sun) +- Wall orientation effects +- Asymmetric shading + +## Vegetation Effects + +Trees reduce SVF but not completely (light passes through canopy): + +- **SVF_veg**: Sky view through vegetation canopy +- Accounts for leaf area index and transmissivity +- SVF_veg ≥ SVF (vegetation blocks less than buildings) diff --git a/specs/technical.md b/specs/technical.md new file mode 100644 index 0000000..e5078a3 --- /dev/null +++ b/specs/technical.md @@ -0,0 +1,152 @@ +# Technical Implementation + +Implementation details, performance considerations, and computational requirements. + +## Data Types + +### Float32 Precision + +All raster calculations use **float32** (single precision) rather than float64: + +- **Reason**: GPU compatibility, memory efficiency, sufficient precision +- **Precision**: ~7 significant digits +- **Range**: ±3.4 × 10³⁸ + +**Properties:** + +1. All DSM/CDSM values stored as float32 +2. All output rasters are float32 +3. Intermediate calculations may use higher precision internally +4. Results should match float64 within 0.1% for typical urban values + +### Integer Types + +- Shadow masks: uint8 or bool (0/1 values) +- Indices and counts: int32 or int64 + +## Tiling + +Large rasters are processed in tiles to manage memory: + +### Tile Properties + +1. **Tile size**: Configurable, typically 256×256 to 1024×1024 pixels +2. **Overlap**: Tiles overlap by `max_shadow_reach` to avoid edge artifacts +3. **Seamless output**: Stitched results should be identical to full-raster processing + +### Shadow Reach Calculation + +Overlap must accommodate the longest possible shadow: + +```text +max_shadow_reach = max_building_height / tan(min_sun_altitude) +``` + +At min_sun_altitude = 5°: +- 50m building → ~572m shadow → 572 pixels at 1m resolution + +### Tile Processing Order + +1. Tiles can be processed in parallel (independent) +2. Edge pixels use overlap region for context +3. Only interior pixels written to output + +## GPU Acceleration + +Optional GPU support for shadow and SVF calculations: + +### GPU Properties + +1. **Automatic fallback**: If GPU unavailable, uses CPU +2. **Equivalent results**: GPU and CPU produce identical outputs (within float32 precision) +3. **Memory management**: Large rasters automatically tiled for GPU memory limits + +### GPU-Accelerated Operations + +- Shadow casting (ray marching) +- SVF patch visibility checks +- Parallel pixel operations + +### CPU-Only Operations + +- File I/O +- Coordinate transformations +- Final result assembly + +## Coordinate Systems + +### Raster Coordinates + +- Row 0 = North edge of raster +- Column 0 = West edge of raster +- Increasing row index = moving South +- Increasing column index = moving East + +### Sun Position + +- Azimuth: 0° = North, 90° = East, 180° = South, 270° = West +- Altitude: 0° = horizon, 90° = zenith + +### Geographic Coordinates + +- Input rasters should have valid CRS (coordinate reference system) +- WGS84 (EPSG:4326) used for sun position calculations +- Local projected CRS used for distance calculations + +## Memory Management + +### Typical Memory Usage + +| Operation | Memory per megapixel | +| --------- | -------------------- | +| Single raster (float32) | ~4 MB | +| SVF calculation | ~50 MB (multiple arrays) | +| Full SOLWEIG run | ~200 MB | + +### Memory Properties + +1. Peak memory scales with tile size, not total raster size +2. Intermediate arrays released after use +3. Output written incrementally for large rasters + +## Numerical Stability + +### Edge Cases + +1. **Sun at horizon (altitude ≈ 0°)**: Shadow length approaches infinity + - Handled by clamping to max_shadow_reach + - No shadows computed when altitude ≤ 0° + +2. **Very tall buildings**: May exceed shadow reach + - Warning if buildings exceed reasonable height + +3. **Flat terrain**: Division by zero avoided + - max_height = 0 handled gracefully + +### NaN Handling + +1. Input NaN values indicate no-data (outside study area) +2. NaN propagates through calculations +3. Output NaN indicates invalid/missing result + +## Performance Targets + +| Operation | Target | Notes | +| --------- | ------ | ----- | +| Shadow (1 timestep) | <1s per megapixel | GPU | +| SVF | <30s per megapixel | GPU | +| Full day (48 timesteps) | <5 min per megapixel | GPU | + +## Reproducibility + +### Deterministic Results + +1. Same inputs → same outputs (bitwise identical) +2. No random number generation in core algorithms +3. Parallel processing order does not affect results + +### Version Compatibility + +1. Output format stable across minor versions +2. Algorithm changes documented in changelog +3. Regression tests verify consistency diff --git a/specs/tmrt.md b/specs/tmrt.md new file mode 100644 index 0000000..9d9e4cb --- /dev/null +++ b/specs/tmrt.md @@ -0,0 +1,130 @@ +# Mean Radiant Temperature (Tmrt) + +The uniform temperature of an imaginary black enclosure that would result in the same radiant heat exchange as the actual non-uniform environment. + +**Reference:** Lindberg et al. (2008) Section 2.7, ISO 7726 + +## Equation + +### Absorbed Radiation (Sstr) + +Total radiation absorbed by a human body from all directions: + +```text +Sstr = absK × (Kside×Fside + (Kdown+Kup)×Fup) + + absL × (Lside×Fside + (Ldown+Lup)×Fup) +``` + +Where: +- absK = shortwave absorption coefficient (~0.70 for clothed human) +- absL = longwave absorption coefficient (~0.97) +- Fside = view factor for sides (depends on posture) +- Fup = view factor for top/bottom (depends on posture) + +### Mean Radiant Temperature + +```text +Tmrt = (Sstr / (absL × σ))^0.25 - 273.15 +``` + +Where σ = Stefan-Boltzmann constant (5.67 × 10⁻⁸ W/m²K⁴). + +## Inputs + +| Input | Type | Description | +| ----- | ---- | ----------- | +| Kdown | 2D array (W/m²) | Diffuse shortwave from sky | +| Kup | 2D array (W/m²) | Reflected shortwave from ground | +| Kside | 2D arrays (W/m²) | Direct + reflected shortwave (E,S,W,N) | +| Ldown | 2D array (W/m²) | Longwave from sky | +| Lup | 2D array (W/m²) | Longwave from ground | +| Lside | 2D arrays (W/m²) | Longwave from walls (E,S,W,N) | +| absK | float | Shortwave absorption (~0.70) | +| absL | float | Longwave absorption (~0.97) | +| posture | string | "standing" or "sitting" | + +## Outputs + +| Output | Type | Description | +| ------ | ---- | ----------- | +| Tmrt | 2D array (°C) | Mean radiant temperature grid | + +## Posture Factors + +Human body geometry affects how radiation is received: + +| Posture | Fup | Fside | Notes | +| ------- | --- | ----- | ----- | +| Standing | 0.06 | 0.22 | Vertical cylinder approximation | +| Sitting | 0.17 | 0.17 | More horizontal surface area | + +## Properties + +### Fundamental Properties + +1. **Tmrt defined for any radiation environment** + - Always computable if radiation inputs are valid + - Range typically -20°C to +80°C in urban environments + +2. **Tmrt = Ta when no radiation difference** + - In uniform temperature enclosure with no sun + - Night with overcast sky approaches this + +### Sun/Shade Properties + +3. **Sunlit Tmrt > Shaded Tmrt (daytime)** + - Direct sun adds 10-30°C to Tmrt + - Largest effect at midday, clear sky + +4. **Shadow reduces Tmrt significantly** + - Moving from sun to shade: ΔTmrt ≈ 10-30°C + - Most important thermal comfort intervention + +### SVF Properties + +5. **Higher SVF → higher Tmrt (daytime)** + - More sky radiation received + - Open areas warmer than canyons (radiation-wise) + +6. **Lower SVF → higher Tmrt (nighttime)** + - Less longwave loss to cold sky + - Urban heat island effect + +### Surface Temperature Properties + +7. **Hot ground increases Tmrt** + - Lup increases with ground temperature + - Asphalt vs grass: ΔTmrt ≈ 5-15°C + +8. **Hot walls increase Tmrt** + - Sun-heated walls emit more longwave + - South-facing walls hottest in afternoon + +### Temporal Properties + +9. **Tmrt peaks in early afternoon** + - Maximum direct radiation + - Ground and walls heated + +10. **Tmrt > Ta during day, Tmrt < Ta at night** + - Daytime: sun adds radiation + - Nighttime: surfaces cooler than air + +## Typical Values + +| Condition | Tmrt | Ta | ΔT | +| --------- | ---- | -- | -- | +| Clear day, sun | 55-70°C | 30°C | +25-40°C | +| Clear day, shade | 35-45°C | 30°C | +5-15°C | +| Overcast day | 25-35°C | 25°C | 0-10°C | +| Clear night | 10-20°C | 20°C | -10-0°C | +| Winter sun | 20-35°C | 5°C | +15-30°C | + +## Significance + +Tmrt is the key variable for outdoor thermal comfort: + +- Dominates heat stress in hot climates +- More important than air temperature for comfort +- Directly modifiable through shade provision +- Input to UTCI and PET calculations diff --git a/specs/utci.md b/specs/utci.md new file mode 100644 index 0000000..c62f5cf --- /dev/null +++ b/specs/utci.md @@ -0,0 +1,127 @@ +# Universal Thermal Climate Index (UTCI) + +Equivalent temperature representing the physiological response to the thermal environment. Based on a multi-node human thermoregulation model. + +**Reference:** Bröde et al. (2012), Fiala et al. (2012) + +## Equation + +UTCI is computed from a 6th-order polynomial approximation of the Fiala model: + +```text +UTCI = Ta + offset(Ta, Tmrt-Ta, va, Pa) +``` + +The offset is a complex polynomial function (~200 terms) of: +- Ta = air temperature (°C) +- ΔTmrt = Tmrt - Ta (°C) +- va = wind speed at 10m (m/s) +- Pa = water vapor pressure (hPa) + +## Inputs + +| Input | Type | Description | +| ----- | ---- | ----------- | +| Ta | float or 2D array (°C) | Air temperature | +| Tmrt | float or 2D array (°C) | Mean radiant temperature | +| va | float or 2D array (m/s) | Wind speed at 10m height | +| RH | float or 2D array (%) | Relative humidity | + +## Outputs + +| Output | Type | Description | +| ------ | ---- | ----------- | +| UTCI | float or 2D array (°C) | Universal Thermal Climate Index | + +## Stress Categories + +| UTCI (°C) | Stress Category | Physiological Response | +| --------- | --------------- | ---------------------- | +| > 46 | Extreme heat stress | Heat stroke risk | +| 38 to 46 | Very strong heat stress | Failure of thermoregulation | +| 32 to 38 | Strong heat stress | Strong sweating, dehydration | +| 26 to 32 | Moderate heat stress | Sweating, discomfort | +| 9 to 26 | No thermal stress | Comfort zone | +| 0 to 9 | Slight cold stress | Vasoconstriction | +| -13 to 0 | Moderate cold stress | Shivering begins | +| -27 to -13 | Strong cold stress | Risk of frostbite | +| -40 to -27 | Very strong cold stress | Numbness, hypothermia risk | +| < -40 | Extreme cold stress | Frostbite in minutes | + +## Properties + +### Fundamental Properties + +1. **UTCI is an equivalent temperature** + - Units are °C + - Represents how the environment "feels" + - Reference: walking outdoors at 4 km/h + +2. **Valid input ranges** + - Ta: -50°C to +50°C + - Tmrt-Ta: -30°C to +70°C + - va: 0.5 to 17 m/s + - RH: 5% to 100% + +### Radiation Properties + +3. **Higher Tmrt → higher UTCI** + - Radiation increases thermal stress + - Sun to shade: ΔUTCI ≈ 5-20°C + +4. **UTCI ≈ Ta when Tmrt = Ta and low wind** + - No radiation difference, no wind chill + - Neutral reference condition + +### Wind Properties + +5. **Wind reduces UTCI in heat** + - Convective cooling + - Effect saturates at high wind speeds + +6. **Wind reduces UTCI in cold** + - Wind chill effect + - Stronger effect in cold conditions + +### Humidity Properties + +7. **Humidity effect small in cold** + - Water vapor pressure low at cold temperatures + - Main effect is in warm/hot conditions + +8. **High humidity increases UTCI in heat** + - Impairs evaporative cooling + - Tropical conditions feel hotter + +## Comparison with Other Indices + +| Index | Accounts for | Limitations | +| ----- | ------------ | ----------- | +| UTCI | Ta, Tmrt, wind, humidity | Fixed clothing/activity | +| PET | Ta, Tmrt, wind, humidity, person | More parameters needed | +| Heat Index | Ta, humidity | No radiation or wind | +| Wind Chill | Ta, wind | Cold only, no radiation | + +## Typical Values + +| Condition | Ta | Tmrt | Wind | UTCI | Category | +| --------- | -- | ---- | ---- | ---- | -------- | +| Hot sunny | 35 | 65 | 1 | 45 | Very strong heat | +| Hot shaded | 35 | 40 | 1 | 36 | Strong heat | +| Comfortable | 22 | 25 | 2 | 22 | No stress | +| Cold windy | -5 | -5 | 10 | -15 | Strong cold | +| Cold calm | -5 | -5 | 1 | -6 | Moderate cold | + +## Implementation Notes + +1. **Wind height adjustment** + - Input wind typically at 10m height + - Model assumes standard reference height + +2. **Polynomial approximation** + - ~200 coefficient polynomial + - Accurate within ±0.5°C of full model + +3. **Extrapolation warning** + - Results outside valid ranges may be unreliable + - Clamp or flag out-of-range inputs diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..908b916 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,142 @@ +# SOLWEIG Test Suite + +This document explains the testing strategy used during the SOLWEIG modernization effort. + +## Three-Layer Testing Strategy + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Layer 1: SPEC PROPERTY TESTS (mock data) │ +│ - Verify physical invariants from specs │ +│ - Fast, deterministic, easy to debug │ +│ - "Does the algorithm behave correctly?" │ +├─────────────────────────────────────────────────────────────────┤ +│ Layer 2: GOLDEN REGRESSION TESTS (demo data) │ +│ - Pre-computed outputs from known-good runs │ +│ - Catch any numerical drift during refactoring │ +│ - "Does output still match what we expect?" │ +├─────────────────────────────────────────────────────────────────┤ +│ Layer 3: RUST vs UMEP COMPARISON (demo data) │ +│ - Existing test_rustalgos.py │ +│ - Verify Rust matches original Python implementation │ +│ - "Does Rust produce same results as reference?" │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## Layer 1: Spec Property Tests + +**Location:** `tests/spec/` + +**Purpose:** Verify that algorithms satisfy physical invariants defined in `specs/*.md`. + +**Data:** Synthetic/mock DSMs created in test fixtures (small, fast, deterministic). + +**Examples:** + +- "No shadows when sun altitude ≤ 0" +- "SVF always in range [0, 1]" +- "Flat terrain has SVF = 1" +- "Taller buildings cast longer shadows" + +**Rationale:** These tests verify the algorithm behaves correctly according to physics. They use simple synthetic data so failures are easy to diagnose. If a spec test fails, you know exactly which physical property was violated. + +**Files:** + +- `test_shadows.py` - 8 shadow properties +- `test_svf.py` - 8 SVF properties +- `test_tmrt.py` - 10 Tmrt properties (planned) +- `test_radiation.py` - 7 radiation properties (planned) +- `test_utci.py` - 8 UTCI properties (planned) +- `test_pet.py` - 8 PET properties (planned) + +## Layer 2: Golden Regression Tests + +**Location:** `tests/golden/` + +**Purpose:** Ensure outputs don't change unexpectedly during refactoring. + +**Data:** Real demo data (Athens, Gothenburg) with pre-computed reference outputs. + +**How it works:** + +1. Run the algorithm on demo data with current (known-good) code +2. Save outputs as `.npy` files (golden fixtures) +3. Future test runs compare new output against golden fixtures +4. Any numerical difference fails the test + +**Rationale:** During modernization, we'll change APIs, consolidate parameters, and refactor code. Golden tests catch any accidental changes to numerical output, even subtle floating-point differences. If a golden test fails, the output changed - investigate whether it's intentional. + +**Files:** + +- `fixtures/` - Pre-computed reference outputs +- `test_golden_shadows.py` - Shadow regression tests +- `test_golden_svf.py` - SVF regression tests +- `test_golden_tmrt.py` - Tmrt regression tests + +## Layer 3: Rust vs UMEP Comparison + +**Location:** `tests/rustalgos/` + +**Purpose:** Verify Rust implementations match the original Python UMEP code exactly. + +**Data:** Real demo data (Athens, Gothenburg). + +**How it works:** + +1. Run the original Python UMEP implementation +2. Run the Rust implementation with identical inputs +3. Compare outputs element-by-element +4. Report match percentage and mean difference + +**Rationale:** The Rust code is a performance-optimized rewrite of the original Python. This layer ensures the Rust code produces identical results to the reference Python implementation. These tests also measure speedup (typically 10-30x faster). + +**Files:** + +- `test_rustalgos.py` - Comprehensive Rust vs Python comparison + +## When to Run Each Layer + +| Situation | Layer 1 | Layer 2 | Layer 3 | +| ------------------------------ | ------- | ------- | ------- | +| Quick check during development | ✅ | | | +| Before committing changes | ✅ | ✅ | | +| Before merging PR | ✅ | ✅ | ✅ | +| After changing algorithm logic | ✅ | ✅ | ✅ | +| After Rust code changes | ✅ | | ✅ | + +## Running Tests + +```bash +# Run all spec tests (fast, ~10 seconds) +uv run pytest tests/spec/ -v + +# Run golden regression tests +uv run pytest tests/golden/ -v + +# Run Rust vs UMEP comparison (requires demo data) +uv run python -c "from tests.rustalgos.test_rustalgos import test_shadowing; test_shadowing()" + +# Run everything +uv run pytest tests/ -v +``` + +## Adding New Tests + +### Adding a Spec Property Test + +1. Check the relevant spec file in `specs/*.md` +2. Identify the property to test +3. Create a test function with synthetic data that verifies the property +4. Name it `test_property_N_description` where N matches the spec + +### Adding a Golden Test + +1. Run the algorithm on demo data with current code +2. Save output: `np.save("tests/golden/fixtures/name.npy", output)` +3. Create test that loads fixture and compares with `np.testing.assert_allclose()` + +### Adding a Rust vs UMEP Test + +1. Follow the pattern in `test_rustalgos.py` +2. Run both Python and Rust implementations +3. Use `compare_results()` helper to check match percentage diff --git a/tests/golden/__init__.py b/tests/golden/__init__.py new file mode 100644 index 0000000..9028c6d --- /dev/null +++ b/tests/golden/__init__.py @@ -0,0 +1,6 @@ +""" +Golden regression tests for SOLWEIG algorithms. + +These tests compare current algorithm outputs against pre-computed +reference outputs to catch numerical drift during refactoring. +""" diff --git a/tests/golden/fixtures/input_bush.npy b/tests/golden/fixtures/input_bush.npy new file mode 100644 index 0000000000000000000000000000000000000000..591924fdab58ab63a88380417bb138b7c5476a19 GIT binary patch literal 640128 zcmeIuAr8Vo00h8ddBwSdq@tpVpmC5I1d25D8U&%_N-%_1@L|dqP>5Nv$*!FDZoh2~ zv*J-aW0%HLj;j#YeI3gX`yt z$&guV-Sa%G^*j4^?EM@)yY}AS-*@dl*1q44V?9{QzPmrK`#PTYab4$io!1A=pM9!D zJEvoaW5k2qx)16)@WEOo9<0-&>Vp+ZJlLb(z`+Aw?Axi|z;4}t`+mb0`wZ%?-yhWT z#s1y(?`5i1u3Vvn{-3fHO1xg;|JScvj%@y`?n+A{n=M&)z>+@STT=S6C1d=S^o(2b zjA=`)+iWR$r!9vH*pkg3m2aN{6rcbFvQXfz4VE0+W66YXEx`p#5-v-+#4KrM*ito@ zEk*O&lB0+%!|!2!WFb3WiUJg%K(-gKwp+6EkR?M;Tk`NVONxYa{^7KxTTWY=<+G() zVOxsbXUhjAnIGBy!{!4}fC3cAB7yn3cIDe`$!FhK(&M}(PwU*HM$(c6x7zY%UR$~s zvZZ+mTdJ3_<+HNPk1S&6%TRy<6v*}hlh#;r@t`Ghf3W1OtCqYHw4{w?%Z@y@EGlTr z*y6VIc+i%oE7`KIGV>$bf8cxo3Q&LoStKxA>*n7aw`A)%OO~Wt@@~SC!CEgrbGI!! zi`lZcv@LH{w54ZtTh2bp{Kz79z6=E@K!I#8@Tt~57VF$&qRu@A>D;4(&OI9HUaQYE zJEmxM4AkssquEiTu4V|BAKCr`=L1lH0u;z1fpfboIdRsKJKVa5SL+@ZbK7!Q_gPie zHLC);W);%xIHTE7y&1D3i^%yh6rcbF{woCX>Y0xmzgSW~V9CfFS}(s#>*b|v*`V1m zOV_JLJZ{SmnjMd{XMX%weBgWt3Q&LoStNiXy5CCo><)@rvRdmNH}AFOLs)Y%dU5Wywm-kA<2aXEZxmOf)_Irtv)Bin!Ad;khifC5=0(0R2bc~5Hn+@pQ3wAa<^njg!`*>Y6Zu3XRB za_h@F7a3*Cn0NK;$1LVY7P0eXC_n)UWP5>wnjb?oKl*BZe4_dBt@bL3=y{J4PuK!o zyXw$a=OVgp^}!5V+)J4s+5Q9P15khh6v!fhZJ$_jLG$C3=0}F^-F-m!UNw8fmcfl} znbFafH3M}nGTxSJb8Im_XMSW6J70zZ6re!17Z|?Ol0{!zvPRFHpVqy*j*_;N(c1ab zy6@^tFFiZ>y4F9Y*-~LSvm@Jo*n9vAP=EqiD3EKm_Po;bAM5n4s9M^my^EeXpZJ(9 zYg^e;r=Kn5-q(Ft%WQdZ3-coj+4)iwpa2E3y+H1nmMqhIKQ?$Rsgp*~3|UtvrB zcD5`SY|Eq%_5ArJUCTPm{K)nnHXncj6reyB3f%Fbo*Vqil1;jQx9;t>9MHX2Pc_o| zht@tE!*vgq);)gSt~HRe%#SQ&=Sxw50u;#B0G8ZONOHEGhD( zCFQh#`#MX{o9q7F98L7xU>{pXPPV1Do*8WVBeNr0f6#pM6rcbFvRGhjGfS*-mb~?a zCDX6y{;OMUxvu-KrfJ{ZI{j_Qspkf->)xw_SC}7JOwX6200k(Jtpx@*up~Irl2}&HTvLA2i=Q1t>s)EEYIb+mbeeE!nw2 z&kx?Pq^92eajBXuliO-;jL`L~#k!t#MCT$w=0_IO^W`W&0SaVWfh{ppYCNL%ehjkY z7R`^O*3aL}Z_6!u@5fp_JNWz?wk-Ns`?h~;OQ$&VBinw^eB%_L00pvGppeg$F;y(N zKG2dD>-8Ln=Eo83f7PP4-gVy1mQlKQci$>omj0l3+1{Q*viLvGm!kj$C_sU1D$vDi z%HfACd06vf);de3=>Dq$njf=j*-}jNW668kvwgkZL3qQK=Ea#G+4N)P+ok{oD3Ij> zBi*K4s$@yi{jU`((Kk90J?9u#ar1^1F^P}<}TP}xfnfVa&Bg;Pkz90oCK!I#3 z&?C*1V-+l^{)*Pm*IKggxATKq|2U@WS1tAId3W8rd+30!V;RhjZ2A%NZBu{(6!?z_ zw76l)ma^J2v9Bcub^YqN?!RiS`>#%G{X9+2o@eNNwOw@YRl!@BAODdLfG)8%HDF8H0x){Nv)rs(eoc23)nKSzV=VlJI`m%wIzOB&!OMO{K%#sG2b=?C_sV# zh(N<@x_(t&&wptBRSKUsrBZ|cuU%HS1Zj9y?3zs23ty}>pkcdnIBpH z0q_MWKmiJ5Q-QSEzt2A!Y5gOl{jZko(Ci57`E$Md{3Gq1Sp6Ma4s6wXYkll{l}$fl zzHJInfCB#!f%9`rdGC@bwe|eqjlq`8)cZd=$1U-cx8;ovw&d5d=S#lObLe{Z{6F#r z_@We`00k(JEd@4cest0N$gBCWQ}biXPD|cM=v}rIZCRnccWX|uvgHTN zH%$QwP~bl#FhTR9y5`4aUB5c_swJoO{@Nu;z5he+j{2svEiX>B#kX5~DY9?-f9Mn7 z%Tj;>6v&pD^Dw z1t>s)tQXkQ$&`mRKg#R*kJ1$_DKXTNB71ZnR;DGxAJ*DOS6e=rZcBabop?Qy`H}UX z0AG;;6re!%6v)}xlrp-1_x>xU+*?U&9>Xljzt@s&4(+>J#g?0zA8&l9cbtl$q$+zeIL=DC3^Qq6U~pwnjb}+ zoPT7~kC|_q0u-P?mJ7Vv#gysuO_{9ycN^*bwZ;fbc4&U|Fl0NkH?XMpauzYJTj}{ICu(KeFwI z%r{N}3Q*ubAW*KGDMc5Wa!T{#{VJ9;8EJ`iz>-~>AC~4vBh8OVnjhbA{_!8s=Sxz6 z0u;!;0=IWJB}4OLi{4*5@DWQYyso`VbpBCP^P{t_UoF%6`E}iYb#_1JAKCX)<~yeV z1t^fU0taiF;?exLp!a{wxoJx4s+LU9`NwbdkD*#W-=X`j9GV{iJwJGDFY_a7_4#TP zpa2E3ufV6ZO!=;d-g~~-l-GYXWv$LXE^GaxkmkopJ^xWi^CNc`&5dcc_;)iuvhOF& zcTNEcP#|js%GEJt<4dM2Ut-D`oqyb+`B7i<<5fNX@v!DcDeYfUNc&&i_P#9{+CMRC z|Lc4;3Q&Lo6v(au1M8ZS=%u-#^ABkKV~Fm*TB+v;f8MRV+qHk<<%euJ{emq=w14|f z?cbhVpOf#K0u-PC1+rFPOnp-Z^)_Xk&ObKk`N5mo|LWe?EO|!z?{68U-jof$S|1fo4V@or5ejrGoC?eL?U4n5y@G?AQATPe&{{s`n3msrL`| z8OQv{-k&tzJq0L0fvgqi+rX3;`|7^kk4#yn>sKeWf4ec*S)4B8|wLw{-!urm{KK8@37VWiPLrcYTp*ULn_^p*V=L6rcbFvbVq<&5w;wnzCYmDO)u^Zfbtqqx-L#>HW38Y}7L#zgqHZ z0bRSQZ%c!|%#ZB-Y4hDvfC3cAI)M?zOnIe|DV+yu{bQvmOVUj_q51K$);}EUEva_h zlAQT%`MI_&6MHg0vQD0_L;(s=AbSfeE}{3;Ha4ZuAXCbHVoH0LDPG;bJE5N?#nxET z>WU=~=CLJS!3Q&Lo6rg|#94u){v!h?fS~{dC_sTf3T$p>O6^xo>7e^}{Z~wxSlW^jFIlqbV@pPyvE*sX zmXZ~jAAeNi-zY!<3Q*uTfu1`5ct_6<9{E}KUlp??($SL13w8bKJ4+gbwT^xt^MfOW z0u-PC1^!wf@{=jG?zZHcHhOpMOiRig);mDlmfWFxu>Sgg#h*}s0u-PC1%4M;(cF@{ zQ}iD6J$i@jRZFhk#{A&epa2CZK!JZ>;LKL-e|651ohI|+-&fgKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00sW<1U}nla6j(<9U1>M1t>rP3aCJ{4TijT+K|^{%n=R<3Q&Lo6!`ZA z(pDLA_P8NOy@u?#)8t&_->2ihqyPmdkkSH)j|@rsN;Bk!X2@-(?0CqOL~G_qN)HM? zJOwB~fqz5b@Q;t8S_t*|MCBNPy^>4fc{|N;sKmiJ*puo}D zhJ36w^f!MpWMI;eF2(ik^MJ>K!FqznD?F` zLslEoQfufHJcito&y+?rOgY`nlwMO!iG88>*xuB8(eqkTu{`r5g@y(nl>!u?z&{lz zJI)YmxgqBd7_#k}A=7U)#aYReY0sNda)K%AH<;4kqSiwUz5Amm^W&dl@`n_l00mM+ zAko~A4#N$pG1rj%I}AxbYe;pifh@US>mMz&{xQ;&)+==$a>A7Hx`wqfH}fM!h6W## z0u-RYKNYClz>xR*Y3<{ELmIBtI>@(%oYHe3&>F~z2BvfyV9Kz$rcBlv$R}4#IhMgX z`acEb4=F$a3Z#fY*P4dx?PkaVUBkMn=Rhjz8rG1jhFr?6HT0UMOz3LLg7-{Ww^{e} zo@REW$gtpJQh)*!_?H4RDjE`MXGmRL!x}%wkmI_Kx1jFheamUetn#L;e%6#dqqUZ< zYgmE9%#VKw%6~us3Q!8mX2z?g z+@|DKaehm=vG@1^%VL>e~#dQbTL!Z4H?-%#h|<1DT;UkbUP3Ig`_r zj7RhgNJmo|>N$|!S_Ao)FUWsD0SZun0x2Od+cf0f%7%QaHITOk=sA#S+KYFcA@}Hg zAdefmf473}!D?g5XJhpI`C{frN(>4dH!00sVqK#|2x>HDKo ze6}IWOB>SuNkdNPKCEVw47s>o_wioPe!REq+~ZMGCcS7%g|Wvk4?WfpA>*&AEGGyLQ%elT#KXol>xb_ELl)w`v`Ifv#aay;ZYAdtt51ulum{KB<&} z;e%3u0u-RYKNWban^R6Ka7x`{P8sEMO1OX_{U0^tdOJf#=~==`s|~quM(ZHAXboL! zApi8m_(KX%fC3aq8G$y>>AIEHK%U#}l$lqY@`J8nwa_)JL%N35aftRbS*m@o^iINY zS_5gK_erG;3?GyN6rcbF{;5E}CQh-(Ii>#wr>r^c6i>n_mG3iTrD#9i-iCN)8nWRl zLxzS8sq-N7rP3jBpY$ux&_E8~=pwFWX|hEq1_KCI9=r&QN|CPN<7 zIma_P=g=C6bFH2y)N>#c^D;mFf|B2+00k(JQUV80I3!nIr!;Hkl%k`YGV~*-Y&qnV zNV-#MN9YZp74Qr3yi~jZz?Te-NNu?AJAC>|Xpa2E_RN$5E4*5Ln5Z@zC+1=eK z_rB+pVOj^-s&$a4)c8AdHIV16rcbFQeI%!B8Rj-?~s}I z=-Kn9oU&)I)NTx{e5QMNe_?*4{GcHK1t>rP6(}&? zAuIMdq>ky7+|``Yvx8Iijde;1Jx@6DJ3SAgbC60^^!&$5dZuu`-YKQMObAB-3Q&Lo z6sX?UA%{P6NXK6ta=n;S8Z>muqE~d?YPwU}?r>`FU8n54U+*E*vxLQUAJ*}G%nyzl z3Q&Lo6mU37w{yt0nGWgygF|AuoYJO>_EBu-lsn#V%J5J09LQPit$4Q~=b9QaMfYLR zi~8zPv3g?VniJkjz2M z4~`lNP=Epy_+6k(Wrv*a=a3IScSx~I4jHa%sisxS;?AC_sVV1!@;{i1&G|q0eL;S7jej~B{esiI^}}y#hS6)Dbp`FWm*wK zrnY8&aNJOU0u-RY?*hXe4tcnqL#~Z>$j}WAx%{(3THNB49hIF@roB@h((@n{zH&-A zry*r(Ge0o)Q)>0mbLct; zc~s{h)pQO*HwsXI0u-RY-vkQ!GO?$ILt4G!kS}LAr2H<2RM);(DCCqUbsejr_U3Ky zrBnK4I+-7TL*wrhpa2E_O9Wa>v84NUODY5`Syt1QiNkE^x7Gf){{Ox2lT1{)%OSfO zJEX!Ohtyc;5IN$Ir*%J8>vCF4*WQYwmN{kRW#-3!$#CIgP=EpyaJ*U8l94Se8Ty(f z0~c6Q>jz7U7qrEC&X$`qY&mwymb$m+_@_D2sY@nmT*^en(hjNF(jg5-X$|BPhjcjQ zkQZ}0Wm049srZglE@@vyl2d>J6re!%7RcOVYL8q~d<86V)wbkD7fUX`V@cJmmK2Fv zl2OB!%R_BBw8fU^T((Ru{MQ+Btz;&4FU`dCTOG2fszW~O?2s*!9I|(dL(aLhKW`=N z=dR~LUi_T-k-bL^-#rB=kjetbTA8x%O;fh5HD%pdQ&yXntSqN%R?k>+V6Y{3FSBI& zc}s>Dx20nzTN*61<-3!%-0H|7b<5|FSKIt!j!aC;z=1wG|2UJ0E=3&jN<-a?HP9h% zEzmqUspks|=$+`Tol^2c=0_@zJw7`HD3E;xE)+K99hfqDfGMvoGNtbkQ+oPL=~md1 z@pUX&(aDm?WJ`t|wj^NNa^?wJc8;^9*>+pTUbSUwz8uo9b`Ck&?T;BUWn%`8RLjI8 zItMwJ)EueckXmgW((o-^zta6!@5OXJQcKSf>irI&Sv!<1={no_H? zDV3*~Qf8Yer7oJ%(6Z#E2Q7K0i6uV{v!v}tOHO$#XWuoSZ+bw?hb zoB|Zc&H_z-GQ?+^GN*zm@~kPpzHZ9p6{h4kYRZFdQyS;Dq<1w-ws*6n<|0eB{A5XW zt)p*fX$vOUa(t~V9e%RqhLuBxRLmiRy8cgo%y}{cr@qQSU7drRn39Q?Zf0UsNrxPK zTF(=XbI5{24r#0BL9(+S-#Y~;K!H>hsC(3qs{unM-)lul(XNN zk`Xkegsx+)ZeYnnV=Vbh_wtqt>zY;-TPk+9W!q$18fh*4`-`@8xh;pxdn|`+d;Rwe zNsA{@W@HB5zmb6l8f0SIf=o1zX2Mt2AzyWK$QvtkJxkAnq^doin*tP|Kz0>aw$PBG zTMgNF(U4binR3@7rmT3zlrH^Dfo4cI&5-e$AuBXPs^4eHBhOm0?tM!tAJsg$#g?kI zY}wt_mgeu-^3x_;O8%^KkvutM;#0rp$GdZr`0AbvRC*@^`z~dmZQV?y&&ovpU?w_N zb4X;QL)PwMeq`72!}m=A3Z$;Uo0ANQe`LtgV}>*h>s=gonKGcNDdk(5l3Oz*?Ojvu z&pWzWu4T>84B4_;Yw2gSK5~a8^ukyCwWWHc9CGMP0`~JsymBxJ%#Z9ke)zsAK!Ma1sHgXCY#FU{j|DpS*kQ;3t)*KrLw0J0EYJ)Yr5Vym zGo+qo$gxeP9Jy)A!D5!|YiY@@@s>2)YRM!$6LLcL^cK-QS)H|}KIbi44(_ofq~}5! zjY?oyEP>oTlc>BeiDye>V3^iJ7M#vNswT|A?lJe8E zx5*Y=(>iBKre#aR^0th5!Isr?Z8`g+Eq7K&G3U-7Q}mUQ^lk{S2fvhR6Yyt8d7^;sOOCasoSUCUBu) z5|frB@n}X8%LirPw2_Hi)0iLGa|H2SQ-A`gD$uaFp7|(i$dy`}9jy#m-P@4-ZyEB@ z5<~jzG^EE5hP>!8q(e?q>XbI+ljf!@*Zx?$)|&F;1?{hx$C3dxEot+DCAHtMq{K&- z^f+S4qNL_YZCl*0*^+mI)`#g#`@p7tz{B1jBJh9i5jy^qWc#kD}9=GJ3~xi}YN&u49dg>RH2kEooF= z@0ZeZA^Ek>d)`fYzR;(&kczepcv;u5o{FQ$<~a7}Phddb1d1L`;Hw9csHSHNb3VlU zNZk?0C#L`fva3MEt@k(ioKh_5l+}53{!zw|*XkMalh)HG4lrc=M6HeJo~+@zuXo$G zhV=3pGT|Om7B|toSi?*?p*^x%>bb&4L#7lhVu`b^CHHEd-XfDMiS5(hown5et(NYK zVReT%+HHx$E|9>Qe!7-*FoDu_lZYKpa{iHB2N2&k1t^e`0=rK-<=G#ca{WiAjL^Gd zbBCQWFQ@LiDrrb}t%nrQdPtr=hUC(Hy^ZH+ZhUS?jpK&2iRv2H{iaOT^XV(zFs1aT zT3^?Bh)375au=|qjP_Y9t@lmYb1k`Y!umsBE7uEg%-$NuVx5Pq?47{f7ZbRtdwNsy z1K>kbfC3cArUJ!wIAz^Vr!?H{l+#C?((9a4VjibVG<6N@9z)L#8ZzrCLr!-wq~K7^ z4XugfSY=2lt*JL~n$oqrDI?pP5+7^Ig^x{195khno-KUjHeI`_p=($JEb*-TV}AUN zYU)PKkvkH&<*fvMx{LYoHy8d+0SZtcy9nf2?v$k~oKkJQQx5ERN}JOD)k1qMe$(Oie(yOJno@F?DRnRE zUM=l$QuIkn;-mjOKmO(uDV;!}EeXy){szL|DL?@VWD|j@?>nW`2ToZ(-zg2&IOXIX zr}X&VDWPjl@yDG~C7&S!OB=GLwjrJthK$lPhVyhSYsWsVk+}4HVIfmy>ba2howT=! zo-Mq&SnmwceOcSwdY4F^$lIm%5X|8-Qzn<&xmZPYe+-gn^kgxA@$Z7()q0BNe-=>S1_fL`m9$EdS zm=gV5?@iac)8D&``SB;@{1yc$K!N`nfi8WW;vMRgH#I}@FL25(&5%BtA-%M=zA4Qq zhG9tkg1Qe&&xqX7%#fRUK4ib%8FKlM_Q}$7A&a#~)^GhyPCu{vct`3v^?9Z&I;8zg z_=^G*pa2E_s|B1LobrATr<54xlw+D9!!<+7tkrcbt%vkKbxx^pP;2Qw>l&Ay5y^L}?#X&k&w@Ood$C3sQbq5ax?T74 zexh@bs(RrP3Q&Lo6rcbF zC_sV#SApR_d+YkIL`y?fCtIA2QwRa@$iRU9J%O4;c`9{>FdKi>wG90@}YNmKN6$-_{QVM z(k=lEIT^tCszKCxJBas>22r(e2&cP;Fk)Q@U*`$q=<8v8;tFFzrwDp{6T#;XN6~$3 z6z9KK1GO@|HNHU%g^0mr)`H?HUR;E75e?CR=4 z`!yZ}6CO-y>_yobUQ7&m@op_2CXMppy*)lm$>B$-0e*yk@#Apo0OlVEpnr`ZDy$FU zcxDiTnuSnsb_m<9=p3X$80|KOQN45o1!hLzyCsTP?#;q?zaP{j5Mm`zE*iWNK zMx%JGQ4HQ0%#Z9kZuq__K!Ma2$Y0EjN1tTZ^gYB_qY#dm-z6A=Ep(JkGYy3eKkK;r)mBCtsp+pxyQv0I``NX!uA|tbZiwy z@pWM&OGa?!g9!TH9)OiM;yKNa)tVo+=Eoe(k5@E5Rt*opl|P7z zp9XQ`fe=dQ+@sBf5Z-$%jLH+k@Lmt&c)JL?oroaXEQ-koqL@)GhP=aKIJqZ=*}3Da zpJ&&>!}m=A3Z%3^#V1^7HOhsdn_ZaiaiQ=7Zv42|jXA}%4l>t+dkT3mVyGA2{iL-J z&5tpfA3xZB^wIqI?A8F%76tH7%^+U+Hi)uX_vo}Tgb#J@akOg~#_llo7LTCq>q4>)&TwWi;iewCZo@9Qc^Z?|;Q-A{5Rv_1nbW|?s!n4o2Fnqe^$L*RQ z?`VGH(EJ#y`Qh-Qbbl{iKjFp6>OPd$Jy>rfbr06tevBy|z^=^!I9mi!|9TM1283|t zSO|G5gz@A%VZ44djPuV&F!=ijay=cz!h=y%MGP&M#85CThM%f2JF@M-;Txv_1yWw1 z+Wd61Kb4L#d0fcR$%T)8aN&hvx_+g5vd#_E^((grpLFuVxmVY(O6&U7J3idB{8%yB zkL#raDEnmqy`Bpqk~@UUb)H8u0kF}v8`GFjeZT_ zhebj3XcNN0^C4u^(YeQRoqObsATd0Gj-Cka9}vZLZxo*mi~+iC)wx+5w|)@E=RYz( zQhp#2fC3aqIe}l6`O&|90GWA$n7luTq9Z~WZRy;jug*PA>)Zo+*5fmsf7}JbWdJQ1=+NU5#P%OL0`w?D#of0&lftex&+1;`390 z0;wmk@wy)u_65*)co4}-A-t=-N?K~&qovk8p3%BTi}exgd?<=(pGR@5hSoi{#_(LN zIErqMb6YASJ@cwI+<5MIyNM ztq6u>L~wa%6kB3Z1jfct`Sv&h@5Qn8js*G*OrYS_1a@XJKT>@h@%br0fz%U7%Nsz! z^Z;-uh&~^M5N{vGo||FpZXH3T;}Ohj97V2u+N1r67>XQ^p-tO3re2JrO_v06A4p(B z?j%|?PqO}zdP9d#OaTf|z){5+#0x(MF=1;6>pu)*_yZAKTNuH!MWWaCx~<5AZ|Sw!XvtNHCoS_ zr|Vhs=UYT^@Ng8>b?!0la16Uz#gRB0M~xl{400!MzI75KW-vQaam?_UDL?@V{3bA~ zP7r$wh2RQ=Q0Ut*x{r+DyHEu6^t{I^?Xmk!Z|!yEjbZMHI8Ip!7L!zb>ldGFpj3J5;*X40>(>8^gWtH&O0(#JLeFh00k(Jq5@+F1mV{EqB=AR z=eVo^D(%(#nHJ2{C)fh7D7Ge1&v*zmC_ zKmiIku1*M|)!-1m>=Z_YrV-@RGapq)MbRcBieaN-n3oa5uVdrrp=UmRnU%l`_b2h= zsw6(YJp=8VGCw$kC_n)Uq^dx!*j@{_~64RHr*A&j~~VmzblR= zbK^MhKmzsGB=AM8B);5{#D_&QP_I4nBUQ%@pPK>{NNs^VKLk*5ZxC}p1EqU0KT>-H@#!f* zfm9W^8VI1}g&+z8^n?Ga2(@WC-C;E1m0}MoB|X`Wr3X?1GrWusP}h- z@O?alW>>=4cPxUbuSIdiA4QG+F-+2XqAv7|qw`O3ba^3xuICfz{$dg@T}oovYX3Y#L#R{3|p#b&)tvWI9fP?PTD)sXCyK1wIueOV1A_H_~A2CfC8y2Fl>$=-D(8z z^r-;6+WV?zwGiIO6~-aGvo_zx2&OdB`G@wt>Qy#|?`P}$BbUxUM#k~1H;x;6U+u^< z3FLV?iJk8;KT>xT@yRJbfm9UO`Mn=22L({$W&me&{xKzQ2tVk(=f$^&@zVPdT)97r z*;+%-aaH&5wu#~V0j-17jKjYwj`1ZEC_FQP66pyX*E&cl`tg}5KmiJ*s(_gc<*_tjv+ob1t^f30%@fJ7&$k9+w|<6i8)(Q(F7z{&@hw z2ZEUSc@RyTh2Xdm!iI5S^eU-$pKA?d?k!O~-7X6A(|*gx=G_C|)UoOQR#0`K_J< z(K<+`o&{NdAd0C)v=^41M_;J5kmW_=ST&IOk&=Ul4^06Iq_jYurU5M2t$lZE1o6%8 zAl~X2LQU;o;+h%8!$t(bmJ!sP7(x0^5iEWvif2bh@yLlNYUzHg`lDlL^nDDU=4XDS z^dREHQ-A^~DKM=?0QY?rz}m<3-l(sFxTRYNI~-v+dWX^A`!H@T9YM1fB6xp#1P!i6 z5P39;@86B$tey$E^k@uEz8ceh?lG=krR3=0LsNhPsVwl=@Bo$_4WOz7aq4Ig6MKbl z?1bL`Q8$b>E5axe4Wnb_2$sAQ!PNy3%<)9TE=v^imi%7KHK8sW8f44&$(9NzQx` z^l2W!H}6JJRr@Tasvn=50u-P?stRnW8N|*OLF{`eh@VFXaqH|Ls;tvK?nOh`Ha>(= zKZLMH?*qxvFbu187)F;c7QY(Cg~@t9h}K8O>OE7}^qfel`ti9bKmiJ*qQH$JLAW0d zBB-^Gxb{xGb7&BCrv}mMlOU$=4dRD~LYO-$g!3Ci_<3&#KYbg*k2)tA>JMRa?l8g+ z=sh8i>s~GXq5uUbK!KDJD1K)U50nd{eElFE)-|lg{eu|%P7n*11aWwK5P_3HY z6F#En(d&n>?&%QLyb!|E145WQQTJ&r4dM1L^t?KMQGfyzpg>9qNFmLPN_@th@OLk_~_*zmJSVK z@pzq^OxHE86+w*J9mE%Bf=Kv-oPTgMQGfyzNHKx#b%N-vIbrGiW4>lbjnZ24xI=5_ z;Q$up4dO`IAVzC_#lpjb0pa2C@PN0a+Kh{^&+J>%KUD50q;|!v>-b1)k&lGmp9za~r zrhopa=EdRw%Fha*=i~sEzZJj}`sbw!0&sj3Ku7&~%E9r0DL?@Vq_{wO;ULEAJfc{p z_Al`U&`RePUhSp${+a+P%?{w}Hv;JQTmY+{3gA}>piHd*dQ=V|a!&wlN(Qi@OaS>S zF+Wm#81eBbK!Fq!IHdIq*R=q~p9!G2u2pUMGJw{r0`Pqpz|>IzRDLOd>O})M?e*iX z>wdI4=f~8Oe!RclkCF@hcygv6%jWxGEc0{zkz!+qk4pgxq_#la0zq^=7r=xS0hG}D zYq!1^z_TL)@ORbw(3=G?%c=K*Z1SVtBtJ&I>Bo+ter$hEzpDH3R7pPu6!GK3{LGHj z9z}e53Q!;w1=i;Z;`GS?5?aT&uU7!up4T<0#sLH#4j^__b77tzIiB%jMQJ~-7S*q~ z4_D6U*H#~1`^bm6^L_a8Lm%fJsW^D}%oLzNN(+?HTKQ8)0vM?4RWmvTu)S;m&lL>d zg`<9SeZ!AlI?w3$s}K2h`;d2$evQ_zjy~jh%!kEgeAr*YhZ}{MA1OVE`0x~XuMS}0&;a%!fE&337`D%k(Zl>0SJ97mFZnQamJidr=vRFoKG3}QAk&L!=e&6D zD=*f5>BaY(y_|ofrF2@4fkT~K;}m(k0Cxg1t^f30tXfaFuOwly$k7n z-Cz9J_?aJ1bn^o_{iwUzhX!4JXrk*=PyOOWv)%f&$cuY5GhD5_xL(JL+||6O{1Eda zHAfGhngSF^Wr0kcdwi?sIhKa}7_!cfxg-53U)7H?Kl)H=ln*8D_o4J@FUl^_uQ$Ai zwfEw1RWIh=;l+%w2ix2pymG_C^{Z4KM0|D%P$1<5?wcRLqb~%Ivv2@s^-Ra=_x*UI znIHKqKkiuRL$2mNfC3aqMSl^hz154I9ldCCs~72O zJs79+4d;CxbT&NLb;*t5``z#?aHHu|H>%8Iex%~K;WJZ!0u=a7p!u6V7Mo4{q(`!J=C|xaXJ~BR+TI%=>QC8tBICR&E5JaO0;I%nyzt3Q&Lo zsVwkxnis~$UTk{Ni;Y?D>SNeD`@@@|b>~dqp3^#5W>PC-tZXBrP#sfv&Xq4ZL zO7}89QhD6)*(pE)3j8Ke^aU^8x?j(e|D^McaUQ)>%7dn--MC+~V{;!j><(^pd(4e} z#q@g)HyVaqc*x28;OLrPhoj{c51yIt!HtF3-y+`uwobUgX4w*6rcbF9FDt-d(b25#^amaDEO-G)73SrgB};E zpK{@?{Vtr?;6lk|F7*Gvg{E^{Sign&!Er+Y3Q&Lo4#%uRZd_lg^^Iw6#GZEJyW8FP zNDm+&Ej#jSbgb zcyGB2@poOwnB{_@e{S)i3k%s)s%_nvr+ahLA}%~|&4rHNyD)RF z3;o`3;pZMMTo~lS+r|P@Zg^#CdUW|63 za947h521vIMu?1 zJdeB3=ph&0xJTz36o8M2W1!Er+Y3Q&Lo4oCTyTv*)9g<;iQ zSXau0U-P?A%IU(SyY#F_X%`wk;zHwkE;M_}g<1V|AJ!V?2geNsC_n)UI2^ascH#9B zErP zhvVTx>8O4%9k;Jb$B+Z*ICmx;PrB3bx#>dp0xqn5)P-bwUBepX!iS5s)_#%s!Er+Y z3Q&Lo4#%Vq(((Q@&5U`P8Eeu}aDO_+{FsjG>FGFF&4mK(TgJXsQ z6rcbFei!h)l8$hnbgUYZj=SGY$EbzrxVAnWa~&>>Xyn4%dS39vYVDo)oeRB#%nyzm z3Q&Lo6!=}BU88h#d@>yco=L~+-P3VpSUTqDI#%;LU8tz%K58v+;R#){nrgZ6^Mkzi zgX4w*6rcbFeiztPG9CNxOUH=v>A3W`?z@_lj;D0}%Bg#IFKW#^UH9uo{4SV}YENG6 z%S$&3P=Epypuleey-uZ}d?F3M*y)(jG968I{mPM+jtw(6i>+JMr{S+W$)X zW4T|{-n`409~?Inpa2CZpnG?_rolfU4Qcz+P~x6+yf+~o_&yz>`*hBsJ+R*0rPhaB{JM6fJ+OM|T_254 z>e=&xZgkeVN5#+GNSYqjKR9qGKmiI+z+p8^L&lqF2!EM|a(8L%{LOUOo^%YrPha;Dy!5ou@5{&YzC?qtlT~&kYXM z^X6B+(!RWT+?d|YjV@c=c=!&@j;_oPjvES4fC3b7INoZIhS%Rn!)rU!Ft4g+$C7ls zrhOAH>v{8MZtA(g)^03W>BfKzy&Jt1vx8%X0u-PC1%4M8*dz^o-cG}^3u!pqMtfh~ z(EYp5xv*uQ-bGl&jgRNK@tEa7?sgvhw2Jw`aYF$LP=Erz3%uAO4YOCK;afxZTn*Lv zM{ezpsC}*`<#r=F%#9J3-N@I>gOAsHFyvM*Yv&v|6rcbFDDZy-CJ#)*fg@T&FO`n_ z=jyqSih57fZta(->sDXycB6R(53YRR!HBpA`MNScIBY0D0SZvycY*EG_54S=ojn)I8^ULpESgc#W_7FIoN|OKY8%9cyZ+u<_E_O1t>rP3j8i`VN)6k<<;!y zm5$A>bR2%eg>wbm@O|t?j@lk<*zQ4-`@Oh0(Tmr7%nyzm3Q&Lo6!={r<8&ITSJ8fn zv(vG@m(v*OG1&KH$bTy*#+AbC0R7d-3D1UX*C>L(hZE4~`oOP=Epy z(B4=6G~D%kIx6hZo{42$SgCgmc53Oy-61!Q&h}vJV_sC=>BZ0rKJ1#q?BJN800k&O zf!_u0(z~L{FW2n2-G#P;UHDS_?7lkRjSBTW_~o((vnP0Qt)LH;#``cN!2IC2p#TLa zK!M){8hn(F=k>hcz(FodIOBr5lN%ptf8FOl_8@;#FM7tk*fi0HjED~nU-Gkd&VfS# z3Q&Loe;1fI(1pc6YQK_tZWPnH$M;(Ic=vYQult1;kM{LpT+)ZHd;3w~4D;jfX#4{O zC_n)U{9WMM^54&zTirP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZvyF9Zq=jIeLXU)b>56rcbF zDDdY3x7Uwg(01m>pX>0u6rcbFDDb}p+B6BH)6Fn?PK@A~73KWne*^LF6rcbFDDV#g zEBzs?{UD5Ok3_KdLs)KL~VPA3~p2VZ7=OW7G!`jDLjL@dqIO zg#r|y00sU*pwWU5CYKFk=Akea^@?C+&L|%JfcfzcQ2Yi3C_n)U{9V93KZHRAbj@mE z7<(U&;OO}X+V_g$x{vwscO?FS0u-PC1^zBjv~~z{KMtXYX2-&bVO+T@0@ua}Mm`=z zu0v7GZW&|k{O?-)0|h8R0Sf#k@OASLnr#o^$b(@togT(vM+EsMMX>O$C>~lE#r85W zG+D>|;Ao)$1t>s)KMHKz975GnVXS{Yj7O4TtkarDk5dr@Iz{p3jVSUCVs`vdjDMp5 z1t>s)Rd0vTI%gOsUk#(xFJXMwJc0#lBWPJHiuCDGj3^dEt`*D=juZ+|fC3cwqd>DC zLkP4FW6)P&`1G8|&KVI*j7CtmM-)Gvjbd=C7|frUAAeNi-zY!<3Q!=eTo@mG7RH^0 zBRDrAf=|vxFr=$YccQpE6vf&;F*Lgr!}WH|k3XRCFBG5v1t{Ps__OZSZ5P3s9lBSycodD^jH195 z-FMYEhJ#mO>JBkHu{wscnK1;r#_|4{IKFx~!P@yB z+4wgKP=Ep{FOXIwiqM=W_7;q3kEu)II>BjpDQ0VqHL z3j8mDlH;SOkRyg$UW#Gn?T#O@M=>+EYWOk(VAmPJPfC3cw6M-SiqxkUd z7&eTLVal}_O4p2I$3(4pe53P^yAzn!K7o7ZGe7=>j^CmH1t^fx0^6=?f08yaL=MDo z;=wpx9u~)AU&fKwPT*3L1oBTwV8OS{kCYxHe0T~_fC7IakWo5@duPT_=ax7M_Kf4E z);zxO>-?i;0$oQZ@WI{$iseXh@715!@mmz200mN2pqQTXc&u*>9nQrtqIn!^7RNF6 zS{!X2N}%kZ1QJ^k*y>K8K^5jls*VvpHw7p_fj<*?u2~F2cEm8FLL3{lUVg(J$0J%V z&(SA=AJ-=ESvY}S6_d!@hWYVle*7K`2w|!RMv`1t{=W0{QQZYo{x*&t6%y$3b^{y?~ zu$#<}R2?6DZVFI<0)HlOymK6fx5u$x&v@(_kihn%35?8_!~xBYJfo6mw;_q8njL5I zXK?S;p8@iF6rcbFQdD5Yv^Yv!isK%wdE7lafqa1kzN?|R@lp~?<|mPMB8h6bGVn?j z=0}PS5k58rC_sTf6?k)B9I*lk4Ct;k^IZwNbWajxIw$e@WX+8)k{Inz;$T_Lj+V@i zKLzABDL?@Vq^LlLP#h;3CeU^>z~WrX=3IoJ77mGw^(4W=Dz+4?Z>p zC_sU~6sTS%fmK5jc;HY1^9m<%=gUc)T%E-8KPPeVwhX*fD+8{c%#XhWn6=+Z{7-`+Llf6dWFWWC~D#0)Hv+ z%~J_Xnvj6`V*(?}CgB^FM2Vt)K3B7Z;u3Q!;g1$w`p zz=PV`YT>O(+}$pTa*LCwdn1W%_hn$N);zu&kb$;~GI0JF^CJa^2OpUN6rjLg3glRo zz+SDH*V6sE&Br9s400mN1V9D78Iu=Y~ zV5cO;f1Jczx9;10Gy^C5W#G118NjX#47<+!NYUZJ$EE-UDDbBOIF*3J6S!D8iO|p_ za_vr{Sk4Soc}CZ)-pRm}wHY|@V+NAWOrAUcQ$c={0u-P?Y6|>+?cE1(6m|Ot@GW;o z??u3f6s1e=27&Jb7+MH|6r~D;BHd6$X;O@Ig7g+3ND&YeDS}7`L6E96X@Vk6xZSIJ z`+pq&&O7hC!PgPqG08p5++4C(visSee&_j>-Jh@VdUGE4_^g(Nz3*B0?udmuxkFIf zhfr)*2<>--knm#&UuTj02+tNGM=b&(AOgt??BMIN-^y)aBG1{KGu^_tXPid6`2Ybon)e?fE1>k{6V%A|L`H5S{|lEM99~*h0J37T#RM>pgz75ML&QMR6hQ zT^mB+R0u7CA*?AX`4OHiM2=bnL_h?R7wDSN!gRi;V7ab5XP58o5&ghI`x<66A3~sXk{!wG$yN~%0TBpKfd@YYQ7DUrrWGvw5^EvwF^``ce2>A%5K4{>LHi{_PO1Yzm>q z`4FaSk{{vOLgc7LKm(Kq5ZOFIMDo2p&c#@`HQNGRwXl%K&pm@fIKDoF5@&fX zmLmC)yr66q0TB>^@D$i_Ac$jkc=zCTn$3*XPQQ0bC|$t6O#F))NL*MtyzTGpM1 zXX}uo76B0uf#d}W&j_LtUo)}(CB9y}!@|be7Ba_Mh&^RtSHTeS_vCA~FAt%tTr)9w zK-nq+A|L``DiA#)h)#(?3_KWwm)8)sC}Uyla0?gqTBw>WglTR0nk5M#yerpD4AT}O zhb;mkAOgt?43Fh|eoP7?=Vw98xfsO5d=`p!x6tA<3m@AS(lrVpZXB;c=j&f3{|&NL z1VlgtL?9dml462*VOS8GmIhJda1aSRk9ThizULs{`=jW63-9p#YJV9NLhnS$k8o@s za?Bzi0wVAzftPCqakLxvTTKb#+~y#vJP4v|9SaFlI7cpUj+6?ab8HA#XGnfL%22k8 zfCz{{xCv}G0s!Ch{9uD1qWcALYIYF0`8w|Pp0f})(8BUv7EWd5YbQ35>Rxv0e}*`UKH)O%Pq|AZ9kTuxGx7hkXCq#>FK+{>)Kc69Ewr zfp8OunG?X}y#e(9H2_ckAl?CAgLhOATTTVBv4n-IgDvFTXQ7uS`4MhyLylJjL_h@o zOkiHm07`ur!1mn%G`<(Ww@>jrtX4r}UL8a_zMhHtiiHYG_&V+vEtz}uXOQxm2#A0P zgpt79JONy<89-e30GtT{%-R(|u{#08mJXux$RJ)n8APk%7GmDEuxg9sM;J8?IaCo4 z0TK99feyF)cq3N;4{HZ7ws!!z<_55QUjRMQ@%YErygf$;sL{`8CFMG+7I z5fFi}5?FV@kB#^JSn+HCRhk5_Z)gCmRs>MsW&pWg3L-0C*CfM@AoQA&A7RxnUeb2_XHr0FLYrVE;2g?2HRyD__&((+J6r|3WD*i+~7- zKv)SxkMX0$8b9iv^P^gZ07_O5U|ZJ!MkWO?)Z#f=E%}}xJeRjC&*cp(7&%xG5CIVo zfkz5Vi1cGoM?aQL^kdfNeoVOG$8a7`?_Do|^5c0<*2MsdRt_TK171&fRr2GJkn(~E zh=2%$nLzzqezdFV$G%Q}d_L8WRXhEdf5(r>5j>XOF@O=90~nMgh`wEe=)PU@Bg~qI z9Ign6fCxNNV8AsWCc6B%U*3<^Z}_obx*t<^`7!FAAA>6f(C>YohjlrC&ebG49*HO~ zh=2%)Ko|-v+~mWjXMBiI{Ww$6kEvb#7(LUEw|4u{(;2`U?E-jxQvmt71_?tRIb;zK z0TB>^M+h7m>%-+FAELhXLDl`(UfGYhSU+NCalh7ge!N`$gSZ%EL-bCyGuUg&F;ssx;!6?=VZ0G>PODV0FKX+{CJe3 zY!?9$5P@(L$bR07c1|Bwmh)j%dmp+?<#CX&d^r7p`?Q|t_2|9*D9&rse=Nk;GZ`-V z5pL~6j#mUkKm;BoaD0asPyggaY)&6~*72dpKp!qF^Wg@Mr{B-u$L1JbPsn{(Te%PG zQQslkML+~ZKm@{1pu_?%&L8%onBhfBH>_KA78lQ11G$pU2XpcumNmpZ$^_ z;nzImh($mIL?Bs#ZyI|sYPc7bR(WybtQS9VKh}flJ_O(N!L`_j94CA@o6nCnZ~1ZV zsN_eoh_X=xL_h?>P~c1vFWztN#fzi7xVz4aR@c1fl-Gw|4S6os2p`^E??XM4YY^_k zisC-3FeH*g76B0u0TD<>V9Emz>K69mVKXn{-t*$Z7B5QQ@uEs0AL_L5q0x9BvLE$f zdT~E;@%0sx`3l)20wN#+A`pfG4R(9ryYIoU=e_W?^`i3>FFx7rh2rrdQz;+v@O-TE zJeJ-r#A6}yPXt6j1Vlgt{$IeJ?!n0Y9@u_Q{%$27l6Xx> ziPMrF(r83L1Vlgteiv|5^5DJh9yk|xFzz@%JH6;r!;3Hac#%1g*Myw$VogRL1~ljS zylW&sq}_;s2#A0P{4P*1s|SnVLBS#XyoR4Idk~e^i#d(B4tbaBkWE~N-1OplSs$9c zFZm(uMg&Aa1VrF>fx~xAG%D)B*R4HhJjsJAdpyX*{a6RfdhrzZV|AbH#pbWQ$eqiF zk$ogTq}_;s2#A0P{4Ox$mdYpcy5D<<=0KrjPT%i3lF+~;K8)7JZNfqkg>EE2Rd>clECwN z`TAHQCITWL0wVCA0`-QtDE)93EgS8k+*4dMW3G#GtZ>n^4KDi6cc+al#rm4~cAAOq z2TfSEiJ8?rDAmt{7Ari+e$IoVS-prSFJ2z%#quvDKhnlom!l8?5qOdU4a#svly%Xz zaxQ9F%|$2SqF16_biA#LqPw|h>OjsD&Xp(mH&eoQ-LGe&9%sn86(;&$G~vqQ!NMjU z>>uO7*v~zvbK3)}kQdut^}?}G@*^djGua0b5P_5E)!T-cHi`Iw@;EC$${pq!Xi@ z6f?<5$7VZeZK9Lftas9>9ZouXgtO+nlP=wI(l{;k=SZJB26pE)5!u|tmJdus?=f-R zZz5|24-R+pVB$Ov8Xe*zbJCr%PC8t}NrM|W=|M{;_3h%M0Rx>BH`+-NbDgQWKWpSF18cuB zp!{Os?dMIH9Zd|FXCnOx6BW{Xa5vI}PX>4pm*hdU^B&2Ll+b8pA4EU|{!xKuOC5B7 zfrBc{bI`iE4(c)AL4)}B(F+|kWs!qUE_YD#4Gt>1-9ef5JLsq54(`)(Q1;snn&fv- z`V3CW#QCzZTJ05i2 zDEaY^Hd^`PA|L|)xWM+>4r=$JgRH6!T2#?N5&S4o$w8GXJE(3I2Q}sGGa?<-?_~!y zdBs5`+dIhB!$BM4I8VkpX!Udl6VeAYmT zoFy(~fzi#NXTj7k!f*O(DDindbW;(=0`i|DbAI~ zoGGapq%9d3&lz&=Jp-?D4RV}okj7ktMD;WAYm$lj=eaK{JFiQx=fRX=k{_x0T+6I>qtxsE>4-v`VMBt94qzuW#J0)0F)>_5N0; zs0%u|f6}SHN2l9P?(fR&p!bS6XiJUMn;)lg8c<6cD9af#rndnr$-vMn1_ni#7}(mx z(^F0KAT)K73`~1seU?D?XMFC>(p$tPVFY?RDHHic@jBy*6H-p4*u-dT(5ku(}SBj6|?nJ zTYt3ox$zNa$eB_GO0_hwVv2#pLk1Q*Of0C)wZ{+>bJv)-%i|#6aS&%i$&b|9_GQ0C zKm`82KztLO%0%gOgmmg#Tc>AU*e)35X5P?)GP&+T@K@OcpXVIxh2Axhg_-93@ z@l$!>BFaVN-Uz&`WLtssj1UY&Y*-=I&J8h zdUNBC(^&3+8^bTVv5zz4xuOONcQ8n87!dWJ&AC~+`3+G&pK?FqLuM2plYcyxFMm65o=-hi6H65+d%y%`y zaL$K88Z8~5(T4sSJ^PkM-QqM_&D-t|)+qlw8Wo$UQN@`Wy|hRpTCGuf&X~Xcms9>b zYtD9K+y*y}A9ADILpPR|F_0_PK=!2uvRp8*IhToyQ6@U@bxmq=4U+PYNcK(w=COI))=Yt-vCjrzu>t?c+sc-Kfb;^(+=`V%)QpLZiEw}E`o20oZzVB&5A<^2Z6 zl{L|cYmgTcBtM=^tCVjM0TDrJTII^&OQ)JydB@NTul+(_U`;aqgmexRGPD8|UY`QDcuAYlChS ztZHCdKLZ+H*JRCQUK_$SNM{}g`QtP4ECM1R0^uOgdxuJkwyN~)XDaC%RjRs9rB$m{ zy1SC|Vg=_&qDo&bR_U8XD!sH+rM1gcibzr^{v(w><@cs_qXBK)s5!t5N4y(FHo1{- z+YMJSUIWsRuW2&JK+B^B$|>B3RY~$At+xd^J`oUse-}tUL8Y2wRq8#GbL4H#ks&I1 z<5a3OP^Gc`R65vOrL4VF+Ru+FeN_*#HQH^U9na-Wy9#n-A|L`H@GpUZ162B`hf3|>7zI=I=L}_m>XLY-6(y*jYWA3 z+-YK<7GKXKX$!9_yk%hB(~=+mYF+Y^2#7#h5*Wy}!+>r)X3<`yX|HlU(L|*nskEV% zN>^*Bl)EbTOI1?ox$-JCdV$|lN~JT!RXSTtrSG5TF%EuKN`_Z<{C589)^%ec_hEJC zKCE%`-0+-qqXEz3{SXFj3^UMdoq>}-7-*eC@*^$%_aet40wSO&IohaXH&f{j*ATaB zs}!iFQbx{*0wq+6c~&JyejfA4!($scRceq;rRdBm#br=wn@gqbPL;lJsI*fLzufqv z?F_5w#+l~42A%t`VrICpgy-?zSNK}))eTJLF?8=T10zoJy+P7Re*9r3&mtfKsb64G zO`acBk;lNfmgrH0`=kn}G?;T@Tt<}=G#<V8+De!nO*k2KorcmNlC2Ynz9(BgEM7z-_iL-<2hgJcFT0T^$D`&)8oC{;lD>UPzLWhqjbmE9Y-yc%w%6^4@ z-lI@&e)QR`P~Wd4JCbV-FWq-za&ZF}`C2BGXBe3N+r0_pp9qM62&4gl?3O}nxTd&! zOQ8!~KO8=%(3TSlZ9c5fKF)YAY}{epQBLd1FkQ)mN@Yi=R+T^DPk3x%QB$H*-sNJo&RC-zWkiAOa~{ z00X%Xiulh0aDQRG_Lt?aJ|dT+WOaiYVlY;PH(-3T@5C^+-mAUP{kn z>FM~hE`@SBB|lR3S(d#M0TB>^zbEi5kA3^5^0@bSo^SgO*BL_;s@b2%G`cJFYdfwl zUQuXfeXcdQUuq0z#+H%_-6^V2`DYXw$n}MioiihYLYs7jKC*1werRLUT^pf0HX8Bc z@9mX*N(4ke1VkVu3tZ;hs54ff9^6OOx*umo53V6PD|G8Mg{pCGEP0vpq?ST)6%|_h zJdcrcoiT?q<0xl_mPw)d4j$tO*l2st#)2Ph{BYhzkrOt4K4PN^KT`6s%f5+#2#A0P z{C$BW9uHr~V;g5WaUT?CMs=Pe)uV|*^SIu)!TnS*oEzJUD^!GQjY&BbBCa!ra-H!y zXU2ZcjPloQG&yTy>QNgf_Snd?%|@FIHVUn=@#bpDkH3Fr+sK;0nK9YM z)9=~nFx0EZKE&uQ60a;IlyBYwYJ!}`jL(C z+%Hv{Gh^cj8_#fF6zRcP(UG^cvN0ptM!P8f9X9U0Xrp39$&bfBJMs-8AOa$gvIUl0 zwK12oVkgg;@*d{@_wyKd@9j2{Hrc4dwZ@M#Y{ZYXQ8v!TNv^CnIqAGaKK3Vk3h4rdqA!aq-1A4$rpX zm}X=41RIguKXsXFjd5*llx)OnI%?U_tJp|a#zy9%HnJDsIas-D_%hqr-q7Yd<HuFnf%RZ+Y%irnh)bZeJT; z_T>4vo&Qx!Osm0TBc*I)D9G87$3{-BHzsgy1cD(HFhjV0PqO2Qo)Gym5fA|pNMiz7 zvvQr{o01)A>@>^ah=2%)!2e9Z;@lX(xpCtM$&UXSvV5@!h=2%) lfCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2&5u`{{tLY2lfB} literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/input_dsm.npy b/tests/golden/fixtures/input_dsm.npy new file mode 100644 index 0000000000000000000000000000000000000000..4d90807273fda5efab8c1cf7e926bbffd7401374 GIT binary patch literal 640128 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

`Fv>Q$DwyLiG{b7n}l^4B^-{qQpv>`iCs?( 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 z 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

    ~gi>$N3S%k+{bf)JA#~ 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/input_params.npz b/tests/golden/fixtures/input_params.npz new file mode 100644 index 0000000000000000000000000000000000000000..93bbbc6f176f391bf6bcc8b88cd7cb2bef4a0862 GIT binary patch literal 530 zcmWIWW@gc4fB;1X#XkYc|Dk}BL4=_=IWZ?yFR!4IkwJi=1F8&0PxcG-4Txl9C}XHr zPf0CKE>gErP`635P}fmVPs=YVDN4+X&o4?z1&O;Q<`ky_#fvi%3sQl64NV<|S_O&# z7sNRq>;q7|Aa>WR9_9sJpcfKz6D!IRb4mxZHyl=Zx;g}SGcxHiqs9d&s6m($8uTEl qfe}Q)V+LIt$p0{HydafO(7<>Y$U+H?0B=?{kSr4r76Iulu*m?yhHa_< literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/input_tdsm.npy b/tests/golden/fixtures/input_tdsm.npy new file mode 100644 index 0000000000000000000000000000000000000000..3e1143828325ac5f2ecc5856ff29468554f65a6a GIT binary patch literal 640128 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 tSl?F#R6qq(Km}Al1yn!xtliEwzx3XCIT8fP3! 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/input_wall_ht.npy b/tests/golden/fixtures/input_wall_ht.npy new file mode 100644 index 0000000000000000000000000000000000000000..97498e17962a82be8602203b3c220f279cced66d GIT binary patch literal 640128 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

    h>jo5Y4Z2pv$7%lPBuvQl#E-Y zi;p2Q|ElG##T6m+M9I4c)jYG%Iq}~)C+6z252Rj?%I~a{-|bRo52PpUhJ-o0nA@T1 zx6A?~ehAHxWjU%mLl{T=5WcvHXqWRt8-0j{@rR*av1Z)705YDUzi%pG(MI3~(&sCJ zemaIE$$PVL*rAy3eLQ~nkzIEWNQLzFm-Gg`E{aXA3G8DKXG%7t95TmWMQ(W+KzZXByge8zSV*v!aE`XFe3qbrj8&E+uaNlG@!XL)}O8)4D5crj0AK#ga z@7Z_>@E>hNR@*|b@|7T7RuzdyDjGyaNmd@ zpD3~tl{rw#k$qe27$W?+m#QO5{r||es&v9m^EHsX?U8j8g%8cV3#t5PEA$<;haU+R zp8r5Uu(u1<4;6Q;hHVqg$A2olHbgx)g6}T#Yo_HX@3`yZrcCWm3RD8eKO(YfpMoD+ z9%04jsi?`3ROzXgQ>FW!O-0rJlPbONbgES0sZ;?DrlOHgQ86a`P!6O|Uk5M07CpbL z)p4%HQ)cb}>HY1H(q=n|x!b^b@ixdDjqh8yAI?qu2s}xCUNiKW@&3g08k`0EkWNgG zYKu4pVlwdG3O(}av6 z;lTrnbqaO*BZU^N?pqRe>Qx*nd1vErt+Tg=&i|6i?890utm8nz&+gLInjRX^XM8l zHg*;8$t&QC@5pVQB=20!cOOUc^Z2PC4DSfy_VyrsWn({99LFAtpIrNIA^y+YUq#=K zGWoTf@q=6T2+@AkUSYp+JgAn@!a(!L+>rOj?T|S}-v4Cb;A>gOkkIl2mUL*%2|pSA zKhl<|@uYvE*QXTRP_d(!W)6?g-T_FZ7k1rS8dvkmGfbLgeGNUWWoJu195BH;4!BUs ze(#rii*RhpCJ3*Mv=uY|-*r zjMgA-xmo^Z^NkSvAsNDNTt~hhal{XAbvk}!f66`&TI#ZL!Vh2f*&rR5MfQ_ykZ;_2 zc^!*wyijVtE+Tf5zYBWRPO2UqOH|S=zl$#_gOVs1unmMiey9FdDC`dJRQmr&;SCl= z?#H5VgC_X0!H8B|mSyQrPiFR?YDZeLE|z!>=Uc~*it;-ERefrBtnx<4gAI_9n+tvF zD z+)mc!AJHb`eQ|)#gy4f-8B3Nz(dA1ZZG?<9c?%$2p2HX3v%ZhW%;vH#5B=O6gzJ-l z%V-L&9~%Qdt`P)|H%0f{#|p4cB}PI_}`g(@dZn5 z_s7MuHkp4@R@I3MQD1ZXNT2P8&}WhLv{*1C^BHptalhk@9&_Lf*X0Ra#v)x-*(Z1Q zLfnyCkw#hpF8|>v;QR|S@Zyxv? z%>maB0(eHx1o4OIkhI?m`5PnmV+NV$U`B9xL*RD-xb~+4_h2V*|J@OUtd0;q+QHI) zMyVQqQAZ+=B+&Q$VO>)W_>s{wi)gcI6TehVfmg}%*ZJLdW9t(OhGhI{ zjv?rSCCF-ZgsRgl^H|lP(xbHDL|s}e(Z?13v>M&8K2>FF!^tn1&-rQT)wqzc9MX?? z!ClV_!#gg6&JRV;3#xS5u<9I(^QiBym)}jY9tx^j$2YBBt8rHRa9vfc)X%Q5d5Bd{ zJn>`k+ZKIFGSUP;3~aj_l-4)pm1U47Uw`Sl#gM`;g20glkhDG<^7hP!j7m24AQ_aE zPll&*ClJ?l1n>Bcz{{sgJ{|HY%*W$Iuo`)d(KW)xyDrKYKfHI+*Yn+%YzA%!=3eA1 z;RiQyJtY1`9)FR%U!RgLikiF1mx#XJpB=%J&0<%c)R)il%YOlfFF7Cw=KlS7eRIoeJv*Y zPm}wQa>kJCx9In^d7nN?^}piVSTIC9V4Qb1TrW98T(An^^0j%wl7&djSZGS8<%u;e zv>8_}`g%MZKm5?wIq}EnIpD=_{k!lZCGB!-8x}u)n|kfyi67Zjt?g;iU!&r58RG|5 z=b23Jkw-vyQ+^Nmz!_Ly(sv^XKpL8UK@_CqJ`SvNuad8kc0!|5k#SR{K0vNVK1J>oUm`tCJn>`hp7R?&qI~njG^{`QA3H(#73=F0QL@j0gu7rF1V3K} ziQmiTN%{O!J}=Td+Z-qSNbj^9yhAi{33bnyv;$m6EViFA#t`=v^fl4ECf4`o#)KhB z=5y!VmH6j}#jn;Ng6qpP8+8@RO>h0b%ML#Z?u*8cgcUaN!)Lr75uYQ^i^h6!JOz>c zUcpnBfU|972rN$k_qSDmzql&oAFB?oC-GwsoNjLAk5Sh%p7@d0Ewb+fr<*D7ERH|4 z_64UJ@k9JJGEam8?LfS=EjUKp0)fw413$DCxE9_FuKq6Il5fCbk5>M<8ZWra3yHrj z1OMyGAib9SP2HAICni zi629a_avb$Y-39^8*$}%|Bdf{ue>drAhhy#Bvktc1s{~hHQC!@+Y@=lXwNIL{a;J# zevaTrsJ9V6gl8l8QED$C!vE3&!XA0w?uup*zPBmxS2uy+@kS6HeXVJKN)UNgv-4)G zg^Z-Nka%Pb1Rq%gzB+3lZ{})1N%XO|ztIY6ecdN#L5N?EY*$W$AK6B0cKi-PZ}#iW;6VpSKtvplPs6t9796)Z%3isTamPC3sUr+wd2D% zsJwKam|1rCG2`cG{0KC+I95L61W&T@z9ebB`SrBz!#COYCY$MK^?ZqcPh7hN`pnu2 z1Ey}1-&?z{_%!1+D{nP~t?ir1aahF<3v1`5y3Y^<1JkkpV}2<+e$aF|Jq#fiv zys!tn8+U`}UG{t0qGt3peXZ`Z85i4Sq4LsS|76+WhtMgqhp|GG$i`^9GoTom^uaJE>$Uj%Y)*j3pd?{NIBgLMg6lw<{sU2{yv;+Qid9LiO^AA^O^)F~U*Wk}sFr;XEN#B7M z#nuk_C+*E8I7jU>)JLhmf*ZxyA;-~ok3w3d=)GEbUq+{;6t?@?%%f#D*H61{cFID( z&qj9mtn%y~PwwBW%F@&4EsWqt56w7NPj@b*3n0GhDv6oKu@kMnR6j=i@*jpCk56m}LlcB*58ha>5#udLjMv>Zs zyP!Qd!|lt?CYm8Jlx2TE4>H@#!`f{JKMLoIP>>zzH(W7{gY#y@HjfZ^Fd7R~+)&-+ zIcCI|l&O(t4htt)95ZD`>aFTHS3@-M5fmzT0CDvOB4OYih`S>N#oJc&P1*S){C)&K zc&Ekd6z_^M%FF!7-n|e>JnF|judA2ge$v?XRT^hg>;BBoiOg+yuUHN*Ld9WyMwg z@O`+dDvqMX<tcY5_$O4lv1KJ7nm88m3R92{P5&-^F@{%4irvtD~kI^oxN zi)WhiXNNmQa}Umt-4w#UPZt7RTjdNvHOxQg10$>Yir}BfKkXHHLRrFL0{G$m4v!y1 z3-sQ0dGkd;{kjm!|5*s`KNmvqtA$X(?Xx*IF9gp-4sV8_`4XvTxS3D4|MXx8GgsPI zO2^99!wg^uRol9?Ap7Dqpa(kyUuOLp!;rFJ(mfHOTu(^t(zW!)BS?|Mi z^7V}pEYV|c=9krnAF1o(_%ZVbbK{+!I#@|Fd7t@y-Tc4idF6FrSUh&{w9a46`7<>j z#Sdbu^g1Z}CpL~n`l{dur=MvafKcH=VD0L3@_M1tq0Y*=2TvD?+^u{3L&;UmO8`HT zM&Rvo|7L!!QTo;*a2GCu@`>E}-M)(;&}0$#f8em3!E>7%d#-O&mHPB6_~#0^{^xj3<>bx{+Vsvbs|*3aaD<-x_UoY14Mo4+Ls_pZ9+_(0S%ivu>Sq*_o0{_{yIzVP zY41w$qr856|Hqp@A1dg%;H%9&=QfXf4@RRG!I3u&%9!}r;Y>{&Kay@z&OID2SL57+ z?@S5cMmzF)_ub=f;%iGtxhk0@PaDGz6;Zm2Y-9EBKk62G77;ocox1i@ zze!KR{h6#!X`vK9crm>m3__q*5ccmZf_(1zrMiJ4uoaoRk2YzRCR=&bJbsj{$6p_s zie&`tuE66*gPG>AgID30CdCgvFZ@w1Fv;9|_qq2Z^Jyc$(l6D=Fg>zDmpre~%X05A z)Wd6<#w30)g?PIh`PGXZ$hvlo?`fgRBY*1{??sGa{0PpGo=YPBV_-hR%|l$_7sJ32o<`r=u|v@)O|+V zFDNAyjS?U0#d7UUjIF1LdBt(p55pB$;mX4AF^G9h$4%k~OXKk)nt2-VgL8oQMddw# z*e}5j#xcZwz4YGNbG`DLF=8F4xUCy{T~bV2{s4ZRwxp4<{q6Ajt%`mm)@5b9q&wbj zEA^bovK+tazz;+P>M~Q2?Udu5%bnZtL*2*x$Z~`z)vO&(Z5(LOP1?^RE2Qf&stOQ= zyF-bO{k+)dH0it_p$ePT;bJ^?@Jz?*s+Z#g+kaNSSH+Z|CGuD` zo|83+9lYJ_<9PfCUUz!%gSV^XJ?Z@$pC|n2dyL_Sz~}EdPSP&rKO2`rI7Uch2(tMw z`8)M7IQ)UJ`y|`Jn!^v?et%DM*CEe)F8m1YoTiz2bp8~LA7*5!@i-4?<45)_MUpxk zUKZcyQAl5 zDQ<|)H)DI2%{+cIUxU9dD{ZguxP2dKl?e&OMU)S0i@tjxmWJRBJqT z@M5WMrw>1P{lvxU7~&|KBDvS%d9;468Orwpgeh$~Y#M&;s`OoBec01GzQ#b_h`%=Y zy0|W>Sqz~f8w~qY%jaiJdAES!x^GJJ8Rn@De+0_8Zywh%wmvGhqx^w=1av4GMt%GS>HoTe``0Xf@Op_hn^b)+*mkakjvM1= zHRW~7e`gN3dc>dK5XwuopBeZe*po<@LQ2PYwp5BIW@SfvnU`ZrR=>W85AoNIn!Wa0 z5_?YsPPXe1_Z{PI>SGp;m(TY*hbXQ+CZjDx@|TeOpBk^cjJ&6LY@GYMsY0fN)+Bz= z599Y_JW~>1%ahn>GU4AhN44(kx06-NQEI&(X8~Dzq?8YVA&&iHfyo&yr4tKe)%&)X zR1qJ&LxNe+*63$99Bj?w2XAX++Gc#c6_q(RGN|+L_oKyQ{ot;n?29GsjGx0eQ@xeh zIzBJvZLGUpiYI36wv987AMPQsdn}ahu{+IS2QRCP!nZX_myta8JY_%8!yj(vMP74R z`{=5C0Y~H^N3TT6ha%XWv092J zLcY<^vCKSvFdySFBKs)%o=cB?6-)7RO+EZ-H12)Md8!({Q08zCMqY31!U@QHfsYTx zctQ>J0ySZXCJ)aS&Bm`m@#Shi$F4iDI{fX=9Q@$xPf0I0$KzE24fc zi<9Z9{VYRtXj`W;r@eOtM2Jk;!YUcsg;Vw=JjLfN?#?melFAGo^u=EN~% z_fOjWuwsCI3`v_|?)h)qygX>buX{a6aYp zkIBAMAg4{Sqwlxmbnq@!yxc8k7Isvc|H$v8Ewu^OW}e1TG*Pu2;Ra+DU9X=)PKwI6GIZmI3T}uE z$?Ai~kg`!b6?TdFsw-ah>AwR%T$}Ol6j1XmQFmr#yL7In?<_~!TX_8F&?Fa19?OO3 zlw7cHHisQzTL)c$zV~-F*52FL{Z0`$&(DL@PgX*7wedL(Z%5Q)9zT4y;qf7K5xz`Z ze^fl}K=sT$cwO`y^>q@IJwjgi`==GxH^Gcm~em9e&300z)oN@YYs=s-rTP6hhXEm6f!>Z&shhuV)#)yN*h1I-SPd? z@o3_BA#Ri4VhnbCri~q9IYK<8*=k^(UJb+Nq3>@5I(g{GF^3@ph1cV5jxUqzm#4EX ztUmnk{ieQ7BDY0IhqpX~yv~TWW03g*pIXR}N<0$i!{<-H%H=Uc{wMGWA=RfXmOo{V zwf+tNG7HFWW&!=FLEnmSL$I4|sE!}Z3;63(kbw=;`zw4BD$##UV=?5z`I56%SpA{` z_k1*d2qaP0PH@~(GdL3H{IbF?f*t2d*qqxxFk6?DZ({h-;ahF|Xs{jKKRYkh-_P{g zNnMG?iHtVJ_r>Y2CQJHouPv*=agh7FuNX3aEQW0V8YsPeEmVBA7Rr~e16QjM?AR7R zpSU}k2Zz{vsKD&;$?G(HsCxe|PvGoh$<5}T6P4SDOEbG>fUDh$m47%IdA>grJy&q- z9c8*-dN1}Md8uoSuZfBAgtwjQe>+lkWm#>D@M9VG{NI>3W)K8%4KGDAOI3brwfBu~zRN?VB`ObhjEh}TbD!(qs+J0W;q^XNNMD7@K$Nth5ojIzs_yy@-c>C@q?$=IS=uYFM+2v`dTCWTcLFJR-|pr zz@6ZnP<=Q;4%mUzi*dzSmF><$uk{$IM6|Z{{ZYwflaM}4OYl9nC_8%{MB|5hT+QG| z$+v64_hAtnqk>R!=_)8YsQ>x+u|;ct)`Rj#q?;$^J>X9Th99LB2m1d9?vIatM|<(k^F3VVz`tvZX{AJUx%pM zy7!jQ7bx+A*Wv$thE%`KIS0=x{yFUG_~HE-fwRfaNp*_^lJzc^l;JRh{6^^`=H=M) zWsVcdbC4nxu_y*Z*ll?1@a^6rv5gl*98%^9x?B(MgoxYv@!mb(dYOXFr!y=co%mVR zLqE=j$QBiZOJ#n&yge=;&(sJGp-Qng&5(-WqyMPo#k$?sFuG=8|9`2F#+Ug){G z9>1jQG^^$K0r7+V*fmg*bF+HesbJCY_gK+2J0 zh=0-|a6Tc$4|mG^N?zC9vGqD~xW-t7zz_dZc?>cZ_qe2G`#QJ;IAvAte6i(6f+vErGz?NlxFGettY=G{AgQDnsfe#nfG=BJA zz+VqG?psv|@es?=Hk7Yg4#BQD;Q4Ja*q1JXWM%=R)aSk- zHaT_=iIa!SKXE6C%;z%c%Mz0-?md!Dies9fl=cWIs zpM!QJa~P5!b_n&PXQpE7!_!1R8v)Gy_&O7PuT)ew&le0j<<>gBdY)r2AA&Mget+s^zwt zc@caC)2sT4P{xPJo~g)uF%2Jg)=qpcW(S4Fi4vQ+v9~7iBjszf?Sh{M9YxQrgmOJ$ z>5BQ_Z9Wf(B0rRJ&-}6dxc3QEya?2+IQBbUGVZJLN6~98IGflZ=_IZ!vQK>v7sW^3 z{w#Ps80_E}s7vwVAWEJ*k35cF`{!wGlr{JfTt6Fpfp(4F+Y1ERX(O z`F?qU#52Jf>=5Mfp?f|aL%dg8gCD#eHrKeU$Y;iQs5ky3d0lG167HKmYUPTu7nS(o zeR(s4r|82DULN@qo;KLJ`tYOVopT32*aJE-U(ta2GuSuv;Ri3VL4EV%WQXU_eK6}O zv6 z_Ss%+1>y6W>y{h%K#3jUm+)AC)63^O!)QMC$LcwA8|k!5cRkhYK2ypZhtOlLRrW>J z`ykxk2RjseUGpEpm(g@zs9wJ8SLO?F^G5k<8;t1 zRrWpx8eh8-^w4XbR=qZ}8k*miCyork%1+5fug3^>84aoXwedqN(=kHd_%G&>$H~c8 zVe7}!lG6y)a=AQIntt~vDbA1l*8!nEH&@BkgCWGN%IC$>mY^{}tV=EK-;3raKDHJ^ znBsE_I}YE9KkK9BZ?k3W4chn64(@qvv-0Wfcr0}OR0QsuxbNORQwa2`0?7U@AIj46 zA!9=xgq!DqbJ0rJU3(=sxp(^t`fGar5g3ifh*EdlF2TO)2+iV$J9SI#oHW06_(6SrZea)S z&)r`0&l701hrFDu=uPr@X$ASf%*=t6T7j|64{cS9SUJn&QY12Yz^Lqj0aQj8cx%hP^lsvt8Y@zb{;CT;h%2ix9 zdSx1=Gm9UAcCj(9;!zzq$FwI=c2VD$n|s*4(t#bE!pOts>K*`vvI0j+Ztf|nSXo}Y#C0TI6u5IE}KZZv{Dw;+<}xS#}M}53W$QTUzLwi zj`?DpM&pk8N_iE16T^`5@?Ah3Jom7p(zoB>pH(yJdo6kaKX7!!{(PX0n8OZUrmwJi z#&n#$$GYajF@pQ!_9c#S->E$|Iv-M2{YbL-1ts=^x+4u+tqR$_x`f6SYPur z@*ndep5C$1TI}F;N3S)GA3UGy`^3h0UWTLZ6IhaUVnA`9MPq4_?x9r{P|MwyuTEBHOv9m6FK0> z&QbW?;aBDfHnDAM?%8oe_`&0b!Jpdv#GAn0NA%OD6h6h8b`>5EP&}@}F?iXJSdSkm zx0=Hb-ga+i3oxYh<;eQFdKkbD9y>IC>>cPeEP*Y0qjD|VnTvn_h`?tyq+2QRgO^n? z&=`g=u3g|6ac*M=@0YRfhLHV)FSGKe2R{})cqyIuu~-EQa0*`=jcuQBbS}0G zCr&M&xWhbl2y&TqjT5pdw7EW(KYYX0*fK#sKj)~5t3=2HHWF7HYS>(%C(yG*k%!|q zn_s?rBT`4{J^C;t^7<=CezW$R$$Y*J8)~Gk)r}vXOYvur8{8EF&+c^)th)}vm#>8r zjn;s@Suwa;*6i7VMEikn`ofxNE4^oTP0T$6A5a-+{78B=Q&L9(N5r8ZLmWnr>%3G_&a*lHbtHw!|Kr08;v3EyVWtI{Gxvkb_hPVUA?~A+oihkgSiTgAH~nB z&#%aTRzc~5s~}^sx%0h(4{ItUre#Ap!M!hJ)_m~%IS+#U=Rx`V){S2^G56qo<>S5) zBKKLetv(D8V~G&=@9m-x?DFFg~e4AJ}c#FfRwYYIQo zdMfe5pQ8^yFs3I_E$|o;O<4qiFBSs1av}JiF*c9$PFKf|qy*<572CP@m4s$PN7~%-j!}jgSL-8|Jde^MP_6czTL!y0dROoVD zuYS)j$gnabA3@^>uY-DBiXlYP9SWPRwB>A()yh^qV_L#s(c3oCLQ0l)dpd$`(G)me)d3AJ^k}3?YXkjvu_v2w7L6 zlh5OS#0RJF!^FHJCL#XcHvDFZj*^NUV0WIrvDx1Qk0IoS7=~12)I7GuJ$7cr$bD-i z?PryBHGv=OujsvV`eXcfFRq{W)I01Q+}uN)FNwE5qH9l3!Xr)`T?@fAYr&Jpg$vgL zHEk^f+-tda7*>zp#i~(p_t!MgkqHp#H4dV8jfQBWkq|zHe*Of-UwLL1S)iTC1eEx} zK9v}LL~D0Nwq10C5>q$2$y@M?u*E`I*O^SYWz$9*k%@^bpqOTjf=s>9dt^zI}0dau{?S=c9? zhsf*oZ%k(wTfc@?-T2{4Ly!5T*BHC!FYkwzQ`HX=#g8gM%1B^$%{|Ad)Go~lk68{W zzvh7R;8O6uvjmu}iy@pB;MR9#h0yqb6)Rn{@0yPz;X#tHF0<6&xB7 zgrsmGjQt$F7oewJ)r}t|+%w@QJBs(|n|q*mk$KgGAHL12k@h2PIL(UG$R87EKG$FXpbI=@D}nO7dh@|TY@fA+a_g!*1dO3!&% zy&5K07PIS>ej&Qwt}4^NUWp;ZJUo6xrki^ngnZRjX$RTorpl10rH&yKX$(V%OA!0- zf4@*w_nO8K@1AuK;{Nosn;MP1Hv`O@2Ilc%UJ=%@8*L0$>ost_%dC- zu6F!*6^$SJhbP__B+XY%_>ty)N!5=uy#j3QR{(RIfwXN5R6N4{mF7Z4`&@`_S`K9` zmO~_0Ut37(V{wA5y%c<(E(TZk0HjP>2$8kfz_}xlCX6xr>dMZ(265o4UuZ;HNU$LbPjJ@IKg9QO5K5huD$%k*Ady!Ym+=w7eYL zkL}(796!Y71)=+Hsp9wV(!h_eV>pA8E6%soZd4^#$S>&07!tg59c1;lW~{K? zm|Il`YUuxCh|spUu(atisC!)wbha;rO;;`fGAg~-t8VPz?JAjx#*b{mnm$og_iDnA z@*7rF^|>ltry>!z{yu11x&p|nS3qz&11S}`P~IjN2y!{N9$W@w6OH+STyYJjZFPrW zeV}CuweB%2Z^`>huw`0u`SPqz(*7*wp^hbn9hI^^RN{wNN3_;|754j+S}O8*9{(#! z{0N1O;Ri#+<^<6lw*u9*wL%YlLIXq2)3F!wvvN;AxP7WZ7hk8Ezz@2XMdQSu%6mBS zWE@ZU`uzV-+XDyk1K=6I2s-y$2zw_lfbtd9x1N|^g2oQs%8b1h?@Q~%5AuCudl`O} zZ#8+!mLsn#?N(4y*jFqD-|7Ik4=)1ZrbQ5ab|I9FUI1wWvLV@F!C0tNsXNCu)@!<+ zuC;C~Z|Kvd*fKrFxo*SHUEJHU6OzsAXS#hzYS}?fP+~}gL}N%4v5rODrHvuL5Y4=4fBzeq*Gr{AWA;}Zu%fp($kh0hGjYouQ3E0-f`vn_{-=h$p zEBjk;m38-ka=)A@>BIkopxy6l!Tqd0A6jL1;6yQ$wkd|tlGV`p=G9RC>Ps-WoBDo$ zSa;+ZG=6w?pC0VsZOhupeP^VzKKyWu!D9#enX)g6>z?ey-y4hRjK)LDXX(181-Xt3 zh67W77}%Pbn?o=MM;Ov4=oN>|=RJ`!*bB{HyY$uZaY3w0h`YMq3;g)6g#iM+Jk;~v zUVqy=ko5{tHz4!FcT2};xlWdqt{wST#r7dW{m?ii=NHo9BK5s;W?_8oEBeokK>Z`d zyR>hN^|9*2kMR065SgoQ+$-yczUD%M;(di(sl0BP8_oAa!RKdcIQcExO4?=?KH=I|r@$|^`{ zvkE+`fUqGs?T@+^9;%eZq_eH*ro{tw*UN>oB^>L1;HS)_k zIaBp|^v@nwS?=$arB3(M0M&BACfg0_as)cHkbRPp=!!0VuqsXE93}ZbHGWi?cQU?z zN2B*w$w%=Dd2&1v(tJ7nkv4wV=5pgZ=I8nijUV(RJbv(^h|jO7l zX(xBq9hF}bd6gK_`2v!fdKpPAyMZ*T^UxjJEUUwb-*ce3EeA3$UkZD|?d)Qcg*um>b8;{2ivZXqH1aFSvhvzD5 z@uO_rOmKhyA|&7WBC;*1yJGl(^phwv)bS}KzlfwV>fJC(7oD7szP3M5eKLVu+)u$D zwRKVC2{VJ5t*Yr#D)L@6FSc)4tV zn-gpN*zaO{xZyHwS`AUiV&bmpP&R{mf7XF%Q2HJB{;UtD0JTebP9Mq4WrknquUUui zontg<NZDZ-EO{yT3(){}TkAAaz* zdQ0*0QFS4Iy+@+cHod(hjp7mV{I46wkkU6#VaRtU$x1nqUt%GbASXqt;^DgZ`{Jxd z>vh{$sYC1E&e*-178$DC?L7S$!Zb3EAHm+%(+*n(mp z3-yh$IC*;W-JcW#`)D!PxiNiz#%k#0c?rtLtTNu0bmE6zyLdY19z1?z-LO=bjTMi_ z&j3-cErw`^#X!Fq0NVorh~zASid_qlazb~_19lPj4Ee8q@FJdJGg1#N+Q`66qzyb@ zW#@~4hSxwbYWGGESL`dqxf%FA$RPd^_JfeW$nsk#3n1zxvH ziXoAc8zJpw?e%$qUn_Kkxijx|&0~ikpLt2&^)1kw3CX{vrqh2dQtW%spQVy!YhRf>^lK)b&1cdOYcMDhrL3& z4o#BW``_=LU2XoSMxZeyYfb!p6}Yw%=i53A(`6&^xmy>VShhHByWP{(@RVd=a?u7`d)-Y?~4YU#)gwN-sh zgv&`WzrAM+LsI%|QRNf!=!sYS7kw@1;g!>Pf2*GL0=XVO&F&7R(@Wk;XVVX*laD8n z)XJtLicW7{o8i{_mDg(qKT!6P2Md9Dq!5z0d-MDj1u%1XzNLKtrBj@DY<2+*e>)$@ z@A9B-tvn#8m5}1Ep64F}Uap>)U&yJAAAu_ufOi(UABMUw0^dsuA@DBxevjEC#Sh*L z%B6ko3S+KjHoay5vaZa9v3*fZ0jCH;Z#|EcBj%61+((l}Opl63*LBCraJ}6FTZWRA zXr5zfx~jgA_alO57|h`7vXJkn$#5dWaBBcrm!^b{EPhnW9##Si&5Yqp0` z+pNM5l-|9I^T4xhCDi(K1$4M|h2^%RbjtGveG&qD&kzjynS00Dv~>`@W*xMdpV%H8 z{S_WRd^c<3hulWp>HTxT@0!bf|H==JmVStgoCA(+vw{Ar`tT$4jR)CorM>mW(Pe0`28;D{Pqr*i}~<|)bg*Z%EwxPDrECAMxNt1F}I_lHS&UZUxep4QDdP_~e>7VEAb zivM)v1(t2H+~(@U54n%%9L93{0GxKj*VIa?vfBtjYGitw9gAvTpl~C zh0{Yds7Cz2DYZDCx?w0p?;KLuR^e-&LAF_R^Au!0&XiC~?fnwh?57RMMCl4IdlD;y z>ZCmHg_0rUxwy41`p!qemddS(jnTKS&+|Hlc7UX3?#0?6$mc`mCnbhN-be4Pi}`SI zinAA2rj;MQ@*!1Ta-RAbR(`!oYt0I4!;vE-w#;Bb+1l#G4#6Dzr{>o61pY)qdd7Oi z{)m>m(j6OB+gFPpRbG?$;eG*+AE9FpK-vk7dmvN=EY5R9)mX(GS}1vA4R?QE zEb+O24IV$TI_bYhv)F7)#f6U!1L~v~qL;=nL@qr1ziASm$jedb688(5JdOtkYto=( zi}Q%J`14)1rT8+j3_eb6RPMt>x<8DykL=P3sNe7B?)%l(g5-K!f8QdJ>3tl%rX}Y? zrNfVPlgL8RXyrxz=&C9sdT2Sa+%#@*29dS?B(?0)Q(p1pTnN@zuJ7vMHACa*diwB# z+_v2?e$d}qcOF6TS54x_rsvT3;k!J(PMhZK1Z5X=f^cUiunX>o(3i%pN19IgCz1KgY+bbLCT))Og_yURIH5U* zV8oJtNFi!AbfwQjwwGCXdikj1iJ$4xt4l)n-Rp+&Bh7YpKq) z5+Yw~@2_jgXYNDe9na_A;6>I2C)4o?ejf$LV>UlrehNd(3J~#yW+Zq%*%JF z`igvQMddnGB6ALr$w}d>&R5kZrbWdA?Q zWIn2`s`3!nQB}r8yvIfxmnjy&#i{qu_EwUGrE?t_D>50rvM(h4P;)qfG{RsevkpCP z(j|t&4uQ_``rWGS!Om%?S}w@Z3PW#SY+6n+bSBz7Fwik^EUzhMkN$e+I=<@Mv! zC85R8uGeC){~Uk@Qv;Cp_5z8&P(0O@=ia&$LXjmvH(LU(%*BvW7=ZHc&W?U2_KEkJ zkw_nw`)4Ba#k`8R27dUT(cWKI$dqL`9>Zgh_ehp;n@`F2uS@LQR>k04)4F9PPb zpI@rGt>l>E>bMOm`jh~ZwY5sdiDt_o+^?i6E%r%u#B05b#t)ayGwQreIPAdL8=)7% z4q_operEx=o?iedO&4%$@2Bs6#hJedvbHRQU@7-)uILg-xnKz}P0pOTliZJv#iJDc zqlBKV$dmIS(;E1Z;++VArzS#5UoL!XqA4B8^=T|0Q#1}+hO}3dNu)nf#T(k30pTYf zfh4C3m|9(dd=-CY$#Il{;1jWaU$&I{W^r0BB!9ddg1xzK&;PKjN~TDa=_vbxNsN=> zhS&gaRDG>Dx?KIaL$NGL{1k48^N1IglH#;l+&S*dc>aQ7Yv!DnnlJR0`8V#dq`%oW zZ>f?~@_fzVhkZ91KLS7LpMMy|51emPuUQEDC!D_diQKMIJNNDJ#oT*KY6rkOdJzQo zEd*cf)7Lj$$0k5{?D(pFBDOa)%#X|$(;(v-_>s0Mb{^OfFm^6jtSdQZ64o}`h2}6x zkni}dC%9Ik_ZA#kT_D`%Az)v8uu8wX>&mLQAVVHzUA$bAM$UsvyS}81%TmD(K@aik z{iygVOD@1GC${ndNUglMQf&IU70>es*z*H=CWf9m6&?=*I{OK3CSz-id)!+!Hr zY?;7sRY(qxVTkiDZTu)(v>a^LTZbY3f`0nyiCC{vtAFITI4+{-T)myzdJ%IDg{()4 zNJXA3qok+twZN25xaS$^MclX27J=h^^>M$f8+Xn1UjX61(D#=W>FWG4bI+J$*$un3 z+eoLi*$ra&!IK}ZUjiA_R$wP@fgPW3hLT%1Tc$@ahnTSfDbxSU>BkS=M!IQZlIVXe z$t6%sJ#Wvo*v&_ae~J?Nl&E4|bdq#Ox1}f=pbPve6iZl)N6l=kYu7`xTC{ zQp~WOdPlZkhyUWU6FYeOv!kym`+`t0gW;wh)G@-oZxhsNx(V24H$v9-4dA$VLqfVc zWTWvTd}S9ya;szhfpZi8%zH5NUYy`x&SApw4R|4I( zK~AW!t~}JKThf;O*&v5e(*X8a!{2oyn(@0arqv(Zu@wdmvxKFK`{E~yOiZB>s1I5 zRaxvP?Rg0EiZKkazZ=I8@6%EYN#ov=6)2ZthhU8RLvGJ>ANRhxz36g*?o1DNTwo1; zxUP-QJ&e@ZH-9~3%?>I1hz=p)A~b$<=#&q{_rH?jKb*Ll#163yWJYUJoJPgjgLYNF zggbEDydID%E>WdN=`fq;ES>|*z&YG^AAL|U%?GY_K47BwwVvcU__ZE? zs>w4iHGm%#i}BALd)gYuQM3N8;xm9B|_$*tON zL){*Umm8RK$n~%#Ye{*YkPf(J0I}!PeDax2SUQ1T2)&{BGa}*bar{WzYT|xK5PBAc z8JVxf+a>|KOPZU*4_;-?+vf0N?;A?|IKkv2>m$YzAud#x8ll`n5z35){N9Hi9{LG8 zsYVwqHvYZ|y6L`jVoq}i-`@<#;RH|(nn38?YjoM8W{Z)sK&}r;M{!tkhYzy;oCfY~ z(;%FQ#}!^S-P`0@u^PY+`=jFZ>cJ1&Z{4lwQ~&fMlej-- zKr>BwM3+ZFIG3ABGBOOX^Cr zP{)t4V>dz8hZ`Z|x{XkG*aj$lWqp-i_M&*)h@W?Vt;CP4-Dvzk$>ni`&-Y)Zl!Kzz zlcxtiB8?l6TCyT}w^aE@i(iPzH$xNvQoi&@zoF>)DRpWTxCc$POeq?-sL9G zO;$60cst_nAsvP3l|GF0eV;`A$$jHoG!Z-vUVx-)CnV;31Ngzr%1um{yb`C6qmbKh$34vhaXL;6rM6Ui&fH}QVqYQ~S~ zaQwO&k$JDGzr>hgTQ5C3Y)e%>|Dwxx2C##d=lmgljigM=1K)%^s2G_CY0KmJy7VH5 zT$h=ArjW-C8FmQbLpkyNJ|RyWQdgv^`dmy~73XjxiT~q%>{Ft>6vqN^6lsk4I_Dv- zStieZR2g~pMwo(K#@j?zU1~ZWJ9yG)e>8r`#28AJ-Hg5lvMwpmRUbO700v!e9c~E5 z>zRL0yUr&CdR)lPy-im=1b!pohs)_Wqt^;*H^VA^DGVCkH%G{Wu&S}SMI}5Hm4Ar z4=3JtsaE-rMdyQme?Ell1&~t0{as&Z$S%K&(nrtZh7RlyDo;G1{*5bJH|2Tui1QNg zmtGXJM>OXUWD2442Yj0fG?GvSKfFB+;E+VmE()C@HwpP`l{G4&F$k_<^c7`2>e4_6%_R z?@=JH>;?W^Jt68z;Qe|iB`SH2pH=`>e+hWG@1N4mmO|+v6Kh{8@`WPT^{22($Pk6z zPr4dvBk%1k!1=*MLp&mNl~Jna!_uQ-RHVz+Q0|l3bOx}4 zw~tw(es+YpTDspJ`TO!p8_2)wfUs7Dswef~K_O0^NrJTRD@E z{;WCp^-X4vv9&!S&kjWG$)@e`a(JEfVi80iECi|^y8r9(lM$NW3qf7>vbXfd(;37L z!9F_wX1q*}h&``4kna)@nUGpV7d<|{DlW(oLaJdVM84?*-cNe~L54{oUw3#4LxN`T zN4Ju*i!jlf)TqWkJY}e*k4g2gRv!pI(g&zJ`arZvA47FR$uyEz_C_9*b07TA8g|Tq$C-q(ygz}U^I6SxzqPq*>SR=Ha z=7s2dL7$PZq~6NPKFVW={0}8ZFMe3D_kq%HNnV$Jr~SGNtX&0Z{Z>KvD)nbTsS)Pz z?rg&kqJ8Y#E8o73r#zbNh6DRr9*#zi>P0{U%=?8dC_t zBZbi5!6KMh5W|D9k1OfIuN8rx$Dfl$kk9?`yzV3=9iMOXm;5SvZBCFQ#}h;I6wJ9@ zLH6ki{VOuD*T3^^ZjZdpQV7ngo;`9ib&l3GhjnK&e(-*BTs;sX{~ZL(p=ZI-jl&4U zFVZOXUMyR~G(|b{&s~Z0F3=+ilZqPd)XF z4A6cLVylVPU{$Z-X#9wr7rSRyvzG`LL7;XJGVjwj*4OQ%kIsR>7&SZ8%KV*`b1OCa z%ChVBl1cJE1k;&1|FAVhua7YIN-?ASJ?@#1o0frd=Q0RPSPtcoYf1k_xJolC-2Mq5 zKGpvWL_*lXTT{d9SK_$`&Kc|oud4s)!!ZnTt-ll4k{EV`^V(r~P}m{pcC=K-kSJ9D z9K`d=EO1VqiM3y__1_X^1g*i3vR}3FBYG$g*qwG#_%rL{vQN<53x=%b0ygJ ztc3E;dEot!doH(!iE&#j(4si`jYW3wcq03qsrW%NPa&_#;1$|u^=%id0QRF55S*|Q z*rYsQrso0mOU>bme_u~v^4$;`)eYD#kAQy=`dsfhi67Ug;|JgUh&sx%=;RLN`9d}9 z5W2BraeZVz5z6UDjL$(TZPaldtE`1zRkvWnza>mLy4^B=gz1f%vPuR@$3+20#GxMF zXWXUSXXsEzea%OYT%N|?0=);qm$l0*gu1U6!hxnmP)rwr*Wi8&FGJ5SIu37x9)6yN zzJhxxGdcn4-eD9_wFjb1wix@eQ9k^Lw1oi=_5 zGUQEV9k?_>G;@zKYk;l!VY9=|FwmxGGOghHZvAhS(QO(XS;hBgkBed~;p1|D*G*c5)Wa;c20uIl&^Dg91wH3U`nCv4 zj&fM?2lu>{1^XY4>y_9j_ko_Y`@1ei);YV77MPMJeK$l%=HlK@S zhi2`x%r6}dX+K-OcMxU_R&lNzPi(uDCi2qcT zAqv^m*5HTlGv!>Hp4Jm=-z(pnN|X))*GJD7>I?Lqe&9$+Z2Sh}8oidJJ*4>kPz?@Uns6e}L;d ze>@A`2)CDh(J)=@6*-y;Nk!KnX`}zso`aC%wP`$e8e7Nm|M&#ZNBRI;96y8OuP5Dm zGt#F223qEdUC1^xQ}=dlmFKGb3s*ts^i@!{J_uBEef!W_x=VA>_X45T)?D{FpQ7dL z9jFgKny71~CkWjVt& zgCBC6JluOV<#{!oCjaOK-bEbNPkfBqPk9s^x40nKuV(GiTE9a1guYISA+FU|fa|)e zfNhlmjy4T}ey&lKZ=($xgYARH;A+?e!as509&KFEgB^lh!8i2HL5N|VDw}xTin~@o z`9(Fie|Z1Nc8yDnME+}JMHT|5(i zeL8%J>*)21_8h5XfHnA0&dSznzmUG?&Srlc=q_$a8?j3VLo|pU%jLfE?i&D(rbEDc zY%mZX4F-1eV4xO?zGo_DP)WNu8K`34+|zRn)6?+%K(I4%Ne=hTqij-0*HlPOUkMc} z83^rI4&kSlf$OClaKC5$eX<$s;C&EY8{bc7w%13ts~KPMxM2i41RarGcnk@(AH)mM^ZOV|U{CQFcVS#uvFK6X`czum52whD4u7pXnFdD8!=;rT1-oK7D)$ zut)UE;CZ}5<6{n=7Jlp_iM_i@kYhBAo~Pd4)YJK-Ad?+6i~C0MRFXY1flR7BtSVn9 zuc*%L0ROtBz+AEvLQgHhw!4;HX7Ix`NxGgHy;uFYaV;B!ax=Ig@CH)R zXL?;PjWX>ULH55rOzw`@bC%-?E-iANed^1SwqQ1{k)%bW2}K*US&WqHD6ACf8sIpnJK2; zP*r_$S?m-9{ixG}9lUMMdg|>>zMn_R>ma1rdQXsK%STDNM>?6bu?5N2{STH_;Hl2g zIWYjvRsmpc=I*^(2f%$>07`C0--n6qFoPfducc=o9Ql_T>IY)|LOc=d5M(5+@=5Fn zG^Hi!D!TuV81g{fPt?aVRbe7ru}_ztv84B{t(Nu~{sS66PE1Ywo}I7jpw8%VgLnp= zuj(H}VOmJt-!s3q20t8W$~8V0t&SnQxsjY0hB&Ss3QS9F90}bn9WR6`M?ON}flw$5 zZRbhX%Y|Z32?jqdLfrG5Vyal2xc|bpX}2{~zJe6&)DybC90%;Ckq{a<3>-<^8sTa* z?&^_c6-|YE5iq|m0%vvr%3Cjnthc!N%k%O1iW&R}HD#sN#PO@x=Yq`7d?s;LT(YB|iS~avXc5_`x(*t~2p;s2}-8cW^9?jsH{zhas6mfao$9 zTxrh&F@}3@#g(x&icmlFnJHc-u^f#FD1F{yG;R0~G=4<>%RR?2FAt*4mHsSWpSb^$ z!|H2{L_raWss}F5@jK!y6-R6f_XBoJUvNG6IE30~fbG^U)pE_??84<|UAP2%Z!Q6L z@crC*Bqz99J_xpE`fRiPJ)o)%uH&_<;y7Je`G)YL{#4C(l4|KY+sZ?A+JHO%7NED? z2*d++aAaQxt`H{dx* z8mZ@0CfglP>zca)JU^}gy7Nj1Y+4D9OJj2n*KXw;gt@f{LaUVdYPwNns4nI)zt{(S+_Xe`ccb=~pNWPBy=HgS!AT)g`5Hry8ZU!YG zt_{&~7edJo=j-Cr5=}Rdo{!R^S1T_)ARWUGytm#G8^t=wOQmxhp=|dyscs=(5ehgW z4n;(rSEF%a>_GElx=4Id_B?I;uzzP>*Z%8bW6RiIq-)#EG5kD1u#autJKkQW@Ixr$ zLu$G9emEH#4*pTYA##rtOT=pFyF_aF~4Km9YF1jKZhVLv%jlFRhts3t584oI_3S?v1>H0cY#@Fc(}O|KX}$u?wwSv zIuya=C-l`>t}f#@Z9B>5jg5739YWf(Oo|_TzTKmaA+9fCd%U6Eqb+GG!4|DBTIYGB zz6$O=&04(j@~n{5f4;58+lrW~u9s-Pl$7gLOPj?HVr^^iZb8qtQTkB$fuc+MCkVE$ zf)IIw3;zrPGiH@xKcnPo<%J%G7}8?t4MkmV|T&)k(f9)nV^sOWC1C}^@L{egL(gEa5&?AQA?Lz{6NWJZ|A<@ zTM~q_uB(9ka}`u2V+0i%qswPxZA>((5Pn`oS!AxZZIDDTKgIEcE2a4LumI_?a^b(f&1g*yg+L-JUmXhPLRDKak+vWC-$mi z2T#Xd5+C~nzC=RD_sTg4FE2n2h0;y&wJg`)PgnJUtSjlNcp|!u@DkT$DRfqF-=a4n zL!kAwi2Kmf!8m>ptF`r3H0I{qZKlTm1m&WTtzCztKl(l0EPfD!Z-(e|`p4_)zz@DU z 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 Izqkkf1Lk6N6aWAK literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_afternoon_veg_sh.npy b/tests/golden/fixtures/shadow_afternoon_veg_sh.npy new file mode 100644 index 0000000000000000000000000000000000000000..a689a13203df3bb69b616eaadd1a34c5be1dfad5 GIT binary patch literal 1280128 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 z4}Iu^103K02WEF5mA`JzexAOcd&9lq-rxWSIKTl8aDW4EJCH3of9g?>dVIS_o#;d- zI^h5ZIKY8b97yf`=PKvtd%7>&7w!uVaDW3G-~b0W@O}rfE&Znsb*RJlcc>S==tVCa z-~b0Wu!;kzz5iV0{CrRMh5N#N!2u3%fCC)h00-XhK(?j-)S(V_`2G&{q8GjBg##Sm z00&laAhq|OtDK+j>ArAZxGy-s0S<70103MM`3_{u>Qje0)ZzIZ>P%-k(-{XizyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`2 z9N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8 zaDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0W zzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70 z103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh1 z4sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S@$bAXT-`-v2Jo;~npK#{mv-fCC)h00-uG zAY1Kx(VcSN%KuJ>26S_c*`-4sd`29N@sZ4rKe+ z{r>#pAOG~v0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`2 z9N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8 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 S4sd`29N+*4IKY7!9r!Ozm11)M literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_afternoon_wall_sh.npy b/tests/golden/fixtures/shadow_afternoon_wall_sh.npy new file mode 100644 index 0000000000000000000000000000000000000000..af2e4a4f444792efdbdc753f8aa5ebd560712ba3 GIT binary patch literal 1280128 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_morning_bldg_sh.npy b/tests/golden/fixtures/shadow_morning_bldg_sh.npy new file mode 100644 index 0000000000000000000000000000000000000000..7b9ec7bd386415cc81b4ecffc25887c9c94d9e9d GIT binary patch literal 1280128 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 zq}9_e7r4NM_FS-QyS8h)<^Tscz=63O$hyYgxt@>j%RAojjsqOv00%h00S>h5K-xY2 za)Aq6Xx9b%wr~5kZw_#P103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70 z103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh1 z4sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G z-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`2 z9N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8 zaDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0W zzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70 z103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh1 z4sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G z-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`2 z9N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8 zaDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0W zzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70 z103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh1 z4sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G z-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<700~}b|fvisMOXu$A z@t*hG;Q$9XzyS_$V2=*uRkwfpxBorvU+?u^@BRMc00%h0fu$YD>g2w3?tUKcdCwgV zaDW3G-~b2q=s;d|`?r7l-{b!EUhnnZ?>`Q3fCC&@+JUT2?n~$H=kcER+~EKRIKTl8 zaDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0W zzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b24IFPjL#%}Cp%x?5WU-ZTA z4GwUC103MMGzaok`lCP7`Xe{Fl?3!a5A?teIKTl8aA2qdS&O`e=H+pGq=>Y;wq&;vct13TaV2ROiitl;xs z9`T4rJmLTcIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G z-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 z2ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`2 z9N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8 zaDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0W zzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h z00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70 z103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh1 z4sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4 zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G z-~b0WzyS_$fCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$ zfCC)h00%h00S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h0 z0S<70103K02ROh14sd`29N+*4IKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70103K0 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_morning_wall_sun.npy b/tests/golden/fixtures/shadow_morning_wall_sun.npy new file mode 100644 index 0000000000000000000000000000000000000000..f7e8bd46bb018e854c8d4cfbc40670dc127cb05a GIT binary patch literal 1280128 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_noon_veg_sh.npy b/tests/golden/fixtures/shadow_noon_veg_sh.npy new file mode 100644 index 0000000000000000000000000000000000000000..bb6edb5f7d17d86158f9c9e276f992f80342c3ec GIT binary patch literal 1280128 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/shadow_noon_wall_sh.npy b/tests/golden/fixtures/shadow_noon_wall_sh.npy new file mode 100644 index 0000000000000000000000000000000000000000..52c53b4b103ce58fe77388a747cb6cc21cbb63df GIT binary patch literal 1280128 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 z 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�da>wHMB4n>a`+(T3Hxhi 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 literal 0 HcmV?d00001 diff --git a/tests/golden/fixtures/svf_east.npy b/tests/golden/fixtures/svf_east.npy new file mode 100644 index 0000000000000000000000000000000000000000..00ab8b8553ac42e5d0fba4168bc46bad63ff3de1 GIT binary patch literal 1280128 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

    kjr|N&JCxAM|-ninYGf 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