Changeset 2715 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90
r2528 r2715 2 2 !!====================================================================== 3 3 !! *** MODULE limtab *** 4 !! 4 !! LIM : transform 1D (2D) array to a 2D (1D) table 5 5 !!====================================================================== 6 6 #if defined key_lim3 … … 8 8 !! 'key_lim3' LIM3 sea-ice model 9 9 !!---------------------------------------------------------------------- 10 !! tab_2d_1d : 2-D to1-D11 !! tab_1d_2d : 1-D to2-D10 !! tab_2d_1d : 2-D <==> 1-D 11 !! tab_1d_2d : 1-D <==> 2-D 12 12 !!---------------------------------------------------------------------- 13 !! * Modules used14 13 USE par_kind 15 14 … … 17 16 PRIVATE 18 17 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 22 20 23 21 !!---------------------------------------------------------------------- 24 !! NEMO/LIM3 3.3, UCL - NEMO Consortium (2010)22 !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 25 23 !! $Id$ 26 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)24 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 27 25 !!---------------------------------------------------------------------- 28 26 CONTAINS 29 27 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 !!---------------------------------------------------------------------- 47 39 DO jn = 1, ndim1d 48 jid = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 149 jjd = ( tab_ind(jn) - 1 ) / ndim2d_x + 140 jid = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 1 41 jjd = ( tab_ind(jn) - 1 ) / ndim2d_x + 1 50 42 tab1d( jn) = tab2d( jid, jjd) 51 43 END DO 52 53 44 END SUBROUTINE tab_2d_1d 54 45 55 46 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 !!---------------------------------------------------------------------- 73 58 DO jn = 1, ndim1d 74 jid = MOD( tab_ind(jn) - 1 , ndim2d_x) + 159 jid = MOD( tab_ind(jn) - 1 , ndim2d_x ) + 1 75 60 jjd = ( tab_ind(jn) - 1 ) / ndim2d_x + 1 76 61 tab2d(jid, jjd) = tab1d( jn) 77 62 END DO 78 79 63 END SUBROUTINE tab_1d_2d 80 64 65 #else 66 !!---------------------------------------------------------------------- 67 !! Default option Dummy module NO LIM sea-ice model 68 !!---------------------------------------------------------------------- 81 69 #endif 70 !!====================================================================== 82 71 END MODULE limtab
Note: See TracChangeset
for help on using the changeset viewer.