opendrift icon indicating copy to clipboard operation
opendrift copied to clipboard

Guidance on realistic oil spill setups

Open kthyng opened this issue 7 months ago • 3 comments

Hi! I am trying to understand the OpenOil model better for running realistic scenarios. I have some open questions I am looking for guidance on. My goal is to set up simulations with possibly distinct initial conditions for subsea blowouts, oil slicks, and spills from a ship. (Also open to input on these selections — the point is to capture the most common needs.)

  1. I assume it is more realistic to have more of the oil spill-specific processes included (at the cost of more simulation time). So, I would activate emulsification, evaporation, update_oilfilm_thickness, biodegradation, and vertical_mixing (as well as 3D advection, added horizontal diffusivity, other physics separate from the oil). I had also included dispersion in this list thus far except I recently ran across this issue which made it sound like I should turn it off. Do you have advice about which processes to include?
  2. I would like to understand the importance of the droplet diameter. I have been tracking this through simulations in this effort. It looks like for particles that start at the surface, the diameter is 0 (or whatever the default is). If those particles drop below the surface (which would presumably happen due to entrainment), they at that point have a diameter calculated for them in the entrainment functions. (If the particle dropped below the surface for a non-entrainment reason, would they have their diameter calculated/updated?) If they pop back up to the surface, the diameter stays fixed at the previous value. For particles that start below the surface, they are assigned an initial droplet diameter (dependent on the droplet distribution selection and parameters) which is only updated if those particles experience entrainment at the surface at some point. So it seems as though the surface is handled as an oil slick which can be altered through entrainment (as well as weathering and biodegradation), and the subsea is handled primarily as droplets. Is this accurate?
  3. I am running, I think, smaller-scale scenarios than OpenDrift developers typically run. My time_step, for example, is 300 seconds. How would I determine an appropriate vertical_mixing_timestep?
  4. Do you have guidance on how best to initialize the three scenarios: subsea blowout, oil slick, and ship spill?

Thank you for any help and/or references!

kthyng avatar Apr 15 '25 16:04 kthyng

Hi, See my comments below

  1. I assume it is more realistic to have more of the oil spill-specific processes included (at the cost of more simulation time). So, I would activate emulsification, evaporation, update_oilfilm_thickness, biodegradation, and vertical_mixing (as well as 3D advection, added horizontal diffusivity, other physics separate from the oil). I had also included dispersion in this list thus far except I recently ran across this issue which made it sound like I should turn it off. Do you have advice about which processes to include?

Yes, I agree with all of this, although I normally do not activate update_oilfilm_thickness as it is costly and simplistic, and does not affect end result significantly. I also recommend disabling dispersion for the reasons given.

  1. I would like to understand the importance of the droplet diameter. I have been tracking this through simulations in this effort. It looks like for particles that start at the surface, the diameter is 0 (or whatever the default is). If those particles drop below the surface (which would presumably happen due to entrainment), they at that point have a diameter calculated for them in the entrainment functions. (If the particle dropped below the surface for a non-entrainment reason, would they have their diameter calculated/updated?) If they pop back up to the surface, the diameter stays fixed at the previous value. For particles that start below the surface, they are assigned an initial droplet diameter (dependent on the droplet distribution selection and parameters) which is only updated if those particles experience entrainment at the surface at some point. So it seems as though the surface is handled as an oil slick which can be altered through entrainment (as well as weathering and biodegradation), and the subsea is handled primarily as droplets. Is this accurate?

OpenOil, as most other oil drift models, use a particle-film-duality. Thus partly the reason why OpenDrift uses the term "element" and not "particle". So an oil element is in the state of "slick" or "film" whenever at the surface (z=0). The element still carries its droplet diameter from earlier entrainment, but this propery is not used. At the time of entrainment (may happen repeatedly for an element) by a breaking wave, a droplet diameter is selected from the chosen parameterisation/distribution. Li et al 2017 is the default, but Johansen is an alternative. Likewise, property "thickness" is then not used/relevant as the element/droplet is entrained. Note also that an element may represent a large quantity of oil (many kiloes or tonnes), but is still represented here by a small particle. This might sound strange, but is common practice, and should be ok as long as you use enough particles - at least 5000, perhaps 50.000 if file size is not an issue. As for other applications (microplastics, fish eggs), larger particles/elements have faster rise velocity, and will resurface faster, to again drift with influence of wind and Stokes drift.

  1. I am running, I think, smaller-scale scenarios than OpenDrift developers typically run. My time_step, for example, is 300 seconds. How would I determine an appropriate vertical_mixing_timestep?

The default vertical_mixing_timestep of 1 minute should generally be fine. OpenDrift will issue some warnings if numerical errors occur due to too large timestep.

  1. Do you have guidance on how best to initialize the three scenarios: subsea blowout, oil slick, and ship spill?>

For subsea, you can simply provide a negative value for z; e.g. z=-50 for a release at 50m depth. You may use z="seafloor" to seed elements at the ocean depth obtained from any of the available readers. You may also use z="seafloor+10" to seed elements/oil 10m above actual seafloor. For a slick you can either use radius for a circular slick, or seed_within_polygon if you have arrays of lon and lat for the slick boundary. For a (moving) ship spill, you can use seed_cone as in this example: https://opendrift.github.io/gallery/example_cone.html

For more scientific description and validation of OpenOil, please see these papers:

Brekke, C., Espeseth, M. M., Dagestad, K.-F., Röhrs, J., Hole, L. R., & Reigber, A. (2021). Integrated analysis of multisensor datasets and oil drift simulations—a free-floating oil experiment in the open ocean. Journal of Geophysical Research: Oceans, 126, e2020JC016499. https://doi.org/10.1029/2020JC016499

Röhrs, J., Dagestad, K.-F., Asbjørnsen, H., Nordam, T., Skancke, J., Jones, C. E., and Brekke, C.: The effect of vertical mixing on the horizontal drift of oil spills, Ocean Sci., 14, 1581-1601, https://doi.org/10.5194/os-14-1581-2018, 2018.

Jones, C.E., Dagestad, K.-F., Breivik, Ø., Holt, B., Röhrs, J., Christensen, K.H., Espeseth, M.M., Brekke, C., Skrunes, S. (2016): Measurement and modeling of oil slick transport. Journal of Geophysical Research – Oceans, Volume 121, Issue 10, October 2016, Pages 7759–7775. http://doi.org/10.1002/2016JC012113

knutfrode avatar Apr 16 '25 20:04 knutfrode

This is incredibly helpful @knutfrode, thank you! I have a couple of follow up questions and then I need to read those papers.

The default vertical_mixing_timestep of 1 minute should generally be fine. OpenDrift will issue some warnings if numerical errors occur due to too large timestep.

Part of the reason for this question is I realized that the number of loops for calculating the vertical mixing (including entrainment, etc) is set by vertical_mixing_timestep relative to time_step, making me think I need to be careful about how I set it. (I had an error in my time_step such that that loop wasn't happening at all for awhile and it took me awhile to back that out.)

Do you have guidance on how best to initialize the three scenarios: subsea blowout, oil slick, and ship spill

I should have been more specific. I do intend to use the approaches you suggest for particle placement. However, I'm wondering if I should take extra care with the initial oil parameters for elements. For example, are the default droplet selections appropriate for any simulation initialized under the surface, or only blowouts in particular? How realistic do you consider it to be to model subsea oil spills as opposed to model the surface expression of a given spill? Is the default oil thickness ok for initializing an oil slick in the absence of any particular information for a given realistic spill? For a spill from a ship, initializing from a cone, I guess the elements would be at the surface so they would be initialized with oil slick thickness also.

Thanks again for your time and insights.

kthyng avatar Apr 17 '25 21:04 kthyng

For a seafloor release/spill, the droplet distribution is either uniform (default) with min and max values set by config seed:droplet_diameter_min_subsea (default 0.5 millimeters) and seed:droplet_diameter_max_subsea (default 0.5 millimeters) respectively. Or you may chose lognormal or normal distributions, with corresponding config seed:droplet_diameter_mu and seed:droplet_diameter_sigma See this example for an illustration: https://opendrift.github.io/gallery/example_oilspill_seafloor.html#sphx-glr-gallery-example-oilspill-seafloor-py

Rise velocity will quite strongly depend on these droplet sizes, which in practice would be very hard to know/measure/calculate. A user made a coupling between OpenDrift and TAMOC some years ago, for a more explicit calculation of droplet sizes from pipeline pressure, outlet diameter etc, but this is not in the official repository. I would assume uncertainty from seafloor relase is quite large, even if using dedicated/sophisticated models such as TAMOC for this part. Thus in practice for a real accident, one could in practice use satellite/airplane detections of surfacing oil as start for subseqent drift modeling. Subsurface currents and stratigraphy is also more uncertain than surface currents.

As soon as particles reach the surface, subsequent re-entrainment is parameterised according to Li2017 or Johansen2015 as mentioned above and in references.

Regarding oil film thickness, this is in OpenOil calculated quite simplisticically. On the other hand, I think that a oil film thickness is anyway not a very specific and meaningful parameter. In practice surface oil slicks are very patchy, with large, patchy areas of thin sheen, and also patchy parts of thicker oil. A "film thickness distribution" would make more sense, but I am not aware of any oil drift models using this concept. "Fortunately", the film thickness does not seem to be very important with respect to the drift or entrainment rate (thicker, more concentrated oil means fewer wave breaking events within slick area, but also more oil entrained per event, thus partly cancelling). Thickness might be more important for evaporation, which should be proportional to surface area (inversely proportional to thickness).

knutfrode avatar Apr 22 '25 11:04 knutfrode