Giter Site home page Giter Site logo

Comments (4)

phil-blain avatar phil-blain commented on August 15, 2024

Hi Elizabeth,

The option to calculate ice-ocean drag based on a (variable) under-ice ice roughness and the thickness of the ocean layer was added to icepack_parameters.F and the documentation, but apparently the actual calculation is done outside of icepack and the resulting value is sent in as the parameter iceruf_ocn. Is that correct?

That's not correct. In the documentation (which I added in #366), we have (last paragraph of https://cice-consortium-icepack.readthedocs.io/en/main/science_guide/sg_boundary_forcing.html#ocean):

The ice-ocean drag coefficient, :math:`c_w`, can optionally be computed from the thickness of the first ocean level, :math:`h_1`, and an under-ice roughness length, :math:`z_{io}`.
The computation follows :cite:`Roy15` :
.. math::
c_w = c_w^* \lambda^2
:label: dragio
where
.. math::
\begin{aligned}
c_w^* &= \frac{\kappa^2} {\ln^2\left( h_1 / z_{io} \right)}, \\
\lambda &= \frac{h_1 - z_{io}} {h_1 \left[ \sqrt{c_w^*} \kappa^{-1} \left( \ln(2) - 1 + z_{io} / h_1 \right) + 1 \right] }
\end{aligned}
:label: dragio-defs

and this is implemented in icepack_recompute_constants:

if (calc_dragio) then
dragio = (vonkar/log(p5 * thickness_ocn_layer1/iceruf_ocn))**2 ! dragio at half first layer
lambda = (thickness_ocn_layer1 - iceruf_ocn) / &
(thickness_ocn_layer1*(sqrt(dragio)/vonkar*(log(c2) - c1 + iceruf_ocn/thickness_ocn_layer1) + c1))
dragio = dragio*lambda**2
endif

So under calc_dragio=.true., we do this computation, and when it's false, we use the value of dragio (default or set via icepack_init_parameters).

So setting calc_dragio=.true. in Icepack does nothing?

No, it does not do nothing. It computes dragio from iceruf_ocn and thickness_ocn_layer1, instead of taking the dragio value directly from the Icepack parameters.

Β And a final question: what would a non-Canadian user need to do in CICE or somewhere else in their coupled model to make this work?

I guess the same as a Canadian user :P That is, set calc_dragio=.true., and set iceruf_ocn and thickness_ocn_layer1 as needed.

I hope that's clear ? Let me know how you think the documentation could be improved. I guess the section I link to above would be clearer if the text also mentioned the corresponding code variables...

from icepack.

phil-blain avatar phil-blain commented on August 15, 2024

I started #466, I'll update if we want more details.

from icepack.

eclare108213 avatar eclare108213 commented on August 15, 2024

My question is a little different from the one you're answering -- sorry for not being clear. My assumption is that iceruf_ocn is different for each grid cell (thickness_ocn_layer could also be different for each one). If those are constants everywhere, then this functionality doesn't really do much, right? Isn't the value in it that they can vary? But how they vary must be calculated outside of the sea ice model, or at least outside of Icepack. Does that make sense?

from icepack.

phil-blain avatar phil-blain commented on August 15, 2024

OK, yes I understand better now.

It's true that it does not do much if they are constant. Currently both iceruf_ocn and thickness_ocn_layer are indeed constant in our setup. So, we could have simply computed dragio externally, and set its value using icepack_init_parameters.

I went back to my PR (#366) and it turns out we quite a long discussion about it :) In fact, it seems you suggested the current approach (having the option to do the computation in Icepack itself).

I'm not opposed to removing it and computing it outside Icepack (and CICE) if we feel it's more natural this way.

One motivation for the current approach was that it added iceruf_ocn to Icepack, and we had some other in-house code that made use of this value for the form drag parameterization. It turns out I still haven't reimplemented those changes as they are not used in operations. I don't know if we will revisit them eventually.

from icepack.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.