Ocean Modeling Discussion

ROMS/TOMS

Search for:
It is currently Sat Oct 20, 2018 11:34 pm




Post new topic Reply to topic  [ 11 posts ] 

All times are UTC

Author Message
PostPosted: Sat Oct 06, 2018 2:13 pm 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
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.

Top
 Profile  
Reply with quote  
PostPosted: Sat Oct 06, 2018 2:29 pm 
Offline
User avatar

Joined: Wed Jul 02, 2003 5:29 pm
Posts: 3515
Location: IMS/UAF, USA
Why do you say that formula is not being used? It looks an awful lot like this code from ice_vbc.F:
Code:
          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)

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.


Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 08, 2018 4:05 am 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
kate wrote:
Why do you say that formula is not being used? It looks an awful lot like this code from ice_vbc.F:
Code:
          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)

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.


Thank you for your reply.

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.


Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 08, 2018 3:27 pm 
Offline
User avatar

Joined: Wed Jul 02, 2003 5:29 pm
Posts: 3515
Location: IMS/UAF, USA
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.


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 2:15 am 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
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 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.

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.


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 2:45 am 
Offline
User avatar

Joined: Wed Jul 02, 2003 5:29 pm
Posts: 3515
Location: IMS/UAF, USA
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.


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 10:25 am 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
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)


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 1:28 pm 
Offline
User avatar

Joined: Wed Jul 02, 2003 5:29 pm
Posts: 3515
Location: IMS/UAF, USA
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.


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 7:44 pm 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
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.


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 8:01 pm 
Offline
User avatar

Joined: Wed Jul 02, 2003 5:29 pm
Posts: 3515
Location: IMS/UAF, USA
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...


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 10, 2018 8:11 pm 
Offline

Joined: Wed Apr 11, 2018 2:31 pm
Posts: 6
Location: Chonnam-University
Oh, health is the first priority. I pray for a complete recovery. And Thank you for everything you've done for me.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group