66 CHARACTER(CHRLEN) :: &
67 RCSIdentString =
'$RCSfile: RFLO_ModForcesMoments.F90,v $ $Revision: 1.6 $'
100 #include "Indexing.h"
103 TYPE (t_region
) :: region
106 INTEGER :: ipatch,
i,
j,
k
110 INTEGER :: inbeg, inend, jnbeg, jnend, knbeg, knend, noff, inoff, ijnoff
112 REAL(RFREAL) :: boxxmin, boxxmax, boxymin, boxymax, boxzmin, boxzmax
114 REAL(RFREAL) :: fpx, fpy, fpz, fvx, fvy, fvz, mpx, mpy, mpz, mvx, mvy, mvz
115 REAL(RFREAL) :: sfx, sfy, sfz, sfm, xc, yc, zc, cp, cfx, cfy, cfz, ch
116 REAL(RFREAL),
POINTER :: xyz(:,:), sface(:,:), cface(:,:)
122 global => region%global
124 'RFLO_ModForcesMoments.F90')
128 ilev = region%currLevel
131 xref = global%forceRefXCoord
132 yref = global%forceRefYCoord
133 zref = global%forceRefZCoord
135 boxxmin = global%acBndBoxXmin
136 boxxmax = global%acBndBoxXmax
137 boxymin = global%acBndBoxYmin
138 boxymax = global%acBndBoxYmax
139 boxzmin = global%acBndBoxZmin
140 boxzmax = global%acBndBoxZmax
142 xyz => region%levels(ilev)%grid%xyz
146 global%forceCoeffs = 0._rfreal
147 global%momentCoeffs = 0._rfreal
151 DO ipatch = 1,region%nPatches
152 patch => region%levels(ilev)%patches(ipatch)
153 lbound =
patch%lbound
154 bctype =
patch%bcType
179 inbeg,inend,jnbeg,jnend,knbeg,knend )
185 IF (lbound==2 .OR. lbound==4 .OR. lbound==6)
THEN
191 IF (lbound==1 .OR. lbound==2)
THEN
192 sface => region%levels(ilev)%grid%si
193 cface => region%levels(ilev)%grid%cfcI
194 ELSE IF (lbound==3 .OR. lbound==4)
THEN
195 sface => region%levels(ilev)%grid%sj
196 cface => region%levels(ilev)%grid%cfcJ
197 ELSE IF (lbound==5 .OR. lbound==6)
THEN
198 sface => region%levels(ilev)%grid%sk
199 cface => region%levels(ilev)%grid%cfcK
204 xmin = huge( 1._rfreal )
205 xmax = -huge( 1._rfreal )
206 ymin = huge( 1._rfreal )
207 ymax = -huge( 1._rfreal )
208 zmin = huge( 1._rfreal )
209 zmax = -huge( 1._rfreal )
214 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
227 IF (((bctype>=bc_slipwall .AND. bctype<=bc_slipwall+bc_range) .OR. &
228 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
229 (bctype>=bc_injection .AND. bctype<=bc_injection+bc_range)) .AND. &
230 ((
xmin > boxxmin .AND.
xmax < boxxmax) .AND. &
231 (
ymin > boxymin .AND.
ymax < boxymax) .AND. &
232 (
zmin > boxzmin .AND.
zmax < boxzmax)))
THEN
240 sfx = sface(xcoord,ijkn)
241 sfy = sface(ycoord,ijkn)
242 sfz = sface(zcoord,ijkn)
243 sfm = sface(xyzmag,ijkn)
245 xc = cface(xcoord,ijkn)
246 yc = cface(ycoord,ijkn)
247 zc = cface(zcoord,ijkn)
251 IF (lbound==1 .OR. lbound==2)
THEN
254 ELSE IF (lbound==3 .OR. lbound==4)
THEN
257 ELSE IF (lbound==5 .OR. lbound==6)
THEN
261 i2d = indij(n1,n2,noff)
264 cfx =
patch%cf(xcoord,i2d)
265 cfy =
patch%cf(ycoord,i2d)
266 cfz =
patch%cf(zcoord,i2d)
271 fpx = fpx + cp*sfx*sfm
272 fpy = fpy + cp*sfy*sfm
273 fpz = fpz + cp*sfz*sfm
279 mpx = mpx - cp*(sfy*(zc - zref) + sfz*(yc - yref))*sfm
280 mpy = mpy + cp*(sfx*(zc - zref) - sfz*(xc - xref))*sfm
281 mpz = mpz + cp*(sfy*(xc - xref) - sfx*(yc - yref))*sfm
283 mvx = mvx - (cfy*(zc - zref) + cfz*(yc - yref))*sfm
284 mvy = mvy + (cfx*(zc - zref) - cfz*(xc - xref))*sfm
285 mvz = mvz + (cfy*(xc - xref) - cfx*(yc - yref))*sfm
292 patch%forceCoeffs(xcoord,forces_press) = fpx
293 patch%forceCoeffs(ycoord,forces_press) = fpy
294 patch%forceCoeffs(zcoord,forces_press) = fpz
296 patch%forceCoeffs(xcoord,forces_visc) = fvx
297 patch%forceCoeffs(ycoord,forces_visc) = fvy
298 patch%forceCoeffs(zcoord,forces_visc) = fvz
300 patch%momentCoeffs(xcoord,forces_press) = mpx
301 patch%momentCoeffs(ycoord,forces_press) = mpy
302 patch%momentCoeffs(zcoord,forces_press) = mpz
304 patch%momentCoeffs(xcoord,forces_visc) = mvx
305 patch%momentCoeffs(ycoord,forces_visc) = mvy
306 patch%momentCoeffs(zcoord,forces_visc) = mvz
308 global%forceCoeffs(xcoord,1) = global%forceCoeffs(xcoord,1) + fpx
309 global%forceCoeffs(ycoord,1) = global%forceCoeffs(ycoord,1) + fpy
310 global%forceCoeffs(zcoord,1) = global%forceCoeffs(zcoord,1) + fpz
311 global%forceCoeffs(xcoord,2) = global%forceCoeffs(xcoord,2) + fvx
312 global%forceCoeffs(ycoord,2) = global%forceCoeffs(ycoord,2) + fvy
313 global%forceCoeffs(zcoord,2) = global%forceCoeffs(zcoord,2) + fvz
314 global%momentCoeffs(xcoord,1) = global%momentCoeffs(xcoord,1) + mpx
315 global%momentCoeffs(ycoord,1) = global%momentCoeffs(ycoord,1) + mpy
316 global%momentCoeffs(zcoord,1) = global%momentCoeffs(zcoord,1) + mpz
317 global%momentCoeffs(xcoord,2) = global%momentCoeffs(xcoord,2) + mvx
318 global%momentCoeffs(ycoord,2) = global%momentCoeffs(ycoord,2) + mvy
319 global%momentCoeffs(zcoord,2) = global%momentCoeffs(zcoord,2) + mvz
359 REAL(RFREAL) :: ffact, mfact
360 REAL(RFREAL),
DIMENSION(12) :: globalvals, localvals
365 'RFLO_ModForcesMoments.F90')
369 ffact = 1.0_rfreal/global%forceRefArea
370 mfact = 1.0_rfreal/(global%forceRefArea*global%forceRefLength)
374 localvals(1:3) = global%forceCoeffs(xcoord:zcoord,1)
375 localvals(4:6) = global%forceCoeffs(xcoord:zcoord,2)
376 localvals(7:9) = global%momentCoeffs(xcoord:zcoord,1)
377 localvals(10:12) = global%momentCoeffs(xcoord:zcoord,2)
382 CALL mpi_allreduce( localvals,globalvals,
SIZE(localvals),mpi_rfreal,mpi_sum,&
383 global%mpiComm,global%mpierr )
384 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,&
387 globalvals = localvals
392 global%forceCoeffs(:,1) = ffact*globalvals(1:3)
393 global%forceCoeffs(:,2) = ffact*globalvals(4:6)
394 global%momentCoeffs(:,1) = mfact*globalvals(7:9)
395 global%momentCoeffs(:,2) = mfact*globalvals(10:12)
431 CHARACTER(CHRLEN+9) :: fname
434 REAL(RFREAL) :: fpco(3), fvco(3), mpco(3), mvco(3)
439 'RFLO_ModForcesMoments.F90')
443 IF (global%myProcid==masterproc)
THEN
445 fpco(1:3) = global%forceCoeffs(xcoord:zcoord,1)
446 fvco(1:3) = global%forceCoeffs(xcoord:zcoord,2)
447 mpco(1:3) = global%momentCoeffs(xcoord:zcoord,1)
448 mvco(1:3) = global%momentCoeffs(xcoord:zcoord,2)
450 IF (global%flowType == flow_steady)
THEN
451 WRITE(if_formom,1000,iostat=errorflag) global%currentIter, &
452 fpco(1:3),fvco(1:3),mpco(1:3),mvco(1:3)
454 WRITE(if_formom,1005,iostat=errorflag) global%currentTime, &
455 fpco(1:3),fvco(1:3),mpco(1:3),mvco(1:3)
458 global%error = errorflag
459 IF (global%error /= 0)
THEN
462 'force-moment coeffs file' )
467 IF (global%probeOpenClose)
THEN
468 WRITE(fname,
'(A)') trim(global%outDir)//trim(global%casename)//
'.fom'
470 OPEN( if_formom,file=fname,
form=
'FORMATTED',
status=
'OLD', &
480 1000
FORMAT(i6,12(1pe13.5))
481 1005
FORMAT(1pe14.7,12(1pe13.5))
514 CHARACTER(CHRLEN+9) :: fname
516 LOGICAL :: fileexists, fileappend
517 INTEGER :: ifile, lastiter, errorflag
518 REAL(RFREAL) :: lasttime
523 'RFLO_ModForcesMoments.F90' )
529 WRITE(fname,
'(A)') trim(global%outDir)//trim(global%casename)//
'.fom'
533 IF ((global%flowType==flow_unsteady .AND. &
534 global%currentTime>0._rfreal) .OR. &
535 (global%flowType==flow_steady .AND. &
536 global%currentIter>1))
THEN
538 INQUIRE( file=fname,exist=fileexists )
541 print *,solver_name,
' Appending to ',trim(fname)
542 OPEN(ifile,file=fname,
form=
'formatted',
status=
'old',position=
'append', &
546 print *,solver_name,
' Overwriting ',trim(fname)
547 OPEN(ifile,file=fname,
form=
'formatted',
status=
'unknown',iostat=errorflag)
552 print *,solver_name,
' Creating new ',trim(fname)
553 OPEN(ifile,file=fname,
form=
'formatted',
status=
'unknown',iostat=errorflag)
556 global%error = errorflag
557 IF (global%error /= 0) &
559 __line__,
'File: '//trim(fname) )
563 IF (.NOT. fileappend)
THEN
565 IF (global%flowType==flow_steady)
THEN
566 WRITE(ifile,1000,iostat=errorflag)
568 WRITE(ifile,1005,iostat=errorflag)
571 global%error = errorflag
572 IF (global%error /= err_none) &
574 __line__,
'File: '//trim(fname) )
580 IF ( global%flowType == flow_unsteady )
THEN
581 lasttime = huge( 1.0_rfreal )
584 backspace( ifile,iostat=errorflag )
585 IF (errorflag /= err_none)
EXIT loopunsteady
586 READ(ifile, fmt=*, iostat=errorflag) lasttime
587 IF (errorflag /= err_none)
EXIT loopunsteady
588 IF (
floatless( lasttime,global%currentTime ))
THEN
591 backspace( ifile,iostat=errorflag )
592 IF (errorflag /= err_none)
EXIT loopunsteady
596 print *,solver_name,
' positioned ',trim(fname),
' at time ',lasttime
602 backspace( ifile,iostat=errorflag )
603 IF (errorflag /= err_none)
EXIT loopsteady
604 READ(ifile, fmt=*, iostat=errorflag) lastiter
605 IF (errorflag /= err_none)
EXIT loopsteady
606 IF (lastiter < global%currentIter)
THEN
609 backspace( ifile,iostat=errorflag )
610 IF (errorflag /= err_none)
EXIT loopsteady
614 print *,solver_name,
' positioned ',trim(fname),
' at iteration ',lastiter
623 1000
FORMAT(
'iter, fpCoef(X,Y,Z), fvCoef(X,Y,Z), mpCoef(X,Y,Z), mvCoef(X,Y,Z)')
624 1005
FORMAT(
'time, fpCoef(X,Y,Z), fvCoef(X,Y,Z), mpCoef(X,Y,Z), mvCoef(X,Y,Z)')
652 #include "Indexing.h"
655 TYPE (t_region
),
POINTER :: regions(:)
658 INTEGER :: ireg, ipatch,
i,
j,
k
661 INTEGER :: ilev, bctype, ijkn, inoff, ijnoff
662 INTEGER :: inbeg, inend, jnbeg, jnend, knbeg, knend
663 REAL(RFREAL) :: boxxmin, boxxmax, boxymin, boxymax, boxzmin, boxzmax
665 REAL(RFREAL),
POINTER :: xyz(:,:)
671 global => regions(1)%global
673 'RFLO_ModForcesMoments.F90')
679 boxxmin = global%acBndBoxXmin
680 boxxmax = global%acBndBoxXmax
681 boxymin = global%acBndBoxYmin
682 boxymax = global%acBndBoxYmax
683 boxzmin = global%acBndBoxZmin
684 boxzmax = global%acBndBoxZmax
688 DO ireg = 1,global%nRegions
689 IF (regions(ireg)%procid==global%myProcid .AND. &
690 regions(ireg)%active==active)
THEN
694 xyz => regions(ireg)%levels(ilev)%grid%xyz
696 DO ipatch = 1,regions(ireg)%nPatches
697 patch => regions(ireg)%levels(ilev)%patches(ipatch)
698 bctype =
patch%bcType
703 inbeg,inend,jnbeg,jnend,knbeg,knend )
707 xmin = huge( 1._rfreal )
708 xmax = -huge( 1._rfreal )
709 ymin = huge( 1._rfreal )
710 ymax = -huge( 1._rfreal )
711 zmin = huge( 1._rfreal )
712 zmax = -huge( 1._rfreal )
717 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
730 IF (((bctype>=bc_slipwall .AND. bctype<=bc_slipwall+bc_range) .OR. &
731 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
732 (bctype>=bc_injection .AND. bctype<=bc_injection+bc_range)) .AND.&
733 ((
xmin > boxxmin .AND.
xmax < boxxmax) .AND. &
734 (
ymin > boxymin .AND.
ymax < boxymax) .AND. &
735 (
zmin > boxzmin .AND.
zmax < boxzmax)))
THEN
737 patch%globalAeroCoeffs = .true.
769 TYPE(t_region
),
POINTER :: regions(:)
772 INTEGER :: ireg, ipatch
775 CHARACTER(CHRLEN) :: fname
780 INTEGER ::
status(mpi_status_size)
782 INTEGER :: ilev, errorflag, ifile,
tag
786 global => regions(1)%global
789 'RFLO_ModForcesMoments.F90')
793 IF (global%myProcid == masterproc)
THEN
795 ifile = if_patch_coef
796 WRITE(fname,
'(A)') trim(global%outDir)//trim(global%casename)//
'.pcoin'
798 OPEN(ifile,file=fname,
form=
"formatted",
status=
"unknown",iostat=errorflag)
799 global%error = errorflag
801 IF ( global%error /= err_none ) &
809 IF (global%myProcid == masterproc)
THEN
810 WRITE(ifile,1005)
' Regions and patches of force and moment coefficients'
812 WRITE(ifile,1005)
' region-number patch-number'
818 DO ireg=1,global%nRegions
819 ilev = regions(ireg)%currLevel
821 DO ipatch=1,regions(ireg)%nPatches
822 patch => regions(ireg)%levels(ilev)%patches(ipatch)
823 tag = regions(ireg)%localNumber + mpi_patchoff*ipatch
827 IF (global%myProcid == masterproc)
THEN
829 IF (regions(ireg)%procid /= masterproc)
THEN
830 CALL mpi_recv(
patch%globalAeroCoeffs,1,mpi_logical, &
831 regions(ireg)%procid,
tag,global%mpiComm,
status, &
833 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
837 IF (
patch%globalAeroCoeffs)
WRITE(ifile,
'(2I10)') ireg, ipatch
841 IF (regions(ireg)%procid == global%myProcid)
THEN
842 CALL mpi_send(
patch%globalAeroCoeffs,1,mpi_logical,masterproc,
tag, &
843 global%mpiComm,global%mpierr )
844 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
855 IF (global%myProcid == masterproc)
THEN
856 CLOSE(ifile,iostat=errorflag)
857 global%error = errorflag
858 IF ( global%error /= err_none ) &
867 1000
FORMAT(/,1
x,40(
'-'))
**********************************************************************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 ibeg
subroutine rflo_getpatchdirection(patch, idir, jdir, kdir)
**********************************************************************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 inode
subroutine, public rflo_writeintegralforcemomco(global)
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.
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
subroutine, public rflo_computepatchforcemomco(region)
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
subroutine, public rflo_computeintegralforcemomco(global)
**********************************************************************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 jdir
**********************************************************************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 knode iend
subroutine rflo_getpatchindicesnodes(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
**********************************************************************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 idir
subroutine, public rflo_writepatchcoeffsinfo(regions)
**********************************************************************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, public rflo_openforcemomcofile(global)
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 knode jend
**********************************************************************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 kdir
subroutine errorstop(global, errorCode, errorLine, addMessage)
**********************************************************************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 knode jbeg
**********************************************************************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 knode kbeg
subroutine deregisterfunction(global)
**********************************************************************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 jnode
subroutine, public rflo_findpatchcoeffsglo(regions)