-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfilters.py
59 lines (37 loc) · 1.55 KB
/
filters.py
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
#-------------------------------------------------------------------------
#
# Shallow Water Model
#
# Danilo Couto de Souza
# Universidade de São Paulo (USP)
# Instituto de Astronomia, Geociências e Ciências Atmosféricas
#-------------------------------------------------------------------------
def difusion_x(var_curr,var_prev,D,dx,dt):
F = D*dt/(dx**2)
var_curr[:,1:-1] = var_curr[:,1:-1] + F * (
var_prev[:,2:] - 2*var_prev[:,1:-1] + var_prev[:,:-2])
return var_curr
def difusion_y(var_curr,var_prev,D,dy,dt):
F = D*dt/(dy**2)
var_curr[1:-1] = var_curr[1:-1] + F * (
var_prev[:-2] - 2*var_prev[1:-1] + var_prev[2:])
return var_curr
def RA_filter_x(var,gamma):
var[:,1:-1] = var[:,1:-1] + gamma * (var[:,:-2] - 2*var[:,1:-1] + var[:,2:])
return var
def RA_filter_y(var,gamma):
var[1:-1] = var[1:-1] + gamma * (var[2:] - 2*var[1:-1] + var[:-2])
return var
def RA_filter_t(var_next,var_curr,var_prev,gamma):
var_curr = var_curr + gamma * (var_prev - 2*var_curr + var_next)
return var_curr
def RAW_filter(var_next,var_curr,var_prev,gamma,alpha):
f1 = gamma*(1-alpha)/2
f2 = gamma*alpha/2
#north
var_next = var_next - f1 * (var_next - 2*var_curr + var_prev)
var_curr = var_curr + f2 * (var_next - 2*var_curr + var_prev)
return var_next,var_curr
def time_filter(var_next,var_curr,var_prev):
var_curr = (var_prev + 2*var_curr + var_next)/4
return var_curr