Changeset 328 for palm/trunk


Ignore:
Timestamp:
May 28, 2009 12:13:56 PM (15 years ago)
Author:
letzel
Message:
  • initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now independent of turbulent_inflow (check_parameters, header, init_3d_model)
Location:
palm/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/DOC/app/chapter_3.9.html

    r220 r328  
    5050the end</span> of the precursor run. The profile information is then contained
    5151in the restart (binary) file created at the end of the precursor run
    52 and can be used by the main run. <span style="font-weight: bold;">It is very important that the mean profiles at the end of the precursor run are in a stationary or quasi-stationary state</span>, because otherwise it may not be justified to use them as constant profiles at the inflow. <span style="font-weight: bold;">Also, turbulence at the end of the precursor run should be fully developed. </span>Otherwise, the main run would need an additional spinup-time at the beginning to get the turbulence to its final stage.<br></li><li>In order to read the binary data from the precursor run, parameter <a href="chapter_4.1.html#initializing_actions">initializing_actions</a> = <span style="font-style: italic;">'read_data_for_recycling'</span> has to be set in the main run. &nbsp; .... &nbsp;
     52and can be used by the main run. <span style="font-weight: bold;">It is very important that the mean profiles at the end of the precursor run are in a stationary or quasi-stationary state</span>, because otherwise it may not be justified to use them as constant profiles at the inflow. <span style="font-weight: bold;">Also, turbulence at the end of the precursor run should be fully developed. </span>Otherwise, the main run would need an additional spinup-time at the beginning to get the turbulence to its final stage.<br></li><li>In order to read the binary data from the precursor run, parameter <a href="chapter_4.1.html#initializing_actions">initializing_actions</a> = <span style="font-style: italic;">'cyclic_fill'</span> has to be set in the main run. &nbsp; .... &nbsp;
    5353&nbsp; set bc_lr = 'dirichlet/radiation' ... &nbsp;
    5454conserve_volume_flow = .TRUE. ? ....</li><li>The main run allows to use a larger domain along x and y than in the precursor run ...</li><li>Recycling width should be equal to the domain size of the precursor run (or larger?)</li></ul><pre style="line-height: 100%;"><font style="font-size: 10pt;" size="2">#</font><br><font style="font-size: 10pt;" size="2">RUN_CONTROL<span style="font-weight: bold;">_O</span></font><font style="font-size: 10pt;" size="2"> out:loc:tr d3<span style="font-weight: bold;">o</span># ~/palm/current_version/JOBS/$fname/MONITORING <span style="font-weight: bold;">_</span></font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">o</span>_</font><font style="font-size: 10pt;" size="2">rc</font><br><font style="font-size: 10pt;" size="2">HEADER</font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">_O</span> out:loc:tr d3<span style="font-weight: bold;">o</span># ~/palm/current_version/JOBS/$fname/MONITORING <span style="font-weight: bold;">_</span></font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">o</span>_</font><font style="font-size: 10pt;" size="2">header</font><br><font style="font-size: 10pt;" size="2">PLOT1D_PAR<span style="font-weight: bold;">_O</span></font><font style="font-size: 10pt;" size="2"> out:loc:tr pr<span style="font-weight: bold;">o</span># ~/palm/current_version/JOBS/$fname/OUTPUT <span style="font-weight: bold;">_</span></font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">o</span>_</font><font style="font-size: 10pt;" size="2">pr_par</font><br><font style="font-size: 10pt;" size="2">PLOT1D_DATA</font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">_O</span> out:loc:tr pr<span style="font-weight: bold;">o</span># ~/palm/current_version/JOBS/$fname/OUTPUT <span style="font-weight: bold;">_</span></font><font style="font-size: 10pt;" size="2"><span style="font-weight: bold;">o</span>_</font><font style="font-size: 10pt;" size="2">pr_in</font><br></pre><br><hr>
  • palm/trunk/DOC/app/chapter_4.1.html

    r305 r328  
    63526352     
    63536353     
    6354       <p style="font-style: italic;">'read_data_for_recycling'</p><p style="font-style: normal; margin-left: 40px;">Here,
     6354      <p style="font-style: italic;">'cyclic_fill'</p><p style="font-style: normal; margin-left: 40px;">Here,
    635563553d-data from a precursor run are read by the initial (main) run. The
    63566356precursor run is allowed to have a smaller domain along x and y
    63576357compared with the main run. Also, different numbers of processors can
    63586358be used for these two runs. Limitations are that the precursor run must
    6359 use cyclic horizontal boundary conditions and that the subdomains of
    6360 the main run must not be larger than the subdomains of the precursor
    6361 run. If the total domain of the main run is larger than that of the precursor
     6359use cyclic horizontal boundary conditions and that the number of vertical grid points, <a href="#nz">nz</a>, must be same for the precursor run and the main run. If the total domain of the main run is larger than that of the precursor
    63626360run, the domain is filled by cyclic repetition&nbsp;of the (cyclic)
    63636361precursor data. This initialization method is recommended if a
     
    1497514973
    1497614974
    14977     <tr><td style="vertical-align: top;"><a name="turbulent_inflow"></a><span style="font-weight: bold;">turbulent_inflow</span></td><td style="vertical-align: top;">L</td><td style="vertical-align: top;"><span style="font-style: italic;">.F.</span></td><td style="vertical-align: top;">Generates a turbulent inflow at side boundaries using a turbulence recycling method.<br><br>Turbulent inflow is realized using the turbulence recycling method from Lund et al. (1998, J. Comp. Phys., <span style="font-weight: bold;">140</span>, 233-258) modified by Kataoka and Mizuno (2002, Wind and Structures, <span style="font-weight: bold;">5</span>, 379-392).<br><br>A turbulent inflow requires Dirichlet conditions at the respective inflow boundary. <span style="font-weight: bold;">So far, a turbulent inflow is realized from the left (west) side only, i.e. </span><a style="font-weight: bold;" href="chapter_4.1.html#bc_lr">bc_lr</a><span style="font-weight: bold;">&nbsp;=</span><span style="font-style: italic; font-weight: bold;"> 'dirichlet/radiation'</span><span style="font-weight: bold;"> is required!</span><br><br>The initial (quasi-stationary) turbulence field should be generated by a precursor run and used by setting <a href="chapter_4.1.html#initializing_actions">initializing_actions</a> =<span style="font-style: italic;"> 'read_data_for_recycling'</span>.<br><br>The distance of the recycling plane from the inflow boundary can be set with parameter <a href="chapter_4.1.html#recycling_width">recycling_width</a>.
     14975    <tr><td style="vertical-align: top;"><a name="turbulent_inflow"></a><span style="font-weight: bold;">turbulent_inflow</span></td><td style="vertical-align: top;">L</td><td style="vertical-align: top;"><span style="font-style: italic;">.F.</span></td><td style="vertical-align: top;">Generates a turbulent inflow at side boundaries using a turbulence recycling method.<br><br>Turbulent inflow is realized using the turbulence recycling method from Lund et al. (1998, J. Comp. Phys., <span style="font-weight: bold;">140</span>, 233-258) modified by Kataoka and Mizuno (2002, Wind and Structures, <span style="font-weight: bold;">5</span>, 379-392).<br><br>A turbulent inflow requires Dirichlet conditions at the respective inflow boundary. <span style="font-weight: bold;">So far, a turbulent inflow is realized from the left (west) side only, i.e. </span><a style="font-weight: bold;" href="chapter_4.1.html#bc_lr">bc_lr</a><span style="font-weight: bold;">&nbsp;=</span><span style="font-style: italic; font-weight: bold;"> 'dirichlet/radiation'</span><span style="font-weight: bold;"> is required!</span><br><br>The initial (quasi-stationary) turbulence field should be generated by a precursor run and used by setting <a href="chapter_4.1.html#initializing_actions">initializing_actions</a> =<span style="font-style: italic;"> 'cyclic_fill'</span>.<br><br>The distance of the recycling plane from the inflow boundary can be set with parameter <a href="chapter_4.1.html#recycling_width">recycling_width</a>.
    1497814976The heigth above ground above which the turbulence signal is not used
    1497914977for recycling and the width of the layer within&nbsp;the magnitude of
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r318 r328  
    4343Changed:
    4444-------
     45initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now
     46independent of turbulent_inflow (check_parameters, header, init_3d_model)
     47
    45482 NetCDF error numbers changed. (data_output_3d)
    4649
  • palm/trunk/SOURCE/check_parameters.f90

    r308 r328  
    44! Actual revisions:
    55! -----------------
     6! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill'
    67! Check for illegal entries in section_xy|xz|yz that exceed nz+1|ny+1|nx+1
    78! Coupling with independent precursor runs.
     
    531532
    532533    IF ( TRIM( initializing_actions ) /= 'read_restart_data'  .AND.  &
    533          TRIM( initializing_actions ) /= 'read_data_for_recycling' )  THEN
     534         TRIM( initializing_actions ) /= 'cyclic_fill' )  THEN
    534535!
    535536!--    No restart run: several initialising actions are possible
  • palm/trunk/SOURCE/header.f90

    r306 r328  
    44! Current revisions:
    55! -----------------
     6! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill'
    67! Coupling with independent precursor runs.
    78! Output of messages replaced by message handling routine.
     
    130131    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
    131132       run_classification = '3D - restart run'
    132     ELSEIF ( TRIM( initializing_actions ) == 'read_data_for_recycling' )  THEN
    133        run_classification = '3D - run using 3D - prerun data'
     133    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
     134       run_classification = '3D - run with cyclic fill of 3D - prerun data'
    134135    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
    135136       run_classification = '3D - run without 1D - prerun'
  • palm/trunk/SOURCE/init_3d_model.f90

    r292 r328  
    77! Current revisions:
    88! -----------------
     9! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now
     10! independent of turbulent_inflow
    911! Output of messages replaced by message handling routine.
    1012! Set the starting level and the vertical smoothing factor used for
     
    397399!-- Initialize model variables
    398400    IF ( TRIM( initializing_actions ) /= 'read_restart_data'  .AND.  &
    399          TRIM( initializing_actions ) /= 'read_data_for_recycling' )  THEN
     401         TRIM( initializing_actions ) /= 'cyclic_fill' )  THEN
    400402!
    401403!--    First model run of a possible job queue.
     
    925927
    926928    ELSEIF ( TRIM( initializing_actions ) == 'read_restart_data'  .OR.    &
    927              TRIM( initializing_actions ) == 'read_data_for_recycling' )  &
     929             TRIM( initializing_actions ) == 'cyclic_fill' )  &
    928930    THEN
    929931!
    930 !--    When reading data for initializing the recycling method, first read
     932!--    When reading data for cyclic fill of 3D prerun data, first read
    931933!--    some of the global variables from restart file
    932        IF ( TRIM( initializing_actions ) == 'read_data_for_recycling' )  THEN
     934       IF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
    933935
    934936          WRITE (9,*) 'before read_parts_of_var_list'
     
    938940          CALL local_flush( 9 )
    939941          CALL close_file( 13 )
    940 !
    941 !--       Store temporally and horizontally averaged vertical profiles to be
    942 !--       used as mean inflow profiles
    943           ALLOCATE( mean_inflow_profiles(nzb:nzt+1,5) )
    944 
    945           mean_inflow_profiles(:,1) = hom_sum(:,1,0)    ! u
    946           mean_inflow_profiles(:,2) = hom_sum(:,2,0)    ! v
    947           mean_inflow_profiles(:,4) = hom_sum(:,4,0)    ! pt
    948           mean_inflow_profiles(:,5) = hom_sum(:,8,0)    ! e
    949 
    950 !
    951 !--       Use these mean profiles for the inflow (provided that Dirichlet
    952 !--       conditions are used)
    953           IF ( inflow_l )  THEN
    954              DO  j = nys-1, nyn+1
    955                 DO  k = nzb, nzt+1
    956                    u(k,j,-1)  = mean_inflow_profiles(k,1)
    957                    v(k,j,-1)  = mean_inflow_profiles(k,2)
    958                    w(k,j,-1)  = 0.0
    959                    pt(k,j,-1) = mean_inflow_profiles(k,4)
    960                    e(k,j,-1)  = mean_inflow_profiles(k,5)
    961                 ENDDO
    962              ENDDO
    963           ENDIF
    964 
    965 !
    966 !--       Calculate the damping factors to be used at the inflow. For a
    967 !--       turbulent inflow the turbulent fluctuations have to be limited
    968 !--       vertically because otherwise the turbulent inflow layer will grow
    969 !--       in time.
    970           IF ( inflow_damping_height == 9999999.9 )  THEN
    971 !
    972 !--          Default: use the inversion height calculated by the prerun; if
    973 !--          this is zero, inflow_damping_height must be explicitly specified.
    974              IF ( hom_sum(nzb+6,pr_palm,0) /= 0.0 )  THEN
    975                 inflow_damping_height = hom_sum(nzb+6,pr_palm,0)
    976              ELSE
    977                 WRITE( message_string, * ) 'inflow_damping_height must be ', &
    978                      'explicitly specified because&the inversion height ', &
    979                      'calculated by the prerun is zero.'
    980                 CALL message( 'init_3d_model', 'PA0318', 1, 2, 0, 6, 0 )
    981              ENDIF
    982 
    983           ENDIF
    984 
    985           IF ( inflow_damping_width == 9999999.9 )  THEN
    986 !
    987 !--          Default for the transition range: one tenth of the undamped layer
    988              inflow_damping_width = 0.1 * inflow_damping_height
    989 
    990           ENDIF
    991 
    992           ALLOCATE( inflow_damping_factor(nzb:nzt+1) )
    993 
    994           DO  k = nzb, nzt+1
    995 
    996              IF ( zu(k) <= inflow_damping_height )  THEN
    997                 inflow_damping_factor(k) = 1.0
    998              ELSEIF ( zu(k) <= inflow_damping_height + inflow_damping_width ) &
    999              THEN
    1000                 inflow_damping_factor(k) = 1.0 -                               &
     942
     943!
     944!--       Initialization of the turbulence recycling method
     945          IF ( turbulent_inflow )  THEN
     946!
     947!--          Store temporally and horizontally averaged vertical profiles to be
     948!--          used as mean inflow profiles
     949             ALLOCATE( mean_inflow_profiles(nzb:nzt+1,5) )
     950
     951             mean_inflow_profiles(:,1) = hom_sum(:,1,0)    ! u
     952             mean_inflow_profiles(:,2) = hom_sum(:,2,0)    ! v
     953             mean_inflow_profiles(:,4) = hom_sum(:,4,0)    ! pt
     954             mean_inflow_profiles(:,5) = hom_sum(:,8,0)    ! e
     955
     956!
     957!--          Use these mean profiles for the inflow (provided that Dirichlet
     958!--          conditions are used)
     959             IF ( inflow_l )  THEN
     960                DO  j = nys-1, nyn+1
     961                   DO  k = nzb, nzt+1
     962                      u(k,j,-1)  = mean_inflow_profiles(k,1)
     963                      v(k,j,-1)  = mean_inflow_profiles(k,2)
     964                      w(k,j,-1)  = 0.0
     965                      pt(k,j,-1) = mean_inflow_profiles(k,4)
     966                      e(k,j,-1)  = mean_inflow_profiles(k,5)
     967                   ENDDO
     968                ENDDO
     969             ENDIF
     970
     971!
     972!--          Calculate the damping factors to be used at the inflow. For a
     973!--          turbulent inflow the turbulent fluctuations have to be limited
     974!--          vertically because otherwise the turbulent inflow layer will grow
     975!--          in time.
     976             IF ( inflow_damping_height == 9999999.9 )  THEN
     977!
     978!--             Default: use the inversion height calculated by the prerun; if
     979!--             this is zero, inflow_damping_height must be explicitly
     980!--             specified.
     981                IF ( hom_sum(nzb+6,pr_palm,0) /= 0.0 )  THEN
     982                   inflow_damping_height = hom_sum(nzb+6,pr_palm,0)
     983                ELSE
     984                   WRITE( message_string, * ) 'inflow_damping_height must be ',&
     985                        'explicitly specified because&the inversion height ', &
     986                        'calculated by the prerun is zero.'
     987                   CALL message( 'init_3d_model', 'PA0318', 1, 2, 0, 6, 0 )
     988                ENDIF
     989
     990             ENDIF
     991
     992             IF ( inflow_damping_width == 9999999.9 )  THEN
     993!
     994!--             Default for the transition range: one tenth of the undamped
     995!--             layer
     996                inflow_damping_width = 0.1 * inflow_damping_height
     997
     998             ENDIF
     999
     1000             ALLOCATE( inflow_damping_factor(nzb:nzt+1) )
     1001
     1002             DO  k = nzb, nzt+1
     1003
     1004                IF ( zu(k) <= inflow_damping_height )  THEN
     1005                   inflow_damping_factor(k) = 1.0
     1006                ELSEIF ( zu(k) <= inflow_damping_height +  &
     1007                                  inflow_damping_width )  THEN
     1008                   inflow_damping_factor(k) = 1.0 -                            &
    10011009                                           ( zu(k) - inflow_damping_height ) / &
    10021010                                           inflow_damping_width
    1003              ELSE
    1004                 inflow_damping_factor(k) = 0.0
    1005              ENDIF
    1006 
    1007           ENDDO
     1011                ELSE
     1012                   inflow_damping_factor(k) = 0.0
     1013                ENDIF
     1014
     1015             ENDDO
     1016          ENDIF
    10081017
    10091018       ENDIF
     
    10201029!--    Calculate the initial volume flow at the right and north boundary
    10211030       IF ( conserve_volume_flow  .AND.  &
    1022             TRIM( initializing_actions ) == 'read_data_for_recycling' )  THEN
     1031            TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
    10231032
    10241033          volume_flow_initial_l = 0.0
     
    10341043!
    10351044!--             Correction if velocity at nzb+1 has been set zero further above
     1045!--             Note: at present, u_nzb_p1_for_vfc is zero (maybe revise later)
    10361046                volume_flow_initial_l(1) = volume_flow_initial_l(1) + &
    10371047                                           u_nzb_p1_for_vfc(j)
     
    10481058!
    10491059!--             Correction if velocity at nzb+1 has been set zero further above
     1060!--             Note: at present, v_nzb_p1_for_vfc is zero (maybe revise later)
    10501061                volume_flow_initial_l(2) = volume_flow_initial_l(2) + &
    10511062                                           v_nzb_p1_for_vfc(i)
  • palm/trunk/SOURCE/read_var_list.f90

    r291 r328  
    718718!
    719719!-- Now read and check some control parameters and skip the rest
    720 !-- The total domain of the pre-run must not be smaller than the subdomain
    721 !-- of the current run, because the mapping of data from the pre-run does
    722 !-- not work for this case.
    723720    WRITE (9,*) 'wpovl: begin reading variables'
    724721    CALL local_flush( 9 )
Note: See TracChangeset for help on using the changeset viewer.