4#if defined ICE_MOMENTUM && defined ICE_EVP
21# if defined ICE_SHOREFAST || defined ICE_KEEL
24# ifdef FASTICE_CLIMATOLOGY
46 SUBROUTINE ice_elastic (ng, tile, model)
53 integer,
intent(in) :: ng, tile, model
57 character (len=*),
parameter :: MyFile = &
63 CALL wclock_on (ng, model, 42, __line__, myfile)
65 CALL ice_elastic_tile (ng, tile, model, &
66 & lbi, ubi, lbj, ubj, &
67 & imins, imaxs, jmins, jmaxs, &
68 & liold(ng), liuol(ng), liunw(ng), &
69 & lieol(ng), lienw(ng), &
76 &
grid(ng) % rmask_wet, &
77 &
grid(ng) % umask_wet, &
78 &
grid(ng) % vmask_wet, &
90# if defined ICE_SHOREFAST || defined ICE_KEEL
94# ifdef FASTICE_CLIMATOLOGY
95 &
forces(ng) % fastice_clm, &
98 &
clima(ng) % uiclm, &
99 &
clima(ng) % viclm, &
100 &
clima(ng) % MInudgcof, &
105 CALL wclock_off (ng, model, 42, __line__, myfile)
109 END SUBROUTINE ice_elastic
112 SUBROUTINE ice_elastic_tile (ng, tile, model, &
113 & LBi, UBi, LBj, UBj, &
114 & IminS, ImaxS, JminS, JmaxS, &
115 & liold, liuol, liunw, lieol, lienw, &
117 & rmask, umask, vmask, &
120 & rmask_wet, umask_wet, vmask_wet, &
125 & pm, pn, om_u, on_u, om_v, on_v, &
127# if defined ICE_SHOREFAST || defined ICE_KEEL
131# ifdef FASTICE_CLIMATOLOGY
135 & uiclm, viclm, MInudgcof, &
142 integer,
intent(in) :: ng, tile, model
143 integer,
intent(in) :: LBi, UBi, LBj, UBj
144 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
145 integer,
intent(in) :: liold, liuol, liunw, lieol, lienw
149 real(r8),
intent(in) :: rmask(LBi:,LBj:)
150 real(r8),
intent(in) :: umask(LBi:,LBj:)
151 real(r8),
intent(in) :: vmask(LBi:,LBj:)
154 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
155 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
156 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
159 real(r8),
intent(in) :: zice(LBi:,LBj:)
161 real(r8),
intent(in) :: pm(LBi:,LBj:)
162 real(r8),
intent(in) :: pn(LBi:,LBj:)
163 real(r8),
intent(in) :: om_u(LBi:,LBj:)
164 real(r8),
intent(in) :: on_u(LBi:,LBj:)
165 real(r8),
intent(in) :: om_v(LBi:,LBj:)
166 real(r8),
intent(in) :: on_v(LBi:,LBj:)
167 real(r8),
intent(in) :: f(LBi:,LBj:)
168# if defined ICE_SHOREFAST || defined ICE_KEEL
169 real(r8),
intent(in) :: h(LBi:,LBj:)
170 real(r8),
intent(in) :: Zt_avg1(LBi:,LBj:)
172# ifdef FASTICE_CLIMATOLOGY
173 real(r8),
intent(in) :: fastice_clm(LBi:,LBj:)
176 real(r8),
intent(in) :: uiclm(LBi:,LBj:)
177 real(r8),
intent(in) :: viclm(LBi:,LBj:)
178 real(r8),
intent(in) :: MInudgcof(LBi:,LBj:)
180 real(r8),
intent(in) :: Fi(LBi:,LBj:,:)
181 real(r8),
intent(inout) :: Si(LBi:,LBj:,:,:)
184 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
185 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
186 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
189 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
190 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
191 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
194 real(r8),
intent(in) :: zice(LBi:UBi,LBj:UBj)
196 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
197 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
198 real(r8),
intent(in) :: om_u(LBi:UBi,LBj:UBj)
199 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
200 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
201 real(r8),
intent(in) :: on_v(LBi:UBi,LBj:UBj)
202 real(r8),
intent(in) :: f(LBi:UBi,LBj:UBj)
203# if defined ICE_SHOREFAST || defined ICE_KEEL
204 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
205 real(r8),
intent(in) :: Zt_avg1(LBi:UBi,LBj:UBj)
207# ifdef FASTICE_CLIMATOLOGY
208 real(r8),
intent(in) :: fastice_clm(LBi:UBi,LBj:UBj)
211 real(r8),
intent(in) :: uiclm(LBi:UBi,LBj:UBj)
212 real(r8),
intent(in) :: viclm(LBi:UBi,LBj:UBj)
213 real(r8),
intent(in) :: MInudgcof(LBi:UBi,LBj:UBj)
215 real(r8),
intent(in) :: Fi(LBi:UBi,LBj:UBj,nIceF)
216 real(r8),
intent(inout) :: Si(LBi:UBi,LBj:UBj,2,nIceS)
223 real(r8) :: alfa, area, auf, avf, chux, chuy, clear, dsum, fakt
225 real(r8) :: Cbu, Cbv, spd, thic, uvf, vuf
227 real(r8) :: cff, f1, f2, s1, s2
228# if defined ICE_SHOREFAST || defined ICE_KEEL
231 real(r8) :: pmu, pnu, pmv, pnv
232 real(r8) :: cosstang, sinstang
233 real(r8) :: masu, mfu11, mfu21, mfu12, mfu22
234 real(r8) :: masv, mfv11, mfv21, mfv12, mfv22
235 real(r8) :: uforce, vforce
237# include "set_bounds.h"
246 area=om_u(i,j)*on_u(i,j)
247 chux=0.5_r8*(fi(i-1,j,
iciomt)+ &
249 masu=0.5_r8*(si(i ,j,liold,
ishice)+ &
251 masu=max(masu, 0.1_r8)
253 auf=max(0.5_r8*(si(i-1,j,liold,
isaice)+ &
254 & si(i ,j,liold,
isaice)), 0.01_r8)
255 pmu=0.5_r8*(pm(i,j)+pm(i-1,j))
256 pnu=0.5_r8*(pn(i,j)+pn(i-1,j))
260 s1=(si(i ,j,lienw,
isisxx)- &
261 & si(i-1,j,lienw,
isisxx))*pmu
263 IF ((umask(i,j ).gt.0.0_r8).and. &
264 (umask(i,j+1).lt.1.0_r8))
THEN
265 f1=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
268 ELSE IF ((umask_wet(i,j ).gt.0.0_r8).and. &
269 & (umask_wet(i,j+1).lt.1.0_r8))
THEN
270 f1=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
274 ELSE IF ((zice(i-1,j).eq.0.0_r8).and. &
275 & (zice(i ,j).eq.0.0_r8).and. &
276 & (zice(i-1,j+1)+zice(i,j+1)).ne.0.0_r8)
THEN
277 f1=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
281 f1=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
282 & si(i ,j+1,lienw,
isisxy)+ &
283 & si(i-1,j+1,lienw,
isisxy)+ &
284 & si(i-1,j ,lienw,
isisxy))
287 f1=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
288 & si(i ,j+1,lienw,
isisxy)+ &
289 & si(i-1,j+1,lienw,
isisxy)+ &
290 & si(i-1,j ,lienw,
isisxy))
294 IF ((umask(i,j ).gt.0.0_r8).and. &
295 & (umask(i,j-1).lt.1.0_r8))
THEN
296 f2=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
299 ELSE IF ((umask_wet(i,j ).gt.0.0_r8).and. &
300 & (umask_wet(i,j-1).lt.1.0_r8))
THEN
301 f2=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
305 ELSE IF ((zice(i-1,j).eq.0.0_r8).and. &
306 & (zice(i ,j).eq.0.0_r8).and. &
307 & zice(i-1,j-1)+zice(i,j-1).ne.0.0_r8)
THEN
308 f2=0.5_r8*(si(i ,j,lienw,
isisxy)+ &
312 f2=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
313 & si(i-1,j ,lienw,
isisxy)+ &
314 & si(i-1,j-1,lienw,
isisxy)+ &
315 & si(i ,j-1,lienw,
isisxy))
318 f2=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
319 & si(i-1,j ,lienw,
isisxy)+ &
320 & si(i-1,j-1,lienw,
isisxy)+ &
321 & si(i ,j-1,lienw,
isisxy))
334 &
g*masu*on_u(i,j)*(fi(i ,j,
ichsse)- &
343 dsum=vmask(i-1,j )*vmask_wet(i-1,j )+ &
344 & vmask(i ,j )*vmask_wet(i ,j )+ &
345 & vmask(i-1,j+1)*vmask_wet(i-1,j+1)+ &
346 & vmask(i ,j+1)*vmask_wet(i ,j+1)
347 IF (dsum.gt.0.0_r8) fakt=1.0_r8/dsum
349 mfv11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
350 & si(i-1,j ,liold,
ishice)*f(i-1,j ))* &
351 & si(i-1,j,lieol,
isvevp)* &
352 & vmask(i-1,j)*vmask_wet(i-1,j)
353 mfv21=0.5_r8*(si(i,j-1,liold,
ishice)*f(i,j-1)+ &
354 & si(i,j ,liold,
ishice)*f(i,j ))* &
356 & vmask(i,j)*vmask_wet(i,j)
357 mfv12=0.5_r8*(si(i-1,j ,liold,
ishice)*f(i-1,j )+ &
358 & si(i-1,j+1,liold,
ishice)*f(i-1,j+1))* &
359 & si(i-1,j+1,lieol,
isvevp)* &
360 & vmask(i-1,j+1)*vmask_wet(i-1,j+1)
361 mfv22=0.5_r8*(si(i,j ,liold,
ishice)*f(i,j )+ &
362 & si(i,j+1,liold,
ishice)*f(i,j+1))* &
363 & si(i,j+1,lieol,
isvevp)* &
364 & vmask(i,j+1)*vmask_wet(i,j+1)
366 dsum=vmask(i-1,j )+ &
370 IF (dsum.gt.0.0_r8) fakt=1.0_r8/dsum
372 mfv11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
373 & si(i-1,j ,liold,
ishice)*f(i-1,j ))* &
374 & si(i-1,j,lieol,
isvevp)*vmask(i-1,j)
375 mfv21=0.5_r8*(si(i,j-1,liold,
ishice)*f(i,j-1)+ &
376 & si(i,j ,liold,
ishice)*f(i,j ))* &
377 & si(i,j,lieol,
isvevp)*vmask(i,j)
378 mfv12=0.5_r8*(si(i-1,j ,liold,
ishice)*f(i-1,j )+ &
379 & si(i-1,j+1,liold,
ishice)*f(i-1,j+1))* &
380 & si(i-1,j+1,lieol,
isvevp)*vmask(i-1,j+1)
381 mfv22=0.5_r8*(si(i,j ,liold,
ishice)*f(i,j )+ &
382 & si(i,j+1,liold,
ishice)*f(i,j+1))* &
383 & si(i,j+1,lieol,
isvevp)*vmask(i,j+1)
387 mfv11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
388 & si(i-1,j ,liold,
ishice)*f(i-1,j ))* &
390 mfv21=0.5_r8*(si(i,j-1,liold,
ishice)*f(i,j-1)+ &
391 & si(i,j ,liold,
ishice)*f(i,j ))* &
393 mfv12=0.5_r8*(si(i-1,j ,liold,
ishice)*f(i-1,j )+ &
394 & si(i-1,j+1,liold,
ishice)*f(i-1,j+1))* &
395 & si(i-1,j+1,lieol,
isvevp)
396 mfv22=0.5_r8*(si(i,j ,liold,
ishice)*f(i,j )+ &
397 & si(i,j+1,liold,
ishice)*f(i,j+1))* &
403 & (mfv11+mfv21+mfv12+mfv22)
407 uforce=uforce/area + &
414 hu=0.5_r8*(h(i-1,j)+min(zt_avg1(i-1,j), 0.0_r8) + &
415 & h(i ,j)+min(zt_avg1(i ,j), 0.0_r8))
416 thic=0.5_r8*(si(i ,j,liold,
ishice)+ &
417 & si(i-1,j,liold,
ishice))/auf
418 vuf=0.25*(si(i ,j ,lieol,
isvevp)+ &
419 & si(i ,j+1,lieol,
isvevp)+ &
420 & si(i-1,j ,lieol,
isvevp)+ &
421 & si(i-1,j+1,lieol,
isvevp))
422 spd=sqrt(si(i,j,lieol,
isuevp)* &
423 & si(i,j,lieol,
isuevp)+vuf*vuf)
428 clear=max(thic-hu/8.0_r8, 0.0_r8)
432 cbu=20.0_r8*clear*exp(-20.0_r8*(1.0_r8-auf))/(spd+5.0e-5_r8)
446 &
dtevp(ng)*uforce)/alfa
449 cff = 0.5*(minudgcof(i,j)+minudgcof(i-1,j))
451 &
dtevp(ng)*cff*(uiclm(i,j)- &
455 hu=0.5_r8*(h(i-1,j)+min(zt_avg1(i-1,j), 0.0_r8)+ &
456 & h(i ,j)+min(zt_avg1(i ,j), 0.0_r8))
457 masu=0.5_r8*(si(i ,j,liold,
ishice)+ &
460 clear=max(clear, 0.0_r8)
461 IF (clear.lt.5.0_r8) &
462 & si(i,j,lienw,
isuevp)=max(clear-1.0_r8, 0.0_r8)/ &
463 & 4.0_r8*si(i,j,lienw,
isuevp)
465# ifdef FASTICE_CLIMATOLOGY
466 si(i,j,lienw,
isuevp)=0.5_r8*(fastice_clm(i-1,j)+ &
467 & fastice_clm(i ,j))* &
474 IF(zice(i-1,j)+zice(i,j).ne.0.0_r8)
THEN
475 si(i,j,lienw,
isuevp)=0.0_r8
488 area=om_v(i,j)*on_v(i,j)
489 masv=0.5_r8*(si(i,j ,liold,
ishice)+ &
491 masv=max(masv, 0.1_r8)
493 avf=max(0.5_r8*(si(i,j-1,liold,
isaice)+ &
494 & si(i,j ,liold,
isaice)), 0.01_r8)
495 chuy=0.5_r8*(fi(i,j-1,
iciomt)+ &
497 pmv=0.5_r8*(pm(i,j)+pm(i,j-1))
498 pnv=0.5_r8*(pn(i,j)+pn(i,j-1))
502 s1=(si(i,j ,lienw,
isisyy)- &
503 & si(i,j-1,lienw,
isisyy))*pnv
505 IF ((vmask(i ,j).gt.0.0_r8).and. &
506 & (vmask(i+1,j).lt.1.0_r8))
THEN
507 f1=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
510 ELSE IF ((vmask_wet(i ,j).gt.0.0_r8).and. &
511 & (vmask_wet(i+1,j).lt.1.0_r8))
THEN
512 f1=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
516 ELSE IF ((zice(i,j-1).eq.0.0_r8).and. &
517 & (zice(i,j ).eq.0.0_r8).and. &
518 & (zice(i+1,j-1)+zice(i+1,j)).ne.0.0_r8)
THEN
519 f1=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
523 f1=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
524 & si(i+1,j ,lienw,
isisxy)+ &
525 & si(i+1,j-1,lienw,
isisxy)+ &
526 & si(i ,j-1,lienw,
isisxy))
529 f1=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
530 & si(i+1,j ,lienw,
isisxy)+ &
531 & si(i+1,j-1,lienw,
isisxy)+ &
532 & si(i ,j-1,lienw,
isisxy))
536 IF ((vmask(i ,j).gt.0.0_r8).and. &
537 & (vmask(i-1,j).lt.1.0_r8))
THEN
538 f2=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
541 ELSE IF ((vmask_wet(i ,j).gt.0.0_r8).and. &
542 & (vmask_wet(i-1,j).lt.1.0_r8))
THEN
543 f2=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
547 ELSE IF ((zice(i,j-1).eq.0.0_r8).and. &
548 & (zice(i,j ).eq.0.0_r8).and. &
549 & (zice(i-1,j-1)+zice(i-1,j)).ne.0.0_r8)
THEN
550 f2=0.5_r8*(si(i,j ,lienw,
isisxy)+ &
554 f2=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
555 & si(i-1,j ,lienw,
isisxy)+ &
556 & si(i-1,j-1,lienw,
isisxy)+ &
557 & si(i ,j-1,lienw,
isisxy))
560 f2=0.25_r8*(si(i ,j ,lienw,
isisxy)+ &
561 & si(i-1,j ,lienw,
isisxy)+ &
562 & si(i-1,j-1,lienw,
isisxy)+ &
563 & si(i ,j-1,lienw,
isisxy))
576 &
g*masv*om_v(i,j)*(fi(i,j ,
ichsse)- &
585 dsum=umask(i ,j-1)*umask_wet(i ,j-1)+ &
586 & umask(i+1,j-1)*umask_wet(i+1,j-1)+ &
587 & umask(i ,j )*umask_wet(i ,j )+ &
588 & umask(i+1,j )*umask_wet(i ,j )
589 IF (dsum.gt.0.0_r8) fakt=1.0_r8/dsum
591 mfu11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
592 & si(i ,j-1,liold,
ishice)*f(i ,j-1))* &
593 & si(i,j-1,lieol,
isuevp)* &
594 & umask(i,j-1)*umask_wet(i,j-1)
595 mfu21=0.5_r8*(si(i ,j-1,liold,
ishice)*f(i ,j-1)+ &
596 & si(i+1,j-1,liold,
ishice)*f(i+1,j-1))* &
597 & si(i+1,j-1,lieol,
isuevp)* &
598 & umask(i+1,j-1)*umask_wet(i+1,j-1)
599 mfu12=0.5_r8*(si(i-1,j,liold,
ishice)*f(i-1,j)+ &
600 & si(i ,j,liold,
ishice)*f(i ,j))* &
602 & umask(i,j)*umask_wet(i,j)
603 mfu22=0.5_r8*(si(i ,j,liold,
ishice)*f(i ,j)+ &
604 & si(i+1,j,liold,
ishice)*f(i+1,j))* &
605 & si(i+1,j,lieol,
isuevp)* &
606 & umask(i+1,j)*umask_wet(i+1,j)
608 dsum=umask(i ,j-1)+ &
612 IF (dsum.gt.0.0_r8) fakt=1.0_r8/dsum
614 mfu11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
615 & si(i ,j-1,liold,
ishice)*f(i ,j-1))* &
616 & si(i,j-1,lieol,
isuevp)*umask(i,j-1)
617 mfu21=0.5_r8*(si(i ,j-1,liold,
ishice)*f(i ,j-1)+ &
618 & si(i+1,j-1,liold,
ishice)*f(i+1,j-1))* &
619 & si(i+1,j-1,lieol,
isuevp)*umask(i+1,j-1)
620 mfu12=0.5_r8*(si(i-1,j,liold,
ishice)*f(i-1,j)+ &
621 & si(i ,j,liold,
ishice)*f(i ,j))* &
622 & si(i,j,lieol,
isuevp)*umask(i,j)
623 mfu22=0.5_r8*(si(i ,j,liold,
ishice)*f(i ,j)+ &
624 & si(i+1,j,liold,
ishice)*f(i+1,j))* &
625 & si(i+1,j,lieol,
isuevp)*umask(i+1,j)
629 mfu11=0.5_r8*(si(i-1,j-1,liold,
ishice)*f(i-1,j-1)+ &
630 & si(i ,j-1,liold,
ishice)*f(i ,j-1))* &
632 mfu21=0.5_r8*(si(i ,j-1,liold,
ishice)*f(i ,j-1)+ &
633 & si(i+1,j-1,liold,
ishice)*f(i+1,j-1))* &
634 & si(i+1,j-1,lieol,
isuevp)
635 mfu12=0.5_r8*(si(i-1,j,liold,
ishice)*f(i-1,j)+ &
636 & si(i ,j,liold,
ishice)*f(i ,j))* &
638 mfu22=0.5_r8*(si(i ,j,liold,
ishice)*f(i ,j)+ &
639 & si(i+1,j,liold,
ishice)*f(i+1,j))* &
645 & (mfu11+mfu21+mfu12+mfu22)
649 vforce=vforce/area + &
656 hv=0.5_r8*(h(i,j-1)+min(zt_avg1(i,j-1), 0.0_r8)+ &
657 & h(i,j )+min(zt_avg1(i,j ), 0.0_r8))
658 thic=0.5_r8*(si(i,j ,liold,
ishice)+ &
659 & si(i,j-1,liold,
ishice))/avf
660 uvf=0.25*(si(i ,j ,lieol,
isuevp)+ &
661 & si(i ,j-1,lieol,
isuevp)+ &
662 & si(i+1,j ,lieol,
isuevp)+
663 & si(i+1,j-1,lieol,
isuevp))
664 spd=sqrt(si(i,j,lieol,
isvevp)* &
665 & si(i,j,lieol,
isvevp)+uvf*uvf)
670 clear=max(thic-hv/8.0_r8, 0.0_r8)
674 cbv=20.0_r8*clear*exp(-20.0_r8*(1.0_r8-avf))/(spd+5.0e-5_r8)
688 &
dtevp(ng)*vforce)/alfa
691 cff=0.5*(minudgcof(i,j)+minudgcof(i,j-1))
693 &
dtevp(ng)*cff*(viclm(i,j)- &
697 hv=0.5_r8*(h(i,j-1)+min(zt_avg1(i,j-1), 0.0_r8) + &
698 & h(i,j )+min(zt_avg1(i,j ), 0.0_r8))
699 masv=0.5_r8*(si(i,j ,liold,
ishice)+ &
702 clear=max(clear, 0.0_r8)
703 IF (clear.lt.5.0_r8) &
704 & si(i,j,lienw,
isvevp)=max(clear-1.0_r8, 0.0_r8)/ &
705 & 4.0_r8*si(i,j,lienw,
isvevp)
707# ifdef FASTICE_CLIMATOLOGY
708 si(i,j,lienw,
isvevp)=0.5*(fastice_clm(i,j-1)+ &
709 & fastice_clm(i,j ))*
716 IF (zice(i,j-1)+zice(i,j).ne.0.0_r8)
THEN
717 si(i,j,lienw,
isvevp)=0.0_r8
727 CALL ice_uibc_tile (ng, tile, model, &
728 & lbi, ubi, lbj, ubj, &
729 & imins, imaxs, jmins, jmaxs, &
733 CALL ice_vibc_tile (ng, tile, model, &
734 & lbi, ubi, lbj, ubj, &
735 & imins, imaxs, jmins, jmaxs, &
741 & lbi, ubi, lbj, ubj, &
744 & lbi, ubi, lbj, ubj, &
751 & lbi, ubi, lbj, ubj, &
775 IF (
domain(ng)%Western_Edge(tile))
THEN
786 IF (
domain(ng)%Eastern_Edge(tile))
THEN
797 IF (
domain(ng)%Southern_Edge(tile))
THEN
808 IF (
domain(ng)%Northern_Edge(tile))
THEN
820 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
821 si(istr ,jstr-1,liunw,
isuice)=si(istr ,jstr-1,lienw, &
823 si(istr-1,jstr ,liunw,
isvice)=si(istr-1,jstr ,lienw, &
830 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
831 si(iend+1,jstr-1,liunw,
isuice)=si(iend+1,jstr-1,lienw, &
833 si(iend+1,jstr ,liunw,
isvice)=si(iend+1,jstr ,lienw, &
840 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
841 si(istr ,jend+1,liunw,
isuice)=si(istr ,jend+1,lienw, &
843 si(istr-1,jend+1,liunw,
isvice)=si(istr-1,jend+1,lienw, &
850 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
851 si(iend+1,jend+1,liunw,
isuice)=si(iend+1,jend+1,lienw, &
853 si(iend+1,jend+1,liunw,
isvice)=si(iend+1,jend+1,lienw, &
862 & lbi, ubi, lbj, ubj, &
866 & lbi, ubi, lbj, ubj, &
873 & lbi, ubi, lbj, ubj, &
881 END SUBROUTINE ice_elastic_tile
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_clima), dimension(:), allocatable clima
type(t_coupling), dimension(:), allocatable coupling
type(t_forces), dimension(:), allocatable forces
type(t_grid), dimension(:), allocatable grid
integer, parameter isvice
integer, dimension(:), allocatable ievp
integer, dimension(:), allocatable dtevp
integer, parameter ichsse
integer, parameter icuavg
integer, parameter isisxx
real(r8), dimension(:), allocatable icerho
type(t_ice), dimension(:), allocatable ice
integer, dimension(:), allocatable nevp
integer, parameter icvavg
integer, parameter iciomt
integer, parameter isisxy
integer, parameter isuevp
integer, parameter icaius
integer, parameter isaice
integer, parameter isvevp
integer, parameter isuice
integer, parameter ishice
integer, parameter icaivs
integer, parameter isisyy
type(t_domain), dimension(:), allocatable domain
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
logical, dimension(:,:), allocatable compositegrid
integer, parameter isouth
integer, parameter inorth
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)