Changeset 4685
- Timestamp:
- Sep 18, 2020 11:49:50 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/check_parameters.f90
r4633 r4685 24 24 ! ----------------- 25 25 ! $Id$ 26 ! filter data_output_pr and data_output list for duplicate entries 27 ! 28 ! 4633 2020-08-05 14:21:14Z suehring 26 29 ! todo added 27 ! 30 ! 28 31 ! 4565 2020-06-15 08:30:38Z oliver.maas 29 32 ! added check for pt_surface_heating_rate 30 ! 33 ! 31 34 ! 4564 2020-06-12 14:03:36Z raasch 32 35 ! Vertical nesting method of Huq et al. (2019) removed 33 ! 36 ! 34 37 ! 4562 2020-06-12 08:38:47Z raasch 35 38 ! bugfix: revised error message for exceeding allow number of time series 36 ! 39 ! 37 40 ! 4559 2020-06-11 08:51:48Z raasch 38 41 ! file re-formatted to follow the PALM coding standard … … 214 217 CHARACTER (LEN=40) :: coupling_string !< string containing type of coupling 215 218 CHARACTER (LEN=100) :: action !< flag string 219 220 CHARACTER (LEN=varnamelength), DIMENSION(:), ALLOCATABLE :: data_output_filtered !< filtered list of output variables 216 221 217 222 INTEGER(iwp) :: i !< loop index … … 1635 1640 1636 1641 ! 1642 !-- Check data-output variable list for any duplicates and remove them 1643 ALLOCATE( data_output_filtered(1:UBOUND( data_output_pr, DIM=1 )) ) 1644 CALL filter_duplicate_strings( varnamelength, data_output_pr, data_output_filtered ) 1645 data_output_pr = data_output_filtered 1646 DEALLOCATE( data_output_filtered ) 1647 ! 1637 1648 !-- Determine the number of output profiles and check whether they are permissible 1638 1649 DO WHILE ( data_output_pr(dopr_n+1) /= ' ' ) … … 2241 2252 ENDDO 2242 2253 ENDIF 2243 2254 ! 2255 !-- Check data-output variable list for any duplicates and remove them 2256 ALLOCATE( data_output_filtered(1:UBOUND( data_output, DIM=1 )) ) 2257 CALL filter_duplicate_strings( varnamelength, data_output, data_output_filtered ) 2258 data_output = data_output_filtered 2259 DEALLOCATE( data_output_filtered ) 2244 2260 ! 2245 2261 !-- Check and set steering parameters for 2d/3d data output and averaging … … 3212 3228 3213 3229 3230 !--------------------------------------------------------------------------------------------------! 3231 ! Description: 3232 ! ------------ 3233 !> Filter a list of strings for duplicates. The output list is of same length but does not contain 3234 !> any duplicates. 3235 !--------------------------------------------------------------------------------------------------! 3236 3237 SUBROUTINE filter_duplicate_strings( string_length, string_list, string_list_filtered ) 3238 3239 IMPLICIT NONE 3240 3241 INTEGER, INTENT(IN) :: string_length !< length of a single string in list 3242 3243 CHARACTER (LEN=*), DIMENSION(:), INTENT(IN) :: string_list !< non-filtered list 3244 CHARACTER (LEN=string_length), DIMENSION(:), INTENT(OUT), ALLOCATABLE :: string_list_filtered !< filtered list 3245 3246 CHARACTER (LEN=string_length) :: string_to_check !< string to be check for duplicates 3247 3248 INTEGER(iwp) :: i !< loop index 3249 INTEGER(iwp) :: j !< loop index 3250 INTEGER(iwp) :: k !< loop index 3251 INTEGER(iwp) :: nstrings !< number of strings in list 3252 3253 LOGICAL :: is_duplicate !< true if string has duplicates in list 3254 3255 3256 nstrings = UBOUND( string_list, DIM=1 ) 3257 ALLOCATE( string_list_filtered(1:nstrings) ) 3258 string_list_filtered(:) = ' ' 3259 3260 k = 0 3261 DO i = 1, nstrings 3262 string_to_check = string_list(i) 3263 3264 IF ( string_to_check == ' ' ) EXIT 3265 3266 is_duplicate = .FALSE. 3267 DO j = 1, nstrings 3268 IF ( string_list_filtered(j) == ' ' ) THEN 3269 EXIT 3270 ELSEIF ( string_to_check == string_list_filtered(j) ) THEN 3271 is_duplicate = .TRUE. 3272 EXIT 3273 ENDIF 3274 ENDDO 3275 3276 IF ( .NOT. is_duplicate ) THEN 3277 k = k + 1 3278 string_list_filtered(k) = string_to_check 3279 ENDIF 3280 3281 ENDDO 3282 3283 END SUBROUTINE filter_duplicate_strings 3284 3285 3214 3286 END SUBROUTINE check_parameters
Note: See TracChangeset
for help on using the changeset viewer.