Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.1.0 #79

Merged
merged 326 commits into from
Dec 7, 2021
Merged

Release v0.1.0 #79

merged 326 commits into from
Dec 7, 2021

Conversation

ThibHlln
Copy link
Member

@ThibHlln ThibHlln commented Dec 6, 2021

Functional changes

  • constrain temporal and spatial resolutions of components forming a model to be integer multiples of one another
    (#67)
  • enforce two-dimensional spatial domains for components
    (#69)
  • allow components to use/produce only parts of the standardised transfers through the framework interfaces
    (#76)

API changes

  • add units requirement for component parameters and constants
    (#21)
  • move Component and its subclasses from subpackage components to package root
    (#46)
  • rename component class attributes _flow_direction and _land_sea_mask in component definition to _requires_flow_direction and _requires_land_sea_mask, respectively
    (#46)
  • remove science components (Artemis and RFM) from framework
    (#45)
  • remove vertical dimension (i.e. altitude) in LatLonGrid,
    RotatedLatLonGrid, and BritishNationalGrid
    (#69)
  • replace State dunder methods __getitem__ and __setitem__ with get_timestep and set_timestep methods
    (#71)
  • include component inputs as arguments given to initialise method
    (#75)
  • revise/refine component inward and outward transfers
    (#76)

Bug fixes

  • fix dump file update bug due to missing 'divisions' dimension
    (#32)
  • fix model identifier renaming not propagating to its components' identifiers
    (#48)
  • fix impossibility to run Model using a Component on the BritishNationalGrid
    (#51)
  • fix failed aggregation of fields with no standard name in DataSet
    (#52)
  • apply land_sea_mask to underlying field of Grid to be used in remapping
    (#59)

Enhancements

  • add support for arrays for component parameters
    (#21)
  • add support for multiple divisions for component states
    (#39)
  • add support for customisable divisions for component states
    (#31)
  • add time slice for I/O operations (user customisable)
    (#42)
  • cache remapping weights at initialisation
    (#44)
  • add cell_area property to SpaceDomain that can be provided by the user or else automatically computed for Grid
    (#61)
  • add initialised_states property to Component to allow component contributors not to overwrite user-defined initial conditions
    (#75)
  • add shelf attribute to Component to allow the communication of data between component methods
    (#75)
  • add _inwards and _outwards component class attributes to allow contributors to declare what interface transfers their component use and produce, respectively
    (#76)

Dependencies

  • change dependency cf-python>=3.11.0
  • drop support for Python 3.6

Documentation

  • document 'divisions' for component states in preparation page
    (#35)
  • move API reference page to doc tree root
  • move science library page to doc tree root
  • add support page
  • add change log page
  • add logo for package

Thibault Hallouin and others added 30 commits May 21, 2021 17:40
Chose a value of 10 because it is both lower than simulation period for main run (12 days), and greater than spinup period (6days), effectively resulting in 6 day record stream beats in both cases but for different algorithmic reasons (i.e. shortened to keep a multiple of simulation period in the former case, shortened/limited to/by the spin up period in the latter case).
Add time slicing for input reading and output writing
Sphinx CSS has not taken into the new use of HTML5 tags in `docutils` (in v0.17).

By using latest `sphinx_rtd_theme` (0.5.2), it makes sure the version of `docutils` is <0.17 (where HTML5 tags where not in use yet).
This way, the expensive computation of the weights is done once in set up, and then the weights are hold on to through the `RegridOperator` to be used when transfers are retrieved and remapping is required.
Following the evolving API of `cf-python` on this newly created functionality, we agreed that the method was unnecessary where using a `RegridOperator`.
- move components/component.py to component.py
- move components/_utils/* to _utils/*
- rename records.py to record.py
- rename states.py to state.py
was based on former subpackage components

also refactored test package to reflect the new organisation of the cm4twc package
Old *info* properties used to return references to the internal dictionaries used to define the components, which was dangerous because the user could modify them inadvertently, so they are replaced by *metadata* properties that return a string displaying the content of these dictionaries.

In addition, *info* properties are kept for inwards/outwards (because required for Exchanger and Data/NullComponent), but they return a deep copy of the dictionaries to avoid accidentally modifying them internally.
@ThibHlln ThibHlln self-assigned this Dec 6, 2021
@ThibHlln ThibHlln marked this pull request as ready for review December 6, 2021 12:59
@ThibHlln ThibHlln marked this pull request as draft December 6, 2021 14:02
@ThibHlln ThibHlln marked this pull request as ready for review December 6, 2021 14:23
@ThibHlln ThibHlln merged commit c4e235c into main Dec 7, 2021
@ThibHlln ThibHlln deleted the release-v0.1.0 branch December 7, 2021 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants