[Ncep.list.emc.monsoondesk] Bug which caused CFSv2 giving different results when layout or/and no procs for ocean model was changed.

Prajeesh A.G CAT prajeesh.cat at tropmet.res.in
Fri Feb 14 11:32:12 UTC 2014


In the subroutine ice_top_to_ice_bottom in the source file ice_model.f90 of mom4, for coupling with gfs the following codes where added: 

if ( gfs _ flx .AND. (.NOT. coldstart _daily_ flx ) ) then 
do j= jsc , jec 
do i= isc , iec 
if (part_size (i,j,1) .GT. 0.99) then 
Ice % flux_u (i,j) = Ice % flux_ au (i,j) 
Ice % flux_v (i,j) = Ice % flux_av (i,j) 
Ice % flux_t (i,j) = Ice % flux_at (i,j) 
Ice % flux_q (i,j) = Ice % flux_ aq (i,j) 
Ice % flux_ sw (i,j) = Ice % flux_ asw (i,j) 
Ice % flux_ lw (i,j) = Ice % flux_ alw (i,j) 
endif 
enddo 
enddo 
endif 

The if statement in the above line is for checking if it is Ice free or not, (part_size > 0.99 means Ice free). 

But the lower bound ( lbound ) and upper bound ( ubound ) of part_size(:,:,1) and Ice% Variables (Ice%flux_ au (:,:), Ice%flux_ au (:,:), ......) are different. 

The following is an values of lbound and ubound of part_size and Ice%flux_ au from out. poe : 

8: lbound (part_size) 1 1 
8: ubound (part_size) 12 410 
8: lbound (Ice%flux_ au ) 85 1 
8: ubound (Ice%flux_ au ) 96 410 
9: lbound (part_size) 1 1 
9: ubound (part_size) 12 410 
9: lbound (Ice%flux_ au ) 97 1 
9: ubound (Ice%flux_ au ) 108 410 
10: lbound (part_size) 1 1 
10: ubound (part_size) 12 410 
10: lbound (Ice%flux_ au ) 109 1 
10: ubound (Ice%flux_ au ) 120 410 

If then, the whole above code will go wrong. 

And this was the reason for getting different results when changing the no: of procs or layout of ocean model in CFSv2. 

A simple solution for this could be by modifying the code to: 


if ( gfs _ flx .AND. (.NOT. coldstart _daily_ flx ) ) then 
jj =0 
do j= jsc , jec 
jj = jj +1 
ii=0 
do i= isc , iec 
ii=ii+1 
if (part_size (ii, jj ,1) .GT. 0.99) then 
Ice % flux_u (i,j) = Ice % flux_ au (i,j) 
Ice % flux_v (i,j) = Ice % flux_av (i,j) 
Ice % flux_t (i,j) = Ice % flux_at (i,j) 
Ice % flux_q (i,j) = Ice % flux_ aq (i,j) 
Ice % flux_ sw (i,j) = Ice % flux_ asw (i,j) 
Ice % flux_ lw (i,j) = Ice % flux_ alw (i,j) 
endif 
enddo 
enddo 
endif 

Any comments on this are appreciated. 

Prajeesh A G 
Scientist 'B' 
CCCR, IITM 
Pune , India 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lstsrv.ncep.noaa.gov/pipermail/ncep.list.emc.monsoondesk/attachments/20140214/1b937ebd/attachment.html 


More information about the Ncep.list.emc.monsoondesk mailing list