Wombat

Latest version: v0.9.5

Safety actively analyzes 679296 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.9.5

- Fixes a bug that causes delayed mobilizations. The underlying cause was the lack of
resetting the index column of `WombatEnvironment.weather` after filtering out rows
that exist prior to the starting year of the simulation.
- The Polars minimum version was bumped to avoid a deprecation error with the previous
index column generation method.

0.9.4

- Adds support for Python 3.11 and 3.12.
- Adds the following capability and servicing equipment codes:
- MCN for medium cranes, which should enable greater options for land-based wind.
- VSG for vessel support groups, or any representation of multiple vessels used for a
single operation.
- Updates Polars API usage to account for a series of deprecation and future warnings.
- Changes the metrics demonstration to use the COREWIND Morro Bay in situ example, and
adds the availability plotting to the demonstration example.
- `RepairRequest.prior_operating_level` has been added to allow 100% reduction factor failures to correctly and consistently restore the operating level of a subassembly following a repair.
- Replaces the `valid_reduction` attrs validator with `validate_0_1_inclusive` to reuse the logic in multiple places without duplicating checking methods.
- Adds a `replacement` flag for interruption methods, so that a failure or replacement comment can be added as a cause for `simpy.process.interrupt`. This update allows the failure and maintenance processes to check if an interruption should cause the process to exit completely. Additionally, the forced exit ensures that processes can't persist after a replacement event when a process is recreated, which was happening in isolated cases.
- Fixes a bug in `RepairManager.purge_subassemble_requests()` where the pending tows are cleared regardless of whether or not the focal subassembly is the cause of the tow, leading to a simulation failure.
- Fixes a bug in `utilities/utilities.py:create_variable_from_string()` to operate in a way that is expected. The original method was removing all numerics, but only leading punctuation and numerics should be replaced, with any punctuation being replaced with an underscore.
- Adds additional inline comments for clarification on internal methods.
- Update README.md to be inline with current conda and Python standards.
- Fully adopts `functools.cache` now that older Python versions where
`functools.lru_cache` was the available caching method.
- Fixes a Pandas `FutureWarning` by removing a now unnecessary piece of code in
`wombat/core/post_processor.py:equipment_costs`

0.9.3

- Reinstate the original time-based availability methodology, which is based on all
turbines, not the wind farm total.
- Replace the `black` formatter with `ruff`.
- Adopt `pyupgrade` to ensure modern Python language usage.
- Add the NumPy 2.0 integration tool to Ruff.

0.9.2

General

- Adds the PowerPoint file used in the NAWEA/WindTech 2023 Workshop.
- Updates all coming soon links and typos.

Bug Fixes

- Fixes an edge-case introduced in v0.9.1 where traveling during a crew transfer process is able to occur after the end of the simulation period.
- The documentation has been completely converted to a Jupyter Book paradigm due to a build issue found in the GitHub Actions.

0.9.1

- Removes the pre-public release analysis data and results, located at`library/original-outdated`, from the repository, but can be found in all releases prior to v0.9. This is being done to manage the package size and ensure it can be published to PyPI.

0.9

Bug Fixes

- Repairs that had a weather delay extended repairs past the end of the shift now properly extend the repair into future shifts instead of completing early. This has a small negative impact on availability because that means some repairs can take longer than they had originally.
- Traveling to a system for a repair where the timing extends beyond the end of the shift, but into the next shift, is now registered as a shift delay just like travel weather delays that extend beyond the end of the current shift but before the start of the next shift. This has a small positive impact on availability because a turbine or cable may not start being repaired until weather is more consistently clear, rather than starting it and extending it for many shifts.
- `Windfarm.cable()` now correctly identifies 2 and 3 length cable naming conventions to differentiate which version of the cable id is being retrieved.
- An edge case where events occurred just after the end of a simulation has been resolved by checking the datetime stamp of that event and not adding any action log to the simulation that is after the `WombatEnvironment.end_datetime`.
- A bug in how the total wind farm operating level was calculated is updated to account for substation downtime, rather than using a sum of all turbine values.
- `Metrics.time_based_availability` and `Metrics.production_based_availability` have been updated to use to take advantage of the above fix. Similarly, the time-based availability skews higher now, as is expected when taking into account all availability greater than 0, and the energy-based availability drops moderately as a result of accounting for the substation downtime.

General Updates

- `Metrics.equipment_labor_cost_breakdowns` now has a `by_equipment` boolean flag, so that the labor and equipment costs can be broken down by category and equipment. Additionally, `total_hours` has been added to the results, resulting in fewer computed metrics across the same set of breakdowns.
- "request canceled" and "complete" are now updated in the logging to directly state if it's a "repair" or "maintenance" task that was completed or canceled to ensure consistency across the logging messages. As a result, `Metrics.task_completion_rate()` can now correctly differentiate between the completed tasks effectively.
- The use of unique naming for the servicing equipment is now enforced to ensure that there is no overlap and potential confusion in the model.
- New, experimental plotting functionality has been added via `wombat.utilities.plot`.
- `plot_farm_layout` plots the graph layout of the farm. Note that this will not work if realistic lat/lon pairs have not been provided in the layout CSV.
- `plot_farm_availability` plots a line chart of the monthly overall windfarm availability. Additional toggles allow for the plotting of individual turbines in the background and/or a 95% confidence interval band around the farm's availability
- `plot_detailed_availability` plots a heatmap of the hourly turbine and farm operational levels to help in debugging simulations where availability may be running suspiciously low (i.e., a turbine might have shut down or a cable failure didn't get repaired within a reasonable time frame).
- `Simulation.service_equipment` is now a dictionary to provide clear access to the servicing equipment details.
- `Simulation.from_config()` requires both a library input and a file name input for the configuration after deprecating the `library` field from the configuration requirements due to it being cumbersome
- `Metrics.opex()` provides the opex output by category if `by_category` is set to be `True`

Methodology Updates

- Subassemblies and cables are now able to resample their next times to failure for all maintenance and failure activities, so that replacement events reset the timing for failures across the board.
- Systems are no longer interrupted once the servicing equipment addressing a repair or maintenance task is dispatched, and instead are interrupted just before the crew is transferred to begin repair, maintenance, or unmooring. This has a small net positive increase in the availability for short travel distances, but can vary if the travel time is more than a few hours (i.e., large distance to port, slow travel due to weather, & etc.)
- When a tow to port repair is in the queue, no other repairs or maintenance activities will occur for that turbine until it's brought into port for repairs.

Deprecations

- The original library structure has been fully deprecated, please see the Reference/How To example for more details on converting data that has not yet been updated.
- All PySAM functionality has been deprecated as it's no longer relevant to this work.
- The `Simulation.config` no longer requires the `library` field to reduce conflicts with sharing data between users.

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.