-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathw3sis1md.ftn
187 lines (186 loc) · 5.63 KB
/
w3sis1md.ftn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include "w3macros.h"
!/ ------------------------------------------------------------------- /
MODULE W3SIS1MD
!/
!/ +-----------------------------------+
!/ | WAVEWATCH III NOAA/NCEP |
!/ | S. Zieger |
!/ | FORTRAN 90 |
!/ | Last update : 20-Dec-2013 |
!/ +-----------------------------------+
!/
!/ For updates see W3SID1 documentation.
!/
! 1. Purpose :
!
! Diffusion source term.
!
! 2. Variables and types :
!
! 3. Subroutines and functions :
!
! Name Type Scope Description
! ----------------------------------------------------------------
! W3SIS1 Subr. Public Ice scattering term.
! ----------------------------------------------------------------
!
! 4. Subroutines and functions used :
!
! See subroutine documentation.
!
! 5. Remarks :
!
! 6. Switches :
!
! See subroutine documentation.
!
! 7. Source code :
!/
!/ ------------------------------------------------------------------- /
!/
PUBLIC :: W3SIS1
!/
CONTAINS
!/ ------------------------------------------------------------------- /
SUBROUTINE W3SIS1 (A, ICE, S)
!/
!/ +-----------------------------------+
!/ | WAVEWATCH III NOAA/NCEP |
!/ | S. Zieger |
!/ | FORTRAN 90 |
!/ | Last update : 20-Dec-2013 |
!/ +-----------------------------------+
!/
!/ 16-Nov-2012 : Origination. ( version 4.14 )
!/ (S. Zieger)
! 1. Purpose :
! Spectral reflection due to ice.
!
!/ ------------------------------------------------------------------- /
!
! 2. Method :
!
! 3. Parameters :
!
! Parameter list
! ----------------------------------------------------------------
! A R.A. I Action density spectrum (1-D)
! ICE Real I Sea ice concentration.
! S R.A. O Source term (1-D version).
! ----------------------------------------------------------------
!
! 4. Subroutines used :
!
! Name Type Module Description
! ----------------------------------------------------------------
! ----------------------------------------------------------------
!
! 5. Called by :
!
! Name Type Module Description
! ----------------------------------------------------------------
! W3SRCE Subr. W3SRCEMD Source term integration.
! W3EXPO Subr. N/A ASCII Point output post-processor.
! W3EXNC Subr. N/A NetCDF Point output post-processor.
! GXEXPO Subr. N/A GrADS point output post-processor.
! ----------------------------------------------------------------
!
! 6. Error messages :
!
! None.
!
! 7. Remarks :
!
! If ice parameter 1 is zero, no calculations are made.
!
! 8. Structure :
!
! See source code.
!
! 9. Switches :
!
! !/S Enable subroutine tracing.
! !/T Enable general test output.
! 2-D print plot of source term.
!
! 10. Source code :
!
!/ ------------------------------------------------------------------- /
USE W3ODATMD, ONLY: NDSE
USE W3SERVMD, ONLY: EXTCDE
USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, SIG2, DDEN2
USE W3GDATMD, ONLY: DTMIN, TH, DTH, ECOS, DTMIN
USE W3GDATMD, ONLY: IS1C1, IS1C2
!/T USE W3ODATMD, ONLY: NDST
!/S USE W3SERVMD, ONLY: STRACE
!/T USE W3ARRYMD, ONLY: PRT2DS
!
IMPLICIT NONE
!/
!/ ------------------------------------------------------------------- /
!/ Parameter list
REAL, INTENT(IN) :: A(NSPEC), ICE
REAL, INTENT(OUT) :: S(NSPEC)
!/
!/ ------------------------------------------------------------------- /
!/ Local parameters
!/
!/S INTEGER, SAVE :: IENT = 0
INTEGER :: IK, ITH, ITH2, IS, IS2
REAL :: ALPHA
!/T REAL :: SOUT(NK,NTH)
!/
!/ ------------------------------------------------------------------- /
!/
!/S CALL STRACE (IENT, 'W3SIS1')
!
! 0. Initializations ------------------------------------------------ *
!
S = 0.
!/T SOUT = 0.
!
! Calculate scattering coefficient (linear transfer function) ---- *
ALPHA = MAX(0., IS1C1 * ICE + IS1C2)
!/T WRITE(NDST,8000) ALPHA
!
IF (ALPHA.GT.0. .AND. ICE.GT.0.) THEN
! 1. Calculate the derivative ---------------------------------------- *
DO IK = 1,NK
DO ITH = 1,NTH
IS = ITH+(IK-1)*NTH
IF (A(IS).GE.0.) THEN
S(IS) = S(IS) - ALPHA * A(IS)
DO ITH2 = 1,NTH
IS2 = ITH2+(IK-1)*NTH
IF (IS2.NE.IS) THEN
S(IS2) = S(IS2) + ALPHA * A(IS) / REAL(NTH-1)
END IF
END DO
END IF
END DO
END DO
!
S = S / DTMIN
!
!/T DO IK = 1, NK
!/T DO ITH = 1, NTH
!/T IS = ITH+(IK-1)*NTH
!/T SOUT(IK,ITH) = S(IS)
!/T END DO
!/T END DO
!
!/T CALL PRT2DS (NDST, NK, NK, NTH, SOUT, SIG(1:NK), ' ', 1., &
!/T 0.0, 0.001, 'Diag Sir1', ' ', 'NONAME')
!
END IF
! Formats
8000 FORMAT (' TEST W3SIS1 : ALPHA :',E10.3)
!
!/
!/ End of W3SIS1 ----------------------------------------------------- /
!/
END SUBROUTINE W3SIS1
!/
!/ End of module W3SIS1MD -------------------------------------------- /
!/
END MODULE W3SIS1MD