Beta release version: 0.5.0 (Docs)
I am happy to announce the release of version 0.5.0 of the Geodynamic World Builder. We now have 12 people who have contributed through making commits to the repository, and I would like to thank them and all the other contributors who helped with this release in various ways! Besides a lot of cleaning and refactoring of the code, extending testing and documentation, the most notable new features of this release is the variable min and max depth of area features. This allows for much more complex layers and thicknesses within the area features. Furthermore continuous benchmarking and testing with some very large scale models has been added and some major performance improvements have been achieved (more to come).
The name of the release 'Docs' has to do with the large focus on rebuilding all the documentation from scratch. We put a lot of emphasis on improving the documentation, since it is very important for projects to be useful. The new manual is a html sphinx based manual (gwb.readthedocs.io), and is a lot more usable than the pdf manual. All the important information has been ported and a new basic starter tutorial has been made as a starting point for new users (the picture above is what they learn to make in that tutorial). There are still a lot of new sections planned to improve the manual for both new and experienced users and developers!
Change log for version 0.5.0 (Docs) of the Geodynamic World Builder
Added
- The World Builder Visualizer can now compress vtu files with zlib and output in binary through the vtu11 library. ASCII output is still available. [Menno Fraters; 2021-06-26; #282]
- The option to use a half space cooling model for the temperature of an oceanic plate has been added to the oceanic plate feature. [Magali Billen; 2021-07-15; #317]
- Information about the depth of the reference surface in the PointDistanceFromCurvedPlanes structure. [Menno Fraters; 2021-07-20; #320]
- The option for a smooth slab temperature structure that conserves mass with distance along the slab surface. [Magali Billen; 2021-07-28; #323]
- The option for a temperature model for an oceanic plate with a constant age using the plate model. [Haoyuan Li; 2021-10-29; #344]
- The cmake targets to easily switch between debug and release mode [Menno Fraters; 2021-10-31; #361]
- A new depth method for the spherical coordinate system called begin at end segment. This adds the spherical correction to the end of the segment instead of the beginning, resulting in a smoother transition between segments. [Menno Fraters; 2021-11-06; #364, #365]
- A new input parameter and accociated functions which define the maximum depth of a model. This allows the world builder to create a complete picture of the world. [Menno Fraters; 2021-11-08; #367 and #331]
- A one of type which can create a JSON schema entry where one of several types can be chosen. [Menno Fraters; 2022-03-26; #396]
- A value at points type which can read in an array containing a value and a list of points from the input. [Menno Fraters; 2022-03-26; #396]
- A surface object which can take an array of value at points and create an interpolation through delaunay triangulation (with the delaunator library which was added) and a KD-Tree and barycentric linear interplation. [Menno Fraters, KD-Tree with help of Oliver Kreylos; 2022-03-26; #396]
- The option to make min and max depth into variable surfaces for all area features (continental plate, oceanic plate and mantle layer) and their temperature, composition and grain plugins. [Menno Fraters; 2022-03-26; #366 and #396]
- The option to the WordBuilderApp to input 3D spherical coordinates [Menno Fraters; 2022-03-26; #396]
- An equal operator (operator==) for the point class, which compares two points with an espilon. [Menno Fraters; 2022-03-26; #396]
- New gravity plugin system with a uniform gravity plugin where the gravity magnitude can be set from the input file. This how replaces the gravity input provided through the interface. The interface itself will be updated in a future pull request, where the gravity norm parameter will be removed. [Menno Fraters; 2022-03-27; #370]
- ApprovalTest have been added to the unit tests. [Menno Fraters; 2022-04-09; #401]
- Added a cmake target to update the reference test results called
update_test_references
. [Menno Fraters; 2022-04-12; #404] - Added a new multi property query interface called properties to the world. This allows to ask for different properties at the same time, which significantly improve performance. Internally all other interface now use this properties function to reduce complexity. [Menno Fraters; 2022-04-18; #409 and #410]
- Added a new compositional model for fault models such that ensures a smooth transition of compositional value from the fault trace until a particular user-determined distance. This feature can be helpful for model that uses composition of fault to compute other material properties, e.g., viscosity. [Arushi Saxena; 2022-05-19; #356
- Added an interface to compute the distance of a query point to a feature's plane. For example, the distance of a point to a subducting slab could be duely computed. This interface simply calls the previously implemented interfaces of the feature objects and wrap them up. Thus it only takes variables like coordinates and depth in the model and could be called from ASPECT directly.
[Haoyuan Li; 2022-12-23; #453 - Added tester options to allow running the tester with gdb and/or valgrind. Also setup a github action which automatically runs gdb and valgrind when running the tester. [Menno Fraters; 2023-01-26; #466]
- Added some tips and tricks in the doc/sphinx/developer_manual/contributing_to_the_code/tips_and_tricks.md file. [Haoyuan Li; 2023-02-09; #472]
- Added operation options
add
,subtract
andreplace defined only
to the the composition plugins [Menno Fraters; 2023-02-17; #474] - Added a new compositional model for subducting slab models such that ensures a smooth transition of compositional value from one part of a compositional layer to the other side of the layer. This is based on Arushi Saxena's fault composition plugin with the same name (#356) [Menno Fraters; 2023-02-18; #477]
- If World Builder is configured with MPI it now reads input files on a single process and distributes them via MPI to other processes to reduce I/O load. This can be extended in the future to other input files. [Rene Gassmoeller; 2023-04-13; #480]
- Added a new html manual based on Sphinx, including a new tutorial which was designed from scratch to get new users up to speed quickly. It also contains a much structure to add cookbooks, developer and other documentation in the future. [Menno Fraters; 2023-05-31; #379, #379 the related pull request mentioned in that issue.]
Changed
- The World Builder Visualizer will now use zlib compression for vtu files by default. If zlib is not available binary output will be used. [Menno Fraters; 2021-06-26; #282]
- The return argument type of the distance_point_from_curved_planes function has been converted from a map to a struct, requiring a change in the plugin interfaces for 'fault_models' and 'subducting_plate_models', but significantly increasing the speed of the function and all functions that access its returned values. [Rene Gassmoeller; 2021-06-27; #289]
- The plugin systems (temperature, composition and grains) and the distance_point_from_curved_planes function now all pass a precomputed NaturalCoordinate, besides just the cartesian position. It turns out that this can make a significant performance differce. [Issue found and solution suggested by Wolfgang Bangerth, implemented and tested by Menno Fraters; 2021-07-03; #300 and #219]
- Introduces a bounding box for searching the fault and the subducting plate model properties (temperature, composition, grains) in the lateral direction. This reduces the computation time by constraining the number of points for which the expensive distance_point_from_curved_planes function is called. [Arushi Saxena; 2021-07-15; #219]
- Changing the internal interface of the get function to add a new structure (AdditionalParameters) to hold additional parameters (total_local_segment_length and local_thickness). The local_thickness has been moved away from the PointDistanceFromCurvedPlanes structure. [Menno Fraters; 2021-09-08; #330]
- Changed the name of the main branch from master to main [Menno Fraters; 2021-10-28; #350]
- Ridge coordinates are now an array of ridges, allowing multiple ridges within a single oceanic plate with transform faults in between. [Menno Fraters; 2021-11-03; #362]
- parse entries for all temperature, composition and grain plugins now require the coordinates of the feature to be passed as a parameter. [Menno Fraters; 2022-03-26; #396]
- NaturalCoordinate has moved out of utilities to the objects namespace and folder. [Menno Fraters; 2022-03-26; #399]
- Breaking Change: Non-continuous interpolation has been removed, a lot of corner cases for the continuous interpolation have been fixed and accuracy has been improved with a new algorithm to compute the closest point on a spline. [Menno Fraters; 2022-04-09; #401]
- Breaking change: The temperature interfaces with gravity as a parameter are now deprecated and the App and Visualization programs no longer use or accept gravity. [Menno Fraters; 2022-04-12; #404]
- Breaking change: The WorldBuilderApp application has been renamed to gwb-dat. [Menno Fraters; 2022-06-27; #379, #440]
- Breaking change: The WorldBuilderVisualization application has been renamed to gwb-grid. [Menno Fraters; 2022-06-27; #379, #440]
- Breaking change: The Cubic monotone spline interpolation has been replaced with a Cubic Bezier spline. [Menno Fraters; 2023-01-27; #462, #452, #449, #429]
- The slab/fault is now always on one side of the trench/fault line. The reference point is now used to determine whether it on the right or left side of the line between the first and last point, and the rest of the slab will remain on that side. [Menno Fraters; 2023-01-27; #462]
- Modified the mass conserving slab temperature model to use error functions to parameterize the minimum slab temperature and to allow the thickness of the top thermal boundary layer to be increased independent from the mass conserving constraints. [Magali Billen; 2023-02-16; #470]
- The interface of the properties functions of features now takes a reference to the properties vector instead of creating a copy. All internal features have been changed, but all user created features will have to be adjusted as well. [Rene Gassmoeller; 2023-05-11; #485]
- The World Builder can now be easily build included in another CMake project by using ADD_SUBDIRECTORY. It now uses
PROJECT_*_DIR
instead ofCMAKE_*_DIR
and if it is build by an external project, the targets will have awb_
prefix. [Menno Fraters; 2023-01-27; #492]
Fixed
- Using slabs and faults beyond the -180 to 180 range gave issues. These are now fixed and it now works and is tested for the -380 to 380 range. [Menno Fraters; 2021-10-22; #338, #340 and #342]
- The ridge coordinates for the mass conservative slab temperature model where not converted to radians internally. [Menno Fraters; 2021-10-27; #352]
- Fixed the taper of temperature at the slab tip for the bottom part of the slab, and fixed issue with negative temperatures above slab when there is an existing overririding plate temperature. [Magali Billen; 2021-11-02; #353
- The input dip point defined for subduction plate and fault models is now in degrees (as opposed radians) consistent with the system for coordinates. [Arushi Saxena; 2022-10-07; #448]
The release is available from
https://github.com/GeodynamicWorldBuilder/WorldBuilder/releases/tag/v0.5.0
When using this code, please cite:
Fraters, M., Thieulot, C., van den Berg, A., and Spakman, W.: The Geodynamic World Builder: a solution for complex initial conditions in numerical modelling, Solid Earth, https://doi.org/10.5194/se-10-1785-2019, 2019.
And cite the specific version of the software used. Version 0.5.0 can be cited as:
Menno Fraters and others. 2023, June 2. The Geodynamic World Builder v0.5.0. Zenodo. https://doi.org/10.5281/zenodo.7998525.
Bibtex entries for these these publications can be found in the CITATIONS
file.