source: codes/icosagcm/devel/src/unstructured/transport_unstructured.F90 @ 686

Last change on this file since 686 was 686, checked in by dubos, 6 years ago

devel/unstructured : piecewise-constant vertical remapping

File size: 1.8 KB
Line 
1MODULE transport_unstructured_mod
2  USE ISO_C_BINDING
3  USE OMP_LIB
4  USE data_unstructured_mod
5  IMPLICIT NONE
6  PRIVATE
7  SAVE
8
9#define BINDC_(thename) BIND(C, name=#thename)
10#define BINDC(thename) BINDC_(dynamico_ ## thename)
11
12#define DBL REAL(C_DOUBLE)
13#define DOUBLE1(m) DBL, DIMENSION(m)
14#define DOUBLE2(m,n) DBL, DIMENSION(m,n)
15#define DOUBLE3(m,n,p) DBL, DIMENSION(m,n,p)
16#define DOUBLE4(m,n,p,q) DBL, DIMENSION(m,n,p,q)
17#define INDEX INTEGER(C_INT)
18
19CONTAINS
20
21#define FIELD_PS      DOUBLE1(primal_num)
22#define FIELD_MASS    DOUBLE2(llm, primal_num)
23#define FIELD_Z       DOUBLE2(llm, dual_num)
24#define FIELD_U       DOUBLE2(llm, edge_num)
25#define FIELD_UL      DOUBLE2(llm+1, edge_num)
26#define FIELD_THETA   DOUBLE3(llm, primal_num, nqdyn)
27#define FIELD_GEOPOT  DOUBLE2(llm+1, primal_num)
28
29#define HASNAN(field) (ANY(.NOT.ABS(field)<1e20))
30
31  SUBROUTINE remap_unstructured(rhodz, thetarhodz, u) BINDC(remap)
32    FIELD_MASS   :: rhodz, thetarhodz    ! INOUT
33    FIELD_U      :: u                    ! INOUT
34    ! DIAG
35    FIELD_PS     :: new_rhodz_cum, mass_col
36    FIELD_MASS   :: old_rhodz
37    FIELD_GEOPOT :: eta, rhodz_cum, thetarhodz_cum, new_thetarhodz_cum
38    FIELD_U      :: urhodz
39    FIELD_UL     :: urhodz_cum,  new_urhodz_cum
40    INTEGER, DIMENSION(primal_num) :: cur_lev
41
42    DBL          :: rhodz_cum_target, rhodz_cum_lev, rhodz_cum_levp1, X, time1,time2
43    INTEGER :: ij, l, level, edge, ij_left, ij_right
44   
45    time1=OMP_GET_WTIME()
46   
47#include "../kernels_unst/remap_eta.k90"
48#include "../kernels_unst/remap_theta.k90"
49#include "../kernels_unst/remap_u.k90"
50   
51    time2=OMP_GET_WTIME()
52    !  CALL CPU_TIME(time2)
53    IF(time2>time1) elapsed = elapsed + time2-time1
54
55    CALL print_trace()
56  END SUBROUTINE remap_unstructured
57
58END MODULE transport_unstructured_mod
Note: See TracBrowser for help on using the repository browser.