1 | !-------------------------------------------------------------------------- |
---|
2 | !---------------------------- caldyn_vert_NH ---------------------------------- |
---|
3 | IF (ll_begin==1) THEN |
---|
4 | !DIR$ SIMD |
---|
5 | DO ij=ij_begin_ext, ij_end_ext |
---|
6 | w_ij = ( W(ij,1)+.5*W(ij,1 +1) )/mass(ij,1) |
---|
7 | wflux_ij = .5*(wflux(ij,1)+wflux(ij,1 +1)) |
---|
8 | W_etadot(ij,1) = wflux_ij*w_ij |
---|
9 | eta_dot(ij,1) = wflux_ij / mass(ij,1) |
---|
10 | wcov(ij,1) = w_ij*(geopot(ij,1 +1)-geopot(ij,1)) |
---|
11 | END DO |
---|
12 | END IF |
---|
13 | DO l = ll_beginp1, ll_endm1 |
---|
14 | !DIR$ SIMD |
---|
15 | DO ij=ij_begin_ext, ij_end_ext |
---|
16 | w_ij = .5*( W(ij,l)+W(ij,l+1) )/mass(ij,l) |
---|
17 | wflux_ij = .5*(wflux(ij,l)+wflux(ij,l+1)) |
---|
18 | W_etadot(ij,l) = wflux_ij*w_ij |
---|
19 | eta_dot(ij,l) = wflux_ij / mass(ij,l) |
---|
20 | wcov(ij,l) = w_ij*(geopot(ij,l+1)-geopot(ij,l)) |
---|
21 | END DO |
---|
22 | END DO |
---|
23 | IF(ll_end==llm) THEN |
---|
24 | !DIR$ SIMD |
---|
25 | DO ij=ij_begin_ext, ij_end_ext |
---|
26 | w_ij = ( .5*W(ij,llm)+W(ij,llm+1) )/mass(ij,llm) |
---|
27 | wflux_ij = .5*(wflux(ij,llm)+wflux(ij,llm+1)) |
---|
28 | W_etadot(ij,llm) = wflux_ij*w_ij |
---|
29 | eta_dot(ij,llm) = wflux_ij / mass(ij,llm) |
---|
30 | wcov(ij,llm) = w_ij*(geopot(ij,llm+1)-geopot(ij,llm)) |
---|
31 | END DO |
---|
32 | END IF |
---|
33 | ! add NH term to du |
---|
34 | DO l = ll_begin, ll_end |
---|
35 | !DIR$ SIMD |
---|
36 | DO ij=ij_begin, ij_end |
---|
37 | du(ij+u_right,l) = du(ij+u_right,l) - .5*(wcov(ij,l)+wcov(ij+t_right,l))*ne_right*(eta_dot(ij+t_right,l)-eta_dot(ij,l)) |
---|
38 | du(ij+u_lup,l) = du(ij+u_lup,l) - .5*(wcov(ij,l)+wcov(ij+t_lup,l))*ne_lup*(eta_dot(ij+t_lup,l)-eta_dot(ij,l)) |
---|
39 | du(ij+u_ldown,l) = du(ij+u_ldown,l) - .5*(wcov(ij,l)+wcov(ij+t_ldown,l))*ne_ldown*(eta_dot(ij+t_ldown,l)-eta_dot(ij,l)) |
---|
40 | END DO |
---|
41 | END DO |
---|
42 | ! add NH terms to dW, dPhi |
---|
43 | ! FIXME : TODO top and bottom |
---|
44 | DO l = ll_beginp1, ll_end |
---|
45 | !DIR$ SIMD |
---|
46 | DO ij=ij_begin, ij_end |
---|
47 | dPhi(ij,l)=dPhi(ij,l)-wflux(ij,l)*(geopot(ij,l+1)-geopot(ij,l-1))/(mass(ij,l-1)+mass(ij,l)) |
---|
48 | END DO |
---|
49 | END DO |
---|
50 | ! We need a barrier here because previously computed W_etadot is needed at 'CELL' and 'DOWN(CELL)' |
---|
51 | !$OMP BARRIER |
---|
52 | IF (ll_begin==1) THEN |
---|
53 | !DIR$ SIMD |
---|
54 | DO ij=ij_begin, ij_end |
---|
55 | dW(ij,1) = dW(ij,1) - W_etadot(ij,1) |
---|
56 | END DO |
---|
57 | END IF |
---|
58 | DO l = ll_beginp1, ll_end |
---|
59 | !DIR$ SIMD |
---|
60 | DO ij=ij_begin, ij_end |
---|
61 | dW(ij,l) = dW(ij,l) + W_etadot(ij,l-1) - W_etadot(ij,l) |
---|
62 | END DO |
---|
63 | END DO |
---|
64 | IF(ll_endp1==llm+1) THEN |
---|
65 | !DIR$ SIMD |
---|
66 | DO ij=ij_begin, ij_end |
---|
67 | dW(ij,llm+1) = dW(ij,llm+1) + W_etadot(ij,llm+1 -1) |
---|
68 | END DO |
---|
69 | END IF |
---|
70 | !---------------------------- caldyn_vert_NH ---------------------------------- |
---|
71 | !-------------------------------------------------------------------------- |
---|