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

Last change on this file since 615 was 614, checked in by dubos, 7 years ago

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