Skip to content

Commit aa9b4bf

Browse files
committed
[v0.0.6] 2025-08-27
🚨++ New Plug-in Integrated ++ 🚨 - Solar Position plug-in integrated with PyHelios ## Bug Fixes - Fixed plugin registry detection for selective builds (`--plugins visualizer`) - Fixed SolarPosition plugin metadata to correctly reflect optional status - Fixed WeberPennTree constructor to properly handle unavailable plugin scenarios - Updated error messages for plugin availability to match build configurations ## Testing - Enhanced cross-platform tests for selective plugin builds - Fixed test failures when building with limited plugin sets - Improved error handling validation in plugin availability tests
1 parent 5f2b6a8 commit aa9b4bf

28 files changed

+3251
-66
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ build/
99
*.egg-info/
1010
*.egg
1111

12+
# Auto-generated version file (setuptools-scm)
13+
pyhelios/_version.py
14+
1215
# IDEs and editors
1316
.vscode/
1417
.idea/

build_scripts/build_helios.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1406,12 +1406,13 @@ def get_default_plugins() -> List[str]:
14061406
- weberpenntree: Procedural tree generation
14071407
- radiation: OptiX-accelerated ray tracing (GPU optional)
14081408
- energybalance: GPU-accelerated thermal modeling and energy balance
1409+
- solarposition: Solar position calculations and sun angle modeling
14091410
14101411
Returns:
14111412
List of default plugins
14121413
"""
14131414
# Return the plugins that are actually integrated into PyHelios
1414-
integrated_plugins = ["visualizer", "weberpenntree", "radiation", "energybalance"]
1415+
integrated_plugins = ["visualizer", "weberpenntree", "radiation", "energybalance", "solarposition"]
14151416

14161417
# Filter by platform compatibility
14171418
default_plugins = []

docs/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changelog
22

3+
# [v0.0.6] 2025-08-27
4+
5+
🚨++ New Plug-in Integrated ++ 🚨
6+
- Solar Position plug-in integrated with PyHelios
7+
8+
## Bug Fixes
9+
- Fixed plugin registry detection for selective builds (`--plugins visualizer`)
10+
- Fixed SolarPosition plugin metadata to correctly reflect optional status
11+
- Fixed WeberPennTree constructor to properly handle unavailable plugin scenarios
12+
- Updated error messages for plugin availability to match build configurations
13+
14+
## Testing
15+
- Enhanced cross-platform tests for selective plugin builds
16+
- Fixed test failures when building with limited plugin sets
17+
- Improved error handling validation in plugin availability tests
18+
319
# [v0.0.5] 2025-08-27
420

521
- Helios native C++ had several bugs that was causing errors in the last version. Merged in patched version of 1.3.46.

docs/Doxyfile.python

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ INPUT = pyhelios \
131131
docs/plugin_integration_guide.md \
132132
docs/plugin_energybalance.md \
133133
docs/plugin_radiation.md \
134+
docs/plugin_solarposition.md \
134135
docs/plugin_visualizer.md \
135136
docs/plugin_weberpenntree.md \
136137
docs/CHANGELOG.md \
@@ -148,6 +149,7 @@ EXCLUDE = pyhelios/plugins/__pycache__ \
148149
pyhelios/wrappers/ULoggerWrapper.py \
149150
pyhelios/wrappers/URadiationModelWrapper.py \
150151
pyhelios/wrappers/UEnergyBalanceWrapper.py \
152+
pyhelios/wrappers/USolarPositionWrapper.py \
151153
pyhelios/wrappers/UVisualizerWrapper.py \
152154
pyhelios/wrappers/UWeberPennTreeWrapper.py \
153155
pyhelios/config \

docs/DoxygenLayout.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<!-- Currently Implemented Plugins (Alphabetized) -->
2626
<tab type="user" visible="yes" url="@ref EnergyBalanceDoc" title="Energy Balance Model"/>
2727
<tab type="user" visible="yes" url="@ref RadiationDoc" title="Radiation Model"/>
28+
<tab type="user" visible="yes" url="@ref SolarPositionDoc" title="Solar Position"/>
2829
<tab type="user" visible="yes" url="@ref VisualizerDoc" title="Visualizer"/>
2930
<tab type="user" visible="yes" url="@ref WeberPennTreeDoc" title="Weber-Penn Tree"/>
3031
</tab>

native/include/pyhelios_wrapper_context.h

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,58 @@ PYHELIOS_API void colorPrimitiveByDataPseudocolor(helios::Context* context, unsi
766766
*/
767767
PYHELIOS_API void colorPrimitiveByDataPseudocolorWithRange(helios::Context* context, unsigned int* uuids, size_t num_uuids, const char* primitive_data, const char* colormap, unsigned int ncolors, float data_min, float data_max);
768768

769+
/**
770+
* @brief Set the simulation time using hour and minute
771+
* @param context Pointer to the Context
772+
* @param hour Hour (0-23)
773+
* @param minute Minute (0-59)
774+
*/
775+
PYHELIOS_API void setTime_HourMinute(helios::Context* context, int hour, int minute);
776+
777+
/**
778+
* @brief Set the simulation time using hour, minute, and second
779+
* @param context Pointer to the Context
780+
* @param hour Hour (0-23)
781+
* @param minute Minute (0-59)
782+
* @param second Second (0-59)
783+
*/
784+
PYHELIOS_API void setTime_HourMinuteSecond(helios::Context* context, int hour, int minute, int second);
785+
786+
/**
787+
* @brief Set the simulation date using day, month, and year
788+
* @param context Pointer to the Context
789+
* @param day Day (1-31)
790+
* @param month Month (1-12)
791+
* @param year Year (1900-3000)
792+
*/
793+
PYHELIOS_API void setDate_DayMonthYear(helios::Context* context, int day, int month, int year);
794+
795+
/**
796+
* @brief Set the simulation date using Julian day and year
797+
* @param context Pointer to the Context
798+
* @param julian_day Julian day (1-366)
799+
* @param year Year (1900-3000)
800+
*/
801+
PYHELIOS_API void setDate_JulianDay(helios::Context* context, int julian_day, int year);
802+
803+
/**
804+
* @brief Get the current simulation time
805+
* @param context Pointer to the Context
806+
* @param hour Output parameter for hour
807+
* @param minute Output parameter for minute
808+
* @param second Output parameter for second
809+
*/
810+
PYHELIOS_API void getTime(helios::Context* context, int* hour, int* minute, int* second);
811+
812+
/**
813+
* @brief Get the current simulation date
814+
* @param context Pointer to the Context
815+
* @param day Output parameter for day
816+
* @param month Output parameter for month
817+
* @param year Output parameter for year
818+
*/
819+
PYHELIOS_API void getDate(helios::Context* context, int* day, int* month, int* year);
820+
769821
#ifdef __cplusplus
770822
}
771823
#endif

0 commit comments

Comments
 (0)