source: branches/UKMO/r6232_tracer_advection/NEMOGCM/NEMO/LIM_SRC_2/limtab_2.F90 @ 9295

Last change on this file since 9295 was 9295, checked in by jcastill, 3 years ago

Remove svn keywords

File size: 3.4 KB
Line 
1MODULE limtab_2
2   !!======================================================================
3   !!                       ***  MODULE limtab_2   ***
4   !!   LIM : transform 1D (2D) array to a 2D (1D) table
5   !!======================================================================
6#if defined key_lim2
7   !!----------------------------------------------------------------------
8   !!   tab_2d_1d  : 2-D <==> 1-D
9   !!   tab_1d_2d  : 1-D <==> 2-D
10   !!----------------------------------------------------------------------
11   USE par_kind
12
13   IMPLICIT NONE
14   PRIVATE
15
16   PUBLIC   tab_2d_1d_2   ! called by limthd
17   PUBLIC   tab_1d_2d_2   ! called by limthd
18
19   !!----------------------------------------------------------------------
20   !! NEMO/LIM2 4.0 , UCL - NEMO Consortium (2010)
21   !! $Id$
22   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
23   !!----------------------------------------------------------------------
24CONTAINS
25
26   SUBROUTINE tab_2d_1d_2 ( ndim1d, tab1d, tab2d, ndim2d_x, ndim2d_y, tab_ind )
27      !!----------------------------------------------------------------------
28      !!                  ***  ROUTINE tab_2d_1d  ***
29      !!----------------------------------------------------------------------
30      INTEGER                               , INTENT(in   ) ::   ndim1d, ndim2d_x, ndim2d_y   ! 1D & 2D sizes
31      REAL(wp), DIMENSION(ndim2d_x,ndim2d_y), INTENT(in   ) ::   tab2d                        ! input 2D field
32      INTEGER , DIMENSION(ndim1d)           , INTENT(in   ) ::   tab_ind                      ! input index
33      REAL(wp), DIMENSION(ndim1d)           , INTENT(  out) ::   tab1d                        ! output 1D field
34      !
35      INTEGER ::   jn , jid, jjd
36      !!----------------------------------------------------------------------
37      DO jn = 1, ndim1d
38         jid        = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 1
39         jjd        =    ( tab_ind(jn) - 1 ) / ndim2d_x + 1
40         tab1d( jn) = tab2d( jid, jjd)
41      END DO
42   END SUBROUTINE tab_2d_1d_2
43
44
45   SUBROUTINE tab_1d_2d_2 ( ndim1d, tab2d, tab_ind, tab1d, ndim2d_x, ndim2d_y )
46      !!----------------------------------------------------------------------
47      !!                  ***  ROUTINE tab_2d_1d  ***
48      !!----------------------------------------------------------------------
49      INTEGER                               , INTENT(in   ) ::   ndim1d, ndim2d_x, ndim2d_y   ! 1d & 2D sizes
50      REAL(wp), DIMENSION(ndim1d)           , INTENT(in   ) ::   tab1d                        ! input 1D field
51      INTEGER , DIMENSION(ndim1d)           , INTENT(in   ) ::   tab_ind                      ! input index
52      REAL(wp), DIMENSION(ndim2d_x,ndim2d_y), INTENT(  out) ::   tab2d                        ! output 2D field
53      !
54      INTEGER ::   jn , jid, jjd
55      !!----------------------------------------------------------------------
56      DO jn = 1, ndim1d
57         jid             = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 1
58         jjd             =    ( tab_ind(jn) - 1 ) / ndim2d_x  + 1
59         tab2d(jid, jjd) = tab1d( jn)
60      END DO
61   END SUBROUTINE tab_1d_2d_2
62
63#else
64   !!----------------------------------------------------------------------
65   !!   Default option        Dummy module             NO LIM sea-ice model
66   !!----------------------------------------------------------------------
67#endif
68   !!======================================================================
69END MODULE limtab_2
Note: See TracBrowser for help on using the repository browser.