66 TYPE(t_region
) :: region
71 INTEGER ::
i, icont, ipatch,
j,
k
74 CHARACTER(CHRLEN) :: rcsidentstring
76 INTEGER :: bctype, burnstat,
ibeg, icoff,
idir,
iend, ijcoff, ijnoff, &
77 ijkc, ijkn,ilev, injcdiamdist,
inode, inoff, ipcls, itile, &
79 lbound, n1, n2, nextidnumber, ncont, npatches, noff
82 INTEGER :: itercelllocate
84 INTEGER :: npcls,npclsmax
85 INTEGER,
PARAMETER :: iter_cell_locate_max = 20
87 INTEGER,
POINTER,
DIMENSION(:) :: pcvplagmass, pcvtilemass
88 INTEGER,
POINTER,
DIMENSION(:,:) :: paiv, paivold
93 REAL(RFREAL) :: area, cellheight, injcbeta,
pi, plagvolratio, &
94 plagmomenrm, poolvolsum, sgn, sxn,syn,szn, &
95 tinjccoeff, tinjcsum, volmeanpart
96 REAL(RFREAL) :: meansuperparticlevolume, spload
97 REAL(RFREAL) :: injcbetafac, injcbetafacinv
98 REAL(RFREAL) :: poolvololdsum, poolvolfinal, remainingvolume
99 REAL(RFREAL) :: currentsuperparticlevolume, poolvolume
100 REAL(RFREAL) :: poolexcess, pexcesss, possibleexcess
101 REAL(RFREAL) :: countdown, countdownnext, deltavolume, randunif
102 REAL(RFREAL) :: currentparticlevolume
103 REAL(RFREAL) :: poolvolcurr
105 REAL(RFREAL),
DIMENSION(3) :: poolxyz, snormal
107 REAL(RFREAL),
POINTER,
DIMENSION(:) :: pvol
108 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: sface, pxyz
110 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: parv, pcvplag, pcvtile, &
112 REAL(RFREAL),
POINTER,
DIMENSION(:,:,:) :: pfc
114 TYPE(t_patch),
POINTER :: ppatch
116 TYPE(t_plag),
POINTER :: pplag
121 rcsidentstring =
'$RCSfile: PLAG_InjcEjectParticle.F90,v $ $Revision: 1.8 $'
123 global => region%global
126 'PLAG_InjcEjectParticle.F90' )
130 ilev = region%currLevel
131 npatches = region%nPatches
133 ncont = region%plagInput%nCont
136 injcdiamdist = region%plagInput%injcDiamDist
137 injcbeta = region%plagInput%injcBeta
139 volmeanpart =
pi/6.0_rfreal * region%plagInput%injcDiamMean**3
141 ejecmodel = region%plagInput%ejecModel
142 spload = region%plagInput%spLoad
144 IF ( ejecmodel == plag_ejec_cre )
THEN
145 meansuperparticlevolume = volmeanpart *spload
147 injcbetafac = 2.0_rfreal *injcbeta *meansuperparticlevolume**2
148 injcbetafacinv = 1.0_rfreal/injcbetafac
153 pxyz => region%levels(ilev)%grid%xyz
155 pplag => region%levels(ilev)%plag
157 pcvplagmass => pplag%cvPlagMass
159 paivold => pplag%aivOld
162 pvol => region%levels(ilev)%grid%vol
163 pfc => region%levels(ilev)%plag%fc
170 npclsmax = region%plagInput%nPclsMax
172 IF ( npcls >= npclsmax )
THEN
173 WRITE(stdout,*)
' PLAG_InjcEjectParticle: Datastructure Dimension Exceeded ',&
175 CALL
errorstop( global,err_plag_memoverflow,__line__ )
178 CALL mpi_barrier( global%mpiComm,global%mpierr )
179 IF ( global%mpierr /= err_none ) &
180 CALL
errorstop( global,err_mpi_trouble,__line__ )
182 CALL mpi_finalize(global%mpierr)
183 IF ( global%mpierr /= err_none ) &
184 CALL
errorstop( global,err_mpi_trouble,__line__ )
193 ppatch => region%levels(ilev)%patches(ipatch)
195 bctype = ppatch%bcType
199 IF (bctype>=bc_injection .AND. bctype<=bc_injection+bc_range)
THEN
203 lbound = ppatch%lbound
211 noff = abs(ppatch%l1end-ppatch%l1beg) + 1
219 IF (lbound==2 .OR. lbound==4 .OR. lbound==6)
THEN
228 IF (lbound==1 .OR. lbound==2) sface => region%levels(ilev)%plag%si
229 IF (lbound==3 .OR. lbound==4) sface => region%levels(ilev)%plag%sj
230 IF (lbound==5 .OR. lbound==6) sface => region%levels(ilev)%plag%sk
237 ijkc = indijk(
i,
j,
k,icoff,ijcoff)
240 area =
sqrt(sface(xcoord,ijkn)*sface(xcoord,ijkn)+ &
241 sface(ycoord,ijkn)*sface(ycoord,ijkn)+ &
242 sface(zcoord,ijkn)*sface(zcoord,ijkn))
244 sxn = sgn*sface(xcoord,ijkn)/area
245 syn = sgn*sface(ycoord,ijkn)/area
246 szn = sgn*sface(zcoord,ijkn)/area
248 IF (lbound==1 .OR. lbound==2)
THEN
251 ELSE IF (lbound==3 .OR. lbound==4)
THEN
254 ELSE IF (lbound==5 .OR. lbound==6)
THEN
261 itile = indij(n1,n2,noff)
262 ptileplag => ppatch%tilePlag
264 pcvtile => ptileplag%cv
265 pcvtilemass => ptileplag%cvTileMass
266 pdvtile => ptileplag%dv
268 pcvoldtile => ptileplag%cvOld
274 SELECT CASE(ejecmodel)
280 CASE(plag_ejec_model1)
281 poolvolsum =
sum( pcvtile( pcvtilemass(:),itile ) / &
282 region%plagInput%dens(:) )
284 pdvtile(dv_tile_poolvold,itile) = poolvolsum
286 tinjccoeff = injcbeta * volmeanpart
288 tinjcsum = 0.0_rfreal
291 tinjccoeff, tinjcsum, poolvolsum, &
292 injectq, plagvolratio )
298 lbound,inoff,ijnoff,
i,
j,
k, &
299 sxn,syn,szn,area,plagvolratio )
304 pdvtile(dv_tile_diam, itile), &
305 pdvtile(dv_tile_spload,itile) )
310 tinjccoeff, tinjcsum, poolvolsum, &
311 injectq, plagvolratio )
322 poolvolsum =
sum( pcvtile( pcvtilemass(:),itile ) / &
323 region%plagInput%dens(:) )
325 poolvololdsum =
sum( pcvoldtile( pcvtilemass(:),itile ) / &
326 region%plagInput%dens(:) )
330 poolvolume = poolvololdsum
334 poolvolfinal = poolvolsum
338 poolvolcurr = poolvolsum
342 remainingvolume = poolvolsum -poolvololdsum
345 currentsuperparticlevolume =
pi/6.0_rfreal *spload &
346 * pdvtile(dv_tile_diam,itile)**3.0_rfreal
348 currentparticlevolume =
pi/6.0_rfreal &
349 * pdvtile(dv_tile_diam,itile)**3.0_rfreal
355 poolexcess = poolvolcurr -currentsuperparticlevolume
360 possibleexcess = poolexcess + remainingvolume
363 IF ( poolexcess > 0.0_rfreal )
THEN
364 pexcesss = poolexcess**2
366 pexcesss = 0.0_rfreal
371 countdown = pdvtile(dv_tile_countdown,itile)
374 IF ( possibleexcess > 0.0_rfreal )
THEN
375 countdownnext = countdown + injcbetafacinv &
376 * (pexcesss -possibleexcess**2.0_rfreal)
378 countdownnext = countdown
388 IF ( countdownnext> 0.0_rfreal )
THEN
389 poolvolume = poolvolume + remainingvolume
390 pdvtile(dv_tile_countdown,itile) = countdownnext
403 deltavolume =
sqrt(injcbetafac*countdown +pexcesss) -poolexcess
407 poolvolume = poolvolume +deltavolume -currentsuperparticlevolume
410 remainingvolume = remainingvolume - deltavolume
416 plagvolratio = currentparticlevolume / poolvolfinal
419 poolvolfinal = poolvolfinal - currentsuperparticlevolume
424 lbound,inoff,ijnoff,
i,
j,
k, &
425 sxn,syn,szn,area,plagvolratio )
429 pdvtile(dv_tile_diam, itile), &
430 pdvtile(dv_tile_spload,itile) )
435 poolvolcurr =
sum( pcvtile( pcvtilemass(:),itile ) / &
436 region%plagInput%dens(:) )
442 IF ( randunif <= 0.0_rfreal)
THEN
444 pdvtile(dv_tile_countdown,itile) = 50.0_rfreal
446 pdvtile(dv_tile_countdown,itile) = -log(randunif)
474 ppatch%tilePlag%nPclsInjc(:) = 0
489 inoff,ijnoff,
i,
j,
k,sxn,syn,szn,area, &
493 INTEGER,
INTENT(IN) :: lbound,inoff,ijnoff,itile,
i,
j,
k
495 REAL(RFREAL),
INTENT(IN) :: sxn,syn,szn,area,plagvolratio
497 TYPE(t_region
) :: region
499 TYPE(t_plag),
POINTER :: pplag
503 INTEGER :: burnstat,icont,itercelllocate,ncont
504 INTEGER,
POINTER,
DIMENSION(:) :: pcvplagmass, pcvtilemass
505 INTEGER,
POINTER,
DIMENSION(:,:) :: paiv, paivold
507 REAL(RFREAL) :: cellheight
508 REAL(RFREAL),
DIMENSION(3) :: poolxyz,snormal
509 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: parv, pcvplag, pcvtile, &
516 ncont = region%plagInput%nCont
519 pcvplagmass => pplag%cvPlagMass
521 paivold => pplag%aivOld
524 pcvtile => ptileplag%cv
525 pcvtilemass => ptileplag%cvTileMass
526 pdvtile => ptileplag%dv
528 pcvoldtile => ptileplag%cvOld
536 IF (region%inrtInput%inrts(inrt_type_burning)%used)
THEN
537 burnstat = inrt_burnstat_on
539 burnstat = inrt_burnstat_off
546 pplag%nPcls = pplag%nPcls + 1
549 ptileplag%nPclsInjc(itile) = ptileplag%nPclsInjc(itile) + 1
555 pplag%nextIdNumber = pplag%nextIdNumber + 1
556 nextidnumber = pplag%nextIdNumber
563 pcvplag(pcvplagmass(icont),ipcls) = pcvtile(pcvtilemass(icont),itile) * &
567 pcvplag(cv_plag_ener,ipcls) = pcvtile(cv_tile_ener, itile) *plagvolratio
569 plagmomenrm = pcvtile(cv_tile_momnrm,itile) *plagvolratio
570 pcvplag(cv_plag_xmom,ipcls) = plagmomenrm*sxn
571 pcvplag(cv_plag_ymom,ipcls) = plagmomenrm*syn
572 pcvplag(cv_plag_zmom,ipcls) = plagmomenrm*szn
574 pcvplag(cv_plag_enervapor,ipcls) = 0._rfreal
581 snormal(xcoord) = sxn
582 snormal(ycoord) = syn
583 snormal(zcoord) = szn
584 cellheight = pvol(ijkc)/area
590 snormal,cellheight,poolxyz )
595 IF ( celllocate .EQV. .false. )
THEN
596 itercelllocate = itercelllocate+1
597 IF ( itercelllocate > iter_cell_locate_max )
THEN
598 WRITE(*,*)
' PLAG_InjcEjectParticle: Unable to create a particle after ',&
599 iter_cell_locate_max,
' iterations'
601 CALL
errorstop( global,err_plag_cellindex,__line__ )
606 pcvplag(cv_plag_xpos,ipcls) = poolxyz(xcoord)
607 pcvplag(cv_plag_ypos,ipcls) = poolxyz(ycoord)
608 pcvplag(cv_plag_zpos,ipcls) = poolxyz(zcoord)
614 paiv(aiv_plag_pidini,ipcls) = nextidnumber
615 paiv(aiv_plag_regini,ipcls) = ireg
616 paiv(aiv_plag_regcrt,ipcls) = ireg
617 paiv(aiv_plag_icells,ipcls) = ijkc
618 paiv(aiv_plag_indexi,ipcls) =
i
619 paiv(aiv_plag_indexj,ipcls) =
j
620 paiv(aiv_plag_indexk,ipcls) =
k
621 paiv(aiv_plag_burnstat,ipcls) = burnstat
622 paiv(aiv_plag_status,ipcls) = plag_status_keep
624 parv(arv_plag_spload,ipcls) = pdvtile(dv_tile_spload,itile)
630 paivold(:,ipcls) = paiv(:,ipcls)
642 pcvtile( pcvtilemass(icont),itile) = pcvtile(pcvtilemass(icont),itile) - &
643 pdvtile(dv_tile_spload, itile) * &
644 pcvplag(pcvplagmass(icont),ipcls)
647 pcvtile(cv_tile_momnrm,itile) = pcvtile(cv_tile_momnrm,itile) - &
648 pdvtile(dv_tile_spload,itile) * &
651 pcvtile(cv_tile_ener ,itile) = pcvtile(cv_tile_ener ,itile) - &
652 pdvtile(dv_tile_spload,itile) * &
653 pcvplag(cv_plag_ener,ipcls)
661 snormal,cellheight,posplag )
664 INTEGER,
INTENT(IN) :: lbound,inoff,ijnoff,
i,
j,
k
666 REAL(RFREAL),
INTENT(IN) :: cellheight
667 REAL(RFREAL),
DIMENSION(3),
INTENT(IN) :: snormal
668 REAL(RFREAL),
DIMENSION(3),
INTENT(OUT) :: posplag
671 INTEGER,
DIMENSION(4) :: corner
673 LOGICAL :: usetriangle1
675 REAL(RFREAL),
PARAMETER :: height_fraction = 1.0e-3_rfreal
676 REAL(RFREAL) :: areatriangle1, areatriangle2, xrand, yrand, zrand
678 REAL(RFREAL),
DIMENSION(ZCOORD) :: facecentroid,v1,v2
679 REAL(RFREAL),
DIMENSION(ZCOORD,4) :: pnode
693 corner(4) = indijk(
i+
inode ,
j+
jnode+1,
k+knode+1,inoff,ijnoff)
695 pnode(xcoord:zcoord,1) = pxyz(xcoord:zcoord,corner(1))
696 pnode(xcoord:zcoord,2) = pxyz(xcoord:zcoord,corner(2))
697 pnode(xcoord:zcoord,3) = pxyz(xcoord:zcoord,corner(3))
698 pnode(xcoord:zcoord,4) = pxyz(xcoord:zcoord,corner(4))
700 facecentroid(xcoord:zcoord) = (/pfc(xcoord,icoord,corner(1)), &
701 pfc(ycoord,icoord,corner(1)), &
702 pfc(zcoord,icoord,corner(1))/)
708 corner(4) = indijk(
i+
inode+1,
j+
jnode ,
k+knode+1,inoff,ijnoff)
710 pnode(xcoord:zcoord,1) = pxyz(xcoord:zcoord,corner(1))
711 pnode(xcoord:zcoord,2) = pxyz(xcoord:zcoord,corner(2))
712 pnode(xcoord:zcoord,3) = pxyz(xcoord:zcoord,corner(3))
713 pnode(xcoord:zcoord,4) = pxyz(xcoord:zcoord,corner(4))
715 facecentroid(xcoord:zcoord) = (/pfc(xcoord,jcoord,corner(1)), &
716 pfc(ycoord,jcoord,corner(1)), &
717 pfc(zcoord,jcoord,corner(1))/)
723 corner(4) = indijk(
i+
inode+1,
j+
jnode+1,
k+knode ,inoff,ijnoff)
725 pnode(xcoord:zcoord,1) = pxyz(xcoord:zcoord,corner(1))
726 pnode(xcoord:zcoord,2) = pxyz(xcoord:zcoord,corner(2))
727 pnode(xcoord:zcoord,3) = pxyz(xcoord:zcoord,corner(3))
728 pnode(xcoord:zcoord,4) = pxyz(xcoord:zcoord,corner(4))
730 facecentroid(xcoord:zcoord) = (/pfc(xcoord,kcoord,corner(1)), &
731 pfc(ycoord,kcoord,corner(1)), &
732 pfc(zcoord,kcoord,corner(1))/)
740 v1(1:3) = pnode(xcoord:zcoord,2)-pnode(xcoord:zcoord,1)
741 v2(1:3) = pnode(xcoord:zcoord,3)-pnode(xcoord:zcoord,1)
743 areatriangle1 = 0.5_rfreal*abs( snormal(xcoord)*(v1(2)*v2(3)-v1(3)*v2(2)) &
744 + snormal(ycoord)*(v1(3)*v2(1)-v1(1)*v2(3)) &
745 + snormal(zcoord)*(v1(1)*v2(2)-v1(2)*v2(1)) )
747 v1(xcoord:zcoord) = pnode(xcoord:zcoord,2)-pnode(xcoord:zcoord,4)
748 v2(xcoord:zcoord) = pnode(xcoord:zcoord,3)-pnode(xcoord:zcoord,4)
750 areatriangle2 = 0.5_rfreal*abs( snormal(xcoord)*(v1(2)*v2(3)-v1(3)*v2(2)) &
751 + snormal(ycoord)*(v1(3)*v2(1)-v1(1)*v2(3)) &
752 + snormal(zcoord)*(v1(1)*v2(2)-v1(2)*v2(1)) )
757 usetriangle1 = ( (areatriangle1+areatriangle2)*xrand < areatriangle1 )
766 IF( xrand+yrand > 1.0_rfreal )
THEN
767 xrand = 1.0_rfreal-xrand
768 yrand = 1.0_rfreal-yrand
771 zrand = 1.0_rfreal -(xrand+yrand)
773 IF ( usetriangle1 )
THEN
774 posplag(xcoord:zcoord) = xrand*pnode(xcoord:zcoord,1) &
775 + yrand*pnode(xcoord:zcoord,2) &
776 + zrand*pnode(xcoord:zcoord,3)
778 posplag(xcoord:zcoord) = xrand*pnode(xcoord:zcoord,4) &
779 + yrand*pnode(xcoord:zcoord,2) &
780 + zrand*pnode(xcoord:zcoord,3)
785 posplag(xcoord:zcoord) = posplag(xcoord:zcoord) &
787 facecentroid(xcoord:zcoord), &
788 snormal(xcoord:zcoord)) &
789 * snormal(xcoord:zcoord)
793 posplag(xcoord:zcoord) = posplag(xcoord:zcoord) &
794 + height_fraction*cellheight*snormal(xcoord:zcoord)
802 TYPE(t_region
) :: region
804 INTEGER,
INTENT(IN) :: inoff,ijnoff,
i,
j,
k
806 LOGICAL,
INTENT(OUT) :: celllocate
808 REAL(RFREAL),
DIMENSION(3),
INTENT(IN) :: posplag
814 INTEGER :: ijknr,ijknri,ijknrj,ijknrk,nbound
815 INTEGER,
DIMENSION(6) :: incellflag
817 REAL(RFREAL) :: dpface, rsgn
818 REAL(RFREAL),
DIMENSION(3) :: diffpos, facecentroid, psface
819 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: psnormal
829 ijknr = indijk(
i ,
j ,
k ,inoff,ijnoff)
830 ijknri = indijk(
i+1,
j ,
k ,inoff,ijnoff)
831 ijknrj = indijk(
i ,
j+1,
k ,inoff,ijnoff)
832 ijknrk = indijk(
i ,
j ,
k+1,inoff,ijnoff)
836 DO mbound = 1, nbound
838 incellflag(mbound) = 0
845 psnormal => region%levels(ilev)%plag%si
848 psface(1:3) = (/rsgn*psnormal(xcoord,ijknr), &
849 rsgn*psnormal(ycoord,ijknr), &
850 rsgn*psnormal(zcoord,ijknr)/)
851 facecentroid(1:3) = (/pfc(xcoord,icoord,ijknr), &
852 pfc(ycoord,icoord,ijknr), &
853 pfc(zcoord,icoord,ijknr)/)
855 psnormal => region%levels(ilev)%plag%si
858 psface(1:3) = (/rsgn*psnormal(xcoord,ijknri), &
859 rsgn*psnormal(ycoord,ijknri), &
860 rsgn*psnormal(zcoord,ijknri)/)
861 facecentroid(1:3) = (/pfc(xcoord,icoord,ijknri), &
862 pfc(ycoord,icoord,ijknri), &
863 pfc(zcoord,icoord,ijknri)/)
868 psnormal => region%levels(ilev)%plag%sj
871 psface(1:3) = (/rsgn*psnormal(xcoord,ijknr), &
872 rsgn*psnormal(ycoord,ijknr), &
873 rsgn*psnormal(zcoord,ijknr)/)
874 facecentroid(1:3) = (/pfc(xcoord,jcoord,ijknr), &
875 pfc(ycoord,jcoord,ijknr), &
876 pfc(zcoord,jcoord,ijknr)/)
879 psnormal => region%levels(ilev)%plag%sj
882 psface(1:3) = (/rsgn*psnormal(xcoord,ijknrj), &
883 rsgn*psnormal(ycoord,ijknrj), &
884 rsgn*psnormal(zcoord,ijknrj)/)
885 facecentroid(1:3) = (/pfc(xcoord,jcoord,ijknrj), &
886 pfc(ycoord,jcoord,ijknrj), &
887 pfc(zcoord,jcoord,ijknrj)/)
892 psnormal => region%levels(ilev)%plag%sk
895 psface(1:3) = (/rsgn*psnormal(xcoord,ijknr), &
896 rsgn*psnormal(ycoord,ijknr), &
897 rsgn*psnormal(zcoord,ijknr)/)
898 facecentroid(1:3) = (/pfc(xcoord,kcoord,ijknr), &
899 pfc(ycoord,kcoord,ijknr), &
900 pfc(zcoord,kcoord,ijknr)/)
903 psnormal => region%levels(ilev)%plag%sk
906 psface(1:3) = (/rsgn*psnormal(xcoord,ijknrk), &
907 rsgn*psnormal(ycoord,ijknrk), &
908 rsgn*psnormal(zcoord,ijknrk)/)
909 facecentroid(1:3) = (/pfc(xcoord,kcoord,ijknrk), &
910 pfc(ycoord,kcoord,ijknrk), &
911 pfc(zcoord,kcoord,ijknrk)/)
919 diffpos(1:3) = posplag(1:3)-facecentroid(1:3)
922 IF ( dpface >= 0.0_rfreal ) incellflag(mbound) = 1
928 IF (
sum( incellflag(1:6) ) == 6 ) celllocate = .true.
**********************************************************************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
Tfloat sum() const
Return the sum of all the pixel values in an image.
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 plag_injcejectparticle(region, iReg)
subroutine plag_injcsetinjection(region, pTilePlag, iTile, tCoeff, tSum, poolVol, injectQ, ratio)
subroutine registerfunction(global, funName, fileName)
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
subroutine plag_injcmakeparticle(region, injcDiamDist, diam, spLoad)
REAL(RFREAL) function rand1uniform(rdata)
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 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 plag_injcsetpositions(lbound, iNOff, ijNOff, i, j, k, sNormal, cellHeight, posPlag)
**********************************************************************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 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 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
long double dot_product(pnt vec1, pnt vec2)
subroutine plag_injctestcell(region, iNOff, ijNOff, i, j, k, posPlag, cellLocate)
**********************************************************************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 plag_rflo_ejectparticle(region, pPlag, pTilePlag, iTile, lbound, iNOff, ijNOff, i, j, k, sxn, syn, szn, area, plagVolRatio)