17 REAL,
ALLOCATABLE ::
n31(:,:)
18 REAL,
ALLOCATABLE ::
n32(:,:,:)
67 REAL :: CASR,CASL,FLUX1,FLUX2,FLUXLP,FLUXLM,FLUXHP,FLUXHM
68 REAL :: MIN11,MIN22,MIN33,ADLP,ADLM
69 REAL,
DIMENSION(MDC,MSC) :: ADP,ADM,NL
70 REAL :: CAS(MDC,MSC,10)
73 INTEGER,
DIMENSION(MSC) :: IDCMIN,IDCMAX
81 casr = 0.5*(cas(id,iss,1)+cas(id,iss+1,1))
82 flux1 = 0.5*(casr+abs(casr))*
ac2(id,iss,ig)
83 flux2 = 0.5*(casr-abs(casr))*
ac2(id,iss+1,ig)
88 fluxhp = casr*0.5*(
ac2(id,iss,ig)+
ac2(id,iss+1,ig))
91 nl(id,iss) =
ac2(id,iss,ig)-(fluxlp-fluxlm)*dtw/ds
93 adp(id,iss) = fluxhp-fluxlp
94 adm(id,iss) = fluxhm-fluxlm
96 ELSE IF(iss == msc)
THEN 100 flux1 = 0.5*(casr+abs(casr))*
ac2(id,iss,ig)
104 casl = cas(id,iss-1,1)
105 flux1 = 0.5*(casl+abs(casl))*
ac2(id,iss-1,ig)
106 flux2 = 0.5*(casl-abs(casl))*
ac2(id,iss,ig)
109 fluxhp = casr*
ac2(id,iss,ig)
110 fluxhm = casl*
ac2(id,iss-1,ig)
112 nl(id,iss) =
ac2(id,iss,ig)-(fluxlp-fluxlm)*dtw/ds
114 adp(id,iss) = fluxhp-fluxlp
115 adm(id,iss) = fluxhm-fluxlm
120 casr = 0.5*(cas(id,iss,1)+cas(id,iss+1,1))
121 flux1 = 0.5*(casr+abs(casr))*
ac2(id,iss,ig)
122 flux2 = 0.5*(casr-abs(casr))*
ac2(id,iss+1,ig)
125 casl = 0.5*(cas(id,iss,1)+cas(id,iss-1,1))
126 flux1 = 0.5*(casl+abs(casl))*
ac2(id,iss-1,ig)
127 flux2 = 0.5*(casl-abs(casl))*
ac2(id,iss,ig)
130 fluxhp = casr*0.5*(
ac2(id,iss,ig)+
ac2(id,iss+1,ig))
131 fluxhm = casl*0.5*(
ac2(id,iss,ig)+
ac2(id,iss-1,ig))
133 nl(id,iss) =
ac2(id,iss,ig)-(fluxlp-fluxlm)*dtw/ds
135 adp(id,iss) = fluxhp-fluxlp
136 adm(id,iss) = fluxhm-fluxlm
145 min11 = abs(adp(id,iss))
146 min22 = sign(1.,adp(id,iss))*(nl(id,iss+2)-nl(id,iss+1))*ds/dtw
147 adlp = min(min11,min22)
149 adlp = sign(1.,adp(id,iss))*adlp
151 min11 = abs(adm(id,iss))
152 min22 = sign(1.,adm(id,iss))*(nl(id,iss+1)-nl(id,iss))*ds/dtw
153 adlm = min(min11,min22)
155 adlm = sign(1.,adm(id,iss))*adlm
157 n31(id,iss) = nl(id,iss)-(adlp-adlm)*dtw/ds
159 ELSE IF(iss == 2)
THEN 162 min11 = abs(adp(id,iss))
163 min22 = sign(1.,adp(id,iss))*(nl(id,iss+2)-nl(id,iss+1))*ds/dtw
164 min33 = sign(1.,adp(id,iss))*(nl(id,iss)-nl(id,iss-1))*ds/dtw
165 adlp = min(min11,min22,min33)
167 adlp = sign(1.,adp(id,iss))*adlp
169 min11 = abs(adm(id,iss))
170 min22 = sign(1.,adm(id,iss))*(nl(id,iss+1)-nl(id,iss))*ds/dtw
171 adlm = min(min11,min22)
173 adlm = sign(1.,adm(id,iss))*adlm
175 n31(id,iss) = nl(id,iss)-(adlp-adlm)*dtw/ds
177 ELSE IF(iss == msc-1)
THEN 180 min11 = abs(adp(id,iss))
181 min33 = sign(1.,adp(id,iss))*(nl(id,iss)-nl(id,iss-1))*ds/dtw
182 adlp = min(min11,min33)
184 adlp = sign(1.,adp(id,iss))*adlp
186 min11 = abs(adm(id,iss))
187 min22 = sign(1.,adm(id,iss))*(nl(id,iss+1)-nl(id,iss))*ds/dtw
188 min33 = sign(1.,adm(id,iss))*(nl(id,iss-1)-nl(id,iss-2))*ds/dtw
189 adlm = min(min11,min22,min33)
191 adlm = sign(1.,adm(id,iss))*adlm
193 n31(id,iss) = nl(id,iss)-(adlp-adlm)*dtw/ds
195 ELSE IF(iss == msc)
THEN 198 min11 = abs(adp(id,iss))
199 min33 = sign(1.,adp(id,iss))*(nl(id,iss)-nl(id,iss-1))*ds/dtw
200 adlp = min(min11,min33)
202 adlp = sign(1.,adp(id,iss))*adlp
204 min11 = abs(adm(id,iss))
205 min33 = sign(1.,adm(id,iss))*(nl(id,iss-1)-nl(id,iss-2))*ds/dtw
206 adlm = min(min11,min33)
208 adlm = sign(1.,adm(id,iss))*adlm
210 n31(id,iss) = nl(id,iss)-(adlp-adlm)*dtw/ds
215 min11 = abs(adp(id,iss))
216 min22 = sign(1.,adp(id,iss))*(nl(id,iss+2)-nl(id,iss+1))*ds/dtw
217 min33 = sign(1.,adp(id,iss))*(nl(id,iss)-nl(id,iss-1))*ds/dtw
218 adlp = min(min11,min22,min33)
220 adlp = sign(1.,adp(id,iss))*adlp
222 min11 = abs(adm(id,iss))
223 min22 = sign(1.,adm(id,iss))*(nl(id,iss+1)-nl(id,iss))*ds/dtw
224 min33 = sign(1.,adm(id,iss))*(nl(id,iss-1)-nl(id,iss-2))*ds/dtw
225 adlm = min(min11,min22,min33)
227 adlm = sign(1.,adm(id,iss))*adlm
229 n31(id,iss) = nl(id,iss)-(adlp-adlm)*dtw/ds
243 INTEGER :: ISS,ID,IDM1,IDM2,IDP1,MDCM,IG,II
245 INTEGER,
DIMENSION(MSC) :: IDCMIN,IDCMAX
246 REAL,
PARAMETER :: ZETA = 0.5
251 REAL,
DIMENSION(MDC) :: A,B,C,R,U
254 DO iddum = idcmin(iss),idcmax(iss)
255 id = mod(iddum-1+
mdc,
mdc)+1
256 idp1 = mod(iddum+
mdc,
mdc)+1
257 idm1 = mod(iddum-2+
mdc,
mdc)+1
263 a(id) = -0.5*zeta*dtw*cad(idm1,iss,1)/dd
268 c(id) = 0.5*zeta*dtw*cad(idp1,iss,1)/dd
272 r(id) = cad(idp1,iss,1)*
n31(idp1,iss)
273 r(id) = (1.0-zeta)*0.5*dtw*r(id)/dd
274 r(id) =
n31(id,iss)-r(id)
275 ELSE IF(id ==
mdc)
THEN 276 r(id) = -cad(idm1,iss,1)*
n31(idm1,iss)
277 r(id) = (1.0-zeta)*0.5*dtw*r(id)/dd
278 r(id) =
n31(id,iss)-r(id)
280 r(id) = cad(idp1,iss,1)*
n31(idp1,iss)-cad(idm1,iss,1)*
n31(idm1,iss)
281 r(id) = (1.0-zeta)*0.5*dtw*r(id)/dd
282 r(id) =
n31(id,iss)-r(id)
289 DO iddum = idcmin(iss),idcmax(iss)
290 id = mod(iddum-1+
mdc,
mdc)+1
291 n32(id,iss,ig) = u(id)
300 SUBROUTINE tridag(A,B,C,R,U,N)
303 REAL,
DIMENSION(N) :: A,B,C,R,U
304 INTEGER,
PARAMETER :: NMAX = 500
307 IF(b(1) == 0.)pause
'TRIDAG: REWRITE EQUATIONS' 312 bet = b(j)-a(j)*gam(j)
313 IF(bet == 0.)pause
'TRIDAG FAILED' 314 u(j) = (r(j)-a(j)*u(j-1))/bet
317 u(j) = u(j)-gam(j+1)*u(j+1)
326 SUBROUTINE adv_n(DTW)
337 REAL(SP),
ALLOCATABLE :: EXFLUX(:,:),UN(:,:),PSPX(:,:,:),PSPY(:,:,:),FF1(:,:),FIJ1(:,:,:)
338 REAL(SP),
ALLOCATABLE :: XFLUX(:,:,:)
339 REAL(SP),
ALLOCATABLE :: XFLUX_TMP(:)
340 REAL(SP) :: UTMP,VTMP,UN1,X11,Y11,X22,Y22,X33,Y33,TMP1,TMP2,XI,YI
341 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1_TMP
342 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF,TEMP,STPOINT
344 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,K,JTMP,JJ,II
345 REAL(SP) :: AC1MIN, AC1MAX, AC2MIN, AC2MAX
346 INTEGER :: ID,ISS,IG,IG2
347 REAL(SP) :: XIN,YIN,XIC,YIC,CANX,CANY
348 REAL(SP) :: CAX(MDC,MSC),CAY(MDC,MSC)
350 REAL(SP) :: RF(MDC,MSC),DF(MDC,MSC)
352 REAL(SP) :: SPCDIR2(MDC),SPCDIR3(MDC),CANX_2D(MDC,MSC),CANY_2D(MDC,MSC),CGO_1D(MSC),CGO_2D(MDC,MSC)
354 REAL(SP) :: N32_T,XFLUX_T
355 REAL(SP),
ALLOCATABLE :: DEP2(:),AC2LOC(:)
356 REAL(SP) :: DEPLOC,KWAVELOC,CGLOC,NN,ND,SPCSIGL
357 REAL(SP) :: UA_NODE,VA_NODE
360 REAL,
ALLOCATABLE ::EXFLUXA(:,:),EXFLUXB(:,:),UNA(:,:),UNBB(:,:),FIJ2(:,:,:),&
361 FIJ1A(:,:,:),FIJ1B(:,:,:),FIJ2A(:,:,:),FIJ2B(:,:,:), &
362 N32_TMPP2(:,:),N32_TMPP3(:,:)
363 REAL :: DLTXEA,DLTXEB,DLTXETMP,DLTYETMP,C_ICE
364 REAL :: CANXAB(MDC,MSC),CANYA(MDC,MSC),CANYB(MDC,MSC)
365 REAL(SP) :: XFLUX_1D(0:MT),PSPX_1D(M),PSPY_1D(M)
367 REAL :: EXFLUX_TMPA(MDC,MSC),EXFLUX_TMPB(MDC,MSC)
368 REAL :: EXFLUX_TMP(MDC,MSC)
371 ALLOCATE(dep2(mt),ac2loc(0:mt),xflux_tmp(0:mt))
372 ALLOCATE(exflux(mdc,msc),ff1(mdc,msc),fij1(mdc,msc,2),un(mdc,msc))
373 ALLOCATE(xflux(mdc,msc,0:mt));xflux=0.0
374 ALLOCATE(pspx(mdc,msc,m));pspx=0.0
375 ALLOCATE(pspy(mdc,msc,m));pspy=0.0
376 IF(high_latitude_wave)
THEN 377 ALLOCATE(exfluxa(mdc,msc),exfluxb(mdc,msc),fij2(mdc,msc,0:m),&
378 fij1a(mdc,msc,0:m),fij1b(mdc,msc,0:m),fij2a(mdc,msc,0:m),fij2b(mdc,msc,0:m),una(mdc,msc),unbb(mdc,msc))
379 ALLOCATE(n32_tmpp2(mdc,msc),n32_tmpp3(mdc,msc))
398 IF(.NOT. high_latitude_wave)
THEN 413 ff1(:,:)=0.5*(
n32(:,:,i1)+
n32(:,:,i2))
430 pspx(:,:,i)=pspx(:,:,i)+ff1(:,:)*dltytrie(i,j)
431 pspy(:,:,i)=pspy(:,:,i)+ff1(:,:)*dltxtrie(i,j)
433 pspx(:,:,i)=pspx(:,:,i)/art2(i)
434 pspy(:,:,i)=pspy(:,:,i)/art2(i)
485 fij1(:,:,1)=
n32(:,:,ia)+dltxncve(i,1)*pspx(:,:,ia)+dltyncve(i,1)*pspy(:,:,ia)
486 fij1(:,:,2)=
n32(:,:,ib)+dltxncve(i,2)*pspx(:,:,ib)+dltyncve(i,2)*pspy(:,:,ib)
505 deploc = (dep2(nv(i1,1))+dep2(nv(i1,2))+dep2(nv(i1,3)))/3.0
527 CALL sproxy2(canx_2d ,cany_2d , &
528 cgo_2d ,spcdir2,spcdir3,utmp ,vtmp )
530 un = cany_2d*dltxe(i) - canx_2d*dltye(i)
534 exflux=-un*((1.0+sign(1.0,un))*fij1(:,:,2)+(1.0-sign(1.0,un))*fij1(:,:,1))*0.5
536 xflux(:,:,ia)=xflux(:,:,ia)+exflux
537 xflux(:,:,ib)=xflux(:,:,ib)-exflux
549 IF(isonb_w(i) /= 0)
THEN 564 CALL kscip1(1,spcsigl,deploc,kwaveloc,cgloc,nn,nd)
566 cax(id,iss) = cgloc *
spcdir(id,2)
567 cay(id,iss) = cgloc *
spcdir(id,3)
587 fij1_tmp =
n32(id,iss,i)
589 IF(nbsn(i,ntsn(i)-1) > m)
THEN 591 un1 = cany*(vx(i)-vx(nbsn(i,2))) &
592 -canx*(vy(i)-vy(nbsn(i,2)))
596 ELSE IF(nbsn(i,2) > m)
THEN 597 un1 = cany*(vx(nbsn(i,ntsn(i)-1))-vx(i)) &
598 -canx*(vy(nbsn(i,ntsn(i)-1))-vy(i))
603 un1 = cany*(vx(nbsn(i,ntsn(i)-1))-vx(nbsn(i,2))) &
604 -canx*(vy(nbsn(i,ntsn(i)-1))-vy(nbsn(i,2)))
613 xflux(id,iss,i) = xflux(id,iss,i)+max(0.0,-un1*fij1_tmp)
630 ac2(:,:,i) =
n32(:,:,i)-xflux(:,:,i)/art1(i)*dtw
631 ac2(:,:,i) = max(0.0,
ac2(:,:,i))
648 DEALLOCATE(dep2,ac2loc,xflux_tmp,exflux,ff1,fij1,un)
649 DEALLOCATE(xflux,pspx,pspy)
650 IF(high_latitude_wave)
THEN 651 DEALLOCATE(exfluxa,exfluxb,fij2)
652 DEALLOCATE(fij1a,fij1b,fij2a,fij2b,una,unbb)
653 DEALLOCATE(n32_tmpp2,n32_tmpp3)
660 SUBROUTINE adv_hl(FF1,I,I1,I2)
671 REAL(SP) :: FF1(MDC,MSC),N32_TMPP(MDC,MSC),N32_TMPP4(MDC,MSC)
672 INTEGER :: ISS, ID,I1,I2,IDT,IDD,III,I,IDD1,IDD2
673 REAL :: UL_DEGREE,CENTER_DEGREE,DL_DEGREE,DIFLAT1,DIFLAT2,RATELAT1,RATELAT2
683 IF (vx(i)<ul_degree .OR. vx(i)>dl_degree)
THEN 690 n32_tmpp(id,iss)=
n32(idd,iss,i1)
693 center_degree=iii*45.0
694 ul_degree=center_degree+22.5
695 dl_degree=center_degree-22.5
696 IF(vx(i)<ul_degree .AND. vx(i)>dl_degree)
THEN 706 n32_tmpp(id,iss)=
n32(idd,iss,i1)
709 ff1(id,iss)=0.5*(n32_tmpp(id,iss)+
n32(id,iss,i2))
714 IF (vx(i)<ul_degree .OR. vx(i)>dl_degree)
THEN 721 n32_tmpp(id,iss)=
n32(idd,iss,i2)
724 center_degree=iii*45.0
725 ul_degree=center_degree+22.5
726 dl_degree=center_degree-22.5
727 IF(vx(i)<ul_degree .AND. vx(i)>dl_degree)
THEN 737 n32_tmpp(id,iss)=
n32(idd,iss,i2)
740 ff1(id,iss)=0.5*(n32_tmpp(id,iss)+
n32(id,iss,i1))
744 IF(diflat1 > 180.0)
THEN 745 diflat1 = -360.0+diflat1
746 ELSE IF(diflat1 < -180.0)
THEN 747 diflat1 = 360.0+diflat1
749 IF(diflat2 > 180.0)
THEN 750 diflat2 = -360.0+diflat2
751 ELSE IF(diflat2 < -180.0)
THEN 752 diflat2 = 360.0+diflat2
754 ratelat1=diflat1/360.
755 ratelat2=diflat2/360.
756 idd1=anint(ratelat1*mdc)+id
757 idd2=anint(ratelat2*mdc)+id
773 n32_tmpp(id,iss)=
n32(idd1,iss,i1)
774 n32_tmpp4(id,iss)=
n32(idd2,iss,i2)
775 ff1(id,iss)=0.5*(n32_tmpp(id,iss)+n32_tmpp4(id,iss))
786 SUBROUTINE adv_hl_fij(N32_TMPP3,N32_TMPP2,I,IA,IB)
796 REAL ::FF1(MDC,MSC),N32_TMPP2(MDC,MSC),N32_TMPP3(MDC,MSC)
797 INTEGER :: ISS, ID,IA,IB,IDT,IDD,III,I,IDD1,IDD2
798 REAL :: UL_DEGREE,CENTER_DEGREE,DL_DEGREE,DIFLAT1,DIFLAT2,RATELAT1,RATELAT2
801 n32_tmpp2=
n32(:,:,ia)
802 n32_tmpp3=
n32(:,:,ib)
810 IF (vx(ib)<ul_degree .OR. vx(ib)>dl_degree)
THEN 817 n32_tmpp2(id,iss)=
n32(idd,iss,ia)
820 center_degree=iii*45.0
821 ul_degree=center_degree+22.5
822 dl_degree=center_degree-22.5
823 IF(vx(ib)<ul_degree .AND. vx(ib)>dl_degree)
THEN 833 n32_tmpp2(id,iss)=
n32(idd,iss,ia)
840 IF (vx(ia)<ul_degree .OR. vx(ia)>dl_degree)
THEN 847 n32_tmpp2(id,iss)=
n32(idd,iss,ib)
850 center_degree=iii*45.0
851 ul_degree=center_degree+22.5
852 dl_degree=center_degree-22.5
853 IF(vx(ia)<ul_degree .AND. vx(ia)>dl_degree)
THEN 863 n32_tmpp2(id,iss)=
n32(idd,iss,ia)
867 diflat1=vx(ib)-vx(ia)
868 IF(diflat1 > 180.0)
THEN 869 diflat1 = -360.0+diflat1
870 ELSE IF(diflat1 < -180.0)
THEN 871 diflat1 = 360.0+diflat1
873 ratelat1=diflat1/360.
874 idd1=anint(ratelat1*mdc)+id
883 n32_tmpp2(id,iss)=
n32(idd1,iss,ia)
891 IF (vx(ia)<ul_degree .OR. vx(ia)>dl_degree)
THEN 898 n32_tmpp3(id,iss)=
n32(idd,iss,ib)
901 center_degree=iii*45.0
902 ul_degree=center_degree+22.5
903 dl_degree=center_degree-22.5
904 IF(vx(ia)<ul_degree .AND. vx(ia)>dl_degree)
THEN 914 n32_tmpp3(id,iss)=
n32(idd,iss,ib)
921 IF (vx(ib)<ul_degree .OR. vx(ib)>dl_degree)
THEN 928 n32_tmpp3(id,iss)=
n32(idd,iss,ia)
931 center_degree=iii*45.0
932 ul_degree=center_degree+22.5
933 dl_degree=center_degree-22.5
934 IF(vx(ib)<ul_degree .AND. vx(ib)>dl_degree)
THEN 944 n32_tmpp3(id,iss)=
n32(idd,iss,ib)
948 diflat1=vx(ia)-vx(ib)
949 IF(diflat1 > 180.0)
THEN 950 diflat1 = -360.0+diflat1
951 ELSE IF(diflat1 < -180.0)
THEN 952 diflat1 = 360.0+diflat1
954 ratelat1=diflat1/360.
955 idd1=anint(ratelat1*mdc)+id
964 n32_tmpp3(id,iss)=
n32(idd1,iss,ib)
978 SUBROUTINE actt2(IA,IB,RATIO)
1000 REAL :: C_ICE,COES(7,9),COES2(7,9),ICETHI,SPCSIGL,DEPLOC,TWAVE
1001 REAL :: ICEATT,ICEATTS(7),ICEATT1,ICEATT2,RATE,RATIO(MSC)
1002 REAL :: mean_diam,mean_diam_u,mean_diam_d,floe_diam
1003 REAL ,
parameter :: ee=2,ff=0.9,dmin=20
1004 REAL(SP):: DEP3(MT),DIS,DTMP_DP,X1_DP,X2_DP,Y1_DP,Y2_DP
1005 INTEGER :: I,ISS,ID,ni,mm,IA,IB
1008 coes2(1,:)=(/0.0,0.0,0.0,0.0,-0.003509,0.1473,-2.121,11.24,-22.42/)
1009 coes2(2,:)=(/0.0,0.0,0.0,0.0,-0.003723,0.173,-2.833,18.33,-43.89/)
1010 coes2(3,:)=(/0.0,0.0,0.0,0.0,-0.001264,0.07156,-1.364,9.616,-25.34/)
1011 coes2(4,:)=(/0.0,0.0,0.0,0.0,0.001401,-0.05012,0.5915,-3.329,5.372/)
1012 coes2(5,:)=(/0.0,0.0,0.0,0.0,0.0009987,-0.0403,0.5441,-3.471,6.658/)
1013 coes2(6,:)=(/0.0,0.0,0.0,0.0,0.0002636,-0.01267,0.1853,-1.403,2.459/)
1014 coes2(7,:)=(/0.0,0.0,0.0,0.0,1.551e-5,-0.002103,0.03268,-0.4304,0.3751/)
1018 dis=((
vy(ia)-
vy(ib))**2+(
vx(ia)-
vx(ib))**2)**0.5*2.0
1019 if(c_ice>0.00001)
then 1024 mean_diam_u=mean_diam_u+(ee**2*ff)**mm*ee**(-mm)*(floe_diam+floe_diam)/2
1025 mean_diam_d=mean_diam_d+(ee**2*ff)**mm
1027 mean_diam=mean_diam_u/mean_diam_d
1031 icethi=0.3*(1.0+4*c_ice)
1037 twave=1/(spcsigl/
pi2_w)
1039 IF(twave<=6.0)twave=6.0
1040 iceatts(1)=coes2(1,1)*twave**8+coes2(1,2)*twave**7+coes2(1,3)*twave**6+coes2(1,4)*twave**5+coes2(1,5)*twave**4+&
1041 coes2(1,6)*twave**3+coes2(1,7)*twave**2+coes2(1,8)*twave+coes2(1,9)
1043 iceatts(2)=coes2(2,1)*twave**8+coes2(2,2)*twave**7+coes2(2,3)*twave**6+coes2(2,4)*twave**5+coes2(2,5)*twave**4+&
1044 coes2(2,6)*twave**3+coes2(2,7)*twave**2+coes2(2,8)*twave+coes2(2,9)
1046 iceatts(3)=coes2(3,1)*twave**8+coes2(3,2)*twave**7+coes2(3,3)*twave**6+coes2(3,4)*twave**5+coes2(3,5)*twave**4+&
1047 coes2(3,6)*twave**3+coes2(3,7)*twave**2+coes2(3,8)*twave+coes2(3,9)
1049 iceatts(4)=coes2(4,1)*twave**8+coes2(4,2)*twave**7+coes2(4,3)*twave**6+coes2(4,4)*twave**5+coes2(4,5)*twave**4+&
1050 coes2(4,6)*twave**3+coes2(4,7)*twave**2+coes2(4,8)*twave+coes2(4,9)
1052 iceatts(5)=coes2(5,1)*twave**8+coes2(5,2)*twave**7+coes2(5,3)*twave**6+coes2(5,4)*twave**5+coes2(5,5)*twave**4+&
1053 coes2(5,6)*twave**3+coes2(5,7)*twave**2+coes2(5,8)*twave+coes2(5,9)
1055 iceatts(6)=coes2(6,1)*twave**8+coes2(6,2)*twave**7+coes2(6,3)*twave**6+coes2(6,4)*twave**5+coes2(6,5)*twave**4+&
1056 coes2(6,6)*twave**3+coes2(6,7)*twave**2+coes2(6,8)*twave+coes2(6,9)
1058 iceatts(7)=coes2(7,1)*twave**8+coes2(7,2)*twave**7+coes2(7,3)*twave**6+coes2(7,4)*twave**5+coes2(7,5)*twave**4+&
1059 coes2(7,6)*twave**3+coes2(7,7)*twave**2+coes2(7,8)*twave+coes2(7,9)
1060 IF (icethi<=0.4)
THEN 1062 ELSE IF(icethi==0.6)
THEN 1064 ELSE IF(icethi==0.8)
THEN 1066 ELSE IF(icethi==1.2)
THEN 1068 ELSE IF(icethi==1.6)
THEN 1070 ELSE IF(icethi==2.4)
THEN 1072 ELSE IF(icethi>=3.2)
THEN 1074 ELSE IF(icethi>0.4.AND.icethi<0.6)
THEN 1077 rate=(icethi-0.4)/0.2
1078 iceatt=iceatt1*(1-rate)+iceatt2*rate
1079 ELSE IF(icethi>0.6.AND.icethi<0.8)
THEN 1082 rate=(icethi-0.6)/0.2
1083 iceatt=iceatt1*(1-rate)+iceatt2*rate
1084 ELSEIF(icethi>0.8.AND.icethi<1.2)
THEN 1087 rate=(icethi-0.8)/0.4
1088 iceatt=iceatt1*(1-rate)+iceatt2*rate
1089 ELSE IF(icethi>1.2.AND.icethi<1.6)
THEN 1092 rate=(icethi-1.2)/0.4
1093 iceatt=iceatt1*(1-rate)+iceatt2*rate
1094 ELSE IF(icethi>1.6.AND.icethi<2.4)
THEN 1097 rate=(icethi-1.6)/0.8
1098 iceatt=iceatt1*(1-rate)+iceatt2*rate
1099 ELSE IF(icethi>2.4.AND.icethi<3.2)
THEN 1102 rate=(icethi-2.4)/0.8
1103 iceatt=iceatt1*(1-rate)+iceatt2*rate
1106 iceatt=iceatt*c_ice/mean_diam
1107 ratio(iss)=exp(-iceatt*dis)
1109 iceatt=0.02*exp(-0.386*twave)*c_ice
1110 ratio(iss)=exp(-iceatt*dis)
1120 END SUBROUTINE actt2
real, dimension(:), allocatable, save spcsig
real, dimension(mdiffr) pdiffr
real, dimension(:,:,:), allocatable n32
real, dimension(:,:), allocatable, save spcdir
subroutine adv_hl(FF1, I, I1, I2)
real, dimension(:,:,:), allocatable ac2
subroutine adv_hl_fij(N32_TMPP3, N32_TMPP2, I, IA, IB)
subroutine algorithm_fct(CAS, IG, DTW, IDCMIN, IDCMAX)
real(sp), dimension(:), allocatable, target vx
real(sp), dimension(:), allocatable, target vy
subroutine kscip1(MMT, SIG, D, K, CG, N, ND)
real(kind=dbl_kind), dimension(:,:), allocatable, target, save aice
subroutine actt2(IA, IB, RATIO)
subroutine sproxy2(CAXL, CAYL, CG0L, ECOSL, ESINL, UX2L, UY2L)
subroutine tridag(A, B, C, R, U, N)
subroutine kscip2(S, D, CG)
subroutine algorithm_crank_nicolson(CAD, IG, DTW, IDCMIN, IDCMAX, DD)
real, dimension(:,:), allocatable n31
real, dimension(:,:), allocatable compda