22 | | dopr_unit(var_count) = '[[span(m2s2 ,style=color: red)]]' ! physical unit |
23 | | hom(:,2,index,:) = SPREAD( [[span(zu ,style=color: red)]], 2, statistic_regions+1 ) ! vertical grid |
| 22 | dopr_unit(var_count) = 'm2/s2' ! physical unit |
| 23 | hom(:,2,index,:) = SPREAD( zu, 2, statistic_regions+1 ) ! vertical grid |
25 | | Here only the those parts in [[span(red ,style=color: blue)]] color have to be given by the user appropriately. |
26 | | The identification number (index) must be within the range [ {{{pr_palm+1 , pr_palm+max_pr_user}}} ], where {{{max_pr_user}}} is the number of user-defined profiles as given by parameter [../../userpar#data_output_pr_user data_output_pr_user] in the respective {{{PALM}}} run. The physical unit has to be given with respect to the netCDF conventions. If no unit is given, {{{PALM}}} will abort. The vertical grid has to be either {{{zu}}} ({{{u}}}-grid) or {{{zw}}} ({{{w}}}-grid). |
| 25 | |
| 26 | Here only the those parts in [[span(red ,style=color: red)]] color have to be given by the user appropriately.\\ |
| 27 | The identification number (index) must be within the range [ {{{pr_palm+1 , pr_palm+max_pr_user}}} ], where {{{max_pr_user}}} is the number of user-defined profiles as given by parameter [../../userpar#data_output_pr_user data_output_pr_user] in the respective {{{PALM}}} run. The physical unit has to be given with respect to the netCDF conventions. If no unit is given, {{{PALM}}} will abort. The vertical grid has to be either {{{zu}}} ({{{u}}}-grid) or {{{zw}}} ({{{w}}}-grid). |
| 30 | {{{ |
| 31 | !$OMP DO |
| 32 | DO i = nxl, nxr |
| 33 | DO j = nys, nyn |
| 34 | DO k = nzb_s_inner(j,i)+1, nzt |
| 35 | sums_l(k,pr_palm+1,tn) = sums_l(k,pr_palm+1,tn) + & |
| 36 | ( 0.5 * ( u(k,j,i) + u(k,j,i+1) ) - hom(k,1,1,sr) ) * & |
| 37 | ( 0.5 * ( v(k,j,i) + v(k,j+1,i) ) - hom(k,1,2,sr) ) & |
| 38 | * rmask(j,i,sr) |
| 39 | ENDDO |
| 40 | ENDDO |
| 41 | ENDDO |
30 | | !$OMP DO |
31 | | DO i = nxl, nxr |
32 | | DO j = nys, nyn |
33 | | DO k = nzb_s_inner(j,i)+1, nzt |
34 | | sums_l(k,pr_palm+1,tn) = sums_l(k,pr_palm+1,tn) + & |
35 | | ( 0.5 * ( u(k,j,i) + u(k,j,i+1) ) - hom(k,1,1,sr) ) * & |
36 | | ( 0.5 * ( v(k,j,i) + v(k,j+1,i) ) - hom(k,1,2,sr) ) & |
37 | | * rmask(j,i,sr) |
38 | | ENDDO |
39 | | ENDDO |
40 | | ENDDO |
41 | | |
42 | | Once again, only those parts in red have to be adjusted by the user. |
43 | | The turbulent resolved-scale momentum flux u*v* is defined as the product of the deviations of the horizontal velocities from their respective horizontally averaged mean values. These mean values are stored in array hom(..,1,1,sr) and hom(..,1,2,sr) for the u- and v-component, respectively. Since due to the staggered grid, u and v are not defined at the same gridpoints, they have to be interpolated appropriately (here to the center of the gridbox). The result of the calculation is stored in array sums_l. The second index of this array is the identification number of the profile which must match the one given in the previous step 2. |
| 43 | Once again, only those parts in red have to be adjusted by the user.\\ |
| 44 | The turbulent resolved-scale momentum flux ''u*v*'' is defined as the product of the deviations of the horizontal velocities from their respective horizontally averaged mean values. These mean values are stored in array {{{hom(..,1,1,sr)}}} and {{{hom(..,1,2,sr)}}} for the u- and v-component, respectively. Since due to the staggered grid, u and v are not defined at the same gridpoints, they have to be interpolated appropriately (here to the center of the gridbox). The result of the calculation is stored in array {{{sums_l}}}. The second index of this array is the identification number of the profile which must match the one given in the previous step 2. |