UPP (develop)
Loading...
Searching...
No Matches
CALVESSEL.f
1 SUBROUTINE calvessel(ICEG)
2! Algorithm for calculating ice growth rate
3!
4! PROGRAM HISTORY LOG:
5! 21-10-31 JESSE MENG - 2D DECOMPOSITION
6
7 use vrbls2d, only: sst, u10h, v10h, tshltr
8 use masks, only: sm, sice
9 use ctlblk_mod, only: jsta, jend, im, spval, ista, iend
10!-------------------------------------------
11 implicit none
12 integer I, J
13 real TSFC_C,TSHLTR_C,SST_C
14 real, parameter :: C2K=273.15
15 real, dimension(ista:iend,jsta:jend) :: pr, spd10
16 real,intent(out) :: ICEG(ista:iend,jsta:jend)
17
18! allocate (thsfc(ista:iend,jsta:jend),tsfc(ista:iend,jsta:jend))
19
20 DO j=jsta,jend
21 DO i=ista,iend
22! CALCULATE SPEED
23 spd10(i,j)=sqrt(u10h(i,j)**2+v10h(i,j)**2)
24 if (spd10(i,j)>50) then
25 iceg(i,j)=0.
26 cycle
27 endif
28
29! Reverse of land mask use le instead of ge from original code
30!! MASK CHECK
31 if((sice(i,j)>=0.5).or.(sm(i,j)<=0.5)) then
32 iceg(i,j)=0.
33 cycle
34 endif
35
36!!! CHANGE TEMP to FROM K to C
37!!! TEMPERATURE CHECK
38 sst_c=sst(i,j)-c2k
39 tshltr_c=tshltr(i,j)-c2k
40 if((sst_c<-1.7).OR. &
41 (sst_c>12.0)) then
42 iceg(i,j)=0.
43 cycle
44 endif
45
46 if((tshltr_c>0.).OR. &
47 (tshltr_c<-40.)) then
48 iceg(i,j)=0.
49 cycle
50 endif
51
52! CALCULATE ICE GROWTH
53 pr(i,j)=spd10(i,j)*(-1.7-tshltr_c)/(1.+.4*(sst_c+1.7))
54 iceg(i,j)=(2.73e-02)*pr(i,j)+(2.91e-04)*pr(i,j)*pr(i,j) &
55 +(1.84e-06)*pr(i,j)**3
56
57!! ICE GROWTH CHECK
58 if (iceg(i,j)<0.) THEN
59 iceg(i,j)=0.
60 else
61! Convert to m/s from cm/hr
62 iceg(i,j)=(1./3.6e+05)*iceg(i,j)
63 endif
64
65 ENDDO
66 ENDDO
67
68 END