Closed kthyng closed 9 months ago
Hi,
For the ROMS (native and generic) readers, I believe you can open the datasets with Xarray, drop variables (and do other things), and then create the reader from this modified dataset: r = Reader(ds)
Alternatively, you can avoid variables being read by specifying constant values to the simulation object, e.g.
o.set_config('environment:constant:upward_sea_water_velocity', 0)
A more general and automated solution would be to if OpenDrift would automatically avoid reading variables that are not used.
I have been pondering that this could be specified in required variables
something like this:
required_variables = {
.....
'upward_sea_water_velocity': {
'fallback': 0,
'only_if': {'drift:vertical_advection': True},
}
}
I believe this could be fairly straightforward to implement (at least if avoiding nested conditions...), and that it should suffice with only_if
and not_if
, and value that could be either True/False as in above example, or <greater_than, smaller_than, equal>: <value>
@knutfrode Yeah changing the definition for required_variables
would be a good solution long term to be more general. For now I have some logic in my wrapper code to look for certain scenarios and dropping variables if possible. Thank you!
Hi! I'd like to drop variables from the ROMS reader (Dataset and "required_variables") that won't be used but are listed in the reader "required_variables". For example, if
o.disable_vertical_motion()
is True, "upward_sea_water_velocity" should be removed from "required_variables" so that it isn't read in. Another circumstances would be to remove wind variables if they won't be used, though this might be more complicated to track down if they might be used or not.I am going to either implement this in the ROMS reader or in my code wrapping
opendrift
— do you have a preference for where I do this?