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.
Changeset 2715 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90 – NEMO

Ignore:
Timestamp:
2011-03-30T17:58:35+02:00 (13 years ago)
Author:
rblod
Message:

First attempt to put dynamic allocation on the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90

    r2528 r2715  
    22   !!====================================================================== 
    33   !!                       ***  MODULE limtab   *** 
    4    !!             transform 1D (2D) array to a 2D (1D) table 
     4   !!   LIM : transform 1D (2D) array to a 2D (1D) table 
    55   !!====================================================================== 
    66#if defined key_lim3 
     
    88   !!   'key_lim3'                                      LIM3 sea-ice model 
    99   !!---------------------------------------------------------------------- 
    10    !!   tab_2d_1d  : 2-D to 1-D 
    11    !!   tab_1d_2d  : 1-D to 2-D 
     10   !!   tab_2d_1d  : 2-D <==> 1-D 
     11   !!   tab_1d_2d  : 1-D <==> 2-D 
    1212   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1413   USE par_kind 
    1514 
     
    1716   PRIVATE 
    1817 
    19    !! * Routine accessibility 
    20    PUBLIC tab_2d_1d  ! called by lim_ther 
    21    PUBLIC tab_1d_2d  ! called by lim_ther 
     18   PUBLIC   tab_2d_1d   ! called by limthd 
     19   PUBLIC   tab_1d_2d   ! called by limthd 
    2220 
    2321   !!---------------------------------------------------------------------- 
    24    !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010) 
     22   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
    2523   !! $Id$ 
    26    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     24   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    2725   !!---------------------------------------------------------------------- 
    2826CONTAINS 
    2927 
    30    SUBROUTINE tab_2d_1d ( ndim1d, tab1d, tab2d, ndim2d_x, ndim2d_y, tab_ind ) 
    31  
    32       INTEGER, INTENT(in) :: & 
    33          ndim1d, ndim2d_x, ndim2d_y 
    34  
    35       REAL(wp), DIMENSION (ndim2d_x, ndim2d_y), INTENT(in) ::  & 
    36          tab2d 
    37  
    38       INTEGER, DIMENSION ( ndim1d), INTENT ( in) :: & 
    39          tab_ind 
    40  
    41       REAL(wp), DIMENSION(ndim1d), INTENT ( out) ::  &  
    42          tab1d 
    43  
    44       INTEGER ::  & 
    45          jn , jid, jjd 
    46  
     28   SUBROUTINE tab_2d_1d( ndim1d, tab1d, tab2d, ndim2d_x, ndim2d_y, tab_ind ) 
     29      !!---------------------------------------------------------------------- 
     30      !!                  ***  ROUTINE tab_2d_1d  *** 
     31      !!---------------------------------------------------------------------- 
     32      INTEGER                               , INTENT(in   ) ::   ndim1d, ndim2d_x, ndim2d_y   ! 1d & 2D sizes 
     33      REAL(wp), DIMENSION(ndim2d_x,ndim2d_y), INTENT(in   ) ::   tab2d                        ! input 2D field 
     34      INTEGER , DIMENSION(ndim1d)           , INTENT(in   ) ::   tab_ind                      ! input index 
     35      REAL(wp), DIMENSION(ndim1d)           , INTENT(  out) ::   tab1d                        ! output 1D field 
     36      ! 
     37      INTEGER ::   jn , jid, jjd 
     38      !!---------------------------------------------------------------------- 
    4739      DO jn = 1, ndim1d 
    48          jid        = MOD( tab_ind(jn) - 1, ndim2d_x ) + 1 
    49          jjd        = ( tab_ind(jn) - 1 ) / ndim2d_x + 1 
     40         jid        = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 1 
     41         jjd        =    ( tab_ind(jn) - 1 ) / ndim2d_x + 1 
    5042         tab1d( jn) = tab2d( jid, jjd) 
    5143      END DO 
    52  
    5344   END SUBROUTINE tab_2d_1d 
    5445 
    5546 
    56    SUBROUTINE tab_1d_2d ( ndim1d, tab2d, tab_ind, tab1d, ndim2d_x, ndim2d_y ) 
    57  
    58       INTEGER, INTENT ( in) :: & 
    59          ndim1d, ndim2d_x, ndim2d_y 
    60  
    61       INTEGER, DIMENSION (ndim1d) , INTENT (in) :: & 
    62          tab_ind 
    63  
    64       REAL(wp), DIMENSION(ndim1d), INTENT (in) ::  & 
    65          tab1d   
    66  
    67       REAL(wp), DIMENSION (ndim2d_x, ndim2d_y), INTENT ( out) :: & 
    68          tab2d 
    69  
    70       INTEGER :: & 
    71          jn, jid, jjd 
    72  
     47   SUBROUTINE tab_1d_2d( ndim1d, tab2d, tab_ind, tab1d, ndim2d_x, ndim2d_y ) 
     48      !!---------------------------------------------------------------------- 
     49      !!                  ***  ROUTINE tab_2d_1d  *** 
     50      !!---------------------------------------------------------------------- 
     51      INTEGER                               , INTENT(in   ) ::   ndim1d, ndim2d_x, ndim2d_y   ! 1d & 2D sizes 
     52      REAL(wp), DIMENSION(ndim1d)           , INTENT(in   ) ::   tab1d                        ! input 1D field 
     53      INTEGER , DIMENSION(ndim1d)           , INTENT(in   ) ::   tab_ind                      ! input index 
     54      REAL(wp), DIMENSION(ndim2d_x,ndim2d_y), INTENT(  out) ::   tab2d                        ! output 2D field 
     55      ! 
     56      INTEGER ::   jn , jid, jjd 
     57      !!---------------------------------------------------------------------- 
    7358      DO jn = 1, ndim1d 
    74          jid             = MOD( tab_ind(jn) - 1, ndim2d_x) + 1 
     59         jid             = MOD( tab_ind(jn) - 1 ,  ndim2d_x ) + 1 
    7560         jjd             =    ( tab_ind(jn) - 1 ) / ndim2d_x  + 1 
    7661         tab2d(jid, jjd) = tab1d( jn) 
    7762      END DO 
    78  
    7963   END SUBROUTINE tab_1d_2d 
    8064 
     65#else 
     66   !!---------------------------------------------------------------------- 
     67   !!   Default option        Dummy module             NO LIM sea-ice model 
     68   !!---------------------------------------------------------------------- 
    8169#endif 
     70   !!====================================================================== 
    8271END MODULE limtab 
Note: See TracChangeset for help on using the changeset viewer.