Changeset 4488 for palm/trunk/SOURCE/advec_v_pw.f90
- Timestamp:
- Apr 3, 2020 11:34:29 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/advec_v_pw.f90
r4360 r4488 1 1 !> @file advec_v_pw.f90 2 !------------------------------------------------------------------------------! 3 !------------------------------------------------------------------------------! 2 !--------------------------------------------------------------------------------------------------! 4 3 ! This file is part of the PALM model system. 5 4 ! 6 ! PALM is free software: you can redistribute it and/or modify it under the 7 ! terms of the GNU General Public License as published by the Free Software 8 ! Foundation, either version 3 of the License, or (at your option) any later 9 ! version. 5 ! PALM is free software: you can redistribute it and/or modify it under the terms of the GNU General 6 ! Public License as published by the Free Software Foundation, either version 3 of the License, or 7 ! (at your option) any later version. 10 8 ! 11 ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY 12 ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR13 ! A PARTICULAR PURPOSE. See the GNU GeneralPublic License for more details.9 ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 10 ! implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 11 ! Public License for more details. 14 12 ! 15 ! You should have received a copy of the GNU General Public License along with 16 ! PALM. If not, see<http://www.gnu.org/licenses/>.13 ! You should have received a copy of the GNU General Public License along with PALM. If not, see 14 ! <http://www.gnu.org/licenses/>. 17 15 ! 18 16 ! Copyright 1997-2020 Leibniz Universitaet Hannover 19 !------------------------------------------------------------------------------ !17 !--------------------------------------------------------------------------------------------------! 20 18 ! 21 19 ! Current revisions: … … 26 24 ! ----------------- 27 25 ! $Id$ 26 ! file re-formatted to follow the PALM coding standard 27 ! 28 ! 4360 2020-01-07 11:25:50Z suehring 28 29 ! Corrected "Former revisions" section 29 30 ! … … 38 39 ! ------------ 39 40 !> Advection term for v velocity-component using Piacsek and Williams. 40 !> Vertical advection at the first grid point above the surface is done with 41 !> normal centred differences, because otherwise no information from the surface42 !> would be communicated upwards dueto w=0 at K=nzb.43 !------------------------------------------------------------------------------ !41 !> Vertical advection at the first grid point above the surface is done with normal centred 42 !> differences, because otherwise no information from the surface would be communicated upwards due 43 !> to w=0 at K=nzb. 44 !--------------------------------------------------------------------------------------------------! 44 45 MODULE advec_v_pw_mod 45 46 … … 56 57 57 58 58 !------------------------------------------------------------------------------ !59 !--------------------------------------------------------------------------------------------------! 59 60 ! Description: 60 61 ! ------------ 61 62 !> Call for all grid points 62 !------------------------------------------------------------------------------ !63 63 !--------------------------------------------------------------------------------------------------! 64 SUBROUTINE advec_v_pw 64 65 65 USE arrays_3d,&66 66 USE arrays_3d, & 67 ONLY: ddzw, tend, u, v, w 67 68 68 USE control_parameters,&69 69 USE control_parameters, & 70 ONLY: u_gtrans, v_gtrans 70 71 71 USE grid_variables,&72 72 USE grid_variables, & 73 ONLY: ddx, ddy 73 74 74 USE indices,&75 75 USE indices, & 76 ONLY: nxl, nxr, nyn, nysv, nzb, nzt 76 77 77 78 USE kinds 78 79 79 80 80 81 IMPLICIT NONE 81 82 82 INTEGER(iwp) :: i !< grid index along x-direction 83 INTEGER(iwp) :: j !< grid index along y-direction 84 INTEGER(iwp) :: k !< grid index along z-direction 85 86 REAL(wp) :: gu !< Galilei-transformation velocity along x 87 REAL(wp) :: gv !< Galilei-transformation velocity along y 88 83 INTEGER(iwp) :: i !< grid index along x-direction 84 INTEGER(iwp) :: j !< grid index along y-direction 85 INTEGER(iwp) :: k !< grid index along z-direction 86 87 REAL(wp) :: gu !< Galilei-transformation velocity along x 88 REAL(wp) :: gv !< Galilei-transformation velocity along y 89 89 90 gu = 2.0_wp * u_gtrans 91 gv = 2.0_wp * v_gtrans 92 DO i = nxl, nxr 93 DO j = nysv, nyn 94 DO k = nzb+1, nzt 95 tend(k,j,i) = tend(k,j,i) - 0.25_wp * ( & 96 ( v(k,j,i+1) * ( u(k,j-1,i+1) + u(k,j,i+1) - gu ) & 97 - v(k,j,i-1) * ( u(k,j-1,i) + u(k,j,i) - gu ) ) * ddx & 98 + ( v(k,j+1,i) * ( v(k,j+1,i) + v(k,j,i) - gv ) & 99 - v(k,j-1,i) * ( v(k,j,i) + v(k,j-1,i) - gv ) ) * ddy & 100 + ( v(k+1,j,i) * ( w(k,j-1,i) + w(k,j,i) ) & 101 - v(k-1,j,i) * ( w(k-1,j-1,i) + w(k-1,j,i) ) ) & 102 * ddzw(k) & 103 ) 104 ENDDO 90 91 gu = 2.0_wp * u_gtrans 92 gv = 2.0_wp * v_gtrans 93 DO i = nxl, nxr 94 DO j = nysv, nyn 95 DO k = nzb+1, nzt 96 tend(k,j,i) = tend(k,j,i) - 0.25_wp * ( & 97 ( v(k,j,i+1) * ( u(k,j-1,i+1) + u(k,j,i+1) - gu ) & 98 - v(k,j,i-1) * ( u(k,j-1,i) + u(k,j,i) - gu ) ) * ddx & 99 + ( v(k,j+1,i) * ( v(k,j+1,i) + v(k,j,i) - gv ) & 100 - v(k,j-1,i) * ( v(k,j,i) + v(k,j-1,i) - gv ) ) * ddy & 101 + ( v(k+1,j,i) * ( w(k,j-1,i) + w(k,j,i) ) & 102 - v(k-1,j,i) * ( w(k-1,j-1,i) + w(k-1,j,i) ) ) * ddzw(k) & 103 ) 105 104 ENDDO 106 105 ENDDO 106 ENDDO 107 107 108 108 END SUBROUTINE advec_v_pw 109 109 110 110 111 !------------------------------------------------------------------------------ !111 !--------------------------------------------------------------------------------------------------! 112 112 ! Description: 113 113 ! ------------ 114 114 !> Call for grid point i,j 115 !------------------------------------------------------------------------------ !116 115 !--------------------------------------------------------------------------------------------------! 116 SUBROUTINE advec_v_pw_ij( i, j ) 117 117 118 USE arrays_3d,&119 118 USE arrays_3d, & 119 ONLY: ddzw, tend, u, v, w 120 120 121 USE control_parameters,&122 121 USE control_parameters, & 122 ONLY: u_gtrans, v_gtrans 123 123 124 USE grid_variables,&125 124 USE grid_variables, & 125 ONLY: ddx, ddy 126 126 127 USE indices,&128 127 USE indices, & 128 ONLY: nzb, nzt 129 129 130 130 USE kinds 131 131 132 132 133 133 IMPLICIT NONE 134 134 135 136 137 138 139 REAL(wp):: gu !< Galilei-transformation velocity along x140 REAL(wp):: gv !< Galilei-transformation velocity along y135 INTEGER(iwp) :: i !< grid index along x-direction 136 INTEGER(iwp) :: j !< grid index along y-direction 137 INTEGER(iwp) :: k !< grid index along z-direction 138 139 REAL(wp) :: gu !< Galilei-transformation velocity along x 140 REAL(wp) :: gv !< Galilei-transformation velocity along y 141 141 142 142 143 gu = 2.0_wp * u_gtrans 144 gv = 2.0_wp * v_gtrans 145 DO k = nzb+1, nzt 146 tend(k,j,i) = tend(k,j,i) - 0.25_wp * ( & 147 ( v(k,j,i+1) * ( u(k,j-1,i+1) + u(k,j,i+1) - gu ) & 148 - v(k,j,i-1) * ( u(k,j-1,i) + u(k,j,i) - gu ) ) * ddx & 149 + ( v(k,j+1,i) * ( v(k,j+1,i) + v(k,j,i) - gv ) & 150 - v(k,j-1,i) * ( v(k,j,i) + v(k,j-1,i) - gv ) ) * ddy & 151 + ( v(k+1,j,i) * ( w(k,j-1,i) + w(k,j,i) ) & 152 - v(k-1,j,i) * ( w(k-1,j-1,i) + w(k-1,j,i) ) ) & 153 * ddzw(k) & 154 ) 155 ENDDO 156 157 END SUBROUTINE advec_v_pw_ij 143 gu = 2.0_wp * u_gtrans 144 gv = 2.0_wp * v_gtrans 145 DO k = nzb+1, nzt 146 tend(k,j,i) = tend(k,j,i) - 0.25_wp * ( & 147 ( v(k,j,i+1) * ( u(k,j-1,i+1) + u(k,j,i+1) - gu ) & 148 - v(k,j,i-1) * ( u(k,j-1,i) + u(k,j,i) - gu ) ) * ddx & 149 + ( v(k,j+1,i) * ( v(k,j+1,i) + v(k,j,i) - gv ) & 150 - v(k,j-1,i) * ( v(k,j,i) + v(k,j-1,i) - gv ) ) * ddy & 151 + ( v(k+1,j,i) * ( w(k,j-1,i) + w(k,j,i) ) & 152 - v(k-1,j,i) * ( w(k-1,j-1,i) + w(k-1,j,i) ) ) * ddzw(k) & 153 ) 154 ENDDO 155 156 END SUBROUTINE advec_v_pw_ij 158 157 159 158 END MODULE advec_v_pw_mod
Note: See TracChangeset
for help on using the changeset viewer.