My Project
icing.f90
Go to the documentation of this file.
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 !/===========================================================================/
13 ! Copyright (c) 2007, The University of Massachusetts Dartmouth
14 ! Produced at the School of Marine Science & Technology
15 ! Marine Ecosystem Dynamics Modeling group
16 ! All rights reserved.
17 !
18 ! FVCOM has been developed by the joint UMASSD-WHOI research team. For
19 ! details of authorship and attribution of credit please see the FVCOM
20 ! technical manual or contact the MEDM group.
21 !
22 !
23 ! This file is part of FVCOM. For details, see http://fvcom.smast.umassd.edu
24 ! The full copyright notice is contained in the file COPYRIGHT located in the
25 ! root directory of the FVCOM code. This original header must be maintained
26 ! in all distributed versions.
27 !
28 ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29 ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
30 ! THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
31 ! PURPOSE ARE DISCLAIMED.
32 !
33 !/---------------------------------------------------------------------------/
34 ! CVS VERSION INFORMATION
35 ! $Id$
36 ! $Name$
37 ! $Revision$
38 !/===========================================================================/
39 
40 SUBROUTINE icing(NOW)
42  USE mod_force
43  USE all_vars
44  USE mod_time
45  IMPLICIT NONE
46  TYPE(time), INTENT(IN) :: now
47  REAL(sp), PARAMETER :: Tfreeze = -1.75_sp
48  REAL(SP), DIMENSION(0:MT) :: ICING_WNDSPD
49 
50  IF(dbg_set(dbg_log)) write(ipt,*) "Start Icing Update"
51 
52  ! GET THE FORCING DATA
54 
55  icing_wndspd = sqrt(icing_wndy**2 + icing_wndx**2)
56  icing_wndspd(0) = 0.0_sp
57 
58 
59  IF(dbg_set(dbg_io))THEN
60  WRITE(ipt,*) "min/max(SAT)",minval(icing_satmp(1:mt)),maxval(icing_satmp(1:mt))
61  WRITE(ipt,*) "min/max(WNDSPD)",minval(icing_wndspd(1:mt)),maxval(icing_wndspd(1:mt))
62  WRITE(ipt,*) "min/max(T1(:,1))",minval(t1(1:mt,1)),maxval(t1(1:mt,1))
63  END IF
64 
65  icing_0kts = (tfreeze - icing_satmp) /&
66  (1.0_sp + 0.4_sp *(t1(:,1) -tfreeze))
67 
68  WHERE (icing_0kts < 0.0_sp) icing_0kts = 0.0_sp
69 
70  icing_10kts = (icing_wndspd + 5.0_sp) * icing_0kts
71 
72  icing_0kts = icing_0kts * icing_wndspd
73 
74 
75 END SUBROUTINE icing
logical function dbg_set(vrb)
Definition: mod_utils.f90:182
real(sp), dimension(:,:), allocatable, target t1
Definition: mod_main.f90:1307
real(sp), dimension(:), allocatable, target icing_0kts
Definition: mod_main.f90:1208
subroutine, public update_icing(NOW, SAT, WSPDX, WSPDY)
Definition: mod_force.f90:7252
real(sp), dimension(:), allocatable, target icing_wndy
Definition: mod_main.f90:1206
subroutine icing(NOW)
Definition: icing.f90:41
real(sp), dimension(:), allocatable, target icing_10kts
Definition: mod_main.f90:1209
real(sp), dimension(:), allocatable, target icing_satmp
Definition: mod_main.f90:1207
integer, parameter dbg_io
Definition: mod_utils.f90:66
integer, parameter dbg_log
Definition: mod_utils.f90:65
real(sp), dimension(:), allocatable, target icing_wndx
Definition: mod_main.f90:1205