[5] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
---|
| 2 | <html><head> |
---|
[87] | 3 | <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252"><title>PALM chapter 3.5.5</title> <meta name="GENERATOR" content="StarOffice 7 (Win32)"> <meta name="AUTHOR" content="Siegfried Raasch"> <meta name="CREATED" content="20040802;14050943"> <meta name="CHANGED" content="20041117;12180008"> <meta name="KEYWORDS" content="parallel LES model"> <style> |
---|
[62] | 4 | <!-- |
---|
| 5 | @page { size: 21cm 29.7cm } |
---|
| 6 | --> |
---|
| 7 | </style></head> |
---|
| 8 | <body style="direction: ltr;" lang="en-US"><h3 style="line-height: 100%;"><font size="4">3.5.4 |
---|
| 9 | User-defined output quantities<br> |
---|
| 10 | </font></h3>A very typical request of users is the |
---|
| 11 | calculation and |
---|
[5] | 12 | output of |
---|
| 13 | quantities which are not part of PALM's standard output. The basic user |
---|
| 14 | interface includes a number of subroutines which allow the calculation |
---|
[87] | 15 | of user-defined quantities and output of these quantities as time series, (horizontally averaged) vertical profile, 2d cross |
---|
[62] | 16 | section or 3d volume data. The respective subroutines |
---|
[87] | 17 | contain sample code lines (written as comment lines) for defining, calculating and |
---|
[89] | 18 | output of such quantities.<br><br>Output times, averaging intervals, etc. are steered by the same variables as used for the standard PALM output quantities, e.g. <a href="chapter_4.2.html#dt_data_output">dt_data_output</a>.<br><br>The |
---|
[87] | 19 | rest of this chapter explains step-by-step how to modify/extend the |
---|
[89] | 20 | default file user_interface.f90 in order to generate the respective output.<br><br><br><h4>Output of vertical profiles</h4>This example shows the output of the |
---|
| 21 | quantity "turbulent resolved-scale horizontal momentum flux" (u*v*). If more than one user-defined |
---|
| 22 | quantity shall be output, the following steps have to be carried out in the |
---|
| 23 | same way for each of the quantities.<br><br><ol><li>The |
---|
| 24 | quantity has to be given a unique string identifier, e.g. <span style="font-style: italic;">'u*v*'</span>. |
---|
| 25 | This identifier must be different from the identifiers used for the |
---|
| 26 | PALM standard output (see list in description of parameter <a href="chapter_4.2.html#data_output_pr">data_output_pr</a>). |
---|
| 27 | To switch on output of this quantity, the user has to assign the string |
---|
| 28 | identifier to the parameter <a href="chapter_4.3.html#data_output_pr_user">data_output_pr_user</a>, |
---|
| 29 | eg.:<br><br><span style="font-family: monospace;"> |
---|
| 30 | data_output_pr_user</span> = <span style="font-style: italic;">'u*v*'</span>,<span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span><br><br></li><li>For |
---|
| 31 | the |
---|
| 32 | quantity, an identification number, a physical unit, and the vertical |
---|
| 33 | grid on which it is defined (u- or w-grid), has to be assigned (subroutine <a href="chapter_3.5.1.html#user_check_data_output_pr"><span style="font-family: monospace;">user_check_data_output_pr</span></a>):<span style="font-family: monospace;"><br><br> CASE ( |
---|
| 34 | 'u*v*' )<br></span><span style="font-family: monospace;"> index = pr_palm + <span style="color: rgb(255, 0, 0);">1<span style="color: rgb(0, 0, 0);"> |
---|
| 35 | |
---|
| 36 | |
---|
| 37 | ! identification number</span></span><br> dopr_index(var_count) = index<br> dopr_unit(var_count) = '<span style="color: rgb(255, 0, 0);">m2/s2</span>' |
---|
| 38 | |
---|
| 39 | ! physical unit<br> hom(:,2,index,:) = SPREAD( <span style="color: rgb(255, 0, 0);">zu</span>, 2, statistic_regions+1 ) ! vertical grid<br></span><br>Here only the those parts in <span style="color: rgb(255, 0, 0);">red</span> color have to be given by the user appropriately.<br>The identification number (<span style="font-family: Courier New,Courier,monospace;">index</span>) must be within the range [<span style="font-family: Courier New,Courier,monospace;"> pr_palm+1 , pr_palm+max_pr_user</span> ], where <span style="font-family: Courier New,Courier,monospace;">max_pr_user</span> is the number of user-defined profiles as given by parameter <a href="chapter_4.3.html#data_output_pr_user">data_output_pr_user</a> in the respective PALM run. The physical unit has to be given with respect to the NetCDF conventions. If no unit is given, |
---|
| 40 | PALM will abort. The vertical grid has to be either <span style="font-family: Courier New,Courier,monospace;">zu</span> (u-grid) or <span style="font-family: Courier New,Courier,monospace;">zw</span> (w-grid).<br><br></li><li>The quantity has to be calculated for all gridpoints (subroutine <a href="chapter_3.5.1.html#user_statistics">user_statistics</a>):<br><br><span style="font-family: monospace;"> !$OMP DO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> DO i = nxl, nxr</span><br style="font-family: monospace;"><span style="font-family: monospace;"> DO j = nys, nyn</span><br style="font-family: monospace;"><span style="font-family: monospace;"> DO k = nzb_s_outer(j,i)+1, nzt</span><br style="font-family: monospace;"><span style="font-family: monospace;"></span><span style="font-family: monospace;"></span><span style="font-family: monospace;"></span><span style="font-family: monospace;"> sums_l(k,pr_palm+<span style="color: rgb(255, 0, 0);">1</span>,tn) = sums_l(k,pr_palm+<span style="color: rgb(255, 0, 0);">1</span>,tn) + &</span><br style="font-family: monospace;"><span style="font-family: monospace;"> <span style="color: rgb(255, 0, 0);">( 0.5 * ( u(k,j,i) + u(k,j,i+1) ) - hom(k,1,1,sr) ) * &</span></span><br style="font-family: monospace; color: rgb(255, 0, 0);"><span style="font-family: monospace; color: rgb(255, 0, 0);"> |
---|
| 41 | ( 0.5 * ( v(k,j,i) + v(k,j+1,i) ) - hom(k,1,2,sr) ) * &</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 42 | * rmask(j,i,sr)<br> ENDDO<br> ENDDO<br> ENDDO<br></span><br style="font-family: monospace;">Once again, only those parts in <span style="color: rgb(255, 0, 0);">red</span> have to be adjusted by the user.<br>The |
---|
| 43 | turbulent resolved-scale momentum flux u*v* is defined as the product |
---|
| 44 | of the deviations of the horizontal velocities from their respective |
---|
| 45 | horizontally averaged mean values. These mean values are stored in |
---|
| 46 | array <span style="font-family: Courier New,Courier,monospace;">hom(..,1,1,sr)</span> and <span style="font-family: Courier New,Courier,monospace;">hom(..,1,2,sr)</span> for the u- and v-component, respectively. Since due to the staggered grid, <span style="font-family: Courier New,Courier,monospace;">u</span> and <span style="font-family: Courier New,Courier,monospace;">v</span> |
---|
| 47 | are not defined at the same gridpoints, they have to be interpolated |
---|
| 48 | appropriately (here to the center of the gridbox). The result of the |
---|
| 49 | calculation is stored in array <span style="font-family: Courier New,Courier,monospace;">sums_l</span>. |
---|
| 50 | The second index of this array is the identification number of the |
---|
| 51 | profile which must match the one given in the previous step 2.</li></ol><br><h4>Output of timeseries</h4>still to be added<br> <br><h4><span style="font-weight: bold;">Output of 2d cross sections or 3d volume data</span></h4><br>This example shows the output of the |
---|
[87] | 52 | quantity "square of the u-component" (<span style="font-weight: bold;">Note:</span> this quantity |
---|
[5] | 53 | could of course easily be calculated from the u-component by |
---|
| 54 | postprocessing the PALM output so that calculation within PALM is not |
---|
[87] | 55 | necessarily required). If more than one user-defined |
---|
[89] | 56 | quantity shall be output, the following steps have to be carried out in the |
---|
[62] | 57 | same way for each of the quantities.<br><br><ol><li>The |
---|
| 58 | quantity has to be given a unique string identifier, e.g. <span style="font-style: italic;">'u2'</span>. |
---|
[5] | 59 | This identifier must be different from the identifiers used for the |
---|
[62] | 60 | PALM standard output (see list in description of parameter <a href="chapter_4.2.html#data_output">data_output</a>). |
---|
| 61 | To switch on output of this quantity, the user has to assign the string |
---|
| 62 | identifier to the parameter <a href="chapter_4.3.html#data_output_user">data_output_user</a>, |
---|
| 63 | eg.:<br><br><span style="font-family: monospace;"> |
---|
| 64 | data_output_user</span> = <span style="font-style: italic;">'u2'</span>, <span style="font-style: italic;"> 'u2_xy_av'</span><br><br>The |
---|
| 65 | pure string <span style="font-style: italic;">'u2'</span> |
---|
[5] | 66 | switches on the output of instantaneous 3d volume data. Output of cross |
---|
| 67 | section data and time averaged data is switched on by additionally |
---|
[62] | 68 | appending the strings <span style="font-style: italic;">'_xy'</span>, |
---|
| 69 | <span style="font-style: italic;">'_xz'</span>, <span style="font-style: italic;">'_yz'</span>, and/or <span style="font-style: italic;">'_av'</span> (for a |
---|
| 70 | detailed explanation see parameter <a href="chapter_4.2.html#data_output">data_output</a>).<br><br></li><li>In |
---|
| 71 | order to store the quantities' grid point data within PALM, a 3d data |
---|
| 72 | array has to be declared in module <a href="chapter_3.5.1.html#user"><span style="font-family: monospace;">user</span></a>:<br><br><span style="font-family: monospace;"> REAL, |
---|
| 73 | DIMENSION(:,:,:), ALLOCATABLE :: u2, u2_av</span><br><br>The |
---|
| 74 | second array <span style="font-family: monospace;">u2_av</span> |
---|
[5] | 75 | is needed in case that output of time averaged data is requested. It is |
---|
| 76 | used to store the sum of the data of the respective time levels over |
---|
[62] | 77 | which the average has to be carried out.<br><br><br></li><li>The |
---|
| 78 | data array has to be allocated in subroutine <a href="chapter_3.5.1.html#user_init"><span style="font-family: monospace;">user_init</span></a>:<br><br><span style="font-family: monospace;"> |
---|
| 79 | ALLOCATE( u2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )</span><br><br>In |
---|
[5] | 80 | case that output of time averaged data is requested, the array |
---|
| 81 | containing the sum has possibly to be read from the restart file (local |
---|
[62] | 82 | filename <a href="chapter_3.4.html#BININ">BININ</a>) |
---|
| 83 | by executing the following code in <span style="font-family: monospace;">user_init</span>:<br><br><span style="font-family: monospace;"> |
---|
| 84 | IF ( initializing_actions == 'read_restart_data' ) |
---|
| 85 | THEN</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 86 | READ ( 13 ) field_chr</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 87 | DO WHILE ( TRIM( field_chr ) /= '*** end |
---|
| 88 | user ***' )</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 89 | SELECT CASE ( TRIM( field_chr ) )</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 90 | CASE ( 'u2_av' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 91 | ALLOCATE( |
---|
| 92 | u2_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 93 | READ ( 13 ) u2_av</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 94 | CASE DEFAULT</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 95 | PRINT*, |
---|
| 96 | '+++ user_init: unknown |
---|
[5] | 97 | variable named "', &</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 98 | |
---|
[62] | 99 | |
---|
| 100 | TRIM( |
---|
[5] | 101 | field_chr ), '" found in'</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 102 | PRINT*, |
---|
| 103 | ' |
---|
[62] | 104 | data from prior run on PE ', myid</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 105 | |
---|
| 106 | CALL local_stop</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 107 | END SELECT<br> |
---|
| 108 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 109 | ENDIF</span><br style="font-family: monospace;"><br><br></li><li>The |
---|
| 110 | quantity has to be given a unit (subroutine <a href="chapter_3.5.1.html#user_check_data_output"><span style="font-family: monospace;">user_check_data_output</span></a>):<br><br><span style="font-family: monospace;"> CASE ( |
---|
| 111 | 'u2' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 112 | unit = 'm2/s2'</span><br> <br>Otherwise, |
---|
| 113 | PALM will abort.<br><br><br></li><li>The |
---|
[5] | 114 | vertical grid on which the quantity is defined (given by the levels |
---|
| 115 | 'zu' or 'zw', on which the u- or w-component of the velocity are |
---|
[62] | 116 | defined) has to be specified for the NetCDF output files in subroutine <a href="chapter_3.5.1.html#user_define_netcdf_grid"><span style="font-family: monospace;">user_define_netcdf_grid</span></a>:<br><br><span style="font-family: monospace;"> |
---|
| 117 | CASE ( 'u2', 'u2_xy', 'u2_xz', 'u2_yz' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 118 | grid = 'zu'</span><br> <br>As |
---|
| 119 | the example shows, this grid has to be defined for the 3d volume data |
---|
| 120 | as well as for all of the three cross sections.<br><span style="font-family: monospace;"><br><br></span></li><li>After |
---|
| 121 | each timestep, the quantity has to be calculated at all gridpoints and |
---|
| 122 | to be stored. This has to be done in subroutine <a href="chapter_3.5.1#user_actions"><span style="font-family: monospace;">user_actions</span></a> |
---|
| 123 | at location 'after_integration':<br><br><span style="font-family: monospace;"> CASE |
---|
| 124 | ( 'after_integration' )</span><br style="font-family: monospace;"><span style="font-family: monospace;">!</span><br style="font-family: monospace;"><span style="font-family: monospace;">!-- |
---|
| 125 | Enter actions to be done after every time integration (before</span><br style="font-family: monospace;"><span style="font-family: monospace;">!-- |
---|
| 126 | data output)</span><br style="font-family: monospace;"><span style="font-family: monospace;">!-- |
---|
| 127 | Sample for user-defined output:</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 128 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 129 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 130 | DO k = nzb, nzt+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 131 | u2(k,j,i) = u(k,j,i)**2</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 132 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 133 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 134 | ENDDO</span><br><br> <br></li><li>In |
---|
[5] | 135 | case that output of time-averaged data is requested, the sum- and |
---|
| 136 | average-operations as well as the allocation of the sum-array have to |
---|
[62] | 137 | be carried out in subroutine <a href="chapter_3.5.1.html#user_3d_data_averaging"><span style="font-family: monospace;">user_3d_data_averaging</span></a>:<br><br><span style="font-family: monospace;"> |
---|
| 138 | IF ( mode == 'allocate' ) THEN<br> |
---|
| 139 | ...</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 140 | CASE ( 'u2' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 141 | IF ( .NOT. ALLOCATED( u2_av ) ) THEN</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 142 | ALLOCATE( u2_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 143 | ENDIF</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 144 | u2_av = 0.0<br> ...</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 145 | ELSEIF ( mode == 'sum' ) THEN<br> |
---|
| 146 | ...</span><br style="font-family: monospace;"><span style="font-family: monospace;"> CASE |
---|
| 147 | ( 'u2' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 148 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 149 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 150 | DO k = nzb, nzt+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 151 | u2_av(k,j,i) = u2_av(k,j,i) + u2(k,j,i)</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 152 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 153 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 154 | ENDDO<br> ...</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 155 | ELSEIF ( mode == 'average' ) THEN<br> |
---|
| 156 | ...</span><br style="font-family: monospace;"><span style="font-family: monospace;"> CASE |
---|
| 157 | ( 'u2' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 158 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 159 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 160 | DO k = nzb, nzt+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 161 | u2_av(k,j,i) = u2_av(k,j,i) / REAL( average_count_3d )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 162 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 163 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 164 | ENDDO</span><br><br> </li><li>For |
---|
| 165 | output of 2d cross sections, the gridpoint data of the quantity has to |
---|
| 166 | be resorted to array <span style="font-family: monospace;">local_pf</span> |
---|
| 167 | in subroutine <a href="chapter_3.5.1.html#user_data_output_2d"><span style="font-family: monospace;">user_data_output_2d</span></a>. |
---|
| 168 | Also the vertical grid, on which the quantity is defined, has to be set |
---|
| 169 | again:<br><br><span style="font-family: monospace;"> CASE |
---|
| 170 | ( 'u2_xy', 'u2_xz', 'u2_yz' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 171 | IF ( av == 0 ) THEN</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 172 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 173 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 174 | DO k = nzb, nzt+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 175 | local_pf(i,j,k) = u2(k,j,i)</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 176 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 177 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 178 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 179 | ELSE</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 180 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 181 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 182 | DO k = nzb, nzt+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 183 | local_pf(i,j,k) = u2_av(k,j,i)</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 184 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 185 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 186 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 187 | ENDIF</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 188 | grid = 'zu'</span><br> <br>The <span style="font-family: monospace;">ELSE</span> case is |
---|
| 189 | only needed in case that output of time-averaged data is requested.<br><br><br></li><li>For |
---|
| 190 | output of 3d volume data, the gridpoint data of the quantity has to be |
---|
| 191 | resorted to array <span style="font-family: monospace;">local_pf</span> |
---|
| 192 | in subroutine <a href="chapter_3.5.1.html#user_data_output_3d"><span style="font-family: monospace;">user_data_output_3d</span></a>. |
---|
| 193 | Also the vertical grid, on which the quantity is defined, has to be set |
---|
| 194 | again:<br><br><span style="font-family: monospace;"> CASE |
---|
| 195 | ( 'u2' )</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 196 | IF ( av == 0 ) THEN</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 197 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 198 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 199 | DO k = nzb, nz_do</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 200 | local_pf(i,j,k) = u2(k,j,i)</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 201 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 202 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 203 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 204 | ELSE</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 205 | DO i = nxl-1, nxr+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 206 | DO j = nys-1, nyn+1</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 207 | DO k = nzb, nz_do</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 208 | local_pf(i,j,k) = u2_av(k,j,i)</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 209 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 210 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 211 | ENDDO</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 212 | ENDIF</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 213 | grid = 'zu'</span><br><br>The <span style="font-family: monospace;">ELSE</span> case is |
---|
| 214 | only needed in case that output of time-averaged data is requested.<br><br><br></li><li>In |
---|
| 215 | case of job chains, the sum array has to be written to the (binary) |
---|
| 216 | restart file (local filename <a href="chapter_3.4.html#BINOUT">BINOUT</a>) |
---|
| 217 | in subroutine <a href="chapter_3.5.1.html#user_last_actions"><span style="font-family: monospace;">user_last_actions</span></a>:<br><br><span style="font-family: monospace;"> |
---|
| 218 | IF ( ALLOCATED( u2_av ) ) THEN</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
[5] | 219 | WRITE ( 14 ) |
---|
| 220 | 'u2_av |
---|
[62] | 221 | '; WRITE ( 14 ) u2_av</span><br style="font-family: monospace;"><span style="font-family: monospace;"> |
---|
| 222 | ENDIF</span><br><br>Otherwise, the calculated |
---|
| 223 | time-average may be wrong. </li></ol><hr> |
---|
| 224 | <p style="line-height: 100%;"><br><font color="#000080"><font color="#000080"><a href="chapter_3.5.3.html"><font color="#000080"><img src="left.gif" name="Grafik1" align="bottom" border="2" height="32" width="32"></font></a><a href="index.html"><font color="#000080"><img src="up.gif" name="Grafik2" align="bottom" border="2" height="32" width="32"></font></a><a href="chapter_3.5.5.html"><font color="#000080"><img style="border: 2px solid ; width: 32px; height: 32px;" alt="" src="right.gif" name="Grafik3"></font></a></font></font></p> |
---|
| 225 | <p style="line-height: 100%;"><i>Last |
---|
| 226 | change: </i> $Id: chapter_3.5.4.html 89 2007-05-25 12:08:31Z letzel $</p> |
---|
[5] | 227 | </body></html> |
---|