[MITgcm-support] EXF/SEAICE Surface Heat Fluxes

Edwards, Erick (LCDR) eledward at nps.edu
Tue Jul 7 13:38:15 EDT 2015


Just to follow up on how I handled this:


I ended up going into a few of the SEAICE parts of the code and hacking those parts to give a near-constant surface heat flux.  I used the EXF 'lwdown' input as my proxy for the value that I wanted.  The end result was that my SIatmQnt diagnostic showed the surface heat flux that I wanted.



More specifically,

- In 'SEAICE_OPTIONS.h' I undefined 'SEAICE_EXTERNAL_FLUXES' so I could use my SEAICE hacks for both covered and open ocean.

- In 'EXF_OPTIONS.h' I undefined 'EXF_LWDOWN_WITH_EMISSIVITY' so that I could use a different section of 'seaice_solve4temp.F'  to exactly prescribe the flux I wanted (see below).

- In 'seaice_budget_ocean.F' I altered the formulation for 'lwflux(I,J,bi,bj) to be equal to (negative) lwdownLoc(I,J) only.

- In 'seaice_budget_ocean.F' I left 'SWHeatFlux(I,J)' along with 'hs' and 'hl' in the 'netHeatFlux' calculation.

- In 'seaice_solve4temp.F' I took out the 0.97 for the 'lwdownLoc(I,J)' equation for "old hard wired" flux.  (I undefined EXF_LWDOWN_WITH_EMISSIVITY to activate this).

- In 'seaice_solve4temp' I set 'F_lwu(I,J)' to zero.  This left 'F_ia(I,J)' with my prescribed surface heat flux (as -lwdownLoc) along with shortwave, sensible, and latent heat fluxes.

- In 'data.seaice' I set MIN_LWDOWN to (negative) 999.

- I also developed and implemented custom diagnostics to see how everything was coming along as it ran.



I believe this was all that I changed.  What I really did was eliminate the upward longwave in the SEAICE package which left me the ability to prescribe surface heat flux with longwave down from the EXF package.  For the experiments that I wanted to run, having 'SEAICE_EXTERNAL_FLUXES' defined was a problem in that my model had two different ways of handling surface fluxes, and I wanted one, uniform, way.  There may be side-effects that I hadn't tought of, or noticed, but everything seemed fine after.



Erick




From: Edwards, Erick (LCDR) [mailto:eledward at nps.edu]
Sent: Tuesday, June 16, 2015 1:42 PM
To: 'mitgcm-support at mitgcm.org'
Subject: Re: [MITgcm-support] EXF/SEAICE Surface Heat Fluxes





*I'm receiving copies of posts now, so I think I can keep my repsonses in the proper threads after this.

Yes, this is what I was afraid of.  I have rudimentary code hacking skills, and I have been looking at seaice_ocean_budget.F, seaice_growth.F, and seaice_solve4temp.F.

So it sounds like I need to make sure the model continues on with 'define SEAICE_EXTERNAL_FLUXES' and then modify the SEAICE package in such a way that I can get the constant surface heat flux that I want when there is sea ice cover.  I'm running with my EXF_OPTIONS.h configured to accept WIND, TEMP, DOWN, and BULK.  I did notice that I can specify 'lwnet' and 'swnet' in this configuration as well.  My 'data.exf' has the proper entries to make sure the EXF package uses the correct *.bin files.

Yes, I see 'F_ia' now....beautiful.

So, when I alter the appropriate lines that deal with over ice/snow heat flux, my new model will look to EXF for open ocean (whatever I put for 'lwnet' and 'swnet') and my new-and-improved SEAICE '*.f' files for covered ocean.

I'll see what I can do and let y'all know.

Thank you, Dimitris and Martin!

Erick




Hi Erick,



DImitris is right (of course), the code does not support what you want to do. But you might be able to hack it:



1. make exf take heat and fw fluxes by setting the appropriate CPP options in EXF_OPTIONS.h (there's a table on how to do this) and modify your data.exf; there's an example in verifcation/global_with_exf

2. have a look at seaice_ocean_budget.F where bascially the net heat flux is just passed to a local variable.

3. modify seaice_solve4temp.F (which is the equivalent of seaice_ocean_budget.F for the ocean, as far as the seaice model is concerned) to return whatever you like to the sea ice model (seaice_growth.F); I guess you need to do something for "F_ia" and keep the part for IcePenetSW. This is what I would do for a coupled model where the heat flux is computed by the atmospheric component.

4. you'll probably have to see where cpp-flags like ALLOW_ATM_TEMP and ALLOW_DOWNWARD_RADIATION would make the code stop (or exclude code you want)



I am not saying it's trivial, but you should be able to do it. I would not try to fiddle with lwdown etc, because it's harder to control what the other components of the heat flux balance will do.



Martin





> On 16 Jun 2015, at 02:38, Dimitris Menemenlis <dmenemenlis at gmail.com<http://mitgcm.org/mailman/listinfo/mitgcm-support>> wrote:

>

> I am pretty sure that pkg/seaice does not support this capability

> (at least not the last time I looked at code).

>

> Over sea ice, heat flux is computed from

> downward long and shortwave radiation,

> 2-m air temperature and humidity

> 10-m atmospheric wind speed,

> and snow/rain precipitation.

>

>> On Jun 15, 2015, at 4:08 PM, Edwards, Erick (LCDR) <eledward at nps.edu<http://mitgcm.org/mailman/listinfo/mitgcm-support>> wrote:

>>

>> I would like to prescribe surface heat flux at the top of the ice when ice is present and at the top of the ocean, when no ice is present.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20150707/58c5bba1/attachment.htm>


More information about the MITgcm-support mailing list