eWaterCycle / remotebmi

BMI over openapi spec
http://www.ewatercycle.org/remotebmi/
Apache License 2.0
0 stars 1 forks source link

Add update+get_value functions #11

Open sverhoeven opened 1 month ago

sverhoeven commented 1 month ago

A very common way to call the BMI methods is

while m.get_current_time() < m.get_end_time():
  m.update()
  for v in variables:
    output[m.get_current_time()][v] = m.get_value(v)

Lots of requests are needed to get a value after each update, this could be slow.

To speed up running a model it would be nice to have additional run functions like

  1. update_until_and_get_value_of_variables(time, variables): Mapping<str, list<float>>
  2. update_until_and_get_value(time, variables): list<float>>
  3. update_until_and_get_value_at_indices(time, variable, indices): list<float>
  4. update_until_and_get_value_of_variables_at_indices(time, variables, indices): Mapping<str, list<float>>

We should benchmark to see if this how slow it is, if slow we should implement those functions. The responses can get quite big, the client and server should support this. Could those functions be a BMI extension, see https://github.com/csdms/bmi/discussions/138 ?

Similar to https://github.com/eWaterCycle/grpc4bmi/issues/152