69 TYPE(
dict_typ),
POINTER,
INTENT(IN) :: config
70 INTEGER ,
INTENT(IN) :: dir
79 ALLOCATE(this%data(1:mesh%GINUM,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%VNUM), &
81 this%data(:,:,:,:)=0.0
83 ALLOCATE(this%data(mesh%IMIN:mesh%IMAX,1:mesh%GJNUM,mesh%KMIN:mesh%KMAX,physics%VNUM), &
85 this%data(:,:,:,:)=0.0
87 ALLOCATE(this%data(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1:mesh%GKNUM, physics%VNUM), &
89 this%data(:,:,:,:)=0.0
93 CALL this%Error(
"InitBoundary_noslip",
"Unable to allocate memory.")
104 REAL ,
INTENT(IN) :: time
109 SELECT CASE(this%direction%GetType())
117 pvar%data4d(mesh%IMIN-i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%DENSITY) &
118 = pvar%data4d(mesh%IMIN+i-1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%DENSITY)
120 pvar%data4d(mesh%IMIN-i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%XVELOCITY) &
121 = -pvar%data4d(mesh%IMIN+i-1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%XVELOCITY)
123 pvar%data4d(mesh%IMIN-i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%YVELOCITY) &
124 = this%data(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%YVELOCITY)
125 IF (physics%ZVELOCITY.GT.0)
THEN
126 pvar%data4d(mesh%IMIN-i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY) &
127 = this%data(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY)
130 IF (physics%PRESSURE.GT.0)
THEN
131 pvar%data4d(mesh%IMIN-i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%PRESSURE) &
132 = pvar%data4d(mesh%IMIN+i-1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%PRESSURE)
139 pvar%data4d(mesh%IMAX+i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%DENSITY) &
140 = pvar%data4d(mesh%IMAX-i+1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%DENSITY)
142 pvar%data4d(mesh%IMAX+i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%XVELOCITY) &
143 = -pvar%data4d(mesh%IMAX-i+1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%XVELOCITY)
145 pvar%data4d(mesh%IMAX+i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%YVELOCITY) &
146 = this%data(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%YVELOCITY)
147 IF (physics%ZVELOCITY.GT.0)
THEN
148 pvar%data4d(mesh%IMAX+i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY) &
149 = this%data(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY)
152 IF (physics%PRESSURE.GT.0)
THEN
153 pvar%data4d(mesh%IMAX+i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%PRESSURE) &
154 = pvar%data4d(mesh%IMAX-i+1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,physics%PRESSURE)
161 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN-j,mesh%KMIN:mesh%KMAX,physics%DENSITY) &
162 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN+j-1,mesh%KMIN:mesh%KMAX,physics%DENSITY)
164 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN-j,mesh%KMIN:mesh%KMAX,physics%YVELOCITY) &
165 = -pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN+j-1,mesh%KMIN:mesh%KMAX,physics%YVELOCITY)
167 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN-j,mesh%KMIN:mesh%KMAX,physics%XVELOCITY) &
168 = this%data(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,physics%XVELOCITY)
169 IF (physics%ZVELOCITY.GT.0)
THEN
170 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN-j,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY) &
171 = this%data(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY)
174 IF (physics%PRESSURE.GT.0)
THEN
175 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN-j,mesh%KMIN:mesh%KMAX,physics%PRESSURE) &
176 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN+j-1,mesh%KMIN:mesh%KMAX,physics%PRESSURE)
183 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX+j,mesh%KMIN:mesh%KMAX,physics%DENSITY) &
184 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX-j+1,mesh%KMIN:mesh%KMAX,physics%DENSITY)
186 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX+j,mesh%KMIN:mesh%KMAX,physics%YVELOCITY) &
187 = -pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX-j+1,mesh%KMIN:mesh%KMAX,physics%YVELOCITY)
189 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX+j,mesh%KMIN:mesh%KMAX,physics%XVELOCITY) &
190 = this%data(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,physics%XVELOCITY)
191 IF (physics%ZVELOCITY.GT.0)
THEN
192 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX+j,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY) &
193 = this%data(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,physics%ZVELOCITY)
196 IF (physics%PRESSURE.GT.0)
THEN
197 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX+j,mesh%KMIN:mesh%KMAX,physics%PRESSURE) &
198 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMAX-j+1,mesh%KMIN:mesh%KMAX,physics%PRESSURE)
205 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN-k,physics%DENSITY) &
206 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%kMIN+k-1,physics%DENSITY)
208 IF (physics%ZVELOCITY.GT.0)
THEN
209 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN-k,physics%ZVELOCITY) &
210 = -pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN+k-1,physics%ZVELOCITY)
213 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN-k,physics%XVELOCITY) &
214 = this%data(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,physics%XVELOCITY)
215 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN-k,physics%YVELOCITY) &
216 = this%data(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,physics%YVELOCITY)
218 IF (physics%PRESSURE.GT.0)
THEN
219 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN-k,physics%PRESSURE) &
220 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN+k-1,physics%PRESSURE)
227 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX+k,physics%DENSITY) &
228 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX-k+1,physics%DENSITY)
230 IF (physics%ZVELOCITY.GT.0)
THEN
231 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX+k,physics%ZVELOCITY) &
232 = -pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX-k+1,physics%ZVELOCITY)
235 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX+k,physics%XVELOCITY) &
236 = this%data(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,physics%XVELOCITY)
237 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX+k,physics%YVELOCITY) &
238 = this%data(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,physics%YVELOCITY)
240 IF (physics%PRESSURE.GT.0)
THEN
241 pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX+k,physics%PRESSURE) &
242 = pvar%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMAX-k+1,physics%PRESSURE)
255 DEALLOCATE(this%data)
256 CALL this%Finalize_base()
integer, parameter noslip
reflecting, but with moving wall
Boundary module for fixed in/outflow conditions.
character(len=32), parameter boundcond_name
subroutine setboundarydata(this, Mesh, Physics, time, pvar)
Applies the fixed boundary condition.
subroutine finalize(this)
Destructor for fixed boundary conditions.
Boundary module for noslip conditions (see wikipedia )
subroutine initboundary_noslip(this, Mesh, Physics, dir, config)
Constructor for noslip boundary conditions.
Dictionary for generic data types.
derived class for compound of mesh arrays
integer, parameter east
named constant for eastern boundary
integer, parameter bottom
named constant for bottom boundary
integer, parameter south
named constant for southern boundary
integer, parameter top
named constant for top boundary
integer, parameter north
named constant for northern boundary
integer, parameter west
named constant for western boundary