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 6440 for branches/UKMO/dev_r5518_GC3p0_package/NEMOGCM/TOOLS/SIREN/src/multi.f90 – NEMO

Ignore:
Timestamp:
2016-04-07T16:32:24+02:00 (8 years ago)
Author:
dancopsey
Message:

Merged in nemo_v3_6_STABLE_copy up to revision 6436.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GC3p0_package/NEMOGCM/TOOLS/SIREN/src/multi.f90

    r5037 r6440  
    6161!> @date October, 2014 
    6262!> - use mpp file structure instead of file 
    63 !> @date November, 2014 - Fix memory leaks bug 
     63!> @date November, 2014  
     64!> - Fix memory leaks bug 
    6465! 
    6566!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    118119   !>    
    119120   !> @author J.Paul 
    120    !> - November, 2013- Initial Version 
     121   !> @date November, 2013 - Initial Version 
    121122   !> @date November, 2014 
    122123   !>    - use function instead of overload assignment operator (to avoid memory leak) 
     
    169170   !> 
    170171   !> @author J.Paul 
    171    !> - November, 2013- Initial Version 
     172   !> @date November, 2013 - Initial Version 
     173   !> @date July, 2015  
     174   !> - check if variable to be read is in file 
     175   !> @date January, 2016 
     176   !> - read variable dimensions 
    172177   !> 
    173178   !> @param[in] cd_varfile   variable location information (from namelist)  
     
    184189 
    185190      ! local variable 
    186       CHARACTER(LEN=lc) :: cl_name 
    187       CHARACTER(LEN=lc) :: cl_lower 
    188       CHARACTER(LEN=lc) :: cl_file 
    189       CHARACTER(LEN=lc) :: cl_matrix 
    190  
    191       INTEGER(i4)       :: il_nvar 
    192  
    193       LOGICAL           :: ll_dim 
    194  
    195       TYPE(TVAR)        :: tl_var 
    196  
    197       TYPE(TMPP)        :: tl_mpp 
     191      CHARACTER(LEN=lc)                :: cl_name 
     192      CHARACTER(LEN=lc)                :: cl_lower 
     193      CHARACTER(LEN=lc)                :: cl_file 
     194      CHARACTER(LEN=lc)                :: cl_matrix 
     195 
     196      INTEGER(i4)                      :: il_nvar 
     197      INTEGER(i4)                      :: il_varid 
     198 
     199      LOGICAL                          :: ll_dim 
     200 
     201      TYPE(TDIM), DIMENSION(ip_maxdim) :: tl_dim 
     202 
     203      TYPE(TVAR)                       :: tl_var 
     204 
     205      TYPE(TMPP)                       :: tl_mpp 
    198206 
    199207      ! loop indices 
     
    212220 
    213221         IF( LEN(TRIM(cl_file)) == lc )THEN 
    214             CALL logger_fatal("MULTI INIT: file name too long (==256)."//& 
    215             &  " check namelist.") 
     222            CALL logger_fatal("MULTI INIT: file name too long (>"//& 
     223            &          TRIM(fct_str(lc))//"). check namelist.") 
    216224         ENDIF 
    217225 
     
    239247                  !  
    240248                  tl_mpp=mpp_init( file_init(TRIM(cl_file)) ) 
    241  
    242249                  ! define variable 
    243250                  IF( TRIM(fct_lower(cl_lower)) /= 'all' )THEN 
    244251 
    245                      ! clean var 
     252                     ! check if variable is in file 
     253                     il_varid=var_get_index(tl_mpp%t_proc(1)%t_var(:),cl_lower) 
     254                     IF( il_varid == 0 )THEN 
     255                        CALL logger_fatal("MULTI INIT: variable "//& 
     256                           & TRIM(cl_name)//" not in file "//& 
     257                           & TRIM(cl_file) ) 
     258                     ENDIF 
     259 
     260                     ! get (global) variable dimension 
     261                     tl_dim(jp_I)=dim_copy(tl_mpp%t_dim(jp_I)) 
     262                     tl_dim(jp_J)=dim_copy(tl_mpp%t_dim(jp_J)) 
     263                     tl_dim(jp_K)=dim_copy(tl_mpp%t_proc(1)%t_var(il_varid)%t_dim(jp_K)) 
     264                     tl_dim(jp_L)=dim_copy(tl_mpp%t_proc(1)%t_var(il_varid)%t_dim(jp_L)) 
     265 
     266                     ! clean all varible 
    246267                     CALL mpp_del_var(tl_mpp) 
    247268 
    248                      tl_var=var_init(TRIM(cl_lower)) 
     269                     tl_var=var_init(TRIM(cl_lower), td_dim=tl_dim(:)) 
    249270 
    250271                     ! add variable 
     
    260281 
    261282                     DO jk=tl_mpp%t_proc(1)%i_nvar,1,-1 
    262                          
     283 
    263284                        ! check if variable is dimension 
    264285                        ll_dim=.FALSE. 
     
    317338   ! 
    318339   !> @author J.Paul 
    319    !> - November, 2013- Initial Version 
     340   !> @date November, 2013 - Initial Version 
    320341   ! 
    321342   !> @param[in] td_multi  multi file structure 
     
    348369   ! 
    349370   !> @author J.Paul 
    350    !> - November, 2013- Initial Version 
     371   !> @date November, 2013 - Initial Version 
    351372   ! 
    352373   !> @param[in] td_multi multi file structure 
     
    367388      ! print file 
    368389      IF( td_multi%i_nmpp /= 0 .AND. ASSOCIATED(td_multi%t_mpp) )THEN 
    369          WRITE(*,'(/a,i3)') 'MULTI: total number of mpp: ',& 
     390         WRITE(*,'(/a,i3)') 'MULTI: total number of file(s): ',& 
    370391         &  td_multi%i_nmpp 
    371          WRITE(*,'(6x,a,i3)') ' total number of variable: ',& 
     392         WRITE(*,'(6x,a,i3)') ' total number of variable(s): ',& 
    372393         &  td_multi%i_nvar 
    373394         DO ji=1,td_multi%i_nmpp 
    374             WRITE(*,'(3x,3a)') 'MPP FILE ',TRIM(td_multi%t_mpp(ji)%c_name),& 
     395            WRITE(*,'(3x,3a)') 'FILE ',TRIM(td_multi%t_mpp(ji)%c_name),& 
    375396            & ' CONTAINS' 
    376397            DO jj=1,td_multi%t_mpp(ji)%t_proc(1)%i_nvar 
     
    391412   ! 
    392413   !> @author J.Paul 
    393    !> - November, 2013- Initial Version 
     414   !> @date November, 2013 - Initial Version 
    394415   !> @date October, 2014 
    395416   !> - use mpp file structure instead of file 
Note: See TracChangeset for help on using the changeset viewer.