Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLO_ReadSolutionRegion.F90
Go to the documentation of this file.
1 ! *********************************************************************
2 ! * Rocstar Simulation Suite *
3 ! * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4 ! * *
5 ! * Illinois Rocstar LLC *
6 ! * Champaign, IL *
7 ! * www.illinoisrocstar.com *
8 ! * sales@illinoisrocstar.com *
9 ! * *
10 ! * License: See LICENSE file in top level of distribution package or *
11 ! * http://opensource.org/licenses/NCSA *
12 ! *********************************************************************
13 ! *********************************************************************
14 ! * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15 ! * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16 ! * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17 ! * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18 ! * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19 ! * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20 ! * Arising FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21 ! * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22 ! *********************************************************************
23 !******************************************************************************
24 !
25 ! Purpose: read in flow solution for one region (only mixture for now).
26 !
27 ! Description: the following solution formats are supported:
28 ! - RocfloMP ASCII
29 ! - RocfloMP binary.
30 !
31 ! Input: regions = dimensions of all regions
32 ! iReg = region number.
33 !
34 ! Output: region%levels%mixt%cv = conservative variables (current grid
35 ! level)
36 ! region%levels%grid%si/j/kVel = grid speeds (if grid is moving)
37 ! global%currentTime = physical time
38 ! global%resInit = initial residual
39 !
40 ! Notes: solution and grid speeds are read in only for the current grid level;
41 ! solution is also read in for all dummy cells. There is no transfer
42 ! of data to other processors.
43 !
44 !******************************************************************************
45 !
46 ! $Id: RFLO_ReadSolutionRegion.F90,v 1.3 2008/12/06 08:44:07 mtcampbe Exp $
47 !
48 ! Copyright: (c) 2001 by the University of Illinois
49 !
50 !******************************************************************************
51 
52 SUBROUTINE rflo_readsolutionregion( iReg,regions )
53 
54  USE moddatatypes
55  USE moddatastruct, ONLY : t_region
56  USE modglobal, ONLY : t_global
60  USE moderror
61  USE modparameters
62  IMPLICIT NONE
63 
64 #include "Indexing.h"
65 
66 ! ... parameters
67  INTEGER :: ireg
68 
69  TYPE(t_region), POINTER :: regions(:)
70 
71 ! ... loop variables
72  INTEGER :: i, j, k, n
73 
74 ! ... local variables
75  CHARACTER(2*CHRLEN+17) :: fname
76  CHARACTER(CHRLEN) :: msg, timestring
77 
78  INTEGER :: ilev, iregfile, ipc, jpc, kpc, ndumcells, ioff, ijoff, ijk
79  INTEGER :: idcbeg, jdcbeg, kdcbeg, idcend, jdcend, kdcend, ijkbeg, ijkend
80  INTEGER :: ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend, inoff, ijnoff
81  INTEGER :: ndimc, ndimn, errorflag
82  INTEGER, ALLOCATABLE :: ivar(:,:)
83 
84  REAL(RFREAL), POINTER :: cv(:,:), sivel(:), sjvel(:), skvel(:)
85  REAL(RFREAL), ALLOCATABLE :: rvar(:,:), cvfile(:,:), svelfile(:,:)
86 
87  TYPE(t_global), POINTER :: global
88 
89 !******************************************************************************
90 
91  global => regions(ireg)%global
92 
93  CALL registerfunction( global,'RFLO_ReadSolutionRegion',&
94  'RFLO_ReadSolutionRegion.F90' )
95 
96 ! allocate fixed-size temporary data arrays -----------------------------------
97 
98  ALLOCATE( ivar(5,1),stat=errorflag )
99  ALLOCATE( rvar(2,1),stat=errorflag )
100  global%error = errorflag
101  IF (global%error /= 0) CALL errorstop( global,err_allocate,__line__ )
102 
103 ! copy time to string ---------------------------------------------------------
104 
105  IF (global%flowType == flow_unsteady) THEN
106  WRITE(timestring,'(1PE11.5)') global%timeStamp
107  ELSE
108  WRITE(timestring,'(1PE11.5)') 0._rfreal
109  ENDIF
110 
111 ! open solution file (only if iReg=1) -----------------------------------------
112 
113  IF (ireg == 1) THEN
114 
115 ! - unsteady flow
116 
117  IF (global%flowType == flow_unsteady) THEN
118  IF (global%solutFormat == format_ascii) THEN
119  WRITE(fname,'(A,1PE11.5)') trim(global%inDir)//trim(global%casename)//'.sola_', &
120  global%timeStamp
121  OPEN(if_solut,file=fname,form='formatted',status='old',iostat=errorflag)
122  ELSE IF (global%solutFormat == format_binary) THEN
123  WRITE(fname,'(A,1PE11.5)') trim(global%inDir)//trim(global%casename)//'.solb_', &
124  global%timeStamp
125  OPEN(if_solut,file=fname,form='unformatted',status='old',iostat=errorflag)
126  ELSE
127  CALL errorstop( global,err_unknown_format,__line__ )
128  ENDIF
129 
130 ! - steady flow
131 
132  ELSE
133  IF (global%solutFormat == format_ascii) THEN
134  WRITE(fname,'(A,I6.6)') trim(global%inDir)//trim(global%casename)//'.sola_', &
135  global%currentIter
136  OPEN(if_solut,file=fname,form='formatted',status='old',iostat=errorflag)
137  ELSE IF (global%solutFormat == format_binary) THEN
138  WRITE(fname,'(A,I6.6)') trim(global%inDir)//trim(global%casename)//'.solb_', &
139  global%currentIter
140  OPEN(if_solut,file=fname,form='unformatted',status='old',iostat=errorflag)
141  ELSE
142  CALL errorstop( global,err_unknown_format,__line__ )
143  ENDIF
144  ENDIF
145 
146  global%error = errorflag
147  IF (global%error /= 0) &
148  CALL errorstop( global,err_file_open,__line__,'File: '//trim(fname) )
149 
150 ! - read time and initial residual
151 
152  CALL rflo_readdatafilereal( global,if_solut,global%solutFormat,2,1,rvar )
153 
154  IF (global%flowType==flow_unsteady .AND. global%currentTime>0._rfreal) THEN
155  IF (global%currentTime /= rvar(1,1)) THEN
156  WRITE(msg,1000) rvar(1,1),global%currentTime
157  CALL errorstop( global,err_time_solution,__line__,msg//' File: '//trim(fname) )
158  ENDIF
159  ELSE
160  global%currentTime = rvar(1,1)
161  ENDIF
162  global%resInit = rvar(2,1)
163 
164  ENDIF ! 1st region
165 
166 ! read solution data ----------------------------------------------------------
167 ! get dimensions and pointers
168 
169  ilev = regions(ireg)%currLevel
170  CALL rflo_getdimensdummy( regions(ireg),ilev,idcbeg,idcend, &
171  jdcbeg,jdcend,kdcbeg,kdcend )
172  CALL rflo_getcelloffset( regions(ireg),ilev,ioff,ijoff )
173  ijkbeg = indijk(idcbeg,jdcbeg,kdcbeg,ioff,ijoff)
174  ijkend = indijk(idcend,jdcend,kdcend,ioff,ijoff)
175  ndimc = ijkend - ijkbeg + 1
176 
177  CALL rflo_getdimensphysnodes( regions(ireg),ilev,ipnbeg,ipnend, &
178  jpnbeg,jpnend,kpnbeg,kpnend )
179  CALL rflo_getnodeoffset( regions(ireg),ilev,inoff,ijnoff )
180  ndimn = (regions(ireg)%levels(ilev)%grid%ipc+1)* &
181  (regions(ireg)%levels(ilev)%grid%jpc+1)* &
182  (regions(ireg)%levels(ilev)%grid%kpc+1)
183 
184 ! read region number and dimensions
185 
186  CALL rflo_readdatafileint( global,if_solut,global%solutFormat,5,1,ivar )
187  iregfile = ivar(1,1)
188  ipc = ivar(2,1)
189  jpc = ivar(3,1)
190  kpc = ivar(4,1)
191  ndumcells = ivar(5,1)
192 
193  IF (iregfile /= ireg) &
194  CALL errorstop( global,err_region_number,__line__,'File: '//trim(fname) )
195  IF ((ipc /= regions(ireg)%levels(ilev)%grid%ipc) .OR. &
196  (jpc /= regions(ireg)%levels(ilev)%grid%jpc) .OR. &
197  (kpc /= regions(ireg)%levels(ilev)%grid%kpc)) THEN
198  WRITE(msg,1005) ireg,ipc,jpc,kpc
199  CALL errorstop( global,err_grid_dimensions,__line__,msg )
200  ENDIF
201  IF (ndumcells /= regions(ireg)%nDumCells) THEN
202  WRITE(msg,1010) ireg,ndumcells,regions(ireg)%nDumCells
203  CALL errorstop( global,err_grid_dumcells,__line__,msg )
204  ENDIF
205 
206 ! read data
207 
208  ALLOCATE( cvfile(cv_mixt_neqs,ndimc),stat=errorflag )
209  global%error = errorflag
210  IF (global%error /= 0) CALL errorstop( global,err_allocate,__line__ )
211 
212  CALL rflo_readdatafilereal( global,if_solut,global%solutFormat, &
213  cv_mixt_neqs,ndimc,cvfile )
214 
215  IF (regions(ireg)%mixtInput%moveGrid .AND. &
216  trim(timestring)/='0.00000E+00') THEN
217  ALLOCATE( svelfile(3,ndimn),stat=errorflag )
218  global%error = errorflag
219  IF (global%error /= 0) CALL errorstop( global,err_allocate,__line__ )
220  CALL rflo_readdatafilereal( global,if_solut,global%solutFormat, &
221  3,ndimn,svelfile )
222  ENDIF
223 
224 ! copy solution into data structure
225 
226  cv => regions(ireg)%levels(ilev)%mixt%cv
227 
228  n = 0
229  DO k=kdcbeg,kdcend
230  DO j=jdcbeg,jdcend
231  DO i=idcbeg,idcend
232  n = n + 1
233  ijk = indijk(i,j,k,ioff,ijoff)
234  cv(cv_mixt_dens,ijk) = cvfile(1,n)
235  cv(cv_mixt_xmom,ijk) = cvfile(2,n)
236  cv(cv_mixt_ymom,ijk) = cvfile(3,n)
237  cv(cv_mixt_zmom,ijk) = cvfile(4,n)
238  cv(cv_mixt_ener,ijk) = cvfile(5,n)
239  ENDDO
240  ENDDO
241  ENDDO
242 
243  IF (regions(ireg)%mixtInput%moveGrid .AND. &
244  trim(timestring)/='0.00000E+00') THEN
245  sivel => regions(ireg)%levels(ilev)%grid%siVel
246  sjvel => regions(ireg)%levels(ilev)%grid%sjVel
247  skvel => regions(ireg)%levels(ilev)%grid%skVel
248  n = 0
249  DO k=kpnbeg,kpnend
250  DO j=jpnbeg,jpnend
251  DO i=ipnbeg,ipnend
252  n = n + 1
253  ijk = indijk(i,j,k,inoff,ijnoff)
254  sivel(ijk) = svelfile(1,n)
255  sjvel(ijk) = svelfile(2,n)
256  skvel(ijk) = svelfile(3,n)
257  ENDDO
258  ENDDO
259  ENDDO
260  ENDIF
261 
262  DEALLOCATE( cvfile,stat=errorflag )
263  global%error = errorflag
264  IF (global%error /= 0) CALL errorstop( global,err_deallocate,__line__ )
265 
266  IF (regions(ireg)%mixtInput%moveGrid .AND. &
267  trim(timestring)/='0.00000E+00') THEN
268  DEALLOCATE( svelfile,stat=errorflag )
269  global%error = errorflag
270  IF (global%error /= 0) CALL errorstop( global,err_deallocate,__line__ )
271  ENDIF
272 
273 ! finalize --------------------------------------------------------------------
274 
275  IF (ireg == global%nRegions) THEN
276  CLOSE(if_solut,iostat=errorflag)
277  global%error = errorflag
278  IF (global%error /= 0) &
279  CALL errorstop( global,err_file_close,__line__,'File: '//trim(fname) )
280  ENDIF
281 
282  CALL deregisterfunction( global )
283 
284 1000 FORMAT('Time in file is= ',1pe12.5,' but it should be= ',e12.5,'.')
285 1005 FORMAT('Region ',i5,', ipc= ',i6,', jpc= ',i6,', kpc= ',i6,'.')
286 1010 FORMAT('Region ',i5,', # dummy cells=',i2,' but should be= ',i1)
287 
288 END SUBROUTINE rflo_readsolutionregion
289 
290 !******************************************************************************
291 !
292 ! RCS Revision history:
293 !
294 ! $Log: RFLO_ReadSolutionRegion.F90,v $
295 ! Revision 1.3 2008/12/06 08:44:07 mtcampbe
296 ! Updated license.
297 !
298 ! Revision 1.2 2008/11/19 22:17:21 mtcampbe
299 ! Added Illinois Open Source License/Copyright
300 !
301 ! Revision 1.1 2004/11/29 21:25:17 wasistho
302 ! lower to upper case
303 !
304 ! Revision 1.10 2003/11/20 16:40:34 mdbrandy
305 ! Backing out RocfluidMP changes from 11-17-03
306 !
307 ! Revision 1.7 2003/05/15 02:57:01 jblazek
308 ! Inlined index function.
309 !
310 ! Revision 1.6 2002/10/23 18:43:24 jblazek
311 ! Changed temporary pointer arrays into allocatable arrays
312 ! in grid and solution I/O routines.
313 !
314 ! Revision 1.5 2002/10/12 03:20:50 jblazek
315 ! Replaced [io]stat=global%error with local errorFlag for Rocflo.
316 !
317 ! Revision 1.4 2002/09/20 22:22:35 jblazek
318 ! Finalized integration into GenX.
319 !
320 ! Revision 1.3 2002/09/05 17:40:19 jblazek
321 ! Variable global moved into regions().
322 !
323 ! Revision 1.2 2002/08/29 21:52:21 jblazek
324 ! Added I/O of grid speeds.
325 !
326 ! Revision 1.1 2002/06/07 16:40:36 jblazek
327 ! Grid & solution for all regions in one file.
328 !
329 !******************************************************************************
330 
331 
332 
333 
334 
335 
336 
**********************************************************************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 idcend
**********************************************************************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 jpnbeg
j indices k indices k
Definition: Indexing.h:6
**********************************************************************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 kpnbeg
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
int status() const
Obtain the status of the attribute.
Definition: Attribute.h:240
subroutine rflo_readsolutionregion(iReg, regions)
subroutine rflo_readdatafileint(global, fileId, form, nDim1, nDim2, ivar)
**********************************************************************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 jpnend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
subroutine rflo_getdimensdummy(region, iLev, idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend)
**********************************************************************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 kdcbeg
blockLoc i
Definition: read.cpp:79
**********************************************************************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 ipnbeg
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 idcbeg
**********************************************************************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
const NT & n
**********************************************************************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 jdcend
subroutine rflo_getdimensphysnodes(region, iLev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend)
j indices j
Definition: Indexing.h:6
**********************************************************************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 jdcbeg
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
**********************************************************************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 ipnend
subroutine rflo_readdatafilereal(global, fileId, form, nDim1, nDim2, var)