59 TYPE (t_region
),
POINTER :: regions(:)
65 CHARACTER(CHRLEN+9) :: fname
67 INTEGER :: ireg, ilev,
i,
j,
k, inoff, ijnoff, errorflag
70 INTEGER :: icoff, ijcoff
74 LOGICAL :: fileexists, fileappend
76 REAL(RFREAL) :: xc, yc, zc, xyzhexa(3,8)
77 REAL(RFREAL),
POINTER :: xyz(:,:)
79 REAL(RFREAL) :: xmn, xmx, ymn, ymx, zmn, zmx
80 REAL(RFREAL) :: probetime
86 global => regions(1)%global
89 'RFLO_OpenProbeFile.F90' )
93 IF (global%nProbes > 0)
THEN
94 DO iprobe=1,global%nProbes
98 IF (global%probePos(iprobe,1)>global%nRegions) &
99 CALL
errorstop( global,err_probe_location,__line__ )
103 IF (global%probePos(iprobe,1)<1)
THEN
105 IF (global%myProcid == 0 .AND. &
106 global%verbLevel >= verbose_med)
THEN
107 WRITE(stdout,
'(A,1X,A,I1,A)')solver_name,&
108 'Trying to find cell containing probe '&
110 WRITE(stdout,
'(A,1X,3(E14.5))')&
111 solver_name,global%probeXYZ(iprobe,2),&
112 global%probeXYZ(iprobe,3), &
113 global%probeXYZ(iprobe,4)
116 regs:
DO ireg = 1,global%nRegions
118 IF (regions(ireg)%procid==global%myProcid .AND. &
119 regions(ireg)%active==active)
THEN
121 ilev = regions(ireg)%currLevel
127 xyz => regions(ireg)%levels(ilev)%grid%xyz
140 corner(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
141 corner(2) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
142 corner(3) = indijk(
i ,
j+1,
k+1,inoff,ijnoff)
143 corner(4) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
144 corner(5) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
145 corner(6) = indijk(
i+1,
j ,
k+1,inoff,ijnoff)
146 corner(7) = indijk(
i+1,
j+1,
k+1,inoff,ijnoff)
147 corner(8) = indijk(
i+1,
j+1,
k ,inoff,ijnoff)
149 xmin =
min(xyz(1,corner(1)),xyz(1,corner(2)),xyz(1,corner(3)), &
150 xyz(1,corner(4)),xyz(1,corner(5)),xyz(1,corner(6)), &
151 xyz(1,corner(7)),xyz(1,corner(8)))
152 xmax =
max(xyz(1,corner(1)),xyz(1,corner(2)),xyz(1,corner(3)), &
153 xyz(1,corner(4)),xyz(1,corner(5)),xyz(1,corner(6)), &
154 xyz(1,corner(7)),xyz(1,corner(8)))
155 ymin =
min(xyz(2,corner(1)),xyz(2,corner(2)),xyz(2,corner(3)), &
156 xyz(2,corner(4)),xyz(2,corner(5)),xyz(2,corner(6)), &
157 xyz(2,corner(7)),xyz(2,corner(8)))
158 ymax =
max(xyz(2,corner(1)),xyz(2,corner(2)),xyz(2,corner(3)), &
159 xyz(2,corner(4)),xyz(2,corner(5)),xyz(2,corner(6)), &
160 xyz(2,corner(7)),xyz(2,corner(8)))
161 zmin =
min(xyz(3,corner(1)),xyz(3,corner(2)),xyz(3,corner(3)), &
162 xyz(3,corner(4)),xyz(3,corner(5)),xyz(3,corner(6)), &
163 xyz(3,corner(7)),xyz(3,corner(8)))
164 zmax =
max(xyz(3,corner(1)),xyz(3,corner(2)),xyz(3,corner(3)), &
165 xyz(3,corner(4)),xyz(3,corner(5)),xyz(3,corner(6)), &
166 xyz(3,corner(7)),xyz(3,corner(8)))
175 IF ((
xmin <= global%probeXYZ(iprobe,2)) .AND. &
176 (
xmax >= global%probeXYZ(iprobe,2)) .AND. &
177 (
ymin <= global%probeXYZ(iprobe,3)) .AND. &
178 (
ymax >= global%probeXYZ(iprobe,3)) .AND. &
179 (
zmin <= global%probeXYZ(iprobe,4)) .AND. &
180 (
zmax >= global%probeXYZ(iprobe,4)) )
THEN
184 IF (global%verbLevel >= verbose_med)
THEN
185 WRITE(stdout,
'(A,1X,A,2(I2,A),3(I2),A)')&
186 solver_name,
'Found probe ',iprobe, &
187 ' in block ',ireg,
' cell ',
i,
j,
k,&
189 WRITE(stdout,
'(A,1X,6(E14.5))')&
193 global%probePos(iprobe,1) = ireg
194 global%probePos(iprobe,2) =
i
195 global%probePos(iprobe,3) =
j
196 global%probePos(iprobe,4) =
k
214 CALL mpi_allreduce(global%probePos(iprobe,1),iprobemax,1,mpi_integer, &
215 mpi_max,global%mpiComm,global%mpierr)
216 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,__line__ )
217 global%probePos(iprobe,1) = iprobemax
224 IF (regions(global%probePos(iprobe,1))%procid==global%myProcid .AND. &
225 regions(global%probePos(iprobe,1))%active==active)
THEN
229 WRITE(fname,
'(A,I4.4)') trim(global%outDir)//trim(global%casename)//
'.prb_',iprobe
233 IF ((global%flowType==flow_unsteady .AND. &
234 global%currentTime>0._rfreal) .OR. &
235 (global%flowType==flow_steady .AND. global%currentIter>1))
THEN
236 INQUIRE(file=fname,exist=fileexists)
239 IF (global%verbLevel >= verbose_med)
THEN
240 print *,solver_name,
' Appending to ',trim(fname)
242 OPEN(if_probe+iprobe-1,file=fname,
form=
'formatted',
status=
'old', &
243 position=
'append',iostat=errorflag)
246 IF (global%verbLevel >= verbose_med)
THEN
247 print *,solver_name,
' Overwriting ',trim(fname)
249 OPEN(if_probe+iprobe-1,file=fname,
form=
'formatted', &
250 status=
'unknown',iostat=errorflag)
254 IF (global%verbLevel >= verbose_med)
THEN
255 WRITE(stdout,
'(A,A,A)')solver_name,
' Creating new ',trim(fname)
257 OPEN(if_probe+iprobe-1,file=fname,
form=
'formatted',
status=
'unknown', &
260 global%error = errorflag
261 IF (global%error /= 0) &
262 CALL
errorstop( global,err_file_open,__line__,
'File: '//trim(fname) )
266 ireg = global%probePos(iprobe,1)
267 ilev = regions(ireg)%currLevel
268 xyz => regions(ireg)%levels(ilev)%grid%xyz
272 i = global%probePos(iprobe,2)
273 j = global%probePos(iprobe,3)
274 k = global%probePos(iprobe,4)
275 corner(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
276 corner(2) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
277 corner(3) = indijk(
i ,
j+1,
k+1,inoff,ijnoff)
278 corner(4) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
279 corner(5) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
280 corner(6) = indijk(
i+1,
j ,
k+1,inoff,ijnoff)
281 corner(7) = indijk(
i+1,
j+1,
k+1,inoff,ijnoff)
282 corner(8) = indijk(
i+1,
j+1,
k ,inoff,ijnoff)
284 xyzhexa(1:3,1) = xyz(1:3,corner(1))
285 xyzhexa(1:3,2) = xyz(1:3,corner(2))
286 xyzhexa(1:3,3) = xyz(1:3,corner(3))
287 xyzhexa(1:3,4) = xyz(1:3,corner(4))
288 xyzhexa(1:3,5) = xyz(1:3,corner(5))
289 xyzhexa(1:3,6) = xyz(1:3,corner(6))
290 xyzhexa(1:3,7) = xyz(1:3,corner(7))
291 xyzhexa(1:3,8) = xyz(1:3,corner(8))
297 IF (.NOT. fileappend)
THEN
298 WRITE(if_probe+iprobe-1,1000,iostat=errorflag) &
299 global%probePos(iprobe,1),global%probePos(iprobe,2), &
300 global%probePos(iprobe,3),global%probePos(iprobe,4), &
302 global%error = errorflag
303 IF (global%error /= err_none) &
304 CALL
errorstop( global,err_file_write,__line__,
'File: '//trim(fname) )
310 IF ( global%flowType == flow_unsteady )
THEN
311 probetime = huge(1.0_rfreal)
313 backspace(if_probe+iprobe-1,iostat=errorflag)
314 IF (errorflag /= err_none)
EXIT loopunsteady
315 READ (if_probe+iprobe-1,fmt=*,iostat=errorflag) probetime
316 IF (errorflag /= err_none)
EXIT loopunsteady
317 IF (
floatless(probetime,global%currentTime))
THEN
320 backspace(if_probe+iprobe-1,iostat=errorflag)
321 IF (errorflag /= err_none)
EXIT loopunsteady
324 IF (global%verbLevel >= verbose_med)
THEN
325 print *,solver_name,
' positioned ',trim(fname),
' at time ',probetime
328 probeiter = huge(probeiter)
330 backspace(if_probe+iprobe-1,iostat=errorflag)
331 IF (errorflag /= err_none)
EXIT loopsteady
332 READ (if_probe+iprobe-1,fmt=*,iostat=errorflag) probeiter
333 IF (errorflag /= err_none)
EXIT loopsteady
334 IF (probeiter < global%currentIter)
THEN
337 backspace(if_probe+iprobe-1,iostat=errorflag)
338 IF (errorflag /= err_none)
EXIT loopsteady
356 1000
FORMAT(
'# probe data (iteration/time, density, u, v, w, p, T)',/, &
357 '# region ',i5,
', icell ',i5,
', jcell ',i5,
', kcell ',i5,/, &
358 '# x=',e13.5,
', y=',e13.5,
', z=',e13.5)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kpcbeg
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
subroutine registerfunction(global, funName, fileName)
int status() const
Obtain the status of the attribute.
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcend
subroutine centroidhexa(xyzNodes, cofgX, cofgY, cofgZ)
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcbeg
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE form
subroutine rflo_openprobefile(regions)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcend
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)