Changeset 964 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jul 26, 2012 9:14:24 AM (12 years ago)
Author:
raasch
Message:

old profil-parameters (cross_xtext, cross_normalized_x, etc. ) and respective code removed
(check_open, check_parameters, close_file, data_output_profiles, data_output_spectra, header, modules, parin)

reformatting (netcdf)

append feature removed from unit 14 (check_open)

Location:
palm/trunk/SOURCE
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/check_open.f90

    r887 r964  
    44! Current revisions:
    55! -----------------
    6 ! Test: append feature removed from unit 14
     6! old profil-units (40:49) removed,
     7! append feature removed from unit 14
    78!
    89! Former revisions:
     
    155156    SELECT CASE ( file_id )
    156157
    157        CASE ( 15, 16, 17, 18, 19, 40:49, 50:59, 81:84, 104:105, 107, 109 )
     158       CASE ( 15, 16, 17, 18, 19, 50:59, 81:84, 104:105, 107, 109 )
    158159             
    159160          IF ( myid /= 0 )  THEN
     
    582583          ENDIF
    583584
    584        CASE ( 40:49 )
    585 
    586           IF ( statistic_regions == 0  .AND.  file_id == 40 )  THEN
    587              suffix = ''
    588           ELSE
    589              WRITE ( suffix, '(''_'',I1)' )  file_id - 40
    590           ENDIF
    591           OPEN ( file_id, FILE='PLOT1D_DATA'//TRIM( coupling_char )// &
    592                                TRIM( suffix ),                        &
    593                           FORM='FORMATTED' )
    594 !
    595 !--       Write contents comments at the top of the file
    596           WRITE ( file_id, 4000 )  TRIM( run_description_header ) // '    ' // &
    597                                    TRIM( region( file_id - 40 ) )
    598 
    599585       CASE ( 50:59 )
    600586
     
    637623                klist(1:k) = cross_ts_numbers(1:k,j)
    638624                klist(k+1:10) = 999999
    639                 cucol(1:k) = linecolors(1:k)
    640                 lstyle(1:k) = linestyles(1:k)
    641625!
    642626!--             Write CROSS parameter
  • palm/trunk/SOURCE/check_parameters.f90

    r941 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! check of old profil-parameters removed
    77!
    88! Former revisions:
     
    25182518       END SELECT
    25192519
    2520 !
    2521 !--    Check to which of the predefined coordinate systems the profile belongs
    2522        DO  k = 1, crmax
    2523           IF ( INDEX( cross_profiles(k), ' '//TRIM( data_output_pr(i) )//' ' ) &
    2524                /=0 ) &
    2525           THEN
    2526              dopr_crossindex(i) = k
    2527              EXIT
    2528           ENDIF
    2529        ENDDO
    2530 !
    2531 !--    Generate the text for the labels of the PROFIL output file. "-characters
    2532 !--    must be substituted, otherwise PROFIL would interpret them as TeX
    2533 !--    control characters
    2534        dopr_label(i) = data_output_pr(i)
    2535        position = INDEX( dopr_label(i) , '"' )
    2536        DO WHILE ( position /= 0 )
    2537           dopr_label(i)(position:position) = ''''
    2538           position = INDEX( dopr_label(i) , '"' )
    2539        ENDDO
    2540 
    25412520    ENDDO
    2542 
    2543 !
    2544 !-- y-value range of the coordinate system (PROFIL).
    2545 !-- x-value range determined in plot_1d.
    2546     IF ( .NOT. ocean )  THEN
    2547        cross_uymin = 0.0
    2548        IF ( z_max_do1d == -1.0 )  THEN
    2549           cross_uymax = zu(nzt+1)
    2550        ELSEIF ( z_max_do1d < zu(nzb+1)  .OR.  z_max_do1d > zu(nzt+1) )  THEN
    2551           WRITE( message_string, * )  'z_max_do1d = ', z_max_do1d, ' must ', &
    2552                  'be >= ', zu(nzb+1), ' or <= ', zu(nzt+1)
    2553           CALL message( 'check_parameters', 'PA0099', 1, 2, 0, 6, 0 )
    2554        ELSE
    2555           cross_uymax = z_max_do1d
    2556        ENDIF
    2557     ENDIF
    2558 
    2559 !
    2560 !-- Check whether the chosen normalizing factor for the coordinate systems is
    2561 !-- permissible
    2562     DO  i = 1, crmax
    2563        SELECT CASE ( TRIM( cross_normalized_x(i) ) )  ! TRIM required on IBM
    2564 
    2565           CASE ( '', 'wpt0', 'ws2', 'tsw2', 'ws3', 'ws2tsw', 'wstsw2' )
    2566              j = 0
    2567 
    2568           CASE DEFAULT
    2569              message_string = 'unknown normalization method cross_normali' // &
    2570                               'zed_x = "' // TRIM( cross_normalized_x(i) ) // &
    2571                               '"'
    2572              CALL message( 'check_parameters', 'PA0100', 1, 2, 0, 6, 0 )
    2573 
    2574        END SELECT
    2575        SELECT CASE ( TRIM( cross_normalized_y(i) ) )  ! TRIM required on IBM
    2576 
    2577           CASE ( '', 'z_i' )
    2578              j = 0
    2579 
    2580           CASE DEFAULT
    2581              message_string = 'unknown normalization method cross_normali' // &
    2582                               'zed_y = "' // TRIM( cross_normalized_y(i) ) // &
    2583                               '"'
    2584              CALL message( 'check_parameters', 'PA0101', 1, 2, 0, 6, 0 )
    2585 
    2586        END SELECT
    2587     ENDDO
    2588 !
    2589 !-- Check normalized y-value range of the coordinate system (PROFIL)
    2590     IF ( z_max_do1d_normalized /= -1.0  .AND.  z_max_do1d_normalized <= 0.0 ) &
    2591     THEN
    2592        WRITE( message_string, * )  'z_max_do1d_normalized = ', &
    2593                                    z_max_do1d_normalized, ' must be >= 0.0'
    2594        CALL message( 'check_parameters', 'PA0101', 1, 2, 0, 6, 0 )
    2595     ENDIF
    25962521
    25972522
     
    28642789
    28652790!
    2866 !-- Upper plot limit (grid point value) for 1D profiles
    2867     IF ( z_max_do1d == -1.0 )  THEN
    2868 
    2869        nz_do1d = nzt+1
    2870 
    2871     ELSE
    2872        DO  k = nzb+1, nzt+1
    2873           nz_do1d = k
    2874           IF ( zw(k) > z_max_do1d )  EXIT
    2875        ENDDO
    2876     ENDIF
    2877 
    2878 !
    28792791!-- Upper plot limit for 2D vertical sections
    28802792    IF ( z_max_do2d == -1.0 )  z_max_do2d = zu(nzt)
     
    29582870             CASE ( 'iso2d' )
    29592871                iso2d_output  = .TRUE.
    2960              CASE ( 'profil' )
    2961                 profil_output = .TRUE.
    29622872             CASE ( 'avs' )
    29632873                avs_output    = .TRUE.
  • palm/trunk/SOURCE/close_file.f90

    r565 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! old profil-units (40:49) and respective code removed
    77!
    88! Former revisions:
     
    6767    CHARACTER (LEN=2)   ::  suffix
    6868    CHARACTER (LEN=10)  ::  datform = 'lit_endian'
    69     CHARACTER (LEN=80)  ::  rtext, title, utext = '', xtext = '', ytext = ''
    70 
    71     INTEGER ::  av, anzzeile, cranz, cross_count, cross_numbers, dimx, dimy, &
    72                 fid, file_id, j, k, legpos = 1, planz, timodex = 1
    73     INTEGER, DIMENSION(100) ::  klist, lstyle, cucol
    74 
    75     LOGICAL ::  checkuf = .TRUE., datleg = .TRUE., dp = .FALSE., &
    76                 grid = .TRUE., rand = .TRUE., swap, twoxa = .TRUE., &
    77                 twoya = .TRUE.
    78 
    79     REAL    ::  ansx = -999.999, ansy = -999.999, gwid = 0.1, rlegfak, &
    80                 sizex, sizey, texfac, utmove = 50.0, uxmax, uxmin, uymax, &
    81                 uymin, yright
    82     REAL, DIMENSION(100) ::  lwid, normx, normy
    83 
    84     NAMELIST /CROSS/   ansx, ansy, cucol, grid, gwid, klist, legpos, lstyle, &
    85                        lwid, normx, normy, rand, rlegfak, sizex, sizey, &
    86                        texfac, timodex, twoxa, twoya, utext, utmove, uxmax, &
    87                        uxmin, uymax, uymin, xtext, ytext
    88     NAMELIST /GLOBAL/  checkuf, datform, dimx, dimy, dp, planz, sizex, sizey, &
    89                        title, yright
    90     NAMELIST /RAHMEN/  anzzeile, cranz, datleg, rtext, swap
     69    CHARACTER (LEN=80)  ::  rtext, title
     70
     71    INTEGER ::  av, anzzeile, dimx, dimy, &
     72                fid, file_id, j, k, planz
     73
     74    LOGICAL ::  checkuf = .TRUE., datleg = .TRUE., dp = .FALSE., swap
     75
     76    REAL ::  sizex, sizey, yright
     77
     78    NAMELIST /GLOBAL/  checkuf, datform, dimx, dimy, dp, planz, &
     79                       title
     80    NAMELIST /RAHMEN/  anzzeile, datleg, rtext, swap
    9181
    9282!
     
    190180                   WRITE ( 32, 3200)  ' ', TRIM( run_description_header ), &
    191181                                      nx+2, ny+2, nz_do3d+1, do3d_avs_n
    192                 ENDIF
    193 
    194              CASE ( 40:49 )
    195 !
    196 !--             Write PROFIL namelist parameters for 1D profiles.
    197 !--             First determine, how many crosses are to be drawn.
    198                 IF ( myid == 0 )  THEN
    199                    cross_numbers = 0
    200                    DO  j = 1, crmax
    201                       IF ( cross_profile_number_count(j) /= 0 )  THEN
    202                          cross_numbers = cross_numbers + 1
    203                       ENDIF
    204                    ENDDO
    205 
    206                    IF ( cross_numbers /= 0 )  THEN
    207 !
    208 !--                   Determine remaining RAHMEN parameters
    209                       swap = .FALSE.
    210                       rtext = '\0.5 ' // TRIM( run_description_header ) // &
    211                               '    ' // TRIM( region( fid - 40 ) )
    212 !
    213 !--                   Write RAHMEN parameters
    214                       IF ( statistic_regions == 0  .AND.  fid == 40 )  THEN
    215                          suffix = ''
    216                       ELSE
    217                          WRITE ( suffix, '(''_'',I1)' )  fid - 40
    218                       ENDIF
    219                       OPEN ( 90, FILE='PLOT1D_PAR' // TRIM( suffix ), &
    220                                  FORM='FORMATTED', DELIM='APOSTROPHE' )
    221 !
    222 !--                   Subtitle for crosses with time averaging
    223                       IF ( averaging_interval_pr /= 0.0 )  THEN
    224                          WRITE ( utext, 4000 )  averaging_interval_pr
    225                       ENDIF
    226 !
    227 !--                   Determine and write CROSS parameters for each individual
    228 !--                   cross
    229                       cross_count = 0
    230                       DO  j = 1, crmax
    231                          k = cross_profile_number_count(j)
    232                          IF ( k /= 0 )  THEN
    233                             cross_count = cross_count + 1
    234 !
    235 !--                         Write RAHMEN parameters
    236                             IF ( MOD( cross_count-1, &
    237                                       profile_rows*profile_columns ) == 0 ) &
    238                             THEN
    239 !
    240 !--                            Determine number of crosses still to be drawn
    241                                cranz = MIN( cross_numbers - cross_count + 1, &
    242                                             profile_rows * profile_columns )
    243 !
    244 !--                            If the first line cannot be filled with crosses
    245 !--                            completely, the default number of crosses per
    246 !--                            line has to be reduced.
    247                                IF ( cranz < profile_columns )  THEN
    248                                   anzzeile = cranz
    249                                ELSE
    250                                   anzzeile = profile_columns
    251                                ENDIF
    252 
    253                                WRITE ( 90, RAHMEN )
    254 
    255                             ENDIF
    256 !
    257 !--                         Store graph numbers
    258                             klist(1:k) = cross_profile_numbers(1:k,j)
    259                             klist(k+1:100) = 999999
    260 !
    261 !--                         Store graph attributes
    262                             cucol  = cross_linecolors(:,j)
    263                             lstyle = cross_linestyles(:,j)
    264                             lwid = 0.6
    265 !
    266 !--                         Sizes, text etc.
    267                             sizex = 100.0; sizey = 120.0
    268                             rlegfak = 0.7; texfac = 1.0
    269 !
    270 !--                         Determine range of x-axis values
    271                             IF ( cross_normalized_x(j) == ' ' )  THEN
    272 !
    273 !--                            Non-normalized profiles
    274                                IF ( cross_uxmin(j) == 0.0  .AND. &
    275                                     cross_uxmax(j) == 0.0 )  THEN
    276                                   uxmin = cross_uxmin_computed(j)
    277                                   uxmax = cross_uxmax_computed(j)
    278                                   IF ( uxmin == uxmax )  uxmax = uxmin + 1.0
    279                                ELSE
    280 !
    281 !--                               Values set in check_parameters are used here
    282                                   uxmin = cross_uxmin(j); uxmax = cross_uxmax(j)
    283                                ENDIF
    284                             ELSE
    285 !
    286 !--                            Normalized profiles
    287                                IF ( cross_uxmin_normalized(j) == 0.0  .AND. &
    288                                     cross_uxmax_normalized(j) == 0.0 )  THEN
    289                                   uxmin = cross_uxmin_normalized_computed(j)
    290                                   uxmax = cross_uxmax_normalized_computed(j)
    291                                   IF ( uxmin == uxmax )  uxmax = uxmin + 1.0
    292                                ELSE
    293 !
    294 !--                               Values set in check_parameters are used here
    295                                   uxmin = cross_uxmin_normalized(j)
    296                                   uxmax = cross_uxmax_normalized(j)
    297                                ENDIF
    298                             ENDIF
    299 !
    300 !--                         Range of y-axis values
    301 !--                         may be re-adjusted during normalization if required
    302                             uymin = cross_uymin(j); uymax = cross_uymax(j)
    303                             ytext = 'height in m'
    304 !
    305 !--                         Normalization of the axes
    306                             normx = cross_normx_factor(:,j)
    307                             normy = cross_normy_factor(:,j)
    308 !
    309 !--                         Labelling of the axes
    310                             IF ( cross_normalized_x(j) == ' ' )  THEN
    311                                xtext = cross_xtext(j)
    312                             ELSE
    313                                xtext = TRIM( cross_xtext(j) ) // ' / ' // &
    314                                        cross_normalized_x(j)
    315                             ENDIF
    316                             IF ( cross_normalized_y(j) == ' ' )  THEN
    317                                ytext = 'height in m'
    318                             ELSE
    319                                ytext = 'height in m' // ' / ' // &
    320                                        cross_normalized_y(j)
    321 !
    322 !--                            Determine upper limit of value range
    323                                IF ( z_max_do1d_normalized /= -1.0 )  THEN
    324                                   uymax = z_max_do1d_normalized
    325                                ENDIF
    326                             ENDIF
    327 
    328                             WRITE ( 90, CROSS )
    329 
    330                          ENDIF
    331                       ENDDO
    332 
    333                       CLOSE ( 90 )
    334                    ENDIF
    335                 ENDIF
    336 
    337              CASE ( 50:59 )
    338 !
    339 !--             Write PROFIL namelist parameters for time series
    340 !--             first determine number of crosses to be drawn
    341                 IF ( myid == 0 )  THEN
    342                    cranz = 0
    343                    DO  j = 1, 12
    344                       IF ( cross_ts_number_count(j) /= 0 )  cranz = cranz+1
    345                    ENDDO
    346 
    347                    IF ( cranz /= 0 )  THEN
    348 !
    349 !--                   Determine RAHMEN parameters
    350                       anzzeile = 1
    351                       swap = .TRUE.
    352                       rtext = '\1.0 ' // TRIM( run_description_header ) // &
    353                               '    ' // TRIM( region( fid - 50 ) )
    354 !
    355 !--                   Write RAHMEN parameters
    356                       IF ( statistic_regions == 0  .AND.  fid == 50 )  THEN
    357                          suffix = ''
    358                       ELSE
    359                          WRITE ( suffix, '(''_'',I1)' )  fid - 50
    360                       ENDIF
    361                       OPEN ( 90, FILE='PLOTTS_PAR' // TRIM( suffix ), &
    362                                  FORM='FORMATTED', DELIM='APOSTROPHE' )
    363                       WRITE ( 90, RAHMEN )
    364 !
    365 !--                   Determine and write CROSS parameters for each individual
    366 !--                   cross
    367                       DO  j = 1, 12
    368                          k = cross_ts_number_count(j)
    369                          IF ( k /= 0 )  THEN
    370 !
    371 !--                         Store graph numbers
    372                             klist(1:k) = cross_ts_numbers(1:k,j)
    373                             klist(k+1:100) = 999999
    374 !
    375 !--                         Store graph attributes
    376                             cucol(1:k)  = linecolors(1:k)
    377                             lstyle(1:k) = linestyles(1:k)
    378                             lwid = 0.4
    379 !
    380 !--                         Sizes, text etc.
    381                             sizex = 250.0; sizey = 40.0
    382                             rlegfak = 1.5; texfac = 1.5
    383                             xtext = 'time in s'
    384                             ytext = ''
    385                             utext = ''
    386 !
    387 !--                         Determine range of y-axis values
    388                             IF ( cross_ts_uymin(j) == 999.999 )  THEN
    389                                uymin = cross_ts_uymin_computed(j)
    390                             ELSE
    391                                uymin = cross_ts_uymin(j)
    392                             ENDIF
    393                             IF ( cross_ts_uymax(j) == 999.999 )  THEN
    394                                uymax = cross_ts_uymax_computed(j)
    395                             ELSE
    396                                uymax = cross_ts_uymax(j)
    397                             ENDIF
    398                             IF ( uymin == uymax )  uymax = uymin + 1.0
    399 !
    400 !--                         Range of x-axis values
    401                             uxmin = 0.0; uxmax = simulated_time
    402 !
    403 !--                         Normalizations
    404                             normx = 1.0; normy = 1.0
    405 
    406                             WRITE ( 90, CROSS )
    407 
    408                          ENDIF
    409                       ENDDO
    410 
    411                       CLOSE ( 90 )
    412                    ENDIF
    413182                ENDIF
    414183
  • palm/trunk/SOURCE/data_output_profiles.f90

    r392 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! code for profil-output removed
    77!
    88! Former revisions:
     
    5252
    5353    INTEGER ::  i, id, ilc, ils, j, k, sr
    54     REAL    ::  uxma, uxmi
    55 
    5654
    5755!
     
    9189
    9290!
    93 !--    Open PROFIL-output files for each (sub-)region
    94        IF ( profil_output )  THEN
    95           DO  sr = 0, statistic_regions
    96              CALL check_open( 40 + sr )
    97           ENDDO
    98        ENDIF
    99 
    100 !
    10191!--    Increment the counter for number of output times
    10292       dopr_time_count = dopr_time_count + 1
    103 
    104 !
    105 !--    Re-set to zero the counter for the number of profiles already written
    106 !--    at the current output time into the respective crosses
    107        cross_pnc_local = 0
    10893
    10994!
     
    178163                   DO  sr = 0, statistic_regions
    179164
    180                       IF ( profil_output )  THEN
    181                          id = 40 + sr
    182 !
    183 !--                      Write Label-Header
    184                          WRITE ( id, 100 )  TRIM( data_output_pr(i) ), '(t=0)'
    185 !
    186 !--                      Write total profile
    187                          DO  k = nzb, nzt+1
    188                             WRITE ( id, 101 )  hom(k,2,dopr_initial_index(i),sr), &
    189                                                hom(k,1,dopr_initial_index(i),sr)
    190                          ENDDO
    191 !
    192 !--                      Write separation label
    193                          WRITE ( id, 102 )
    194                       ENDIF
    195 
    196165                      IF ( netcdf_output )  THEN
    197166#if defined( __netcdf )
     
    208177                   ENDDO
    209178
    210                    IF ( profil_output )  THEN
    211 !
    212 !--                   Determine indices for later NAMELIST-output (s. below)
    213                       profile_number = profile_number + 1
    214                       j = dopr_crossindex(i)
    215                       IF ( j /= 0 )  THEN
    216                          cross_profile_number_count(j) = &
    217                                                   cross_profile_number_count(j) + 1
    218                          k = cross_profile_number_count(j)
    219                          cross_profile_numbers(k,j) = profile_number
    220 !
    221 !--                      Initial profiles are always drawn as solid lines in
    222 !--                      anti-background colour.
    223                          cross_linecolors(k,j) = 1
    224                          cross_linestyles(k,j) = 0
    225 !
    226 !--                      If required, extend x-value range of the respective
    227 !--                      cross, provided it has not been specified in &
    228 !--                      check_parameters. Determination over all (sub-)regions.
    229                          IF ( cross_uxmin(j) == 0.0  .AND. &
    230                               cross_uxmax(j) == 0.0 )  THEN
    231 
    232                             DO  sr = 0, statistic_regions
    233 
    234                                uxmi = &
    235                                MINVAL( hom(:nz_do1d,1,dopr_initial_index(i),sr) )
    236  
    237                                uxma = &
    238                                MAXVAL( hom(:nz_do1d,1,dopr_initial_index(i),sr) )
    239 !
    240 !--                            When the value range of the first line in the
    241 !--                            corresponding cross is determined, its value range
    242 !--                            is simply adopted.
    243                                IF ( cross_uxmin_computed(j) > &
    244                                     cross_uxmax_computed(j) )  THEN
    245                                   cross_uxmin_computed(j) = uxmi
    246                                   cross_uxmax_computed(j) = uxma
    247                                ELSE
    248                                   cross_uxmin_computed(j) = &
    249                                                MIN( cross_uxmin_computed(j), uxmi )
    250                                   cross_uxmax_computed(j) = &
    251                                                MAX( cross_uxmax_computed(j), uxma )
    252                                ENDIF
    253 
    254                             ENDDO
    255 
    256                          ENDIF
    257 !
    258 !--                      If required, determine and note normalizing factors
    259                          SELECT CASE ( cross_normalized_x(j) )
    260    
    261                              CASE ( 'ts2' )
    262                                cross_normx_factor(k,j) = &
    263                                 ( hom_sum(nzb+3,pr_palm,normalizing_region) )**2
    264                             CASE ( 'wpt0' )
    265                                cross_normx_factor(k,j) = &
    266                                 hom_sum(nzb,18,normalizing_region)
    267                             CASE ( 'wsts2' )
    268                                cross_normx_factor(k,j) = &
    269                                 hom_sum(nzb+8,pr_palm,normalizing_region)  &
    270                               * ( hom_sum(nzb+3,pr_palm,normalizing_region) )**2
    271                             CASE ( 'ws2' )
    272                                cross_normx_factor(k,j) = &
    273                                 ( hom_sum(nzb+8,pr_palm,normalizing_region) )**2
    274                             CASE ( 'ws2ts' )
    275                                cross_normx_factor(k,j) = &
    276                               ( hom_sum(nzb+8,pr_palm,normalizing_region) )**2 &
    277                               * hom_sum(nzb+3,pr_palm,normalizing_region)
    278                              CASE ( 'ws3' )
    279                                cross_normx_factor(k,j) = &
    280                                 ( hom_sum(nzb+8,pr_palm,normalizing_region) )**3
    281 
    282                          END SELECT
    283 
    284                          SELECT CASE ( cross_normalized_y(j) )
    285  
    286                             CASE ( 'z_i' )
    287                                 cross_normy_factor(k,j) = &
    288                                         hom_sum(nzb+6,pr_palm,normalizing_region)
    289 
    290                          END SELECT
    291 
    292 !
    293 !--                      Check the normalizing factors for zeros and deactivate
    294 !--                      the normalization, if required.
    295                          IF ( cross_normx_factor(k,j) == 0.0  .OR. &
    296                               cross_normy_factor(k,j) == 0.0 )  THEN
    297                             WRITE( message_string, * ) 'data_output_profiles: ',  &
    298                                 'normalizing cross ',j, ' is not possible ',     &
    299                                 'since one of the & normalizing factors ',       &
    300                                  'is zero! & cross_normx_factor(',k,',',j,') = ', &
    301                                                          cross_normx_factor(k,j), &
    302                                  ' & cross_normy_factor(',k,',',j,') = ',         &
    303                                                          cross_normy_factor(k,j)
    304                             CALL message( 'data_output_profiles', 'PA0185',&
    305                                                                     0, 1, 0, 6, 0 )
    306                             cross_normx_factor(k,j) = 1.0
    307                             cross_normy_factor(k,j) = 1.0
    308                             cross_normalized_x(j) = ' '
    309                             cross_normalized_y(j) = ' '
    310                          ENDIF
    311 
    312 !
    313 !--                      If required, extend normalized x-value range of the
    314 !--                      respective cross, provided it has not been specified in
    315 !--                      check_parameters. Determination over all (sub-)regions.
    316                          IF ( cross_uxmin_normalized(j) == 0.0  .AND. &
    317                               cross_uxmax_normalized(j) == 0.0 )  THEN
    318 
    319                             DO  sr = 0, statistic_regions
    320 
    321                                uxmi = MINVAL( hom(:nz_do1d,1,             &
    322                                               dopr_initial_index(i),sr) ) / &
    323                                       cross_normx_factor(k,j)
    324                                uxma = MAXVAL( hom(:nz_do1d,1,             &
    325                                               dopr_initial_index(i),sr) ) / &
    326                                        cross_normx_factor(k,j)
    327 !
    328 !--                            When the value range of the first line in the
    329 !--                            corresponding cross is determined, its value range
    330 !--                            is simply adopted.
    331                                IF ( cross_uxmin_normalized_computed(j) > &
    332                                     cross_uxmax_normalized_computed(j) )  THEN
    333                                   cross_uxmin_normalized_computed(j) = uxmi
    334                                   cross_uxmax_normalized_computed(j) = uxma
    335                                ELSE
    336                                   cross_uxmin_normalized_computed(j) = &
    337                                     MIN( cross_uxmin_normalized_computed(j), uxmi )
    338                                   cross_uxmax_normalized_computed(j) = &
    339                                     MAX( cross_uxmax_normalized_computed(j), uxma )
    340                                ENDIF
    341 
    342                             ENDDO
    343 
    344                          ENDIF
    345 
    346                       ENDIF   ! Index determination
    347 
    348                    ENDIF   ! profil output
    349 
    350179                ENDIF   ! Initial profile available
    351180
     
    425254!--       Output for the individual (sub-)domains
    426255          DO  sr = 0, statistic_regions
    427 
    428              IF ( profil_output )  THEN
    429                 id = 40 + sr
    430 !
    431 !--             Write Label-Header
    432                 WRITE ( id, 100 )  TRIM( dopr_label(i) ), simulated_time_chr
    433 !
    434 !--             Output of total profile
    435                 DO  k = nzb, nzt+1
    436                    WRITE ( id, 101 )  hom(k,2,dopr_index(i),sr), &
    437                                       hom_sum(k,dopr_index(i),sr)
    438                 ENDDO
    439 !
    440 !--             Write separation label
    441                 WRITE ( id, 102 )
    442              ENDIF
    443256
    444257             IF ( netcdf_output )  THEN
     
    456269          ENDDO
    457270
    458           IF ( profil_output )  THEN
    459 !
    460 !--          Determine profile number on file and note the data for later
    461 !--          NAMELIST output, if the respective profile is to be drawn by
    462 !--          PROFIL (if it shall not be drawn, the variable dopr_crossindex has
    463 !--          the value 0, otherwise the number of the coordinate cross)
    464              profile_number = profile_number + 1
    465              j = dopr_crossindex(i)
    466 
    467              IF ( j /= 0 )  THEN
    468                 cross_profile_number_count(j) = cross_profile_number_count(j) +1
    469                 k = cross_profile_number_count(j)
    470                 cross_pnc_local(j)            = cross_pnc_local(j)            +1
    471                 cross_profile_numbers(k,j) = profile_number
    472                 ilc = MOD( dopr_time_count, 10 )
    473                 IF ( ilc == 0 )  ilc = 10
    474                 cross_linecolors(k,j) = linecolors(ilc)
    475                 ils = MOD( cross_pnc_local(j), 11 )
    476                 IF ( ils == 0 )  ils = 11
    477                 cross_linestyles(k,j) = linestyles(ils)
    478 !
    479 !--             If required, extend x-value range of the respective coordinate
    480 !--             cross, provided it has not been specified in check_parameters.
    481 !--             Determination over all (sub-)regions.
    482                 IF ( cross_uxmin(j) == 0.0  .AND.  cross_uxmax(j) == 0.0 )  THEN
    483 
    484                    DO  sr = 0, statistic_regions
    485 
    486                       uxmi = MINVAL( hom_sum(:nz_do1d,dopr_index(i),sr) )
    487                       uxma = MAXVAL( hom_sum(:nz_do1d,dopr_index(i),sr) )
    488 !
    489 !--                   When the value range of the first line in the
    490 !--                   corresponding cross is determined, its value range is
    491 !--                   simply adopted.
    492                       IF ( cross_uxmin_computed(j) > cross_uxmax_computed(j) ) &
    493                       THEN
    494                          cross_uxmin_computed(j) = uxmi
    495                          cross_uxmax_computed(j) = uxma
    496                       ELSE
    497                          cross_uxmin_computed(j) = &
    498                                            MIN( cross_uxmin_computed(j), uxmi )
    499                          cross_uxmax_computed(j) = &
    500                                            MAX( cross_uxmax_computed(j), uxma )
    501                       ENDIF
    502 
    503                    ENDDO
    504 
    505                 ENDIF
    506 !
    507 !--             If required, store the normalizing factors
    508                 SELECT CASE ( cross_normalized_x(j) )
    509 
    510                    CASE ( 'tsw2' )
    511                       cross_normx_factor(k,j) = &
    512                             ( hom_sum(nzb+11,pr_palm,normalizing_region) )**2
    513                    CASE ( 'wpt0' )
    514                       cross_normx_factor(k,j) = &
    515                               hom_sum(nzb,18,normalizing_region)
    516                    CASE ( 'wstsw2' )
    517                       cross_normx_factor(k,j) = &
    518                               hom_sum(nzb+8,pr_palm,normalizing_region)  &
    519                           * ( hom_sum(nzb+11,pr_palm,normalizing_region) )**2
    520                    CASE ( 'ws2' )
    521                       cross_normx_factor(k,j) = &
    522                             ( hom_sum(nzb+8,pr_palm,normalizing_region) )**2
    523                    CASE ( 'ws2tsw' )
    524                       cross_normx_factor(k,j) = &
    525                             ( hom_sum(nzb+8,pr_palm,normalizing_region) )**2&
    526                             * hom_sum(nzb+11,pr_palm,normalizing_region)
    527                    CASE ( 'ws3' )
    528                       cross_normx_factor(k,j) = &
    529                             ( hom_sum(nzb+8,pr_palm,normalizing_region) )**3
    530 
    531                 END SELECT
    532                 SELECT CASE ( cross_normalized_y(j) )
    533 
    534                    CASE ( 'z_i' )
    535                       cross_normy_factor(k,j) = &
    536                                    hom_sum(nzb+6,pr_palm,normalizing_region)
    537 
    538                 END SELECT
    539 
    540 !
    541 !--             Check the normalizing factors for zeros and deactivate
    542 !--             the normalization, if required.
    543                 IF ( cross_normx_factor(k,j) == 0.0  .OR. &
    544                      cross_normy_factor(k,j) == 0.0 )  THEN
    545                    WRITE( message_string, * ) 'data_output_profiles: ',  &
    546                               'normalizing cross ',j, ' is not possible ',     &
    547                               'since one of the & normalizing factors ',       &
    548                               'is zero! & cross_normx_factor(',k,',',j,') = ', &
    549                                                       cross_normx_factor(k,j), &
    550                               ' & cross_normy_factor(',k,',',j,') = ',         &
    551                                                       cross_normy_factor(k,j)
    552                          CALL message( 'data_output_profiles', 'PA0185',&
    553                                                                 0, 1, 0, 6, 0 )
    554                     cross_normx_factor(k,j) = 1.0
    555                     cross_normy_factor(k,j) = 1.0
    556                     cross_normalized_x(j) = ' '
    557                     cross_normalized_y(j) = ' '
    558                 ENDIF
    559 
    560 !
    561 !--             If required, extend normalized x-value range of the respective 
    562 !--             cross, provided it has not been specified in check_parameters.
    563 !--             Determination over all (sub-)regions.
    564                 IF ( cross_uxmin_normalized(j) == 0.0  .AND. &
    565                      cross_uxmax_normalized(j) == 0.0 )  THEN
    566 
    567                    DO  sr = 0, statistic_regions
    568 
    569                       uxmi = MINVAL( hom(:nz_do1d,1,dopr_index(i),sr) ) / &
    570                              cross_normx_factor(k,j)
    571                       uxma = MAXVAL( hom(:nz_do1d,1,dopr_index(i),sr) ) / &
    572                              cross_normx_factor(k,j)
    573 !
    574 !--                   When the value range of the first line in the
    575 !--                   corresponding cross is determined, its value range is
    576 !--                   simply adopted.
    577                       IF ( cross_uxmin_normalized_computed(j) > &
    578                            cross_uxmax_normalized_computed(j) )  THEN
    579                          cross_uxmin_normalized_computed(j) = uxmi
    580                          cross_uxmax_normalized_computed(j) = uxma
    581                       ELSE
    582                          cross_uxmin_normalized_computed(j) = &
    583                                 MIN( cross_uxmin_normalized_computed(j), uxmi )
    584                          cross_uxmax_normalized_computed(j) = &
    585                                 MAX( cross_uxmax_normalized_computed(j), uxma )
    586                       ENDIF
    587 
    588                    ENDDO
    589 
    590                 ENDIF
    591 
    592              ENDIF   ! Index determination
    593 
    594           ENDIF   ! profil output
    595 
    596        ENDDO   ! Loop over dopr_n
     271       ENDDO
    597272
    598273    ENDIF  ! Output on PE0
  • palm/trunk/SOURCE/data_output_spectra.f90

    r392 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! code for profil-output removed
    77!
    88! Former revisions:
     
    7373       CALL handle_netcdf_error( 'data_output_spectra', 47 )
    7474#endif
    75 
    76        IF ( profil_output )  THEN
    77 !
    78 !--       Compute RAHMEN-Parameter CRANZ for x- and y-spectra separately
    79           cranz_x = 0; cranz_y = 0; frame_x = .FALSE.; frame_y = .FALSE.
    80 
    81           m = 1
    82           DO WHILE ( data_output_sp(m) /= ' ' .AND. m <= 10 )
    83 
    84              IF ( INDEX( spectra_direction(m), 'x' ) /= 0 )  THEN
    85                 cranz_x = cranz_x + 1
    86              ENDIF
    87              IF ( INDEX( spectra_direction(m), 'y' ) /= 0 )  THEN
    88                 cranz_y = cranz_y + 1
    89              ENDIF
    90 
    91              m = m + 1
    92 
    93           ENDDO
    94 
    95        ENDIF
    9675
    9776!
     
    152131             IF ( INDEX( spectra_direction(m), 'y' ) /= 0 ) THEN
    153132                CALL output_spectra_netcdf( m, 'y' )
    154              ENDIF
    155           ENDIF
    156 
    157 !
    158 !--       Output of spectra in profil format
    159           IF ( profil_output )  THEN
    160 !
    161 !--          Output of x-spectra
    162              IF ( INDEX( spectra_direction(m), 'x' ) /= 0 ) THEN
    163                 CALL data_output_spectra_x( m, cranz_x, pr, frame_x )
    164              ENDIF
    165 
    166 !
    167 !--          Output of y-spectra
    168              IF ( INDEX( spectra_direction(m), 'y' ) /= 0 ) THEN
    169                 CALL data_output_spectra_y( m, cranz_y, pr, frame_y )
    170133             ENDIF
    171134          ENDIF
  • palm/trunk/SOURCE/header.f90

    r941 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! output of profil-related quantities removed
    77!
    88! Former revisions:
     
    751751          ELSE
    752752             output_format = 'NetCDF 64bit offset'
    753           ENDIF
    754        ENDIF
    755        IF ( profil_output )  THEN
    756           IF ( netcdf_output )  THEN
    757              output_format = TRIM( output_format ) // ' and profil'
    758           ELSE
    759              output_format = 'profil'
    760753          ENDIF
    761754       ENDIF
     
    11501143          ELSE
    11511144             output_format = 'NetCDF 64bit offset'
    1152           ENDIF
    1153        ENDIF
    1154        IF ( profil_output )  THEN
    1155           IF ( netcdf_output )  THEN
    1156              output_format = TRIM( output_format ) // ' and profil'
    1157           ELSE
    1158              output_format = 'profil'
    11591145          ENDIF
    11601146       ENDIF
     
    12271213          ELSE
    12281214             output_format = 'NetCDF 64bit offset'
    1229           ENDIF
    1230        ENDIF
    1231        IF ( profil_output )  THEN
    1232           IF ( netcdf_output )  THEN
    1233              output_format = TRIM( output_format ) // ' and profil'
    1234           ELSE
    1235              output_format = 'profil'
    12361215          ENDIF
    12371216       ENDIF
  • palm/trunk/SOURCE/modules.f90

    r952 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! -cross_linecolors, cross_linestyles, cross_normalized_x, cross_normx_factor,
     7! cross_normalized_y, cross_normy_factor, cross_pnc_local,
     8! cross_profile_numbers, cross_profile_number_counter, cross_uxmax,
     9! cross_uxmax_computed, cross_uxmax_normalized,
     10! cross_uxmax_normalized_computed, cross_uxmin, cross_uxmin_computed,
     11! cross_uxmin_normalized, cross_uxmin_normalized_computed, cross_uymax,
     12! cross_uymin, cross_xtext, dopr_crossindex, dopr_label, linecolors, linestyles,
     13! nz_do1d, profil_output, z_max_do1d, z_max_do1d_normalized
    714!
    815! Former revisions:
     
    539546                netcdf_data_format = 2, ngsrb = 2, nsor = 20, &
    540547                nsor_ini = 100, n_sor, normalizing_region = 0, &
    541                 nz_do1d, nz_do3d = -9999, outflow_damping_width = -1, &
     548                nz_do3d = -9999, outflow_damping_width = -1, &
    542549                pch_index = 0, prt_time_count = 0, recycling_plane, runnr = 0, &
    543550                skip_do_avs = 0, subdomain_size, terminate_coupled = 0, &
     
    601608                outflow_s = .FALSE., passive_scalar = .FALSE., &
    602609                plant_canopy = .FALSE., prandtl_layer = .TRUE., &
    603                 precipitation = .FALSE., profil_output = .FALSE., &
     610                precipitation = .FALSE., &
    604611                radiation = .FALSE., random_heatflux = .FALSE., &
    605612                run_control_header = .FALSE., run_coupled = .TRUE., &
     
    690697             ups_limit_v = 0.0, ups_limit_w = 0.0, vg_surface = 0.0, &
    691698             v_bulk = 0.0, v_gtrans = 0.0, wall_adjustment_factor = 1.8, &
    692              z_max_do1d = -1.0, z_max_do1d_normalized = -1.0, z_max_do2d = -1.0
     699             z_max_do2d = -1.0
    693700
    694701    REAL ::  do2d_xy_last_time(0:1) = -1.0, do2d_xz_last_time(0:1) = -1.0, &
     
    13731380    INTEGER, PARAMETER ::  crmax = 100
    13741381
    1375     CHARACTER (LEN=10), DIMENSION(100) ::  dopr_label = ' '
    1376 
    1377     CHARACTER (LEN=10), DIMENSION(crmax) ::  cross_normalized_x = ' ', &
    1378                                              cross_normalized_y = ' '
    1379 
    13801382    CHARACTER (LEN=20), DIMENSION(20) ::  cross_ts_profiles = &
    13811383                           (/ ' E E*               ', ' dt                 ', &
     
    13871389                            ( '                    ', i9 = 1, 9 ) /)
    13881390
    1389     CHARACTER (LEN=40), DIMENSION(crmax) ::  cross_xtext = &
    1390                            (/ 'windspeed in ms>->1         ', &
    1391                               'pot. temperature in K       ', &
    1392                               'heat flux in K ms>->1       ', &
    1393                               'momentum flux in m>2s>2     ', &
    1394                               'eddy diffusivity in m>2s>->1', &
    1395                               'mixing length in m          ', &
    1396                             ( '                            ', i9 = 1, 94 ) /)
    1397 
    13981391    CHARACTER (LEN=100), DIMENSION(crmax) ::  cross_profiles = &
    13991392                           (/ ' u v                           ', &
     
    14071400    INTEGER ::  profile_columns = 2, profile_rows = 3, profile_number = 0
    14081401
    1409     INTEGER ::  cross_linecolors(100,crmax) = 1, &
    1410                 cross_linestyles(100,crmax) = 0, &
    1411                 cross_profile_numbers(100,crmax) = 0, &
    1412                 cross_pnc_local(crmax), cross_profile_number_count(crmax) = 0, &
    1413                 cross_ts_numbers(crmax,crmax) = 0, &
    1414                 cross_ts_number_count(crmax) = 0, dopr_crossindex(100) = 0, &
     1402    INTEGER ::  cross_ts_numbers(crmax,crmax) = 0, &
     1403                cross_ts_number_count(crmax) = 0, &
    14151404                dopr_index(300) = 0, dopr_initial_index(300) = 0, &
    1416                 dots_crossindex(100) = 0, dots_index(100) = 0, &
    1417                 linecolors(10) = (/ 2, 3, 4,  5, 7, 8, 12, 15, 16, 23 /), &
    1418                 linestyles(11) = (/ 0, 7, 3, 10, 4, 1,  9,  2,  5,  8, 6 /)
     1405                dots_crossindex(100) = 0, dots_index(100) = 0
    14191406               
    14201407
    1421     REAL ::  cross_normx_factor(100,crmax) = 1.0, &
    1422              cross_normy_factor(100,crmax) = 1.0, &
    1423              cross_ts_uymax(20) = &
     1408    REAL ::  cross_ts_uymax(20) = &
    14241409                             (/ 999.999, 999.999, 999.999, 999.999, 999.999,   &
    14251410                                999.999, 999.999, 999.999, 999.999, 999.999,   &
     
    14321417                                999.999, 999.999, 999.999, 999.999, 999.999,   &
    14331418                                999.999, 999.999, 999.999, 999.999, 999.999 /),&
    1434              cross_ts_uymin_computed(20) = 999.999, &
    1435              cross_uxmax(crmax) = 0.0, cross_uxmax_computed(crmax) = -1.0, &
    1436              cross_uxmax_normalized(crmax) = 0.0, &
    1437              cross_uxmax_normalized_computed(crmax) = -1.0, &
    1438              cross_uxmin(crmax) = 0.0, cross_uxmin_computed(crmax) =  1.0, &
    1439              cross_uxmin_normalized(crmax) = 0.0, &
    1440              cross_uxmin_normalized_computed(crmax) = 1.0, &
    1441              cross_uymax(crmax), cross_uymin(crmax)
     1419             cross_ts_uymin_computed(20) = 999.999
    14421420
    14431421    SAVE
  • palm/trunk/SOURCE/netcdf.f90

    r960 r964  
    77! Current revisions:
    88! ------------------
    9 !
     9! rev 951 and 959 reformatted
    1010!
    1111! Former revisions:
     
    1414!
    1515! 959 2012-07-24 13:13:41Z hoffmann
    16 ! Bugfix in cross_profiles. It is not possible to arrange more than 100
     16! Bugfix in cross_profiles. It is not allowed to arrange more than 100
    1717! profiles with cross_profiles.
    1818!
     
    130130    INTEGER ::  av, cross_profiles_count, cross_profiles_maxi, delim, &
    131131                delim_old, file_id, i, id_last, id_x, id_y, id_z, j,  &
    132                 k, ns, ns_old, nz_old
     132                k, kk, ns, ns_old, nz_old
    133133
    134134    INTEGER, DIMENSION(1) ::  id_dim_time_old, id_dim_x_yz_old,  &
     
    31473147
    31483148!
    3149 !--       Write columns and rows of cross_profiles to netcdf header.
     3149!--       Write number of columns and rows of coordinate systems to be plotted
     3150!--       on one page to the netcdf header.
    31503151!--       This information can be used by palmplot.
    3151 
    31523152          nc_stat = NF90_PUT_ATT( id_set_pr, NF90_GLOBAL,                     &
    31533153                                  'no_rows',                                  &
     
    31613161
    31623162
    3163           cross_profiles_adj  = ADJUSTL( cross_profiles )
     3163          cross_profiles_adj  = ADJUSTL( cross_profiles )
    31643164          cross_profiles_numb = 999999
    31653165
    3166           k = 1
    3167 
    3168 !
    3169 !--       Each profile defined in cross_profiles is written to a array
    3170 !--       (cross_profiles_char). The number of its cross is assigned in a
    3171 !--       second array (cross_profiles_numb).
    3172 
    3173           DO  i = 1, crmax
    3174             IF ( TRIM( cross_profiles_adj(i) ) == ' ' )  EXIT
    3175             delim_old = 0
    3176             DO   j = 1, crmax
    3177               delim = INDEX( cross_profiles_adj(i)(delim_old+1:), ' ' )
    3178               IF (delim .EQ. 1)  EXIT
    3179               cross_profiles_char( MIN( crmax, k ) ) = cross_profiles_adj(i)  &
    3180                                        (delim_old+1:delim_old+delim-1)
    3181               cross_profiles_numb( MIN( crmax, k ) ) = i
    3182               k = k+1
    3183               cross_profiles_maxi  = i
    3184               delim_old = delim_old + delim
    3185             ENDDO
    3186           ENDDO
     3166!
     3167!--       Each profile defined in cross_profiles is written to an array
     3168!--       (cross_profiles_char). The number of the respective coordinate
     3169!--       system is assigned in a second array (cross_profiles_numb).
     3170          k = 1
     3171
     3172          DO  i = 1, crmax
     3173
     3174             IF ( TRIM( cross_profiles_adj(i) ) == ' ' )  EXIT
     3175             delim_old = 0
     3176
     3177             DO   j = 1, crmax
     3178                delim = INDEX( cross_profiles_adj(i)(delim_old+1:), ' ' )
     3179                IF ( delim == 1 )  EXIT
     3180                kk = MIN( crmax, k )
     3181                cross_profiles_char(kk) = cross_profiles_adj(i)(delim_old+1: &
     3182                                                              delim_old+delim-1)
     3183                cross_profiles_numb(kk) = i
     3184                k = k + 1
     3185                cross_profiles_maxi  = i
     3186                delim_old = delim_old + delim
     3187             ENDDO
     3188
     3189          ENDDO
    31873190
    31883191          cross_profiles_count = MIN( crmax, k-1 )
    3189          
    31903192!
    31913193!--       Check if all profiles defined in cross_profiles are defined in
    31923194!--       data_output_pr. If not, they will be skipped.
    3193 
     3195          cross_profiles_log = .FALSE.
     3196          message_string = ''
     3197
     3198          DO  i = 1, cross_profiles_count
     3199             DO  j = 1, dopr_n
     3200
     3201                IF ( TRIM(cross_profiles_char(i)) == TRIM(data_output_pr(j)) ) &
     3202                THEN
     3203                   EXIT
     3204                ENDIF
     3205
     3206                IF ( j == dopr_n )  THEN
     3207                   cross_profiles_numb(i) = 999999
     3208                   cross_profiles_log = .TRUE.
     3209                   message_string = TRIM( message_string ) // ', ' // &
     3210                                    TRIM( cross_profiles_char(i) )
     3211                ENDIF
     3212
     3213             ENDDO
     3214          ENDDO
     3215
     3216          IF ( cross_profiles_log )  THEN
     3217             message_string = TRIM( message_string ) // ' is/are not' // &
     3218                              ' defined in data_output_pr.'
     3219             CALL message( 'define_netcdf_header', 'PA0352', 0, 0, 0, 6, 0 )
     3220          ENDIF
     3221
     3222!
     3223!--       Check if all profiles defined in data_output_pr are defined in
     3224!--       cross_profiles. If not, they will be added to cross_profiles.
    31943225          cross_profiles_log = .FALSE.
    31953226          message_string = ' '
    31963227
    3197           DO  i = 1, cross_profiles_count
    3198             DO  j = 1, dopr_n
    3199               IF ( TRIM(cross_profiles_char(i) ) == TRIM(data_output_pr(j)) ) &
    3200                  EXIT
    3201               IF ( j == dopr_n)  THEN
    3202                 cross_profiles_numb(i) = 999999
    3203                 cross_profiles_log = .TRUE.
    3204                 message_string = TRIM(message_string) // ', ' //              &
    3205                                  TRIM(cross_profiles_char(i))
    3206               ENDIF
    3207             ENDDO
    3208           ENDDO
    3209 
    3210           IF (cross_profiles_log)  THEN
    3211             message_string = TRIM(message_string(2:)) // ' is/are not' //     &
    3212                              ' defined in data_output_pr.'
    3213             CALL message( 'define_netcdf_header', 'PA0352', 0, 0, 0, 6, 0 )
    3214           ENDIF
    3215 
    3216 !
    3217 !--       Check if all profiles defined in data_output_pr are defined in
    3218 !--       cross_profiles. If not, they will be added to cross_profiles.
    3219 
    3220           cross_profiles_log = .FALSE.
    3221           message_string = ' '
    3222 
    3223           DO  i = 1, dopr_n
    3224             DO  j = 1, cross_profiles_count
    3225               IF ( TRIM( cross_profiles_char(j) ) == TRIM( data_output_pr(i)) )&
    3226                  EXIT
    3227               IF ( j == cross_profiles_count )  THEN
    3228                 cross_profiles_count = cross_profiles_count + 1
    3229                 cross_profiles_maxi  = cross_profiles_maxi  + 1
    3230                 cross_profiles_char( MIN( crmax, cross_profiles_count ) ) =    &
     3228          DO  i = 1, dopr_n
     3229             DO  j = 1, cross_profiles_count
     3230
     3231                IF ( TRIM(cross_profiles_char(j)) == TRIM(data_output_pr(i))) &
     3232                THEN
     3233                   EXIT
     3234                ENDIF
     3235
     3236                IF ( j == cross_profiles_count )  THEN
     3237                   cross_profiles_count = cross_profiles_count + 1
     3238                   cross_profiles_maxi  = cross_profiles_maxi  + 1
     3239                   cross_profiles_char(MIN( crmax, cross_profiles_count )) =  &
    32313240                                                      TRIM( data_output_pr(i) )
    3232                 cross_profiles_numb( MIN( crmax, cross_profiles_count ) ) =    &
     3241                   cross_profiles_numb(MIN( crmax, cross_profiles_count )) =  &
    32333242                                                      cross_profiles_maxi
    3234                 cross_profiles_log = .TRUE.
    3235                 message_string = TRIM( message_string ) // ', '&
    3236                                          // TRIM( data_output_pr(i) )
    3237               ENDIF
    3238             ENDDO
    3239           ENDDO
    3240 
    3241           IF ( cross_profiles_log )  THEN
    3242             message_string = TRIM(message_string(2:)) //               &
    3243                              ' has/have been added to cross_profiles.'
    3244             CALL message( 'define_netcdf_header', 'PA0353', 0, 0, 0, 6, 0 )
    3245           ENDIF
    3246 
    3247           IF ( cross_profiles_count .ge. crmax )  THEN
    3248             message_string = 'It is not possible to arrange more than '&
    3249                              // '100 profiles with cross_profiles.'
    3250             CALL message( 'define_netcdf_header', 'PA0354', 0, 0, 0, 6, 0 )
    3251           ENDIF
     3243                   cross_profiles_log   = .TRUE.
     3244                   message_string = TRIM( message_string ) // ', ' // &
     3245                                    TRIM( data_output_pr(i) )
     3246                ENDIF
     3247
     3248             ENDDO
     3249          ENDDO
     3250
     3251          IF ( cross_profiles_log )  THEN
     3252             message_string = TRIM(message_string(2:)) // ' has/have been' //  &
     3253                              ' added to cross_profiles.'
     3254             CALL message( 'define_netcdf_header', 'PA0353', 0, 0, 0, 6, 0 )
     3255          ENDIF
     3256
     3257          IF ( cross_profiles_count >= crmax )  THEN
     3258             message_string = 'It is not allowed to arrange more than '&
     3259                              // '100 profiles with cross_profiles.'
     3260             CALL message( 'define_netcdf_header', 'PA0354', 0, 0, 0, 6, 0 )
     3261          ENDIF
    32523262
    32533263!
     
    32553265!--       used by palmplot. Each profile is separated by ",", each cross is
    32563266!--       separated by ";".
    3257 
    3258           char_cross_profiles = ';'
    3259           id_last = 1
    3260 
    3261           DO  i = 1, cross_profiles_count
    3262             IF ( cross_profiles_numb(i) /= 999999 )  THEN
    3263               IF ( TRIM( char_cross_profiles ) == ';' )  THEN
    3264                char_cross_profiles = TRIM( char_cross_profiles ) // &
    3265                                      TRIM( cross_profiles_char(i) )
    3266               ELSEIF ( id_last == cross_profiles_numb(i) )  THEN
    3267                 char_cross_profiles = TRIM( char_cross_profiles ) // &
    3268                                       ',' // TRIM( cross_profiles_char(i) )
    3269               ELSE
    3270                 char_cross_profiles = TRIM( char_cross_profiles ) // &
    3271                                       ';' // TRIM( cross_profiles_char(i) )
    3272               ENDIF
    3273               id_last = cross_profiles_numb(i)
    3274             ENDIF
    3275           ENDDO
    3276          
     3267          char_cross_profiles = ';'
     3268          id_last = 1
     3269
     3270          DO  i = 1, cross_profiles_count
     3271
     3272             IF ( cross_profiles_numb(i) /= 999999 )  THEN
     3273                IF ( TRIM( char_cross_profiles ) == ';' )  THEN
     3274                   char_cross_profiles = TRIM( char_cross_profiles ) // &
     3275                                         TRIM( cross_profiles_char(i) )
     3276                ELSEIF ( id_last == cross_profiles_numb(i) )  THEN
     3277                   char_cross_profiles = TRIM( char_cross_profiles ) // &
     3278                                         ',' // TRIM( cross_profiles_char(i) )
     3279                ELSE
     3280                   char_cross_profiles = TRIM( char_cross_profiles ) // &
     3281                                         ';' // TRIM( cross_profiles_char(i) )
     3282                ENDIF
     3283                id_last = cross_profiles_numb(i)
     3284             ENDIF
     3285
     3286          ENDDO
     3287
    32773288          char_cross_profiles = TRIM( char_cross_profiles ) // ';'
    32783289
    3279           nc_stat = NF90_PUT_ATT( id_set_pr, NF90_GLOBAL, 'cross_profiles',   &
     3290          nc_stat = NF90_PUT_ATT( id_set_pr, NF90_GLOBAL, 'cross_profiles',   &
    32803291                                  TRIM( char_cross_profiles ) )
    3281           CALL handle_netcdf_error( 'netcdf', 521 )
     3292          CALL handle_netcdf_error( 'netcdf', 521 )
    32823293
    32833294!
  • palm/trunk/SOURCE/parin.f90

    r941 r964  
    44! Current revisions:
    55! -----------------
    6 !
     6! -cross_normalized_x, cross_normalized_y, cross_xtext, z_max_do1d,
     7! z_max_do1d_normalized
    78!
    89! Former revisions:
     
    200201
    201202    NAMELIST /d3par/  averaging_interval, averaging_interval_pr, &
    202              create_disturbances, cross_normalized_x, cross_normalized_y, &
    203              cross_profiles, cross_ts_uymax, cross_ts_uymin, cross_xtext, &
     203             create_disturbances, &
     204             cross_profiles, cross_ts_uymax, cross_ts_uymin, &
    204205             data_output, data_output_format, data_output_masks, &
    205206             data_output_pr, data_output_2d_on_each_pe, disturbance_amplitude, &
     
    219220             skip_time_do2d_xz, skip_time_do2d_yz, skip_time_do3d, &
    220221             skip_time_domask, synchronous_exchange, termination_time_needed, &
    221              use_prior_plot1d_parameters, z_max_do1d, z_max_do1d_normalized, &
    222              z_max_do2d
     222             use_prior_plot1d_parameters, z_max_do2d
    223223
    224224
Note: See TracChangeset for help on using the changeset viewer.