Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RADI_floFlimRecvDummyVals.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: receive FLD radiation data to patch dummy cells from neighboring
26 ! region / periodic boundary located on a different processor.
27 !
28 ! Description: none.
29 !
30 ! Input: region = current region
31 ! regionSrc = source region
32 ! patch = current patch of region
33 ! patchSrc = source patch of regionSrc.
34 !
35 ! Output: region%levels%radi = FLD radiation variables in dummy cells.
36 !
37 ! Notes: none.
38 !
39 !******************************************************************************
40 !
41 ! $Id: RADI_floFlimRecvDummyVals.F90,v 1.3 2008/12/06 08:44:38 mtcampbe Exp $
42 !
43 ! Copyright: (c) 2003 by the University of Illinois
44 !
45 !******************************************************************************
46 
47 SUBROUTINE radi_floflimrecvdummyvals( region,regionSrc,patch,patchSrc )
48 
49  USE moddatatypes
50  USE modbndpatch, ONLY : t_patch
51  USE moddatastruct, ONLY : t_region
52  USE modglobal, ONLY : t_global
54  USE moderror
55  USE modmpi
56  USE modparameters
58  IMPLICIT NONE
59 
60 #include "Indexing.h"
61 
62 ! ... parameters
63  TYPE(t_region) :: region, regionsrc
64  TYPE(t_patch) :: patch, patchsrc
65 
66 ! ... loop variables
67  INTEGER :: idum, i, j, k, l, ijkbuff
68 
69 ! ... local variables
70 #ifdef MPI
71  INTEGER :: status(mpi_status_size)
72 #endif
73  INTEGER :: lb, ibeg, iend, jbeg, jend, kbeg, kend, icoff, ijcoff, ijkd, &
74  n1, n2, ndim, source, tag, ilev, ncv
75 
76  REAL(RFREAL), POINTER :: rcv(:,:)
77 
78  TYPE(t_global), POINTER :: global
79 
80 !******************************************************************************
81 
82  global => region%global
83 
84  CALL registerfunction( global,'RADI_FloFlimRecvDummyVals',&
85  'RADI_floFlimRecvDummyVals.F90' )
86 
87 ! check if the source region is active
88 
89  IF (regionsrc%active == off) THEN
90  CALL errorstop( global,err_srcregion_off,__line__ )
91  ENDIF
92 
93 ! get dimensions and pointers
94 
95  ilev = region%currLevel
96 
97  CALL rflo_getpatchindices( region,patch,ilev,ibeg,iend, &
98  jbeg,jend,kbeg,kend )
99  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
100 
101  rcv => region%levels(ilev)%radi%cv
102  ncv = region%radiInput%nCv
103 
104  n1 = abs(patch%l1end-patch%l1beg) + 1 ! here, dimensions of current
105  n2 = abs(patch%l2end-patch%l2beg) + 1 ! and source patch are identical
106  ndim = n1*n2*region%nDumCells ! ... but not the # of dummy cells
107 
108 ! receive data
109 
110 #ifdef MPI
111  source = regionsrc%procid
112  tag = region%localNumber + mpi_patchoff*patchsrc%srcPatch* &
113  radi_tag_shift
114  CALL mpi_recv( patch%valRadi%recvBuff,ncv*ndim,mpi_rfreal, &
115  source,tag,global%mpiComm,status,global%mpierr )
116  IF (global%mpierr /= 0) CALL errorstop( global,err_mpi_trouble,__line__ )
117 #endif
118 
119 ! copy from buffer to dummy nodes ---------------------------------------------
120 
121  lb = patch%lbound
122  ijkbuff = 0
123 
124  DO idum=1,region%nDumCells
125 
126 ! - face i=const.
127 
128  IF (lb==1 .OR. lb==2) THEN
129  IF (lb == 1) i = ibeg - idum
130  IF (lb == 2) i = iend + idum
131  DO k=kbeg,kend
132  DO j=jbeg,jend
133  ijkd = indijk(i,j,k,icoff,ijcoff)
134  ijkbuff = ijkbuff + 1
135  DO l=1,ncv
136  rcv(l,ijkd) = patch%valRadi%recvBuff(ijkbuff+(l-1)*ndim)
137  ENDDO
138  ENDDO
139  ENDDO
140 
141 ! - face j=const.
142 
143  ELSE IF (lb==3 .OR. lb==4) THEN
144  IF (lb == 3) j = jbeg - idum
145  IF (lb == 4) j = jend + idum
146  DO i=ibeg,iend
147  DO k=kbeg,kend
148  ijkd = indijk(i,j,k,icoff,ijcoff)
149  ijkbuff = ijkbuff + 1
150  DO l=1,ncv
151  rcv(l,ijkd) = patch%valRadi%recvBuff(ijkbuff+(l-1)*ndim)
152  ENDDO
153  ENDDO
154  ENDDO
155 
156 ! - face k=const.
157 
158  ELSE IF (lb==5 .OR. lb==6) THEN
159  IF (lb == 5) k = kbeg - idum
160  IF (lb == 6) k = kend + idum
161  DO j=jbeg,jend
162  DO i=ibeg,iend
163  ijkd = indijk(i,j,k,icoff,ijcoff)
164  ijkbuff = ijkbuff + 1
165  DO l=1,ncv
166  rcv(l,ijkd) = patch%valRadi%recvBuff(ijkbuff+(l-1)*ndim)
167  ENDDO
168  ENDDO
169  ENDDO
170  ENDIF ! lb
171 
172  ENDDO ! idum
173 
174 ! finalize --------------------------------------------------------------------
175 
176  CALL deregisterfunction( global )
177 
178 END SUBROUTINE radi_floflimrecvdummyvals
179 
180 !******************************************************************************
181 !
182 ! RCS Revision history:
183 !
184 ! $Log: RADI_floFlimRecvDummyVals.F90,v $
185 ! Revision 1.3 2008/12/06 08:44:38 mtcampbe
186 ! Updated license.
187 !
188 ! Revision 1.2 2008/11/19 22:17:50 mtcampbe
189 ! Added Illinois Open Source License/Copyright
190 !
191 ! Revision 1.1 2004/09/30 17:49:10 wasistho
192 ! prepared for full FLD radiation model
193 !
194 !
195 !
196 !******************************************************************************
197 
198 
199 
200 
201 
202 
203 
**********************************************************************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
j indices k indices k
Definition: Indexing.h:6
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
int status() const
Obtain the status of the attribute.
Definition: Attribute.h:240
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
Definition: patch.h:74
**********************************************************************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
blockLoc i
Definition: read.cpp:79
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
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 knode jend
subroutine radi_floflimrecvdummyvals(region, regionSrc, patch, patchSrc)
CGAL::Point_2< R > source() const
Definition: Ray_2.h:128
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
**********************************************************************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)
Definition: ModError.F90:469