New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
limtab.F90 in trunk/NEMO/LIM_SRC – NEMO

source: trunk/NEMO/LIM_SRC/limtab.F90 @ 3

Last change on this file since 3 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1MODULE limtab
2   !!======================================================================
3   !!                       ***  MODULE limtab   ***
4   !!              transform 1D (2D) array to a 2D (1D) table
5   !!======================================================================
6#if defined key_ice_lim
7   !!----------------------------------------------------------------------
8   !!   tab_2d_1d  : 2-D to 1-D
9   !!   tab_1d_2d  : 1-D to 2-D
10   !!----------------------------------------------------------------------
11   !! * Modules used
12   USE par_kind
13
14   IMPLICIT NONE
15   PRIVATE
16
17   !! * Routine accessibility
18   PUBLIC tab_2d_1d  ! called by lim_ther
19   PUBLIC tab_1d_2d  ! called by lim_ther
20
21   !!----------------------------------------------------------------------
22   !!   LIM 2.0 , UCL-LODYC-IPSL  (2003)
23   !!----------------------------------------------------------------------
24CONTAINS
25
26   SUBROUTINE tab_2d_1d ( ndim1d, tab1d, tab2d, ndim2d_x, ndim2d_y, tab_ind )
27
28      INTEGER, INTENT(in) :: &
29         ndim1d, ndim2d_x, ndim2d_y
30
31      REAL(wp), DIMENSION (ndim2d_x, ndim2d_y), INTENT(in) ::  &
32         tab2d
33
34      INTEGER, DIMENSION ( ndim1d), INTENT ( in) :: &
35         tab_ind
36
37      REAL(wp), DIMENSION(ndim1d), INTENT ( out) ::  & 
38         tab1d
39
40      INTEGER ::  &
41         jn , jid, jjd
42       
43      DO jn = 1, ndim1d
44         jid        = MOD( tab_ind(jn) - 1, ndim2d_x ) + 1
45         jjd        = ( tab_ind(jn) - 1 ) / ndim2d_x + 1
46         tab1d( jn) = tab2d( jid, jjd)
47      END DO
48
49   END SUBROUTINE tab_2d_1d
50
51
52   SUBROUTINE tab_1d_2d ( ndim1d, tab2d, tab_ind, tab1d, ndim2d_x, ndim2d_y )
53
54      INTEGER, INTENT ( in) :: &
55         ndim1d, ndim2d_x, ndim2d_y
56
57      INTEGER, DIMENSION (ndim1d) , INTENT (in) :: &
58         tab_ind
59
60      REAL(wp), DIMENSION(ndim1d), INTENT (in) ::  &
61         tab1d 
62
63      REAL(wp), DIMENSION (ndim2d_x, ndim2d_y), INTENT ( out) :: &
64         tab2d
65
66      INTEGER :: &
67         jn, jid, jjd
68
69      DO jn = 1, ndim1d
70         jid             = MOD( tab_ind(jn) - 1, ndim2d_x) + 1
71         jjd             =    ( tab_ind(jn) - 1 ) / ndim2d_x  + 1
72         tab2d(jid, jjd) = tab1d( jn)
73      END DO
74
75   END SUBROUTINE tab_1d_2d
76
77#endif
78END MODULE limtab
Note: See TracBrowser for help on using the repository browser.