- Timestamp:
- 2010-04-30T17:49:04+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/LIM_SRC_3/limtab.F90
r1156 r1855 2 2 !!====================================================================== 3 3 !! *** MODULE limtab *** 4 !! transform 1D (2D) array to a 2D (1D) table4 !! LIM-3 ice model : transform 1D (2D) array to a 2D (1D) array 5 5 !!====================================================================== 6 6 #if defined key_lim3 7 7 !!---------------------------------------------------------------------- 8 !! 'key_lim3' LIM3sea-ice model8 !! 'key_lim3' : LIM 2.0 sea-ice model 9 9 !!---------------------------------------------------------------------- 10 10 !! tab_2d_1d : 2-D to 1-D 11 11 !! tab_1d_2d : 1-D to 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 lim_thd 19 PUBLIC tab_1d_2d ! called by lim_thd 22 20 23 21 !!---------------------------------------------------------------------- 24 !! LIM 3.0, UCL-ASTR-LOCEAN-IPSL (2008)22 !! NEMO/LIM 3.3, UCL-LOCEAN-IPSL (2010) 25 23 !! $Id$ 26 24 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 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 47 DO jn = 1, ndim1d 48 jid = MOD( tab_ind(jn) - 1, ndim2d_x ) + 1 49 jjd = ( tab_ind(jn) - 1 ) / ndim2d_x + 1 50 tab1d( jn) = tab2d( jid, jjd) 51 END DO 52 28 SUBROUTINE tab_2d_1d( kdim1d, ptab1d, ptab2d, kdim2d_i, kdim2d_j, ptab_ind ) 29 !!------------------------------------------------------------------- 30 INTEGER , INTENT(in ) :: kdim1d 31 INTEGER , INTENT(in ) :: kdim2d_i, kdim2d_j 32 REAL(wp), INTENT(in ), DIMENSION(kdim2d_i, kdim2d_j) :: ptab2d 33 INTEGER , INTENT(in ), DIMENSION(kdim1d) :: ptab_ind 34 REAL(wp), INTENT( out), DIMENSION(kdim1d) :: ptab1d 35 !! 36 INTEGER :: jn , jid, jjd ! dummy loop indices 37 !!------------------------------------------------------------------- 38 ! 39 DO jn = 1, kdim1d 40 jid = MOD( ptab_ind(jn) - 1, kdim2d_i ) + 1 41 jjd = ( ptab_ind(jn) - 1 ) / kdim2d_i + 1 42 ptab1d(jn) = ptab2d(jid,jjd) 43 END DO 44 ! 53 45 END SUBROUTINE tab_2d_1d 54 46 55 47 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 73 DO jn = 1, ndim1d 74 jid = MOD( tab_ind(jn) - 1, ndim2d_x) + 1 75 jjd = ( tab_ind(jn) - 1 ) / ndim2d_x + 1 76 tab2d(jid, jjd) = tab1d( jn) 48 SUBROUTINE tab_1d_2d( kdim1d, ptab2d, ptab_ind, ptab1d, kdim2d_i, kdim2d_j ) 49 !!------------------------------------------------------------------- 50 INTEGER , INTENT(in ) :: kdim1d 51 INTEGER , INTENT(in ) :: kdim2d_i, kdim2d_j 52 INTEGER , INTENT(in ), DIMENSION(kdim1d) :: ptab_ind 53 REAL(wp), INTENT(in ), DIMENSION(kdim1d) :: ptab1d 54 REAL(wp), INTENT( out), DIMENSION(kdim2d_i, kdim2d_j) :: ptab2d 55 !! 56 INTEGER :: jn, jid, jjd ! dummy loop indices 57 !!------------------------------------------------------------------- 58 ! 59 DO jn = 1, kdim1d 60 jid = MOD( ptab_ind(jn) - 1, kdim2d_i) + 1 61 jjd = ( ptab_ind(jn) - 1 ) / kdim2d_i + 1 62 ptab2d(jid,jjd) = ptab1d(jn) 77 63 END DO 78 64 ! 79 65 END SUBROUTINE tab_1d_2d 80 66 67 #else 68 !!---------------------------------------------------------------------- 69 !! Default option Dummy module NO LIM 2.0 sea-ice model 70 !!---------------------------------------------------------------------- 81 71 #endif 72 73 !!====================================================================== 82 74 END MODULE limtab
Note: See TracChangeset
for help on using the changeset viewer.