You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Some experimental OpenMP parallelization has been added. This is not enabled by default yet, but can be turned on by setting the CMake option ENABLE_OPENMP to ON.**
**Updates to core CMakeLists.txt to use more modern CMake features.**
*Context*
- Context::pruneTubeNodes() was added to allow for removal of part of a tube object.
*Plant Architecture*
- Added ground cherry weed model.
- Minor fix in PlantArchitecture::getPlsantLeafInclinationAngleDistribution() to prevent rare out of range index.
- Changed PlantArchitecture::getPlantLeafInclinationAngleDistribution() to area-weight the distribution, and removed the 'normalize' optional argument.
- Added PlantArchitecture::prunBranch() method to remove all or part of a branch and its downstream branches.
- Removed shoot parameter 'elongation_rate'. There is now an 'elongation_rate_max' shoot parameter that can be set by the user. The actual elongation rate can be reduced dynamically if the carbohydrate model is enabled.
- Many updates to carbohydrate model. Credit to Ethan Frehner for these updates.
*LiDAR*
- Added exportTriangleAzimuthDistribution() to write the triangulated azimuthal angle distribution to a file. Credit to Alejandra Ponce de Leon for this addition.
- The output distribution from exportTriangleInclinationDistribution() was not being normalized.
*Radiation*
- Added bindweed spectra to the default library.
- There was an error in the writeObjectDataLabelMap() method that could cause undefined behavior if the UUID in the pixel label map did not exist in the Context.
- There was an error in the writeObjectDataLabelMap() method where the primitive UUID was being used instead of the object ID.
- There was an error in the model that could cause incorrect assignment of radiative properties if runBand() is called with fewer bands than a previous call to runBand().
- The previous version could cause unnecessary updating of radiative properties, resulting in a performance hit. This has been fixed.
- Revised the radiation plug-in CMakeLists.txt to use a modern CMake approach for building CUDA source files. This update should also enable indexing of .cu source files in IDEs such as CLion.
Co-authored-by: Alejandra Ponce de Leon <[email protected]>
Co-authored-by: Ethan Frehner <[email protected]>
Copy file name to clipboardExpand all lines: doc/CHANGELOG
+29-1Lines changed: 29 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -2023,4 +2023,32 @@ The radiation model has been re-designed, with the following primary additions:
2023
2023
- Added mouse-based camera controls in the interactive visualizer. Credit to Sean Banks for this update.
2024
2024
2025
2025
*Plant Architecture*
2026
-
- Added methods for querying bulk properties of a plant (total leaf count, stem height, plant height, leaf angle distribution) and write plant mesh vertices to file.
2026
+
- Added methods for querying bulk properties of a plant (total leaf count, stem height, plant height, leaf angle distribution) and write plant mesh vertices to file.
2027
+
2028
+
[1.3.27] 2025-02-11
2029
+
2030
+
**Some experimental OpenMP parallelization has been added. This is not enabled by default yet, but can be turned on by setting the CMake option ENABLE_OPENMP to ON.**
2031
+
**Updates to core CMakeLists.txt to use more modern CMake features.**
2032
+
2033
+
*Context*
2034
+
- Context::pruneTubeNodes() was added to allow for removal of part of a tube object.
2035
+
2036
+
*Plant Architecture*
2037
+
- Added ground cherry weed model.
2038
+
- Minor fix in PlantArchitecture::getPlsantLeafInclinationAngleDistribution() to prevent rare out of range index.
2039
+
- Changed PlantArchitecture::getPlantLeafInclinationAngleDistribution() to area-weight the distribution, and removed the 'normalize' optional argument.
2040
+
- Added PlantArchitecture::prunBranch() method to remove all or part of a branch and its downstream branches.
2041
+
- Removed shoot parameter 'elongation_rate'. There is now an 'elongation_rate_max' shoot parameter that can be set by the user. The actual elongation rate can be reduced dynamically if the carbohydrate model is enabled.
2042
+
- Many updates to carbohydrate model. Credit to Ethan Frehner for these updates.
2043
+
2044
+
*LiDAR*
2045
+
- Added exportTriangleAzimuthDistribution() to write the triangulated azimuthal angle distribution to a file. Credit to Alejandra Ponce de Leon for this addition.
2046
+
- The output distribution from exportTriangleInclinationDistribution() was not being normalized.
2047
+
2048
+
*Radiation*
2049
+
- Added bindweed spectra to the default library.
2050
+
- There was an error in the writeObjectDataLabelMap() method that could cause undefined behavior if the UUID in the pixel label map did not exist in the Context.
2051
+
- There was an error in the writeObjectDataLabelMap() method where the primitive UUID was being used instead of the object ID.
2052
+
- There was an error in the model that could cause incorrect assignment of radiative properties if runBand() is called with fewer bands than a previous call to runBand().
2053
+
- The previous version could cause unnecessary updating of radiative properties, resulting in a performance hit. This has been fixed.
2054
+
- Revised the radiation plug-in CMakeLists.txt to use a modern CMake approach for building CUDA source files. This update should also enable indexing of .cu source files in IDEs such as CLion.
Copy file name to clipboardExpand all lines: doc/UserGuide.dox
+19-15Lines changed: 19 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
/*! \mainpage Helios Documentation v1.3.26
1
+
/*! \mainpage Helios Documentation
2
2
3
3
<p> <br> </p>
4
4
@@ -40,15 +40,19 @@ $ git pull
40
40
$ git log
41
41
~~~~~~
42
42
43
-
<p> <br><br><br><br> </p>
43
+
<p> <br><br><br><br> </p>
44
44
45
-
\image html doc/images/PSL_logo_compact.png
45
+
<div align="center">
46
+
\image html doc/images/PSL_logo_compact.png
47
+
</div>
46
48
49
+
<!--
47
50
<p> <br><br> </p>
48
51
49
52
Financial support provided by:
50
53
51
54
\image html doc/images/sponsors.jpg
55
+
-->
52
56
53
57
<p> <br><br> </p>
54
58
@@ -348,7 +352,7 @@ $ git pull
348
352
349
353
Projects that use the Helios API are typically built using the CMake package a CMakeLists.txt file. Helios requires CMake version 3.15+. A prototypical CMakeLists.txt file used for building Helios samples and projects is given in the code sample below. Inputs for the specific case are entered in the top block of code by setting variables (see the CMake 'set' command reference). The user sets the location of the Helios base directory, the name of the executable file, any source or header files, and a list of plug-ins to use (the example below uses the 'visualizer' plug-in). The last line in the file references another file in the core/ directory that contains additional code for setting up the project.
The easiest way to compile the code is by using an IDE such as CLion, which is described in detail on the page \ref CLionIDE "Using the CLion IDE with Helios".
375
379
376
380
To build the code from the command line based on the CMakeLists.txt file, which creates a makefile, simply run the command 'cmake', followed by the path to the CMakeLists.txt file. If, as in the examples above, you are currently in the build directory and your CMakeLists.txt file is located one directory up, the CMake build is accomplished through:
377
381
378
-
~~~~~~
382
+
```
379
383
$ cmake ..
380
-
~~~~~~
384
+
```
381
385
382
386
By default, this will build Helios in "debug" mode. This is useful for debugging and testing because it will generate debug symbols and output more detailed error messages to the command line. However, this will make the code run much slower because it disables compiler optimizations (usually 3x slower on Linux and 4-5x slower on PC). For 'production' runs, it is recommended to build in 'release' mode in order to enable compiler optimizations. This is accomplished by passing an additional command-line argument to CMake:
383
387
384
-
~~~~~~
388
+
```
385
389
$ cmake -DCMAKE_BUILD_TYPE='Release' ..
386
-
~~~~~~
390
+
```
387
391
388
392
The code can then be compiled by issuing the 'make' command from the build directory, which will produce an executable in the build directory.
389
393
@@ -459,20 +463,20 @@ $ git pull
459
463
460
464
In order to use the Context, the following header must be included:
461
465
462
-
~~~~~~{.cpp}
466
+
~~~
463
467
#include "Context.h"
464
-
~~~~~~
468
+
~~~
465
469
466
470
The context is typically created within the main function:
467
471
468
-
~~~~~~{.cpp}
472
+
~~~
469
473
#include "Context.h"
470
474
using namespace helios;
471
475
472
476
int main(){
473
477
Context context;
474
478
}
475
-
~~~~~~
479
+
~~~
476
480
477
481
The Context is usually passed to plugins (see \ref Plugins), which gives them access to geometry and data.
478
482
@@ -1621,7 +1625,7 @@ $ git pull
1621
1625
1622
1626
\section XMLread Reading XML Files
1623
1627
1624
-
XML files can be read by the Context via the function \ref loadXML(). This function parses the XML file and adds all specified structures (see above) to the Context. Below is an example of how to load an XML file into the Context.
1628
+
XML files can be read by the Context via the function \ref Context::loadXML(). This function parses the XML file and adds all specified structures (see above) to the Context. Below is an example of how to load an XML file into the Context.
1625
1629
~~~~~~{.cpp}
1626
1630
#include "Context.h"
1627
1631
using namespace helios;
@@ -1752,7 +1756,7 @@ $ git pull
1752
1756
1753
1757
\section Export Exporting Project to XML File Format
1754
1758
1755
-
All geometry and global/primitive data loaded into the Context can be written to an XML file using the \ref writeXML() function, which can be later read back in using the \ref loadXML(). This functionality can be used to save progress during a simulation run, or to ensure that consistent geometry is always used across simulation runs, among other things.
1759
+
All geometry and global/primitive data loaded into the Context can be written to an XML file using the \ref Context::writeXML() function, which can be later read back in using the \ref Context::loadXML(). This functionality can be used to save progress during a simulation run, or to ensure that consistent geometry is always used across simulation runs, among other things.
0 commit comments