source: codes/icosagcm/devel/src/kernels_unst/caldyn_fast.k90 @ 792

Last change on this file since 792 was 658, checked in by dubos, 7 years ago

devel/unstructured : updated kernels

File size: 1.7 KB
Line 
1   !--------------------------------------------------------------------------
2   !---------------------------- caldyn_fast ----------------------------------
3   !
4   SELECT CASE(caldyn_thermo)
5   CASE(thermo_boussinesq)
6      !$OMP DO SCHEDULE(STATIC)
7      DO ij = 1, primal_num
8         !DIR$ SIMD
9         DO l = 1, llm
10            berni(l,ij) = pk(l,ij)
11            ! from now on pk contains the vertically-averaged geopotential
12            pk(l,ij) = .5*(geopot(l,ij)+geopot(l+1,ij))
13         END DO
14      END DO
15      !$OMP END DO
16   CASE(thermo_theta)
17      !$OMP DO SCHEDULE(STATIC)
18      DO ij = 1, primal_num
19         !DIR$ SIMD
20         DO l = 1, llm
21            berni(l,ij) = .5*(geopot(l,ij)+geopot(l+1,ij))
22         END DO
23      END DO
24      !$OMP END DO
25   CASE(thermo_entropy)
26      !$OMP DO SCHEDULE(STATIC)
27      DO ij = 1, primal_num
28         !DIR$ SIMD
29         DO l = 1, llm
30            berni(l,ij) = .5*(geopot(l,ij)+geopot(l+1,ij))
31            berni(l,ij) = berni(l,ij) + pk(l,ij)*(cpp-theta(l,ij,1)) ! Gibbs = Cp.T-Ts = T(Cp-s)
32         END DO
33      END DO
34      !$OMP END DO
35   CASE DEFAULT
36      PRINT *, 'Unsupported value of caldyn_thermo : ',caldyn_thermo ! FIXME
37      STOP
38   END SELECT
39   !
40   !$OMP DO SCHEDULE(STATIC)
41   DO edge = 1, edge_num
42      ij_left = left(edge)
43      ij_right = right(edge)
44      !DIR$ SIMD
45      DO l = 1, llm
46         due = .5*(theta(l,ij_left,1)+theta(l,ij_right,1))*(pk(l,ij_right)-pk(l,ij_left)) + berni(l,ij_right)-berni(l,ij_left)
47         du(l,edge) = du(l,edge) - 1.*due
48         u(l,edge) = u(l,edge) + tau*du(l,edge)
49      END DO
50   END DO
51   !$OMP END DO
52   !
53   !---------------------------- caldyn_fast ----------------------------------
54   !--------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.