Sea Ice - Air drag coefficient
Sea Ice - Air drag coefficient
HI, ROMS representatives. I'm writing because there's one problem with sea ice modeling. I am currently using Ice-mk in CPP-option for sea ice models. If you look at the Sea ice page of Wiki ROMS, you'll see that Ca (nonlinear air drag coefficient) = 0.5*Cd*(1-cos(2*pi*min(hi + .1,.5))) If you use a Ice-mk option, it is set to not use the same equation as above from ice_vbc.F. I wonder if I can use other thermodynamics without using Ice-mk. Also, if Ice-mk option is required, I would like to ask you for an opinion on where to insert the above darg coefficient expression. Please give me a good answer.
Last edited by Myung on Sat Oct 06, 2018 2:41 pm, edited 2 times in total.
Re: Sea Ice - Air drag coefficient
Why do you say that formula is not being used? It looks an awful lot like this code from ice_vbc.F:
If you don't like the ice_mk code, your best bet is to download the metroms code from github which contains a copy of the community CICE code.
Code: Select all
tauaiu(i,j) = aix*rho_air(ng)* &
& (0.5_r8*cdai(ng)*(1.0_r8-COS(2.0_r8*pi*MIN( &
& (hix/(aix+0.02_r8)+0.1_r8),0.5_r8)))) &
& *spd*windu(i,j)/rhoice(ng)
Re: Sea Ice - Air drag coefficient
Thank you for your reply.kate wrote:Why do you say that formula is not being used? It looks an awful lot like this code from ice_vbc.F:If you don't like the ice_mk code, your best bet is to download the metroms code from github which contains a copy of the community CICE code.Code: Select all
tauaiu(i,j) = aix*rho_air(ng)* & & (0.5_r8*cdai(ng)*(1.0_r8-COS(2.0_r8*pi*MIN( & & (hix/(aix+0.02_r8)+0.1_r8),0.5_r8)))) & & *spd*windu(i,j)/rhoice(ng)
I also know that there is a drag-coefficient calculation in ice_vbc.f. But if the Ice_mk option is defined, it is calculated as tauaiu(i,j) = 0.5_r8 * aix * (tau_aix_n(i,j) + tau_aix_n(i-1,j)). Also tau_aix_n is defined as rhoAir * cdai * Uwind * Wspeed. I would like to use the above drag coefficient entry with Ice_mk option. I look forward to hearing from you soon.
Re: Sea Ice - Air drag coefficient
OK, you're right, there's a big if/then test. If you want the "else" code with ice_mk, why not just copy it up to the "if" part?
I honestly don't remember where any of that came from - it long predates my use of git and the "git blame" feature.
I honestly don't remember where any of that came from - it long predates my use of git and the "git blame" feature.
Re: Sea Ice - Air drag coefficient
I respect the ROMS officials. So I asked about the internal code and tried to make changes. As Kate said, I will use it with some modifications.kate wrote:OK, you're right, there's a big if/then test. If you want the "else" code with ice_mk, why not just copy it up to the "if" part?
I honestly don't remember where any of that came from - it long predates my use of git and the "git blame" feature.
I have new question Sea ice speed is affected by a change in wind effect according to the thickness of sea ice. So, I wonder if there is a code for the sea current to be affected by wind as the sea ice thickness changes.
Re: Sea Ice - Air drag coefficient
The surface stress on the water does not directly depend on ice thickness. The water feels the wind stress where there's no ice and ice stress where there is ice. Note that Bill Hibler swears that we should be "embedding" the ice into the water instead of "levitating" the ice over the water. I'm afraid this code will never embed the ice.
Re: Sea Ice - Air drag coefficient
Thank you for answering me during your busy time and I am sorry for asking many questions. I am modifying the code as Kate told me.
tauaiu(i,j) = 0.5_r8*aix*(tau_aix_n(i,j)+tau_aix_n(i-1,j)) &
& *(0.5_r8*(1.0_r8-COS(2.0_r8*pi*MIN((hix/(aix+0.02_r8)+0.1_r8) &
& ,0.5_r8))))/rhoice(ng)
As above, the effect of wind on sea ice was modified in Ice_vbc.F. And
! *** stress from ocean current
uforce = uforce + auf*chux*rho0*uwater(i,j)
At Ice_elastic.F, i saw the stress of ocean currents affecting sea ice.
In sea ice dynamics, it can be seen that the stress on currents is also rhoice divided but not applied to codes. So I'm going to modify it as shown in the formula below. I'd like to ask if it's okay for me to make changes like this.
! *** stress from ocean current
uforce = uforce + auf*chux*rho0*uwater(i,j)/rhoice(ng)
tauaiu(i,j) = 0.5_r8*aix*(tau_aix_n(i,j)+tau_aix_n(i-1,j)) &
& *(0.5_r8*(1.0_r8-COS(2.0_r8*pi*MIN((hix/(aix+0.02_r8)+0.1_r8) &
& ,0.5_r8))))/rhoice(ng)
As above, the effect of wind on sea ice was modified in Ice_vbc.F. And
! *** stress from ocean current
uforce = uforce + auf*chux*rho0*uwater(i,j)
At Ice_elastic.F, i saw the stress of ocean currents affecting sea ice.
In sea ice dynamics, it can be seen that the stress on currents is also rhoice divided but not applied to codes. So I'm going to modify it as shown in the formula below. I'd like to ask if it's okay for me to make changes like this.
! *** stress from ocean current
uforce = uforce + auf*chux*rho0*uwater(i,j)/rhoice(ng)
Re: Sea Ice - Air drag coefficient
Yes, you may make any change you like to your own copy of the code. You can check the ROMS License file to be sure.
Github allows for "pull requests" in which you ask me to accept your changes into my code. You'd have to explain yourself and convince me that it doesn't break anything for me to accept them, but that is the open source model.
Github allows for "pull requests" in which you ask me to accept your changes into my code. You'd have to explain yourself and convince me that it doesn't break anything for me to accept them, but that is the open source model.
Re: Sea Ice - Air drag coefficient
I'm very very... sorry, but I'm writing for the last time.
I was wrong in the previous writing. So I want to review what I want to correct by writing the code I understand.
First, in ROMS-CICE, the variable to the Ice velocity is finally updated in Ice_elastic.F to
uie(n+1) = (masu * uie(n) + dte * uforce)/alfa
uie(n+1) * alfa = masu * uie(n) + dte * uforce
whre alfa = masu + dte * auf * rho0 * chux
uie(n+1) * (masu + dte * auf * rho0 * chux) = masu * uie(n) + dte * uforce
uie(n+1) * masu + uie(n+1)(dte * auf * rho0 * chux) = masu * uie(n) + dte * uforce
uie(n+1) * masu – uie(n) * masu = dte * uforce – dte * uie(n+1) * auf * rho0 * chux
masu * (uie(n+1) – uie(n))/dte = uforce – uie(n+1) * auf * rho0 * chux
whre masu = 0.5_r8(hi(i,j) + hi(i-1,j)) * rhoice
and uforce was once calculated as uforce = uforce + auf * chux * rho0 * uwater(n) in the previous calculation. If reintroduce this formula,
(uie(n+1) – uie(n))/dte = (uforce + auf * chux * rho0 * uwater(n) - auf * chux * rho0 * uie(n+1)) / hi * rhoice
(uie(n+1) – uie(n))/dte = uforce + auf * chux * rho0 * (uwater(n) – uie(n+1)) / hi * rhoice
where chux = sqrt((uwater – ui)**2) * cdiw
Corresponds with Dynamics at Wiki ROMS. I was missing Masu here.
---------------------------------------------------------------------------------------
Let me explain what I want to modify.
In Ice_elastic.F, wind force is uforce = uforce + tauaiu.
tauaiu is tauaiu = 0.5 * aix * (tau_aix_n + tau_aix_n) at Ice_vbc.F
tau_aix_n is calculated from the previous loop, Bulk_flux.F.
Tau_aix_n = Tau_Ice(i,j) = rhoAir * Cdai * Uwind * Wspeed
Here I know that the coefficient set by Cdai at ice.in is directly applicable?. Is that right? If that is correct, I would like to use Ice_MK option plus adjusting the air drag coefficient according to the change in sea ice thickness. However, in ROMS_CICE, there is no combination of expressions for Ice_MK option and air drag Coefficient.
What do you think about changing the way below?
tauaiu = 0.5 * aix * (tau_aix_n(i,j) + tau_aix_n(i-1,j)) * (0.5_r8 * (1.0_r8 – COS(2.0_r8 * pi * MIN((hix / (aix + 0.02_r8) + 0.1_r8) ,0.5_r8))))
I don't know why Ice_MK option and Air drag coefficient shouldn't work together. But I want to use it. I am a student who is just starting to study, So I am short of studying. I really appreciate your waiting for a good reply and giving me a busy time.
I was wrong in the previous writing. So I want to review what I want to correct by writing the code I understand.
First, in ROMS-CICE, the variable to the Ice velocity is finally updated in Ice_elastic.F to
uie(n+1) = (masu * uie(n) + dte * uforce)/alfa
uie(n+1) * alfa = masu * uie(n) + dte * uforce
whre alfa = masu + dte * auf * rho0 * chux
uie(n+1) * (masu + dte * auf * rho0 * chux) = masu * uie(n) + dte * uforce
uie(n+1) * masu + uie(n+1)(dte * auf * rho0 * chux) = masu * uie(n) + dte * uforce
uie(n+1) * masu – uie(n) * masu = dte * uforce – dte * uie(n+1) * auf * rho0 * chux
masu * (uie(n+1) – uie(n))/dte = uforce – uie(n+1) * auf * rho0 * chux
whre masu = 0.5_r8(hi(i,j) + hi(i-1,j)) * rhoice
and uforce was once calculated as uforce = uforce + auf * chux * rho0 * uwater(n) in the previous calculation. If reintroduce this formula,
(uie(n+1) – uie(n))/dte = (uforce + auf * chux * rho0 * uwater(n) - auf * chux * rho0 * uie(n+1)) / hi * rhoice
(uie(n+1) – uie(n))/dte = uforce + auf * chux * rho0 * (uwater(n) – uie(n+1)) / hi * rhoice
where chux = sqrt((uwater – ui)**2) * cdiw
Corresponds with Dynamics at Wiki ROMS. I was missing Masu here.
---------------------------------------------------------------------------------------
Let me explain what I want to modify.
In Ice_elastic.F, wind force is uforce = uforce + tauaiu.
tauaiu is tauaiu = 0.5 * aix * (tau_aix_n + tau_aix_n) at Ice_vbc.F
tau_aix_n is calculated from the previous loop, Bulk_flux.F.
Tau_aix_n = Tau_Ice(i,j) = rhoAir * Cdai * Uwind * Wspeed
Here I know that the coefficient set by Cdai at ice.in is directly applicable?. Is that right? If that is correct, I would like to use Ice_MK option plus adjusting the air drag coefficient according to the change in sea ice thickness. However, in ROMS_CICE, there is no combination of expressions for Ice_MK option and air drag Coefficient.
What do you think about changing the way below?
tauaiu = 0.5 * aix * (tau_aix_n(i,j) + tau_aix_n(i-1,j)) * (0.5_r8 * (1.0_r8 – COS(2.0_r8 * pi * MIN((hix / (aix + 0.02_r8) + 0.1_r8) ,0.5_r8))))
I don't know why Ice_MK option and Air drag coefficient shouldn't work together. But I want to use it. I am a student who is just starting to study, So I am short of studying. I really appreciate your waiting for a good reply and giving me a busy time.
Re: Sea Ice - Air drag coefficient
1. One thing you need to learn in this business is to simply try things yourself and see what happens.
2. The sea ice experts in the field are over in the CICE community where you can follow them on github and ask questions on their issue tracker.
3. I used to think I'd be running ROMS-CICE by now, but the current plan is to transition to MOM6-SIS2 instead. But first I need to get out of the hospital...
2. The sea ice experts in the field are over in the CICE community where you can follow them on github and ask questions on their issue tracker.
3. I used to think I'd be running ROMS-CICE by now, but the current plan is to transition to MOM6-SIS2 instead. But first I need to get out of the hospital...
Re: Sea Ice - Air drag coefficient
Oh, health is the first priority. I pray for a complete recovery. And Thank you for everything you've done for me.