source: codes/icosagcm/devel/src/kernels/energetics.k90 @ 595

Last change on this file since 595 was 593, checked in by dubos, 7 years ago

devel : fields for energy fluxes (diagflux)

File size: 2.8 KB
Line 
1   !--------------------------------------------------------------------------
2   !---------------------------- energetics ----------------------------------
3   ! potential energy
4   DO l = ll_begin, ll_end
5      !DIR$ SIMD
6      DO ij=ij_begin, ij_end
7         energy = .5*(geopot(ij,l+1)+geopot(ij,l))
8         epot(ij,l) = epot(ij,l) + frac*mass(ij,l)*energy
9         ebuf(ij,l) = energy
10      END DO
11   END DO
12   DO l = ll_begin, ll_end
13      !DIR$ SIMD
14      DO ij=ij_begin, ij_end
15         epot_flux(ij+u_right,l) = epot_flux(ij+u_right,l) + .5*massflux(ij+u_right,l)*(ebuf(ij,l)+ebuf(ij+t_right,l))
16         epot_flux(ij+u_lup,l) = epot_flux(ij+u_lup,l) + .5*massflux(ij+u_lup,l)*(ebuf(ij,l)+ebuf(ij+t_lup,l))
17         epot_flux(ij+u_ldown,l) = epot_flux(ij+u_ldown,l) + .5*massflux(ij+u_ldown,l)*(ebuf(ij,l)+ebuf(ij+t_ldown,l))
18      END DO
19   END DO
20   ! enthalpy
21   DO l = ll_begin, ll_end
22      !DIR$ SIMD
23      DO ij=ij_begin, ij_end
24         energy = cpp*temp(ij,l)
25         enthalpy(ij,l) = enthalpy(ij,l) + frac*mass(ij,l)*energy
26         ebuf(ij,l) = energy
27      END DO
28   END DO
29   DO l = ll_begin, ll_end
30      !DIR$ SIMD
31      DO ij=ij_begin, ij_end
32         enthalpy_flux(ij+u_right,l) = enthalpy_flux(ij+u_right,l) + .5*massflux(ij+u_right,l)*(ebuf(ij,l)+ebuf(ij+t_right,l))
33         enthalpy_flux(ij+u_lup,l) = enthalpy_flux(ij+u_lup,l) + .5*massflux(ij+u_lup,l)*(ebuf(ij,l)+ebuf(ij+t_lup,l))
34         enthalpy_flux(ij+u_ldown,l) = enthalpy_flux(ij+u_ldown,l) + .5*massflux(ij+u_ldown,l)*(ebuf(ij,l)+ebuf(ij+t_ldown,l))
35      END DO
36   END DO
37   DO l = ll_begin, ll_end
38      !DIR$ SIMD
39      DO ij=ij_begin, ij_end
40         energy=0.d0
41         energy = energy + le(ij+u_rup)*de(ij+u_rup)*u(ij+u_rup,l)**2
42         energy = energy + le(ij+u_lup)*de(ij+u_lup)*u(ij+u_lup,l)**2
43         energy = energy + le(ij+u_left)*de(ij+u_left)*u(ij+u_left,l)**2
44         energy = energy + le(ij+u_ldown)*de(ij+u_ldown)*u(ij+u_ldown,l)**2
45         energy = energy + le(ij+u_rdown)*de(ij+u_rdown)*u(ij+u_rdown,l)**2
46         energy = energy + le(ij+u_right)*de(ij+u_right)*u(ij+u_right,l)**2
47         energy = energy * (.25/Ai(ij))
48         ekin(ij,l) = ekin(ij,l) + frac*mass(ij,l)*energy
49         ebuf(ij,l) = energy
50      END DO
51   END DO
52   DO l = ll_begin, ll_end
53      !DIR$ SIMD
54      DO ij=ij_begin, ij_end
55         ekin_flux(ij+u_right,l) = ekin_flux(ij+u_right,l) + .5*massflux(ij+u_right,l)*(ebuf(ij,l)+ebuf(ij+t_right,l))
56         ekin_flux(ij+u_lup,l) = ekin_flux(ij+u_lup,l) + .5*massflux(ij+u_lup,l)*(ebuf(ij,l)+ebuf(ij+t_lup,l))
57         ekin_flux(ij+u_ldown,l) = ekin_flux(ij+u_ldown,l) + .5*massflux(ij+u_ldown,l)*(ebuf(ij,l)+ebuf(ij+t_ldown,l))
58      END DO
59   END DO
60   !---------------------------- energetics ----------------------------------
61   !--------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.