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 branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90 @ 8342

Last change on this file since 8342 was 8342, checked in by clem, 5 years ago

simplify the code

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