Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_floLesGenCoFF.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: Get filter coefficients of face-face filtering.
26 !
27 ! Description: The coefficients are obtained in i, j and k direction.
28 ! For each direction, distinction is made between the low delta
29 ! (1 or 2 grid-spacing) and high delta (2 or 4 grid-spacing).
30 !
31 ! Input: region = data of current region
32 !
33 ! Output: turb%ffCofi1,2,4, turb%ffCofj1,2,4, turb%ffCofk1,2,4.
34 !
35 ! Notes: This routine is only relevant if non-uniform filter is selected.
36 !
37 !******************************************************************************
38 !
39 ! $Id: TURB_floLesGenCoFF.F90,v 1.5 2008/12/06 08:44:43 mtcampbe Exp $
40 !
41 ! Copyright: (c) 2001 by the University of Illinois
42 !
43 !******************************************************************************
44 
45 SUBROUTINE turb_flolesgencoff( region )
46 
47  USE moddatatypes
48  USE moddatastruct, ONLY : t_region
49  USE modglobal, ONLY : t_global
53  USE modturbulence, ONLY : t_turb
54  USE moderror
55  USE modparameters
57  IMPLICIT NONE
58 
59 ! ... parameters
60  TYPE(t_region), TARGET :: region
61 
62 ! ... loop variables
63 
64 ! ... local variables
65  CHARACTER(CHRLEN) :: rcsidentstring
66  TYPE(t_global), POINTER :: global
67 
68  INTEGER :: ibeg,iend,jbeg,jend,kbeg,kend
69  INTEGER :: idnbeg,idnend,jdnbeg,jdnend,kdnbeg,kdnend
70  INTEGER :: ilev,inoff,ijnoff,minidx,maxidx,segid
71  INTEGER :: homdir(diri:dirk),filterwidth(diri:dirk)
72  TYPE(t_turb), POINTER :: turb
73  REAL(RFREAL), POINTER :: segm(:,:),ffcofa(:,:),ffcofb(:,:)
74  REAL(RFREAL), ALLOCATABLE :: ds(:)
75 
76 !******************************************************************************
77 
78  rcsidentstring = '$RCSfile: TURB_floLesGenCoFF.F90,v $'
79 
80  global => region%global
81  CALL registerfunction( global,'TURB_FloLesGenCoFF',&
82  'TURB_floLesGenCoFF.F90' )
83 
84 ! get indices, parameters and pointers ----------------------------------------
85 
86  ilev = region%currLevel
87  homdir(:) = region%turbInput%homDir(:)
88  filterwidth(:) = region%turbInput%filterWidth(:)
89  turb => region%levels(ilev)%turb
90  CALL rflo_getdimensdummynodes( region,ilev,idnbeg,idnend, &
91  jdnbeg,jdnend,kdnbeg,kdnend )
92  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
93 
94  minidx = min(idnbeg,jdnbeg,kdnbeg)-2
95  maxidx = max(idnend,jdnend,kdnend)+2
96  ALLOCATE( ds(minidx:maxidx) )
97 
98  ibeg = idnbeg
99  iend = idnend
100  jbeg = jdnbeg
101  jend = jdnend
102  kbeg = kdnbeg
103  kend = kdnend
104 
105 ! filter coefficients in I direction
106 
107  IF (homdir(diri) == off) THEN
108  IF (filterwidth(diri)==filwidth_one) THEN
109 
110 ! --- filter coefficients at I-faces
111  segm => region%levels(ilev)%turb%workK
112  ffcofa => turb%ffCofi1I
113  ffcofb => turb%ffCofi2I
114  segid = 1
115  CALL turb_flolesgencofflo( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
116  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
117 
118 ! --- filter coefficients at J-faces
119  segm => region%levels(ilev)%turb%workJ
120  ffcofa => turb%ffCofi1J
121  ffcofb => turb%ffCofi2J
122  segid = 2
123  CALL turb_flolesgencofclo( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
124  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
125 
126 ! --- filter coefficients at K-faces
127  segm => region%levels(ilev)%turb%workK
128  ffcofa => turb%ffCofi1K
129  ffcofb => turb%ffCofi2K
130  segid = 1
131  CALL turb_flolesgencofclo( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
132  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
133 
134  ELSEIF ((filterwidth(diri)==filwidth_two) .OR. &
135  (filterwidth(diri)==filwidth_zero)) THEN
136 
137 ! --- filter coefficients at I-faces
138  segm => region%levels(ilev)%turb%workK
139  ffcofa => turb%ffCofi2I
140  ffcofb => turb%ffCofi4I
141  segid = 1
142  CALL turb_flolesgencoffhi( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
143  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
144 
145 ! --- filter coefficients at J-faces
146  segm => region%levels(ilev)%turb%workJ
147  ffcofa => turb%ffCofi2J
148  ffcofb => turb%ffCofi4J
149  segid = 2
150  CALL turb_flolesgencofchi( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
151  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
152 
153 ! --- filter coefficients at K-faces
154  segm => region%levels(ilev)%turb%workK
155  ffcofa => turb%ffCofi2K
156  ffcofb => turb%ffCofi4K
157  segid = 1
158  CALL turb_flolesgencofchi( global,diri,ibeg,iend,jbeg,jend,kbeg,kend, &
159  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
160 
161  ENDIF
162  ENDIF
163 
164 ! filter coefficients in J direction
165 
166  IF (homdir(dirj) == off) THEN
167  IF (filterwidth(dirj)==filwidth_one) THEN
168 
169 ! --- filter coefficients at J-faces
170  segm => region%levels(ilev)%turb%workI
171  ffcofa => turb%ffCofj1J
172  ffcofb => turb%ffCofj2J
173  segid = 1
174  CALL turb_flolesgencofflo( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
175  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
176 
177 ! --- filter coefficients at I-faces
178  segm => region%levels(ilev)%turb%workI
179  ffcofa => turb%ffCofj1I
180  ffcofb => turb%ffCofj2I
181  segid = 1
182  CALL turb_flolesgencofclo( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
183  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
184 
185 ! --- filter coefficients at K-faces
186  segm => region%levels(ilev)%turb%workK
187  ffcofa => turb%ffCofj1K
188  ffcofb => turb%ffCofj2K
189  segid = 2
190  CALL turb_flolesgencofclo( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
191  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
192 
193  ELSEIF ((filterwidth(dirj)==filwidth_two) .OR. &
194  (filterwidth(dirj)==filwidth_zero)) THEN
195 
196 ! --- filter coefficients at J-faces
197  segm => region%levels(ilev)%turb%workI
198  ffcofa => turb%ffCofj2J
199  ffcofb => turb%ffCofj4J
200  segid = 1
201  CALL turb_flolesgencoffhi( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
202  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
203 
204 ! --- filter coefficients at I-faces
205  segm => region%levels(ilev)%turb%workI
206  ffcofa => turb%ffCofj2I
207  ffcofb => turb%ffCofj4I
208  segid = 1
209  CALL turb_flolesgencofchi( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
210  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
211 
212 ! --- filter coefficients at K-faces
213  segm => region%levels(ilev)%turb%workK
214  ffcofa => turb%ffCofj2K
215  ffcofb => turb%ffCofj4K
216  segid = 2
217  CALL turb_flolesgencofchi( global,dirj,ibeg,iend,jbeg,jend,kbeg,kend, &
218  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
219 
220  ENDIF
221  ENDIF
222 
223 ! filter coefficients in K direction
224 
225  IF (homdir(dirk) == off) THEN
226  IF (filterwidth(dirk)==filwidth_one) THEN
227 
228 ! --- filter coefficients at K-faces
229  segm => region%levels(ilev)%turb%workJ
230  ffcofa => turb%ffCofk1K
231  ffcofb => turb%ffCofk2K
232  segid = 1
233  CALL turb_flolesgencofflo( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
234  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
235 
236 ! --- filter coefficients at I-faces
237  segm => region%levels(ilev)%turb%workI
238  ffcofa => turb%ffCofk1I
239  ffcofb => turb%ffCofk2I
240  segid = 2
241  CALL turb_flolesgencofclo( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
242  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
243 
244 ! --- filter coefficients at J-faces
245  segm => region%levels(ilev)%turb%workJ
246  ffcofa => turb%ffCofk1J
247  ffcofb => turb%ffCofk2J
248  segid = 1
249  CALL turb_flolesgencofclo( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
250  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
251 
252  ELSEIF ((filterwidth(dirk)==filwidth_two) .OR. &
253  (filterwidth(dirk)==filwidth_zero)) THEN
254 
255 ! --- filter coefficients at K-faces
256  segm => region%levels(ilev)%turb%workJ
257  ffcofa => turb%ffCofk2K
258  ffcofb => turb%ffCofk4K
259  segid = 1
260  CALL turb_flolesgencoffhi( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
261  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
262 
263 ! --- filter coefficients at I-faces
264  segm => region%levels(ilev)%turb%workI
265  ffcofa => turb%ffCofk2I
266  ffcofb => turb%ffCofk4I
267  segid = 2
268  CALL turb_flolesgencofchi( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
269  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
270 
271 ! --- filter coefficients at J-faces
272  segm => region%levels(ilev)%turb%workJ
273  ffcofa => turb%ffCofk2J
274  ffcofb => turb%ffCofk4J
275  segid = 1
276  CALL turb_flolesgencofchi( global,dirk,ibeg,iend,jbeg,jend,kbeg,kend, &
277  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
278 
279  ENDIF
280  ENDIF
281 
282 ! deallocate temporary arrays
283 
284  DEALLOCATE( ds )
285 
286 ! finalize --------------------------------------------------------------------
287 
288  CALL deregisterfunction( global )
289 
290 END SUBROUTINE turb_flolesgencoff
291 
292 !******************************************************************************
293 !
294 ! RCS Revision history:
295 !
296 ! $Log: TURB_floLesGenCoFF.F90,v $
297 ! Revision 1.5 2008/12/06 08:44:43 mtcampbe
298 ! Updated license.
299 !
300 ! Revision 1.4 2008/11/19 22:17:55 mtcampbe
301 ! Added Illinois Open Source License/Copyright
302 !
303 ! Revision 1.3 2004/08/04 02:50:49 wasistho
304 ! removed turb%avgCoI,J,K replaced with turb%workI,J,K
305 !
306 ! Revision 1.2 2004/03/12 02:55:36 wasistho
307 ! changed rocturb routine names
308 !
309 ! Revision 1.1 2004/03/08 23:35:45 wasistho
310 ! changed turb nomenclature
311 !
312 ! Revision 1.2 2003/08/29 01:41:29 wasistho
313 ! Added TARGET attribute to region variable, since pointers are cached into it
314 !
315 ! Revision 1.1 2002/10/14 23:55:29 wasistho
316 ! Install Rocturb
317 !
318 !
319 !******************************************************************************
320 
321 
322 
323 
324 
325 
326 
**********************************************************************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
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:354
subroutine turb_flolesgencofflo(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine turb_flolesgencoffhi(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
**********************************************************************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 jdnbeg
**********************************************************************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 idnend
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 jdnend
**********************************************************************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 idnbeg
**********************************************************************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 turb_flolesgencoff(region)
subroutine turb_flolesgencofclo(global, filtDir, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:346
subroutine turb_flolesgencofchi(global, filtDir, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
**********************************************************************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 rflo_getdimensdummynodes(region, iLev, idnbeg, idnend, jdnbeg, jdnend, kdnbeg, kdnend)
**********************************************************************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
**********************************************************************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 kdnbeg