| 5 |
|
|
| 6 |
c read the area dat file and compare against the averaged salinity file |
c read the area dat file and compare against the averaged salinity file |
| 7 |
|
|
| 8 |
subroutine seaice_cost_sss( |
subroutine seaice_cost_sss( |
| 9 |
& nnzbar, localbarfile, localbar, xx_localbar_mean_dummy, |
& nnzbar, localbarfile, localbar, xx_localbar_mean_dummy, |
| 10 |
& areabarfile, areabar, xx_areabar_mean_dummy, |
& areabarfile, areabar, xx_areabar_mean_dummy, |
| 11 |
& nnzobs, localobsfile, localobs, mult_local, |
& nnzobs, localobsfile, localobs, mult_local, |
| 88 |
_RL localcost |
_RL localcost |
| 89 |
_RL junk |
_RL junk |
| 90 |
|
|
| 91 |
_RL cmask (1-olx:snx+olx,1-oly:sny+oly,nnzobs) |
_RL cmask (1-olx:snx+olx,1-oly:sny+oly,nnzobs) |
| 92 |
|
|
| 93 |
character*(128) fname1, fname2,fname3 |
character*(128) fname1, fname2,fname3 |
| 94 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
| 144 |
write(fname3(1:128),'(80a)') ' ' |
write(fname3(1:128),'(80a)') ' ' |
| 145 |
|
|
| 146 |
il=ilnblnk( localbarfile ) |
il=ilnblnk( localbarfile ) |
| 147 |
write(fname1(1:128),'(2a,i10.10)') |
write(fname1(1:128),'(2a,i10.10)') |
| 148 |
& localbarfile(1:il),'.',optimcycle |
& localbarfile(1:il),'.',optimcycle |
| 149 |
|
|
| 150 |
csss |
csss |
| 151 |
il=ilnblnk( areabarfile ) |
il=ilnblnk( areabarfile ) |
| 152 |
write(fname3(1:128),'(2a,i10.10)') |
write(fname3(1:128),'(2a,i10.10)') |
| 153 |
& areabarfile(1:il),'.',optimcycle |
& areabarfile(1:il),'.',optimcycle |
| 154 |
|
|
| 155 |
if ( .NOT. ( localobsfile.EQ.' ' ) ) then |
if ( .NOT. ( localobsfile.EQ.' ' ) ) then |
| 159 |
|
|
| 160 |
if ( nnzbar .EQ. 1 ) then |
if ( nnzbar .EQ. 1 ) then |
| 161 |
call active_read_xy( fname1, localbar, irec, doglobalread, |
call active_read_xy( fname1, localbar, irec, doglobalread, |
| 162 |
& ladinit, optimcycle, mythid, |
& ladinit, optimcycle, mythid, |
| 163 |
& xx_localbar_mean_dummy ) |
& xx_localbar_mean_dummy ) |
| 164 |
else |
else |
| 165 |
call active_read_xyz( fname1, localbar, irec, doglobalread, |
call active_read_xyz( fname1, localbar, irec, doglobalread, |
| 166 |
& ladinit, optimcycle, mythid, |
& ladinit, optimcycle, mythid, |
| 167 |
& xx_localbar_mean_dummy ) |
& xx_localbar_mean_dummy ) |
| 168 |
endif |
endif |
| 169 |
|
|
| 170 |
csss |
csss |
| 171 |
if ( nnzbar .EQ. 1 ) then |
if ( nnzbar .EQ. 1 ) then |
| 172 |
call active_read_xy( fname3, areabar, irec, doglobalread, |
call active_read_xy( fname3, areabar, irec, doglobalread, |
| 173 |
& ladinit, optimcycle, mythid, |
& ladinit, optimcycle, mythid, |
| 174 |
& xx_areabar_mean_dummy ) |
& xx_areabar_mean_dummy ) |
| 175 |
else |
else |
| 176 |
call active_read_xyz( fname3, areabar, irec, doglobalread, |
call active_read_xyz( fname3, areabar, irec, doglobalread, |
| 177 |
& ladinit, optimcycle, mythid, |
& ladinit, optimcycle, mythid, |
| 178 |
& xx_areabar_mean_dummy ) |
& xx_areabar_mean_dummy ) |
| 179 |
endif |
endif |
| 180 |
|
|
| 202 |
print *,'ymod, yday ', ymod,yday |
print *,'ymod, yday ', ymod,yday |
| 203 |
print *,'smrarstrtdt(1) ', smrareastartdate(1) |
print *,'smrarstrtdt(1) ', smrareastartdate(1) |
| 204 |
print *,'smrarstartdate ', smrareastartdate |
print *,'smrarstartdate ', smrareastartdate |
| 205 |
#endif SEAICE_DEBUG |
#endif /* SEAICE_DEBUG */ |
| 206 |
|
|
| 207 |
if ( ymod .EQ. yday ) then |
if ( ymod .EQ. yday ) then |
| 208 |
middate(1) = smrareastartdate(1) |
middate(1) = smrareastartdate(1) |
| 209 |
else |
else |
| 210 |
middate(1) = yday*10000+100+1 |
middate(1) = yday*10000+100+1 |
| 211 |
endif |
endif |
| 224 |
print *,'middate(3,4) ', middate(3),middate(4) |
print *,'middate(3,4) ', middate(3),middate(4) |
| 225 |
print *,'difftime,diffsecs',difftime,diffsecs |
print *,'difftime,diffsecs',difftime,diffsecs |
| 226 |
print *,'localrec ',localrec |
print *,'localrec ',localrec |
| 227 |
#endif |
#endif |
| 228 |
|
|
| 229 |
il=ilnblnk(localobsfile) |
il=ilnblnk(localobsfile) |
| 230 |
write(fname2(1:128),'(2a,i4)') |
write(fname2(1:128),'(2a,i4)') |
| 243 |
#endif |
#endif |
| 244 |
endif |
endif |
| 245 |
|
|
| 246 |
if ( localrec .GT. 0 ) then |
if ( localrec .GT. 0 ) then |
| 247 |
|
|
| 248 |
#ifdef SEAICE_DEBUG |
#ifdef SEAICE_DEBUG |
| 249 |
print *,'calling mdsreadfile',fname2,localrec |
print *,'calling mdsreadfile',fname2,localrec |
| 250 |
#endif |
#endif |
| 251 |
|
|
| 252 |
call mdsreadfield( fname2, cost_iprec, cost_yftype, nnzobs, |
call mdsreadfield( fname2, cost_iprec, cost_yftype, nnzobs, |
| 253 |
& localobs, localrec, mythid ) |
& localobs, localrec, mythid ) |
| 254 |
else |
else |
| 255 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
| 307 |
localwww = localweight(i,j,bi,bj)*cmask(i,j,k) |
localwww = localweight(i,j,bi,bj)*cmask(i,j,k) |
| 308 |
|
|
| 309 |
c only accumulate cost if there is ice observed but not simulated.. |
c only accumulate cost if there is ice observed but not simulated.. |
| 310 |
if ( localobs(i,j,k,bi,bj) .GT. 0.0 .AND. |
if ( localobs(i,j,k,bi,bj) .GT. 0.0 .AND. |
| 311 |
& areabar(i,j,1,bi,bj) .LE. 0.0) then |
& areabar(i,j,1,bi,bj) .LE. 0.0) then |
| 312 |
|
|
| 313 |
c if ( localobs(i,j,k,bi,bj) .GT. |
c if ( localobs(i,j,k,bi,bj) .GT. |
| 314 |
c & areabar(i,j,1,bi,bj)) then |
c & areabar(i,j,1,bi,bj)) then |
| 315 |
|
|
| 316 |
junk = ( localbar(i,j,k,bi,bj) - SEAICE_clamp_salt ) |
junk = ( localbar(i,j,k,bi,bj) - SEAICE_clamp_salt ) |
| 335 |
|
|
| 336 |
print '(A,2i4,2(1x,1P2E15.3))', |
print '(A,2i4,2(1x,1P2E15.3))', |
| 337 |
& 'costg i j bar-obs,wgt,loCost ',i,j, |
& 'costg i j bar-obs,wgt,loCost ',i,j, |
| 338 |
& junk, |
& junk, |
| 339 |
& localwww, |
& localwww, |
| 340 |
& localcost |
& localcost |
| 341 |
endif |
endif |
| 342 |
#endif |
#endif |