Changeset 72


Ignore:
Timestamp:
Mar 19, 2007 8:20:46 AM (17 years ago)
Author:
raasch
Message:

preliminary changes for precipitation output

Location:
palm/trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/DOC/app/chapter_4.1.html

    r62 r72  
    12451245coagulation of cloud drops among themselves. Precipitation begins and
    12461246is immediately removed from the flow as soon as the liquid water
    1247 content exceeds the critical value of 0.5 g/kg.</p> </td> </tr>
     1247content exceeds the critical value of 0.5 g/kg.</p><p>The precipitation rate and amount can be output by assigning the runtime parameter <a href="chapter_4.2.html#data_output">data_output</a> = <span style="font-style: italic;">'prr*'</span> or <span style="font-style: italic;">'pra*'</span>, respectively. The time interval on which the precipitation amount is defined can be controlled via runtime parameter <a href="chapter_4.2.html#precipitation_amount_interval">precipitation_amount_interval</a>.</p> </td> </tr>
    12481248<tr><td style="vertical-align: top;"><a name="pt_reference"></a><span style="font-weight: bold;">pt_reference</span></td><td style="vertical-align: top;">R</td><td style="vertical-align: top;"><span style="font-style: italic;">use horizontal average as
    12491249refrence</span></td><td style="vertical-align: top;">Reference
  • palm/trunk/DOC/app/chapter_4.2.html

    r61 r72  
    377377"ncdump -c &lt;filename&gt;". See chapter <a href="chapter_4.5.1.html">4.5.1</a> about processing
    378378the PALM NetCDF data.<br><br>The following quantities are
    379 available for output by default:<br><br><table style="text-align: left; width: 576px; height: 481px;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td style="width: 106px;"><span style="font-weight: bold;">quantity
     379available for output by default (quantity names ending with '*' are only allowed for the output of horizontal cross sections):<br><br><table style="text-align: left; width: 576px; height: 481px;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td style="width: 106px;"><span style="font-weight: bold;">quantity
    380380name</span></td><td style="width: 196px;"><span style="font-weight: bold;">meaning</span></td><td><span style="font-weight: bold;">unit</span></td><td><span style="font-weight: bold;">remarks</span></td></tr><tr><td style="width: 106px;"><span style="font-style: italic;">e</span></td><td style="width: 196px;">SGS TKE</td><td>m<sup>2</sup>/s<sup>2</sup></td><td></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">lwp*</span></td><td style="width: 196px; vertical-align: top;">liquid water path</td><td style="vertical-align: top;">m</td><td style="vertical-align: top;">only horizontal cross section
    381381is allowed,&nbsp;requires <a href="chapter_4.1.html#cloud_physics">cloud_physics</a>
     
    388388particle/droplet radius </td><td style="vertical-align: top;">m</td><td style="vertical-align: top;">requires that particle
    389389advection is switched on by <span style="font-weight: bold;">mrun</span>-option
    390 "-p particles"</td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">pt</span></td><td style="width: 196px; vertical-align: top;">potential
     390"-p particles"</td></tr><tr><td style="vertical-align: top;"><span style="font-style: italic;">pra*</span></td><td style="vertical-align: top;">precipitation amount</td><td style="vertical-align: top;">mm</td><td style="vertical-align: top;">only horizontal cross section
     391is allowed,&nbsp;requires&nbsp;<a href="chapter_4.1.html#precipitation">precipitation</a>
     392= <span style="font-style: italic;">.TRUE., </span>time interval on which amount refers to is defined by <a href="#precipitation_amount_interval">precipitation_amount_interval</a></td></tr><tr><td style="vertical-align: top;"><span style="font-style: italic;">prr*</span></td><td style="vertical-align: top;">precipitation rate</td><td style="vertical-align: top;">mm/s</td><td style="vertical-align: top;">only horizontal cross section
     393is allowed,&nbsp;requires&nbsp;<a href="chapter_4.1.html#precipitation">precipitation</a>
     394= <span style="font-style: italic;">.TRUE.</span></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">pt</span></td><td style="width: 196px; vertical-align: top;">potential
    391395temperature<br></td><td style="vertical-align: top;">K</td><td style="vertical-align: top;"></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">q</span></td><td style="width: 196px; vertical-align: top;">specific humidity
    392396(or total water content, if cloud physics is switched on)</td><td style="vertical-align: top;">kg/kg</td><td style="vertical-align: top;">requires <a href="chapter_4.1.html#moisture">moisture</a> = <span style="font-style: italic;">.TRUE.</span></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">ql</span></td><td style="width: 196px; vertical-align: top;">liquid water
     
    411415the velocity</td><td style="vertical-align: top;">m/s</td><td style="vertical-align: top;"></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">vpt</span></td><td style="width: 196px; vertical-align: top;">virtual potential
    412416temperature</td><td style="vertical-align: top;">K</td><td style="vertical-align: top;">requires <a href="chapter_4.1.html#moisture">moisture</a> = <span style="font-style: italic;">.TRUE.</span></td></tr><tr><td style="width: 106px; vertical-align: top;"><span style="font-style: italic;">w</span></td><td style="width: 196px; vertical-align: top;">w-component of
    413 the velocity</td><td style="vertical-align: top;">m/s</td><td style="vertical-align: top;"></td></tr></tbody></table><br>Multiple
     417the velocity</td><td style="vertical-align: top;">m/s</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;"><span style="font-style: italic;">z0*</span></td><td style="vertical-align: top;">roughness length</td><td style="vertical-align: top;">m</td><td></td></tr></tbody></table><br>Multiple
    414418quantities can be assigned, e.g. <span style="font-weight: bold;">data_output</span>
    415419= <span style="font-style: italic;">'e'</span>, <span style="font-style: italic;">'u'</span>, <span style="font-style: italic;">'w'</span>.<br><br>By
     
    15951599</p> <p>For runs with constant eddy diffusivity (see <a href="chapter_4.1.html#km_constant">km_constant</a>),
    15961600this parameter can be used to assign the Prandtl number (ratio K<sub>m</sub>
    1597 / K<sub>h</sub>).</p> </td> </tr> <tr>
     1601/ K<sub>h</sub>).</p> </td> </tr> <tr><td style="vertical-align: top;"><a name="precipitation_amount_interval"></a><span style="font-weight: bold;">precipitation_amount_</span><br style="font-weight: bold;"><span style="font-weight: bold;">interval</span></td><td style="vertical-align: top;">R</td><td style="vertical-align: top;"><i>value of
     1602&nbsp;<a href="chapter_4.2.html#dt_do2d_xy">dt_do2d_<br>xy</a></i></td><td style="vertical-align: top;"><p lang="en-GB"><font face="Thorndale"><font face="Thorndale, serif">Temporal
     1603interval</font> for which the precipitation amount (in mm) shall be calculated and output (</font>in <font face="Thorndale">s).&nbsp;
     1604</font> </p> <p><span lang="en-GB"></span><a href="chapter_4.2.html#data_output"><span lang="en-GB"></span></a><span lang="en-GB"></span><a href="chapter_4.2.html#section_xy"><span lang="en-GB"></span></a><span lang="en-GB"><font face="Thorndale">This
     1605parameter requires <a href="chapter_4.1.html#precipitation">precipitation</a> = <span style="font-style: italic;">.TRUE.</span>.&nbsp;</font></span><span lang="en-GB"></span><span lang="en-GB"><font face="Thorndale"><span style="font-weight: bold;"></span><span style="font-weight: bold;"></span>The interval must be smaller or equal than the output interval for 2d horizontal cross sections given by </font></span><a href="chapter_4.2.html#dt_do2d_xy"><span lang="en-GB"><font face="Thorndale">dt_do2d_xy</font></span></a><span lang="en-GB"><font face="Thorndale">). The output of the precipitation amount also requires setting of <a href="chapter_4.2.html#data_output">data_output</a> =<span style="font-style: italic;"> 'pra*'</span>.<br>
     1606</font></span></p> <span lang="en-GB"></span></td></tr><tr>
    15981607<td style="vertical-align: top;"> <p><a name="profile_columns"></a><b>profile_columns</b></p>
    15991608</td> <td style="vertical-align: top;">I</td>
  • palm/trunk/DOC/app/chapter_4.6.html

    r62 r72  
    975975<td style="vertical-align: middle;"><span style="font-style: italic;">.F.</span></td> <td style="vertical-align: middle;">Parameter to
    976976switch on the
    977 precipitation scheme.</td> </tr> <tr> <td style="vertical-align: middle;" width="15%"> <p><a href="chapter_4.2.html#profile_columns"><b>profile_columns</b></a></p>
     977precipitation scheme.</td> </tr> <tr><td><a style="font-weight: bold;" href="chapter_4.2.html#precipitation_amount_interval">precipitation_amount_<br>interval</a></td><td>R</td><td>R</td><td><i>value
     978of &nbsp;<a href="chapter_4.2.html#dt_do2d_xy">dt_do2d_<br>
     979xy</a></i></td><td><font face="Thorndale"><font face="Thorndale, serif">Temporal
     980interval</font> for which the precipitation amount (in mm) shall be calculated and output (</font>in <font face="Thorndale">s).&nbsp;</font></td></tr><tr> <td style="vertical-align: middle;" width="15%"> <p><a href="chapter_4.2.html#profile_columns"><b>profile_columns</b></a></p>
    978981</td> <td style="vertical-align: middle;" width="5%">
    979982<p>R</p> </td> <td style="vertical-align: middle;" width="7%"> <p>I</p>
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r63 r72  
    2222samples added to the user interface which show how to add user-define time series quantities.
    2323
     24calculation/output of precipitation amount, precipitation rate and z0 (by setting "pra*", "prr*", "z0*" with data_output). The time interval on which the precipitation amount is defined is set by new d3par-parameter precipitation_amount_interval
     25
    2426unit 9 opened for debug output (file DEBUG_<pe#>)
    2527
    26 Makefile, advec_particles, buoyancy, check_open, check_parameters, diffusion_e, diffusion_u, diffusion_v, diffusion_w, diffusivities, header, init_particles, init_3d_model, modules, netcdf, parin, production_e, read_var_list, user_interface, write_var_list
     28Makefile, advec_particles, average_3d_data, buoyancy, calc_precipitation, check_open, check_parameters, data_output_2d, diffusion_e, diffusion_u, diffusion_v, diffusion_w, diffusivities, header, impact_of_latent_heat, init_particles, init_3d_model, modules, netcdf, parin, production_e, read_var_list, read_3d_binary, sum_up_3d_data, user_interface, write_var_list, write_3d_binary
    2729
    2830New: wall_fluxes
     
    4446__vtk directives removed from main program.
    4547
     48The uitility routine interpret_config reads PALM environment variables from NAMELIST instead using the system call GETENV.
     49
    4650check_parameters, data_output_dvrp, data_output_ptseries, data_output_ts, flow_statistics, header, init_particles, init_3d_model, modules, palm, package_parin, parin, time_integration
    4751
     
    5458Bugfix in sample for reading user defined data from restart file (user_init)
    5559
     60Check for possible negative humidities in the initial humidity profile.
     61
    5662in Makefile, default suffixes removed from the suffix list to avoid calling of m2c in
    5763# case of .mod files
    5864
    5965Makefile
    60 init_1d_model, user_interface
     66check_parameters, init_1d_model, user_interface
  • palm/trunk/SOURCE/average_3d_data.f90

    r4 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Averaging the precipitation rate and roughness length (prr*, z0*)
    77!
    88! Former revisions:
     
    9090             ENDDO
    9191
     92          CASE ( 'prr*' )
     93             DO  i = nxl-1, nxr+1
     94                DO  j = nys-1, nyn+1
     95                   precipitation_rate_av(j,i) = precipitation_rate_av(j,i) / &
     96                                                REAL( average_count_3d )
     97                ENDDO
     98             ENDDO
     99
    92100          CASE ( 'pt' )
    93101             DO  i = nxl-1, nxr+1
     
    213221             ENDDO
    214222
     223          CASE ( 'z0*' )
     224             DO  i = nxl-1, nxr+1
     225                DO  j = nys-1, nyn+1
     226                   z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d )
     227                ENDDO
     228             ENDDO
     229
    215230          CASE DEFAULT
    216231!
  • palm/trunk/SOURCE/calc_precipitation.f90

    r39 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Precipitation rate and amount are calculated/stored,
     7! + module control_parameters
    78!
    89! Former revisions:
     
    4849       USE cloud_parameters
    4950       USE constants
     51       USE control_parameters
    5052       USE indices
    5153
     
    5355
    5456       INTEGER ::  i, j, k
    55        REAL    :: precipitation_rate
     57       REAL    ::  dqdt_precip
    5658
     59
     60       precipitation_rate = 0.0
    5761 
    5862       DO  i = nxl, nxr
     
    6165
    6266                IF ( ql(k,j,i) > ql_crit )  THEN
    63                    precipitation_rate = prec_time_const * &
    64                                         ( ql(k,j,i) - ql_crit )
     67                   dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    6568                ELSE
    66                    precipitation_rate = 0.0
     69                   dqdt_precip = 0.0
    6770                ENDIF
    68                 tend(k,j,i) = tend(k,j,i) - precipitation_rate
     71                tend(k,j,i) = tend(k,j,i) - dqdt_precip
     72!
     73!--             Precipitation rate in (kg * 0.001) / m**2 / s (because 1kg
     74!--             gives 1 mm)
     75                precipitation_rate(j,i) = precipitation_rate(j,i) + &
     76                                          dqdt_precip * dzw(k) * 0.001
    6977
    7078             ENDDO
     79!
     80!--          Sum up the precipitation amount (unit kg * 0.001 / m**2)
     81             IF ( intermediate_timestep_count ==         &
     82                  intermediate_timestep_count_max  .AND. &
     83                  ( dt_do2d_xy-time_do2d_xy ) < precipitation_amount_interval )&
     84             THEN
     85                precipitation_amount(j,i) = precipitation_amount(j,i) + &
     86                                            precipitation_rate(j,i) * dt_3d
     87             ENDIF
    7188          ENDDO
    7289       ENDDO
     
    83100       USE cloud_parameters
    84101       USE constants
     102       USE control_parameters
    85103       USE indices
    86104   
    87105       IMPLICIT NONE
    88106
    89        INTEGER :: i, j, k
    90        REAL    :: precipitation_rate
     107       INTEGER ::  i, j, k
     108       REAL    ::  dqdt_precip
    91109
    92110
     111       precipitation_rate(j,i) = 0.0
     112 
     113!
     114!--    Ghostpoints are included (although not needed for tend) to avoid a later
     115!--    exchange of these data for the precipitation amount/rate arrays
    93116       DO  k = nzb_2d(j,i)+1, nzt
    94117
    95118          IF ( ql(k,j,i) > ql_crit )  THEN
    96              precipitation_rate = prec_time_const * ( ql(k,j,i) - ql_crit )
     119             dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    97120          ELSE
    98              precipitation_rate = 0.0
     121             dqdt_precip = 0.0
    99122          ENDIF
    100           tend(k,j,i) = tend(k,j,i) - precipitation_rate
     123          tend(k,j,i) = tend(k,j,i) - dqdt_precip
     124
     125!
     126!--       Precipitation rate in (kg * 0.001) / m**2 / s (because 1kg gives 1 mm)
     127!          precipitation_rate(j,i) = precipitation_rate(j,i) + dqdt_precip * &
     128!                                                              dzw(k) * 0.001
     129          precipitation_rate(j,i) = 1.0
    101130
    102131       ENDDO
     132
     133!
     134!--    Sum up the precipitation amount (unit kg * 0.001 / m**2)
     135       IF ( intermediate_timestep_count == intermediate_timestep_count_max     &
     136            .AND. ( dt_do2d_xy-time_do2d_xy ) < precipitation_amount_interval )&
     137       THEN
     138          precipitation_amount(j,i) = precipitation_amount(j,i) + &
     139                                      precipitation_rate(j,i) * dt_3d
     140       ENDIF
    103141
    104142    END SUBROUTINE calc_precipitation_ij
  • palm/trunk/SOURCE/check_parameters.f90

    r63 r72  
    66! "by_user" allowed as initializing action, -data_output_ts,
    77! leapfrog with non-flat topography not allowed any more, loop_optimization
    8 ! and pt_reference are checked
     8! and pt_reference are checked,
     9! output of precipitation amount/rate and roughnes length + check
     10! possible negative humidities are avoided in initial profile
    911!
    1012! Former revisions:
     
    351353
    352354    IF ( cloud_physics  .AND.  .NOT. moisture )  THEN
    353        IF ( myid == 0 )  PRINT*, '+++ check_parameters: moisture =', &
    354                                  moisture, ' is not allowed with ',  &
    355                                  'cloud_physics=', cloud_physics
     355       IF ( myid == 0 )  PRINT*, '+++ check_parameters: cloud_physics =', &
     356                                 cloud_physics, ' is not allowed with ',  &
     357                                 'moisture =', moisture
     358       CALL local_stop
     359    ENDIF
     360
     361    IF ( precipitation  .AND.  .NOT.  cloud_physics )  THEN
     362       IF ( myid == 0 )  PRINT*, '+++ check_parameters: precipitation =', &
     363                                 precipitation, ' is not allowed with ',  &
     364                                 'cloud_physics =', cloud_physics
    356365       CALL local_stop
    357366    ENDIF
     
    570579                q_init(k) = q_init(k-1)
    571580             ENDIF
     581!
     582!--          Avoid negative humidities
     583             IF ( q_init(k) < 0.0 )  THEN
     584                q_init(k) = 0.0
     585             ENDIF
    572586          ENDDO
    573587
     
    11631177
    11641178!
     1179!-- Set the default value for the integration interval of precipitation amount
     1180    IF ( precipitation )  THEN
     1181       IF ( precipitation_amount_interval == 9999999.9 )  THEN
     1182          precipitation_amount_interval = dt_do2d_xy
     1183       ELSE
     1184          IF ( precipitation_amount_interval > dt_do2d_xy )  THEN
     1185             IF ( myid == 0 )  PRINT*, '+++ check_parameters: ',              &
     1186                                       'precipitation_amount_interval =',     &
     1187                                        precipitation_amount_interval,        &
     1188                                       ' must not be larger than dt_do2d_xy', &
     1189                                       ' = ', dt_do2d_xy   
     1190       CALL local_stop
     1191          ENDIF
     1192       ENDIF
     1193    ENDIF
     1194
     1195!
    11651196!-- Determine the number of output profiles and check whether they are
    11661197!-- permissible
     
    18401871             unit = 'conc'
    18411872
    1842           CASE ( 'u*', 't*', 'lwp*' )
     1873          CASE ( 'u*', 't*', 'lwp*', 'pra*', 'prr*', 'z0*' )
    18431874             IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
    18441875                IF ( myid == 0 )  THEN
     
    18561887                CALL local_stop
    18571888             ENDIF
     1889             IF ( TRIM( var ) == 'pra*'  .AND.  .NOT. precipitation )  THEN
     1890                IF ( myid == 0 )  THEN
     1891                   PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
     1892                                '" requires precipitation = .TRUE.'
     1893                ENDIF
     1894                CALL local_stop
     1895             ENDIF
     1896             IF ( TRIM( var ) == 'pra*'  .AND.  j == 1 )  THEN
     1897                IF ( myid == 0 )  THEN
     1898                   PRINT*, '+++ check_parameters: temporal averaging of ', &
     1899                           ' precipitation amount "', TRIM( var ),         &
     1900                           '" not possible'
     1901                ENDIF
     1902                CALL local_stop
     1903             ENDIF
     1904             IF ( TRIM( var ) == 'prr*'  .AND.  .NOT. precipitation )  THEN
     1905                IF ( myid == 0 )  THEN
     1906                   PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
     1907                                '" requires precipitation = .TRUE.'
     1908                ENDIF
     1909                CALL local_stop
     1910             ENDIF
     1911
     1912
    18581913             IF ( TRIM( var ) == 'u*'   )  unit = 'm/s'
    18591914             IF ( TRIM( var ) == 't*'   )  unit = 'K'
    18601915             IF ( TRIM( var ) == 'lwp*' )  unit = 'kg/kg*m'
     1916             IF ( TRIM( var ) == 'pra*' )  unit = 'mm'
     1917             IF ( TRIM( var ) == 'prr*' )  unit = 'mm/s'
     1918             IF ( TRIM( var ) == 'z0*'  )  unit = 'm'
    18611919
    18621920          CASE ( 'p', 'pt', 'u', 'v', 'w' )
  • palm/trunk/SOURCE/data_output_2d.f90

    r4 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Output of precipitation amount/rate and roughness length
    77!
    88! Former revisions:
     
    257257                ENDIF
    258258
     259             CASE ( 'pra*_xy' )        ! 2d-array / integral quantity => no av
     260                CALL exchange_horiz_2d( precipitation_amount )
     261                DO  i = nxl-1, nxr+1
     262                   DO  j = nys-1, nyn+1
     263                      local_pf(i,j,nzb+1) =  precipitation_amount(j,i)
     264                   ENDDO
     265                ENDDO
     266                precipitation_amount = 0.0   ! reset for next integ. interval
     267                resorted = .TRUE.
     268                two_d = .TRUE.
     269                level_z(nzb+1) = zu(nzb+1)
     270
     271             CASE ( 'prr*_xy' )        ! 2d-array
     272                IF ( av == 0 )  THEN
     273                   CALL exchange_horiz_2d( precipitation_rate )
     274                   DO  i = nxl-1, nxr+1
     275                      DO  j = nys-1, nyn+1
     276                         local_pf(i,j,nzb+1) =  precipitation_rate(j,i)
     277                      ENDDO
     278                   ENDDO
     279                ELSE
     280                   CALL exchange_horiz_2d( precipitation_rate_av )
     281                   DO  i = nxl-1, nxr+1
     282                      DO  j = nys-1, nyn+1
     283                         local_pf(i,j,nzb+1) =  precipitation_rate_av(j,i)
     284                      ENDDO
     285                   ENDDO
     286                ENDIF
     287                resorted = .TRUE.
     288                two_d = .TRUE.
     289                level_z(nzb+1) = zu(nzb+1)
     290
    259291             CASE ( 'pt_xy', 'pt_xz', 'pt_yz' )
    260292                IF ( av == 0 )  THEN
     
    419451                ENDIF
    420452                IF ( mode == 'xy' )  level_z = zw
     453
     454             CASE ( 'z0*_xy' )        ! 2d-array
     455                IF ( av == 0 ) THEN
     456                   DO  i = nxl-1, nxr+1
     457                      DO  j = nys-1, nyn+1
     458                         local_pf(i,j,nzb+1) =  z0(j,i)
     459                      ENDDO
     460                   ENDDO
     461                ELSE
     462                   DO  i = nxl-1, nxr+1
     463                      DO  j = nys-1, nyn+1
     464                         local_pf(i,j,nzb+1) =  z0_av(j,i)
     465                      ENDDO
     466                   ENDDO
     467                ENDIF
     468                resorted = .TRUE.
     469                two_d = .TRUE.
     470                level_z(nzb+1) = zu(nzb+1)
    421471
    422472             CASE DEFAULT
  • palm/trunk/SOURCE/impact_of_latent_heat.f90

    r39 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! precipitation_rate renamed dqdt_precip
    77!
    88! Former revisions:
     
    5252
    5353       INTEGER ::  i, j, k
    54        REAL    :: precipitation_rate
     54       REAL    ::  dqdt_precip
    5555
    5656 
     
    6060
    6161                IF ( ql(k,j,i) > ql_crit )  THEN
    62                    precipitation_rate = prec_time_const * &
    63                                         ( ql(k,j,i) - ql_crit )
     62                   dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    6463                ELSE
    65                    precipitation_rate = 0.0
     64                   dqdt_precip = 0.0
    6665                ENDIF
    67                 tend(k,j,i) = tend(k,j,i) + precipitation_rate * l_d_cp * &
    68                                             pt_d_t(k)
     66                tend(k,j,i) = tend(k,j,i) + dqdt_precip * l_d_cp * pt_d_t(k)
    6967
    7068             ENDDO
     
    8785       IMPLICIT NONE
    8886
    89        INTEGER :: i, j, k
    90        REAL    :: precipitation_rate
     87       INTEGER ::  i, j, k
     88       REAL    ::  dqdt_precip
    9189
    9290
     
    9492
    9593          IF ( ql(k,j,i) > ql_crit )  THEN
    96              precipitation_rate = prec_time_const * ( ql(k,j,i) - ql_crit )
     94             dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    9795          ELSE
    98              precipitation_rate = 0.0
     96             dqdt_precip = 0.0
    9997          ENDIF
    100           tend(k,j,i) = tend(k,j,i) + precipitation_rate * l_d_cp * pt_d_t(k)
     98          tend(k,j,i) = tend(k,j,i) + dqdt_precip * l_d_cp * pt_d_t(k)
    10199
    102100       ENDDO
  • palm/trunk/SOURCE/init_3d_model.f90

    r63 r72  
    88! -----------------
    99! New initializing action "by_user" calls user_init_3d_model,
    10 ! ts_value is allocated, +module netcdf_control,
     10! precipitation_amount/rate, ts_value are allocated, +module netcdf_control,
    1111! initial velocities at nzb+1 are regarded for volume
    1212! flow control in case they have been set zero before (to avoid small timesteps)
     
    4040    USE arrays_3d
    4141    USE averaging
     42    USE cloud_parameters
    4243    USE constants
    4344    USE control_parameters
     
    157158!--          Liquid water content
    158159             ALLOCATE ( ql_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
     160!
     161!--          Precipitation amount and rate (only needed if output is switched)
     162             ALLOCATE( precipitation_amount(nys-1:nyn+1,nxl-1:nxr+1), &
     163                       precipitation_rate(nys-1:nyn+1,nxl-1:nxr+1) )
    159164          ENDIF
    160165
     
    642647
    643648!
    644 !--    Treating cloud physics, liquid water content is zero at beginning of
    645 !--    the simulation
    646        IF ( cloud_physics )  ql = 0.0
     649!--    Treating cloud physics, liquid water content and precipitation amount
     650!--    are zero at beginning of the simulation
     651       IF ( cloud_physics )  THEN
     652          ql = 0.0
     653          IF ( precipitation )  precipitation_amount = 0.0
     654       ENDIF
    647655
    648656!
  • palm/trunk/SOURCE/modules.f90

    r63 r72  
    55! Actual revisions:
    66! -----------------
    7 ! +array rif_wall
     7! +arrays precipitation_amount, precipitation_rate, precipitation_rate_av,
     8! rif_wall, z0_av
    89! +loop_optimization, netcdf_64bit_3d, zu_s_inner, zw_w_inner, id_var_zusi_*,
    910! id_var_zwwi_*, ts_value, u_nzb_p1_for_vfc, v_nzb_p1_for_vfc, pt_reference,
    10 ! use_pt_reference,
     11! use_pt_reference, precipitation_amount_interval
    1112! +age_m in particle_type
    1213! -data_output_ts, dots_n
     
    128129!------------------------------------------------------------------------------!
    129130
    130     REAL, DIMENSION(:,:), ALLOCATABLE ::  lwp_av, ts_av, us_av
     131    REAL, DIMENSION(:,:), ALLOCATABLE ::  lwp_av, precipitation_rate_av, &
     132                                          ts_av, us_av, z0_av
    131133
    132134    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: &
     
    156158    REAL, DIMENSION(:), ALLOCATABLE :: hydro_press, pt_d_t, t_d_pt
    157159
     160    REAL, DIMENSION(:,:), ALLOCATABLE ::  precipitation_amount, &
     161                                          precipitation_rate
     162
    158163    SAVE
    159164
     
    211216    CHARACTER (LEN=8)   ::  run_date, run_time
    212217    CHARACTER (LEN=9)   ::  simulated_time_chr
    213     CHARACTER (LEN=12)  ::  version = 'PALM   3.1c'
     218    CHARACTER (LEN=12)  ::  version = 'PALM   3.2'
    214219    CHARACTER (LEN=16)  ::  loop_optimization = 'default', &
    215220                            momentum_advec = 'pw-scheme', &
     
    333338             overshoot_limit_u = 0.0, overshoot_limit_v = 0.0, &
    334339             overshoot_limit_w = 0.0, particle_maximum_age = 9999999.9, &
    335              phi = 55.0, prandtl_number = 1.0, pt_reference = 9999999.9, &
     340             phi = 55.0, prandtl_number = 1.0, &
     341             precipitation_amount_interval = 9999999.9, &
     342             pt_reference = 9999999.9, &
    336343             pt_slope_offset = 0.0, pt_surface = 300.0, &
    337344             pt_surface_initial_change = 0.0, q_surface = 0.0, &
  • palm/trunk/SOURCE/parin.f90

    r63 r72  
    44! Actual revisions:
    55! -----------------
    6 ! +dt_max, netcdf_64bit_3d in d3par, +loop_optimization, pt_reference in
    7 ! inipar, -data_output_ts
     6! +dt_max, netcdf_64bit_3d, precipitation_amount_interval in d3par,
     7! +loop_optimization, pt_reference in inipar, -data_output_ts
    88!
    99! Former revisions:
     
    105105                       mg_switch_to_pe0_level, netcdf_64bit, netcdf_64bit_3d, &
    106106                       ngsrb, normalizing_region, nsor, nz_do3d, omega_sor, &
    107                        prandtl_number, profile_columns, profile_rows, psolver, &
     107                       prandtl_number, precipitation_amount_interval, &
     108                       profile_columns, profile_rows, psolver, &
    108109                       rayleigh_damping_factor, rayleigh_damping_height, &
    109110                       residual_limit, restart_time, section_xy, section_xz, &
  • palm/trunk/SOURCE/production_e.f90

    r57 r72  
    910910!--                of the eddy diffusivity by km = u* * kappa * zp / phi_m.
    911911          !$OMP PARALLEL DO PRIVATE( ku, kv )
    912           DO  i = nxl, nxr
    913              DO  j = nys, nyn
     912          DO  i = nxl, nxr+1
     913             DO  j = nys, nyn+1
    914914
    915915                ku = nzb_u_inner(j,i)+1
  • palm/trunk/SOURCE/read_3d_binary.f90

    r51 r72  
    44! Actual revisions:
    55! -----------------
    6 ! +rif_wall
     6! +precipitation_amount, precipitation_rate_av, rif_wall, z0_av
    77!
    88! Former revisions:
     
    2929    USE arrays_3d
    3030    USE averaging
     31    USE cloud_parameters
    3132    USE control_parameters
    3233    USE cpulog
     
    219220             ALLOCATE( pr_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    220221             READ ( 13 )  pr_av
     222          CASE ( 'precipitation_amount' )
     223             READ ( 13 )  precipitation_amount
     224          CASE ( 'precipitation_rate_a' )
     225             ALLOCATE( precipitation_rate_av(nys-1:nyn+1,nxl-1:nxr+1) )
     226             READ ( 13 )  precipitation_rate_av
    221227          CASE ( 'pt' )
    222228             READ ( 13 )  pt
     
    336342          CASE ( 'z0' )
    337343             READ ( 13 )  z0
     344          CASE ( 'z0_av' )
     345             ALLOCATE( z0_av(nys-1:nyn+1,nxl-1:nxr+1) )
     346             READ ( 13 )  z0_av
    338347
    339348          CASE ( 'cross_linecolors' )
  • palm/trunk/SOURCE/sum_up_3d_data.f90

    r4 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +sum-up of precipitation rate and roughness length (prr*, z0*)
    77!
    88! Former revisions:
     
    8080                pr_av = 0.0
    8181
     82             CASE ( 'prr*' )
     83                IF ( .NOT. ALLOCATED( precipitation_rate_av ) )  THEN
     84                   ALLOCATE( precipitation_rate_av(nys-1:nyn+1,nxl-1:nxr+1) )
     85                ENDIF
     86                precipitation_rate_av = 0.0
     87
    8288             CASE ( 'pt' )
    8389                IF ( .NOT. ALLOCATED( pt_av ) )  THEN
     
    163169                ENDIF
    164170                w_av = 0.0
     171
     172             CASE ( 'z0*' )
     173                IF ( .NOT. ALLOCATED( z0_av ) )  THEN
     174                   ALLOCATE( z0_av(nys-1:nyn+1,nxl-1:nxr+1) )
     175                ENDIF
     176                z0_av = 0.0
    165177
    166178             CASE DEFAULT
     
    239251             ENDDO
    240252
     253          CASE ( 'pr*' )
     254             DO  i = nxl-1, nxr+1
     255                DO  j = nys-1, nyn+1
     256                   precipitation_rate_av(j,i) = precipitation_rate_av(j,i) + &
     257                                                precipitation_rate(j,i)
     258                ENDDO
     259             ENDDO
     260
    241261          CASE ( 'pt' )
    242262             IF ( .NOT. cloud_physics ) THEN
     
    372392             ENDDO
    373393
     394          CASE ( 'z0*' )
     395             DO  i = nxl-1, nxr+1
     396                DO  j = nys-1, nyn+1
     397                   z0_av(j,i) = z0_av(j,i) + z0(j,i)
     398                ENDDO
     399             ENDDO
     400
    374401          CASE DEFAULT
    375402!
  • palm/trunk/SOURCE/write_3d_binary.f90

    r51 r72  
    44! Actual revisions:
    55! -----------------
    6 ! +rif_wall
     6! +precipitation_amount, precipitation_rate_av, rif_wall, z0_av
    77!
    88! Former revisions:
     
    2929    USE arrays_3d
    3030    USE averaging
     31    USE cloud_parameters
    3132    USE control_parameters
    3233    USE cpulog
     
    9394       WRITE ( 14 )  'pr_av               ';  WRITE ( 14 )  pr_av
    9495    ENDIF
     96    IF ( ALLOCATED( precipitation_amount ) )  THEN
     97       WRITE ( 14 )  'precipitation_amount';  WRITE ( 14 )  precipitation_amount
     98    ENDIF
     99    IF ( ALLOCATED( precipitation_rate_av ) )  THEN
     100       WRITE ( 14 )  'precipitation_rate_a';  WRITE ( 14 )  &
     101                                                           precipitation_rate_av
     102    ENDIF
    95103    WRITE ( 14 )  'pt                  ';  WRITE ( 14 )  pt
    96104    IF ( ALLOCATED( pt_av ) )  THEN
     
    195203    WRITE ( 14 )  'w_m                 ';  WRITE ( 14 )  w_m
    196204    WRITE ( 14 )  'z0                  ';  WRITE ( 14 )  z0
     205    IF ( ALLOCATED( z0_av ) )  THEN
     206       WRITE ( 14 )  'z0_av               ';  WRITE ( 14 )  z0_av
     207    ENDIF
    197208
    198209    WRITE ( 14 )  'cross_linecolors    ';  WRITE ( 14 )  cross_linecolors
  • palm/trunk/UTIL/interpret_config.f90

    r69 r72  
    11 PROGRAM interpret_config
    22
    3 !-------------------------------------------------------------------------------!
     3!------------------------------------------------------------------------------!
     4! Actual revisions:
     5! -----------------
     6! mrun environment variables are read from NAMELIST instead of using GETENV.
     7! Variables are allways assigned a value, also if they already got one. These
     8! values are re-assigned later in mrun.
     9!
     10! Former revisions:
     11! -----------------
     12! $Id$
     13!
     14! 28/02/07 - Siggi - empty lines in configuration file are accepted
     15! 01/11/05 - Siggi - s2b-Feld erlaubt den Wert locopt
     16! 29/06/05 - Siggi - Fehlermeldung ins englische uebertragen und ergaenzt
     17! 29/04/05 - Siggi - extin wird auch fuer Input-Dateien ausgegeben
     18! 18/11/97 - Siggi - Komma in 2010-FORMAT hinzugefuegt
    419! 21/07/97 - Siggi - Erste Fassung
    5 ! 18/11/97 - Siggi - Komma in 2010-FORMAT hinzugefuegt
    6 ! 29/04/05 - Siggi - extin wird auch fuer Input-Dateien ausgegeben
    7 ! 29/06/05 - Siggi - Fehlermeldung ins englische uebertragen und ergaenzt
    8 ! 01/11/05 - Siggi - s2b-Feld erlaubt den Wert locopt
    9 ! 28/02/07 - Siggi - empty lines in configuration file are accepted
    10 !
    11 ! Letzte Aenderungen:
    12 ! -------------------
    13 !
    14 ! Beschreibung:
     20!
     21! Description:
    1522! -------------
    16 ! Interpretation der MRUN-Konfigurationsdatei. Ausgegeben werden ksh-Kommandos,
    17 ! die anschliessend von MRUN ausgefuehrt werden muessen.
    18 !-------------------------------------------------------------------------------!
     23! This program reads the mrun-configuration file .mrun.config and outputs
     24! its content in form of ksh-commands, which can then be executed by mrun.
     25! mrun is also able to directly read from the configuration file by using
     26! the option "-S" (but with much slower speed).
     27!------------------------------------------------------------------------------!
    1928
    2029    IMPLICIT NONE
    2130
    22     CHARACTER (LEN=1)   ::  bs = ACHAR( 92 )   ! backslash (auf vpp sonst n. druckbar)
     31    CHARACTER (LEN=1)   ::  bs = ACHAR( 92 )   ! backslash (auf vpp sonst n.
     32                                               ! druckbar)
    2333    CHARACTER (LEN=20)  ::  do_remote, do_trace, host, localhost
    2434    CHARACTER (LEN=100) ::  config_file, icf
    25     CHARACTER (LEN=300) ::  cond1, cond2, empty = REPEAT( ' ', 240 ), &
    26                             for_cond1, for_cond2, for_host, input_list, &
     35    CHARACTER (LEN=300) ::  cond1, cond2, empty = REPEAT( ' ', 240 ),       &
     36                            for_cond1, for_cond2, for_host, input_list,     &
    2737                            iolist, output_list, s1, s2, s2a, s2b, s2c, s3, &
    28                             s3cond, s4, s5, s6, value, value_mrun,&
    29                             var, zeile
    30 
    31     INTEGER ::  dummy, i, icomment = 0, icond1, icond2, idatver = 0, iec = 0, &
    32                 ienvvar = 0, ifor_cond1, ifor_cond2, ifor_host, ihost, &
     38                            s3cond, s4, s5, s6, value, value_mrun, var, zeile
     39
     40    INTEGER ::  dummy, i, icomment = 0, icond1, icond2, idatver = 0, iec = 0,  &
     41                ienvvar = 0, ifor_cond1, ifor_cond2, ifor_host, ihost,         &
    3342                iic = 0, iicf, iin = 0, iinput_list, il, ilocalhost,  ioc = 0, &
    34                 ios, iout = 0, ioutput_list, is1, is2, is2a, is2b, is2c, &
    35                 is3, is3cond, is4, is5, is6, ivalue, ivalue_mrun, ivar, izeile
     43                ios, iout = 0, ioutput_list, is1, is2, is2a, is2b, is2c,       &
     44                is3, is3cond, is4, is5, is6, ivalue, ivar, izeile
    3645
    3746    LOGICAL ::  found
    3847
    39     NAMELIST /mrun_environment/  cond1, cond2, config_file, do_remote, do_trace, &
    40                                  host, input_list, icf, localhost, output_list
     48    NAMELIST /mrun_environment/  cond1, cond2, config_file, do_remote,       &
     49                                 do_trace, host, input_list, icf, localhost, &
     50                                 output_list
    4151
    4252
     
    5363    ioutput_list = LEN_TRIM( output_list )
    5464
    55 !    CALL local_getenv( 'cond1', 5, cond1, icond1 )
    56 !    CALL local_getenv( 'cond2', 5, cond2, icond2 )
    57 !    CALL local_getenv( 'config_file', 11, config_file, il )
    58 !    CALL local_getenv( 'do_remote', 9, do_remote, dummy )
    59 !    CALL local_getenv( 'do_trace', 8, do_trace, dummy )
    60 !    CALL local_getenv( 'host', 4, host, ihost )
    61 !    CALL local_getenv( 'input_list', 10, input_list, iinput_list )
    62 !    CALL local_getenv( 'interpreted_config_file', 23, icf, iicf )
    63 !    CALL local_getenv( 'localhost', 9, localhost, ilocalhost )
    64 !    CALL local_getenv( 'output_list', 11, output_list, ioutput_list )
    6565    iolist = input_list(1:iinput_list) // output_list(1:ioutput_list)
    6666
     
    8989
    9090       IF ( LEN_TRIM( zeile ) == 0 )  THEN
     91
    9192          CONTINUE
     93
    9294       ELSEIF ( zeile(1:1) == '#' )  THEN
     95
    9396          icomment = icomment + 1
     97
    9498       ELSEIF ( zeile(1:1) == '%' )  THEN
     99
    95100          ienvvar = ienvvar + 1
    96101          i = INDEX( zeile, ' ' )
     
    98103          ivar = i - 2
    99104
    100 !
    101 !--       Achtung: Auf hpmuk und vpp sind nur die Variablen bekannt, die
    102 !--       von MRUN exportiert wurden!
    103 !          CALL local_getenv( var, ivar, value_mrun, ivalue_mrun )
    104           value_mrun = ''
    105           ivalue_mrun = 1
    106 
    107 !
    108 !--       Variable bekommt nur dann neuen Wert, wenn ihr per Shellscript-
    109 !--       Option noch keiner zugewiesen wurde
    110           IF ( value_mrun(1:ivalue_mrun) == ''  .OR. &
    111                value_mrun(1:ivalue_mrun) == '0' )  THEN
     105          zeile(1:i) = empty(1:i)
     106          zeile = ADJUSTL( zeile )
     107          i = INDEX( zeile, ' ' )
     108          value = zeile(1:i-1)
     109          ivalue = i - 1
     110
     111          zeile(1:i) = empty(1:i)
     112          zeile = ADJUSTL( zeile )
     113          i = INDEX( zeile, ' ' )
     114
     115          IF ( i /= 1 )  THEN
     116             for_host = zeile(1:i-1)
     117             ifor_host = i - 1
    112118
    113119             zeile(1:i) = empty(1:i)
    114120             zeile = ADJUSTL( zeile )
    115121             i = INDEX( zeile, ' ' )
    116              value = zeile(1:i-1)
    117              ivalue = i - 1
    118 
    119              zeile(1:i) = empty(1:i)
    120              zeile = ADJUSTL( zeile )
    121              i = INDEX( zeile, ' ' )
    122122
    123123             IF ( i /= 1 )  THEN
    124                 for_host = zeile(1:i-1)
    125                 ifor_host = i - 1
     124                for_cond1 = zeile(1:i-1)
     125                ifor_cond1 = i - 1
    126126
    127127                zeile(1:i) = empty(1:i)
     
    130130
    131131                IF ( i /= 1 )  THEN
    132                    for_cond1 = zeile(1:i-1)
    133                    ifor_cond1 = i - 1
    134 
    135                    zeile(1:i) = empty(1:i)
    136                    zeile = ADJUSTL( zeile )
    137                    i = INDEX( zeile, ' ' )
    138 
    139                    IF ( i /= 1 )  THEN
    140                       for_cond2 = zeile(1:i-1)
    141                       ifor_cond2 = i - 1
    142                    ELSE
    143                       for_cond2 = ''
    144                       ifor_cond2 = 0
    145                    ENDIF
     132                   for_cond2 = zeile(1:i-1)
     133                   ifor_cond2 = i - 1
    146134                ELSE
    147                    for_cond1 = ''
    148                    ifor_cond1 = 0
    149135                   for_cond2 = ''
    150136                   ifor_cond2 = 0
    151137                ENDIF
    152138             ELSE
    153                 for_host = ' '
    154                 ifor_host = 1
    155139                for_cond1 = ''
    156140                ifor_cond1 = 0
     
    158142                ifor_cond2 = 0
    159143             ENDIF
     144          ELSE
     145             for_host = ' '
     146             ifor_host = 1
     147             for_cond1 = ''
     148             ifor_cond1 = 0
     149             for_cond2 = ''
     150             ifor_cond2 = 0
     151          ENDIF
     152          IF ( do_trace(1:4) == 'true' )  THEN
     153             PRINT*,'var="',var(1:ivar),'"'
     154             PRINT*,'value="',value(1:ivalue),'"'
     155             PRINT*,'for_host="',for_host(1:ifor_host),'"'
     156             PRINT*,'for_cond1="',for_cond1(1:ifor_cond1),'"'
     157             PRINT*,'for_cond2="',for_cond2(1:ifor_cond2),'"'
     158          ENDIF
     159!
     160!--       Geltungsbereich pruefen und evtl. Variable ausgeben
     161          IF ( for_host == ' '  .OR.  ( &
     162               for_host(1:ifor_host) == host(1:ihost)  .AND. &
     163               for_cond1(1:ifor_cond1) == cond1(1:icond1)  .AND. &
     164               for_cond2(1:ifor_cond2) == cond2(1:icond2) &
     165                                      )  .OR. ( &
     166               INDEX( iolist, for_host(1:ifor_host) ) /= 0 &
     167                                              ) )  THEN
     168
     169!
     170!--          Zuerst Doppelpunkte durch Blanks ersetzen (aber doppelt
     171!--          auftretende Doppelpunkte durch einen Doppelpunkt)
     172             i = 0
     173             DO
     174                i = i + 1
     175                IF ( i > ivalue )  EXIT
     176                IF ( value(i:i) == ':' )  THEN
     177                   IF ( value(i+1:i+1) == ':' )  THEN
     178                      value = value(1:i) // value(i+2:ivalue)
     179                      ivalue = ivalue - 1
     180                   ELSE
     181                      value(i:i) = ' '
     182                   ENDIF
     183                ENDIF
     184             ENDDO
     185
     186!
     187!--          Variable ausgeben
     188             WRITE (2,2200)  var(1:ivar), bs, value(1:ivalue), bs, &
     189                             var(1:ivar)
     190 2200        FORMAT ('eval ',A,'=',A,'"',A,A,'"'/'export ',A)
     191
    160192             IF ( do_trace(1:4) == 'true' )  THEN
    161                 PRINT*,'var="',var(1:ivar),'"'
    162                 PRINT*,'value="',value(1:ivalue),'"'
    163                 PRINT*,'for_host="',for_host(1:ifor_host),'"'
    164                 PRINT*,'for_cond1="',for_cond1(1:ifor_cond1),'"'
    165                 PRINT*,'for_cond2="',for_cond2(1:ifor_cond2),'"'
    166              ENDIF
    167 !
    168 !--          Geltungsbereich pruefen und evtl. Variable ausgeben
    169              IF ( for_host == ' '  .OR.  ( &
    170                   for_host(1:ifor_host) == host(1:ihost)  .AND. &
    171                   for_cond1(1:ifor_cond1) == cond1(1:icond1)  .AND. &
    172                   for_cond2(1:ifor_cond2) == cond2(1:icond2) &
    173                                          )  .OR. ( &
    174                   INDEX( iolist, for_host(1:ifor_host) ) /= 0 &
    175                                                  ) )  THEN
    176 
    177 !
    178 !--             Zuerst Doppelpunkte durch Blanks ersetzen (aber doppelt
    179 !--             auftretende Doppelpunkte durch einen Doppelpunkt)
    180                 i = 0
    181                 DO
    182                    i = i + 1
    183                    IF ( i > ivalue )  EXIT
    184                    IF ( value(i:i) == ':' )  THEN
    185                       IF ( value(i+1:i+1) == ':' )  THEN
    186                          value = value(1:i) // value(i+2:ivalue)
    187                          ivalue = ivalue - 1
    188                       ELSE
    189                          value(i:i) = ' '
    190                       ENDIF
    191                    ENDIF
    192                 ENDDO
    193 
    194 !
    195 !--             Variable ausgeben
    196                 WRITE (2,2200)  var(1:ivar), bs, value(1:ivalue), bs, &
    197                                 var(1:ivar)
    198  2200           FORMAT ('eval ',A,'=',A,'"',A,A,'"'/'export ',A)
    199 
    200                 IF ( do_trace(1:4) == 'true' )  THEN
    201                    WRITE (2,2201)  bs, var(1:ivar), value(1:ivalue)
    202  2201              FORMAT ('printf "',A,'n*** ENVIRONMENT-VARIABLE ',A,' = ',A)
    203                 ENDIF
    204 
    205              ENDIF
    206 
    207 !
    208 !--          Variable "host" muss gleich ausgewertet werden, da mit ihr ein
    209 !--          neuer Geltungsbereich festgelegt wird
    210              IF ( var(1:ivar) == 'host' )  THEN
    211 
    212                 host  = value(1:ivalue)
    213                 ihost = ivalue
    214 
    215 !                IF ( host(1:ihost) /= localhost(1:ilocalhost) )  THEN
    216 !
    217 !                   SELECT CASE ( value(1:ivalue) )
    218 !
    219 !                      CASE ( 'cray','hpcs','t3d','t3eb','t3eh','unics','vpp' )
    220 !
    221 !                         dummy = 1
    222 !
    223 !                      CASE DEFAULT
    224 !
    225 !                         WRITE (2,2202)  bs, bs, value(1:ivalue), bs, bs
    226 ! 2202                    FORMAT ('printf "',A,'n +++ Auf Zielrechner ',A,'"',A,A,'" ist kein NQS-System vorhanden"'/ &
    227 !                                 'printf "',A,'n     Programmlauf kann deshalb nicht gestartet werden"'/ &
    228 !                                 'locat=nqs; exit')
    229 !                         STOP
    230 !
    231 !                   END SELECT
    232 !
    233 !                ENDIF
    234 
    235              ENDIF
     193                WRITE (2,2201)  bs, var(1:ivar), value(1:ivalue)
     194 2201           FORMAT ('printf "',A,'n*** ENVIRONMENT-VARIABLE ',A,' = ',A)
     195             ENDIF
     196
     197          ENDIF
     198
     199!
     200!--       Variable "host" muss gleich ausgewertet werden, da mit ihr ein
     201!--       neuer Geltungsbereich festgelegt wird
     202          IF ( var(1:ivar) == 'host' )  THEN
     203
     204             host  = value(1:ivalue)
     205             ihost = ivalue
     206
     207!             IF ( host(1:ihost) /= localhost(1:ilocalhost) )  THEN
     208!
     209!                SELECT CASE ( value(1:ivalue) )
     210!
     211!                   CASE ( 'cray','hpcs','t3d','t3eb','t3eh','unics','vpp' )
     212!
     213!                      dummy = 1
     214!
     215!                   CASE DEFAULT
     216!
     217!                      WRITE (2,2202)  bs, bs, value(1:ivalue), bs, bs
     218! 2202                 FORMAT ('printf "',A,'n +++ Auf Zielrechner ',A,'"',A,A,'" ist kein NQS-System vorhanden"'/ &
     219!                              'printf "',A,'n     Programmlauf kann deshalb nicht gestartet werden"'/ &
     220!                              'locat=nqs; exit')
     221!                      STOP
     222!
     223!                END SELECT
     224!
     225!             ENDIF
    236226
    237227          ENDIF
Note: See TracChangeset for help on using the changeset viewer.