Changeset 328 for palm/trunk
- Timestamp:
- May 28, 2009 12:13:56 PM (15 years ago)
- Location:
- palm/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/DOC/app/chapter_3.9.html
r220 r328 50 50 the end</span> of the precursor run. The profile information is then contained 51 51 in 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. .... 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;">'cyclic_fill'</span> has to be set in the main run. .... 53 53 set bc_lr = 'dirichlet/radiation' ... 54 54 conserve_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 6352 6352 6353 6353 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, 6355 6355 3d-data from a precursor run are read by the initial (main) run. The 6356 6356 precursor run is allowed to have a smaller domain along x and y 6357 6357 compared with the main run. Also, different numbers of processors can 6358 6358 be 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 6359 use 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 6362 6360 run, the domain is filled by cyclic repetition of the (cyclic) 6363 6361 precursor data. This initialization method is recommended if a … … 14975 14973 14976 14974 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;"> =</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;"> =</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>. 14978 14976 The heigth above ground above which the turbulence signal is not used 14979 14977 for recycling and the width of the layer within the magnitude of -
palm/trunk/SOURCE/CURRENT_MODIFICATIONS
r318 r328 43 43 Changed: 44 44 ------- 45 initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now 46 independent of turbulent_inflow (check_parameters, header, init_3d_model) 47 45 48 2 NetCDF error numbers changed. (data_output_3d) 46 49 -
palm/trunk/SOURCE/check_parameters.f90
r308 r328 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill' 6 7 ! Check for illegal entries in section_xy|xz|yz that exceed nz+1|ny+1|nx+1 7 8 ! Coupling with independent precursor runs. … … 531 532 532 533 IF ( TRIM( initializing_actions ) /= 'read_restart_data' .AND. & 533 TRIM( initializing_actions ) /= ' read_data_for_recycling' ) THEN534 TRIM( initializing_actions ) /= 'cyclic_fill' ) THEN 534 535 ! 535 536 !-- No restart run: several initialising actions are possible -
palm/trunk/SOURCE/header.f90
r306 r328 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill' 6 7 ! Coupling with independent precursor runs. 7 8 ! Output of messages replaced by message handling routine. … … 130 131 IF ( TRIM( initializing_actions ) == 'read_restart_data' ) THEN 131 132 run_classification = '3D - restart run' 132 ELSEIF ( TRIM( initializing_actions ) == ' read_data_for_recycling' ) THEN133 run_classification = '3D - run using3D - prerun data'133 ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' ) THEN 134 run_classification = '3D - run with cyclic fill of 3D - prerun data' 134 135 ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 ) THEN 135 136 run_classification = '3D - run without 1D - prerun' -
palm/trunk/SOURCE/init_3d_model.f90
r292 r328 7 7 ! Current revisions: 8 8 ! ----------------- 9 ! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now 10 ! independent of turbulent_inflow 9 11 ! Output of messages replaced by message handling routine. 10 12 ! Set the starting level and the vertical smoothing factor used for … … 397 399 !-- Initialize model variables 398 400 IF ( TRIM( initializing_actions ) /= 'read_restart_data' .AND. & 399 TRIM( initializing_actions ) /= ' read_data_for_recycling' ) THEN401 TRIM( initializing_actions ) /= 'cyclic_fill' ) THEN 400 402 ! 401 403 !-- First model run of a possible job queue. … … 925 927 926 928 ELSEIF ( TRIM( initializing_actions ) == 'read_restart_data' .OR. & 927 TRIM( initializing_actions ) == ' read_data_for_recycling' ) &929 TRIM( initializing_actions ) == 'cyclic_fill' ) & 928 930 THEN 929 931 ! 930 !-- When reading data for initializing the recycling method, first read932 !-- When reading data for cyclic fill of 3D prerun data, first read 931 933 !-- some of the global variables from restart file 932 IF ( TRIM( initializing_actions ) == ' read_data_for_recycling' ) THEN934 IF ( TRIM( initializing_actions ) == 'cyclic_fill' ) THEN 933 935 934 936 WRITE (9,*) 'before read_parts_of_var_list' … … 938 940 CALL local_flush( 9 ) 939 941 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 - & 1001 1009 ( zu(k) - inflow_damping_height ) / & 1002 1010 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 1008 1017 1009 1018 ENDIF … … 1020 1029 !-- Calculate the initial volume flow at the right and north boundary 1021 1030 IF ( conserve_volume_flow .AND. & 1022 TRIM( initializing_actions ) == ' read_data_for_recycling' ) THEN1031 TRIM( initializing_actions ) == 'cyclic_fill' ) THEN 1023 1032 1024 1033 volume_flow_initial_l = 0.0 … … 1034 1043 ! 1035 1044 !-- 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) 1036 1046 volume_flow_initial_l(1) = volume_flow_initial_l(1) + & 1037 1047 u_nzb_p1_for_vfc(j) … … 1048 1058 ! 1049 1059 !-- 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) 1050 1061 volume_flow_initial_l(2) = volume_flow_initial_l(2) + & 1051 1062 v_nzb_p1_for_vfc(i) -
palm/trunk/SOURCE/read_var_list.f90
r291 r328 718 718 ! 719 719 !-- 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 subdomain721 !-- of the current run, because the mapping of data from the pre-run does722 !-- not work for this case.723 720 WRITE (9,*) 'wpovl: begin reading variables' 724 721 CALL local_flush( 9 )
Note: See TracChangeset
for help on using the changeset viewer.