UPP  V11.0.0
 All Data Structures Files Functions Pages
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
Definition: MASKS_mod.f:1