Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PLAG_PatchRemoveDataOutflow.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: remove particle from datastructure if exiting computational domain.
26 !
27 ! Description: none.
28 !
29 ! Input: region = current region
30 ! iReg = number of current region.
31 !
32 ! Output: regions(iReg)%levels%patch%buffPlag%aiv,arv,cv,dv,tv = buffer data.
33 ! regions(iReg)%levels%plag%aiv,arv,cv,dv,tv = Plag data.
34 !
35 ! Notes:
36 !
37 ! Particle indices have been updated at the outflow BC only, so particles
38 ! are removed if their indices are no longer within the region
39 !
40 !******************************************************************************
41 !
42 ! $Id: PLAG_PatchRemoveDataOutflow.F90,v 1.3 2008/12/06 08:44:34 mtcampbe Exp $
43 !
44 ! Copyright: (c) 2002 by the University of Illinois
45 !
46 !******************************************************************************
47 
48 SUBROUTINE plag_patchremovedataoutflow( region, iReg )
49 
50  USE moddatatypes
51  USE modpartlag, ONLY : t_plag, t_plag_input
52  USE moddatastruct, ONLY : t_region
53  USE modglobal, ONLY : t_global
55  USE moderror
56  USE modparameters
58  IMPLICIT NONE
59 
60 ! ... parameters
61  TYPE(t_region) :: region
62 
63  INTEGER :: ireg
64 
65 ! ... loop variables
66  INTEGER :: ipcls
67 
68 ! ... local variables
69  CHARACTER(CHRLEN) :: rcsidentstring
70 
71  INTEGER :: ilev, npcls, npclsprev, ipclsregionin
72  INTEGER :: icplag, ipcbeg, ipcend
73  INTEGER :: jcplag, jpcbeg, jpcend
74  INTEGER :: kcplag, kpcbeg, kpcend
75 
76  INTEGER, POINTER, DIMENSION(:,:) :: paiv, paivold
77 
78  LOGICAL :: lboundskip(6)
79 
80  REAL(RFREAL), POINTER, DIMENSION(:,:) :: parv, parvold, pcv, pcvold, &
81  pdv, ptv, prhs, prhssum
82 
83  TYPE(t_plag), POINTER :: pplag
84  TYPE(t_global), POINTER :: global
85 
86 !******************************************************************************
87 
88  rcsidentstring = &
89  '$RCSfile: PLAG_PatchRemoveDataOutflow.F90,v $ $Revision: 1.3 $'
90 
91  global => region%global
92 
93  CALL registerfunction( global, 'PLAG_PatchRemoveDataOutflow',&
94  'PLAG_PatchRemoveDataOutflow.F90' )
95 
96 ! Get dimensions --------------------------------------------------------------
97 
98  ilev = region%currLevel
99  npcls = region%levels(ilev)%plag%nPcls
100 
101  IF (npcls == 0) goto 999 ! exit if no particles
102 
103 ! Set pointers ----------------------------------------------------------------
104 
105  pplag => region%levels(ilev)%plag
106  paiv => pplag%aiv
107  parv => pplag%arv
108  pcv => pplag%cv
109  pdv => pplag%dv
110  ptv => pplag%tv
111  prhs => pplag%rhs
112  prhssum => pplag%rhsSum
113 
114  paivold => pplag%aivOld
115  parvold => pplag%arvOld
116  pcvold => pplag%cvOld
117 
118 ! Get grid dimensions ---------------------------------------------------------
119 
120  CALL rflo_getdimensphys( region,ilev,ipcbeg,ipcend, &
121  jpcbeg,jpcend,kpcbeg,kpcend )
122 
123 ! Initialize counters for particles inside and outside region -----------------
124 
125  ipclsregionin = 0
126 
127 ! Loop over particles ---------------------------------------------------------
128 
129  DO ipcls = 1, npcls
130 
131  icplag = paiv(aiv_plag_indexi,ipcls)
132  jcplag = paiv(aiv_plag_indexj,ipcls)
133  kcplag = paiv(aiv_plag_indexk,ipcls)
134 
135 ! - Check if particle cell is within region -----------------------------------
136 
137  IF ( ipcbeg <= icplag .AND. icplag <= ipcend .AND. &
138  jpcbeg <= jcplag .AND. jcplag <= jpcend .AND. &
139  kpcbeg <= kcplag .AND. kcplag <= kpcend ) THEN
140 
141 ! --- Shift particle datastructure only if particle is not in its proper spot -
142 
143  ipclsregionin = ipclsregionin + 1
144 
145  IF ( ipclsregionin /= ipcls ) THEN
146  paiv( :,ipclsregionin) = paiv( :,ipcls)
147  parv( :,ipclsregionin) = parv( :,ipcls)
148  pcv( :,ipclsregionin) = pcv( :,ipcls)
149  pdv( :,ipclsregionin) = pdv( :,ipcls)
150  ptv( :,ipclsregionin) = ptv( :,ipcls)
151  prhs( :,ipclsregionin) = prhs( :,ipcls)
152  prhssum(:,ipclsregionin) = prhssum(:,ipcls)
153 
154  paivold(:,ipclsregionin) = paivold(:,ipcls)
155  parvold(:,ipclsregionin) = parvold(:,ipcls)
156  pcvold( :,ipclsregionin) = pcvold( :,ipcls)
157  ENDIF ! iPclsRegionIn
158 
159  ENDIF ! iCPlag, jCPlag, kCPlag
160 
161  ENDDO ! iPcls
162 
163 ! Get new particle datasize ---------------------------------------------------
164 
165  npclsprev = pplag%nPcls
166  pplag%nPcls = ipclsregionin
167 
168 ! WRITE(STDOUT,'(A,I4,2I8)') &
169 ! ' PLAG_PatchRemoveDataOutflow: iReg, nPclsPrev,nPclsCurr',iReg,nPclsPrev,pPlag%nPcls
170 
171 ! finalize --------------------------------------------------------------------
172 
173 999 CONTINUE
174  CALL deregisterfunction( global )
175 
176 END SUBROUTINE plag_patchremovedataoutflow
177 
178 !******************************************************************************
179 !
180 ! RCS Revision history:
181 !
182 ! $Log: PLAG_PatchRemoveDataOutflow.F90,v $
183 ! Revision 1.3 2008/12/06 08:44:34 mtcampbe
184 ! Updated license.
185 !
186 ! Revision 1.2 2008/11/19 22:17:47 mtcampbe
187 ! Added Illinois Open Source License/Copyright
188 !
189 ! Revision 1.1 2004/12/01 20:57:58 fnajjar
190 ! Initial revision after changing case
191 !
192 ! Revision 1.8 2003/05/27 19:19:57 fnajjar
193 ! Removed distPartBurning and all pertinent LOGICAL datastructure
194 !
195 ! Revision 1.7 2003/05/01 22:58:30 jferry
196 ! overhauled structure in order to optimize performance
197 !
198 ! Revision 1.6 2003/05/01 18:07:25 jferry
199 ! intermediate form checked in for documentation purposes only
200 !
201 ! Revision 1.5 2003/04/17 00:00:27 fnajjar
202 ! Commented out I/O to STDOUT
203 !
204 ! Revision 1.4 2003/01/17 20:12:32 f-najjar
205 ! Fixed FORMAT statements with iReg
206 !
207 ! Revision 1.3 2003/01/17 19:30:24 f-najjar
208 ! Added iReg in calling sequence
209 !
210 ! Revision 1.2 2003/01/16 20:24:32 f-najjar
211 ! Removed iRegionGlobal
212 !
213 ! Revision 1.1 2002/10/25 14:18:35 f-najjar
214 ! Initial Import of Rocpart
215 !
216 !******************************************************************************
217 
218 
219 
220 
221 
222 
223 
**********************************************************************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
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
**********************************************************************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 plag_patchremovedataoutflow(region, iReg)
**********************************************************************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
**********************************************************************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 deregisterfunction(global)
Definition: ModError.F90:469
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)