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

Rainfall/Storm Curve #5

Open
jbensabat opened this issue Aug 6, 2020 · 22 comments
Open

Rainfall/Storm Curve #5

jbensabat opened this issue Aug 6, 2020 · 22 comments

Comments

@jbensabat
Copy link

Hello
I am trying to understand the structure of the rainfall input and I would be grateful if you could confirm or correct
the grid file provide the total amount of rain falling on a cell (m3/m2).
The question is about the storm curve:

  1. does it need to provide the cumulative proportion of the rain at a certain time ?
  2. does it need to provide the proportion of the rainfall for the time interval

Also if I have rainfall event which start at time t0 and ends at time t1 while the simulation continues up to time t2 > t1, how do I stop the rain ?
thanks
jac

@tasseff
Copy link
Member

tasseff commented Aug 6, 2020

Each cell of the corresponding rainfall grid input file defines the cumulative amount of rainfall (in meters) over the duration of the storm curve. The storm curve should state the cumulative proportion of rainfall that has fallen by a given time.

Yes, you can stop the rainfall and simulation at different times. To do this, ensure that the last time specified in your storm curve is t1 and that the end time in the scenario JSON file is t2. If you look at the rainfall/flat example in the nuflood-examples repository, the simulation is twice as long as the rainfall's duration (again, specified by the storm curve).

@jbensabat
Copy link
Author

jbensabat commented Aug 7, 2020 via email

@jbensabat
Copy link
Author

jbensabat commented Aug 7, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 7, 2020

Yes, for reference, here is the function that updates storm_curve_proportion:

void ISources::Update(const ITime& T) {
if (!storm_curve_.IsEmpty()) {
if (T.current() + T.step() <= storm_curve_.end_time()) {
storm_curve_proportion_ = storm_curve_.interpolated_value(T.current() + T.step()) -
storm_curve_.interpolated_value(T.current());
} else {
storm_curve_proportion_ = (prec_t)(0);
}
}
}

@jbensabat
Copy link
Author

jbensabat commented Aug 9, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 9, 2020

Discharges are in meters squared per second. I'm not sure what boundary conditions you should be using for your benchmark problem. Open boundary conditions assume values of discharges and water surface elevation equivalent to the cell adjacent to the boundary. Regarding the desingularization constant, you are getting deep into technical details at this point. You can read more about the desingularization approach used by the original authors of the discretized model here. Very briefly, for rainfall scenarios, a smaller value of desingularization will typically result in more accurate computation of discharges at the expense of having smaller time steps. This is the most fragile aspect of the model I've encountered while running rainfall scenarios.

@jbensabat
Copy link
Author

jbensabat commented Aug 10, 2020 via email

@jbensabat
Copy link
Author

jbensabat commented Aug 10, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 10, 2020

No, this isn't done in the code. You need to multiply by the size of the cell while post-processing the results if you want something in units of cubic meters per second.

@jbensabat
Copy link
Author

jbensabat commented Aug 11, 2020 via email

@jbensabat
Copy link
Author

jbensabat commented Aug 12, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 12, 2020

You can see how boundary conditions are calculated here. In most cases, two border cells are used to define the boundary condition. These boundary cells are added to the original grid prior to computation. Note that the discretization also shifts the original grid cells by one half cell to define the cell centers, which are returned in the output. You'll see here that the outputted grids remove these boundary cells:

void IOutput::WriteGridIfInList(const prec_t current_time, const Grid<prec_t>& grid) const {
if (grid_list_.Contains(grid.name())) {
grid.WriteWithoutBoundaries(folder_, current_time);
}
}
void IOutput::WriteGridIfInList(const Grid<prec_t>& grid) const {
if (grid_list_.Contains(grid.name())) {
grid.WriteWithoutBoundaries(folder_);
}
}

NODATA cell values are not handled elegantly within the domain. I believe those values (e.g., in an elevation file) will be replaced with a value of zero. I would advise not having any NODATA values in your input rasters but instead replacing those values with something more reasonable.

@jbensabat
Copy link
Author

jbensabat commented Aug 13, 2020 via email

@jbensabat
Copy link
Author

jbensabat commented Aug 13, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 13, 2020

Correct, I don't compute mass that exits the boundaries.

@jbensabat
Copy link
Author

jbensabat commented Aug 17, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 17, 2020

@jbensabat, I cannot see any attached images. Could you please login to GitHub and add the attachments as links?

@jbensabat
Copy link
Author

jbensabat commented Aug 18, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 18, 2020

I cannot provide much advice without knowing the inputs you are using or how close the simulation results are to the observed discharge. The only thing I would recommend is to try using wall boundary conditions for the east, west, and north boundaries, and critical depth boundary conditions for the south.

@jbensabat
Copy link
Author

jbensabat commented Aug 18, 2020 via email

@tasseff
Copy link
Member

tasseff commented Aug 18, 2020

Another thought: have you tried further reducing the desingularization constant? I'm unsure when numerical issues arise, but you may want to try decreasing sequentially by factors of ten and seeing how the results change (e.g., 1.0e-2, 1.0e-3, 1.0e-4).

@jbensabat
Copy link
Author

jbensabat commented Aug 19, 2020 via email

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

No branches or pull requests

2 participants