Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_coWlmReadBcSectionFlo.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: read in user input related to wall layer model on noslip wall bc.
26 !
27 ! Description: none.
28 !
29 ! Input: boundary condition file.
30 !
31 ! Output: regions = BC data pertinent to wlm.
32 !
33 ! Notes: none.
34 !
35 !******************************************************************************
36 !
37 ! $Id: TURB_coWlmReadBcSectionFlo.F90,v 1.7 2009/08/26 12:28:53 mtcampbe Exp $
38 !
39 ! Copyright: (c) 2001 by the University of Illinois
40 !
41 !******************************************************************************
42 
43 SUBROUTINE turb_cowlmreadbcsection( regions )
44 
45  USE moddatatypes
46  USE modbndpatch, ONLY : t_patch
47  USE moddatastruct, ONLY : t_region
48  USE modglobal, ONLY : t_global
50  USE moderror
51  USE modparameters
53  IMPLICIT NONE
54 
55 #include "Indexing.h"
56 
57 ! ... parameters
58  TYPE(t_region), POINTER :: regions(:)
59 
60 ! ... loop variables
61  INTEGER :: ireg, ipatch
62 
63 ! ... local variables
64  CHARACTER(CHRLEN) :: rcsidentstring
65  CHARACTER(15) :: keys(3)
66  CHARACTER(256) :: fname
67 
68  INTEGER :: brbeg, brend, prbeg, prend, distrib, switch
69  INTEGER :: n1, n2, ioff, ijbeg, ijend, errorflag
70 
71  LOGICAL :: defined(3)
72 
73  REAL(RFREAL) :: vals(3)
74 
75  TYPE(t_patch), POINTER :: patch1
76  TYPE(t_global), POINTER :: global
77 
78 !******************************************************************************
79 
80  rcsidentstring = '$RCSfile: TURB_coWlmReadBcSectionFlo.F90,v $ $Revision: 1.7 $'
81 
82  global => regions(1)%global
83 
84  CALL registerfunction( global,'TURB_CoWlmReadBcSection',&
85  'TURB_coWlmReadBcSectionFlo.F90' )
86 
87 ! specify keywords and search for them ----------------------------------------
88 
89  keys(1) = 'MODEL'
90  keys(2) = 'REFPOINT'
91  keys(3) = 'ROUGHNESS'
92 
93  CALL readpatchsection( global,if_input,3,keys,vals,brbeg,brend, &
94  prbeg,prend,distrib,fname,defined )
95 
96 ! get switches & check if all necessary values defined ------------------------
97 
98  DO ireg=brbeg,brend
99  IF (regions(ireg)%mixtInput%turbModel<=turb_model_none) THEN
100  CALL errorstop( global,err_turb_region,__line__,'Wall model unapplicable.' )
101  ENDIF
102 
103  regions(ireg)%turbInput%wallModel = 0
104  regions(ireg)%turbInput%wallRough = 0._rfreal
105  DO ipatch=prbeg,min(prend,regions(ireg)%nPatches)
106 
107  patch1 => regions(ireg)%levels(1)%patches(ipatch)
108 
109  IF ((patch1%bcType>=bc_noslipwall .AND. &
110  patch1%bcType<=bc_noslipwall+bc_range) .AND. & ! my boundary type,
111  regions(ireg)%procid==global%myProcid .AND. & ! region active and
112  regions(ireg)%active==active) THEN ! on my processor
113 
114  IF (patch1%valBola%bcSet .eqv. .true.) &
115  CALL errorstop( global,err_patch_overspec,__line__,'Wall layer model.' )
116 
117  IF (patch1%bcCoupled == bc_external) THEN ! data from outside
118  patch1%valBola%distrib = bcdat_distrib ! => always distribution
119  ELSE
120  patch1%valBola%distrib = distrib
121  ENDIF
122 
123 ! ----- get input switches
124 
125  IF (defined(1) .eqv. .true.) THEN
126  patch1%valBola%switches(wlm_input_model)=max( 0,int(vals(1)+0.5_rfreal) )
127  ELSE
128  CALL errorstop( global,err_no_bcswitch,__line__,'WLM model missing.' )
129  ENDIF
130 
131  IF (patch1%valBola%switches(wlm_input_model) == wlm_model_nomodel) goto 999
132 
133  IF (defined(2) .eqv. .true.) THEN
134  patch1%valBola%switches(wlm_input_refpoint) = int(vals(2)+0.5_rfreal)
135  ELSE
136  CALL errorstop( global,err_no_bcswitch,__line__, &
137  'WLM reference point missing.' )
138  ENDIF
139 
140 ! IF (defined(4) .eqv. .true.) THEN
141 ! patch1%valBola%switches(WLM_INPUT_HOMDIR) = INT(vals(4)+0.5_RFREAL)
142 ! ELSE
143 ! CALL ErrorStop( global,ERR_NO_BCSWITCH,__LINE__,'WLM homdir missing.' )
144 ! ENDIF
145 
146 ! ----- allocate memory for the roughness distribution
147 
148  patch1%valBola%nData = patch1%valBola%nData + 2*tensor_all_nelm + 3 + 9
149  n1 = abs(patch1%l1end-patch1%l1beg)
150  n2 = abs(patch1%l2end-patch1%l2beg)
151  ioff = n1 + 1
152  ijbeg = indij( 0, 0,ioff)
153  ijend = indij(n1,n2,ioff)
154 
155  ALLOCATE( patch1%valBola%vals(ijbeg:ijend,patch1%valBola%nData), &
156  stat=errorflag )
157  global%error = errorflag
158  IF (global%error /= 0) CALL errorstop( global,err_allocate,__line__ )
159 
160  IF (patch1%valBola%distrib==bcdat_distrib) THEN
161 ! ------- roughness distribution from file
162 ! CALL TURB_WlmReadRoughness( global,fname,patch )
163  CALL errorstop( global,err_val_bcval,__line__,'No variable roughness yet' )
164  ELSE
165 ! ------- distribution has constant value
166  IF (defined(3) .eqv. .true.) THEN
167  patch1%valBola%vals(:,wlm_vals_rough) = vals(3)
168  ELSE
169  patch1%valBola%vals(:,wlm_vals_rough) = 0._rfreal
170  ENDIF
171  ENDIF ! distribution?
172 
173  IF (patch1%valBola%switches(wlm_input_model) == wlm_model_extern) THEN
174 ! ------- wall stress distribution from file
175 ! CALL TURB_WlmReadWallStress( global,fname,patch )
176  ENDIF
177 
178 999 CONTINUE
179 
180 ! ----- set flag to BC specified
181  patch1%valBola%bcSet = .true.
182 
183  ENDIF ! my BC & processor, active
184 
185 ! --- copy max wlm param values to input param for screen-print
186 ! IF (patch1%bcType>=BC_NOSLIPWALL .AND. &
187 ! patch1%bcType<=BC_NOSLIPWALL+BC_RANGE) THEN
188 
189 ! regions(iReg)%turbInput%wallModel= &
190 ! MAX( regions(iReg)%turbInput%wallModel,INT(vals(1)+0.5_RFREAL) )
191 
192 ! regions(iReg)%turbInput%wlmRefPoint= &
193 ! MAX( regions(iReg)%turbInput%wlmRefPoint,INT(vals(2)+0.5_RFREAL) )
194 
195 ! regions(iReg)%turbInput%wallRough= &
196 ! MAX( regions(iReg)%turbInput%wallRough,vals(3) )
197 
198 ! ENDIF ! my boundary type
199  ENDDO ! iPatch
200  ENDDO ! iReg
201 
202 ! finalize --------------------------------------------------------------------
203 
204  CALL deregisterfunction( global )
205 
206 END SUBROUTINE turb_cowlmreadbcsection
207 
208 !******************************************************************************
209 !
210 ! RCS Revision history:
211 !
212 ! $Log: TURB_coWlmReadBcSectionFlo.F90,v $
213 ! Revision 1.7 2009/08/26 12:28:53 mtcampbe
214 ! Ported to Hera. Fixed logical expression syntax errors. Replaced all
215 ! IF (logical_variable) with IF (logical_variable .eqv. .true.) as
216 ! consistent with the specification. Also changed: IF( ASSOCIATED(expr) )
217 ! to IF ( ASSOCIATED(expr) .eqv. .true. ). Intel compilers produce code
218 ! which silently fails for some mal-formed expressions, so these changes
219 ! are a net which should ensure that they are evaluated as intended.
220 !
221 ! Revision 1.6 2008/12/06 08:44:43 mtcampbe
222 ! Updated license.
223 !
224 ! Revision 1.5 2008/11/19 22:17:55 mtcampbe
225 ! Added Illinois Open Source License/Copyright
226 !
227 ! Revision 1.4 2004/03/25 04:40:41 wasistho
228 ! prepared for RFLU
229 !
230 ! Revision 1.3 2004/03/23 03:35:00 wasistho
231 ! prepared for RFLU
232 !
233 ! Revision 1.2 2004/03/13 03:13:56 wasistho
234 ! get rid of flo/flu identifier in TURB_Co.. routines
235 !
236 ! Revision 1.1 2004/03/08 23:33:31 wasistho
237 ! changed turb nomenclature
238 !
239 ! Revision 1.4 2004/03/02 03:50:43 wasistho
240 ! bug fixed nvals=2 to nvals=3, forgot colon after Id and Log
241 !
242 !
243 !******************************************************************************
244 
245 
246 
247 
248 
249 
250 
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:354
subroutine turb_cowlmreadbcsection(regions)
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 brbeg
subroutine readpatchsection(global, fileID, nvals, keys, vals, brbeg, brend, prbeg, prend, distrib, profType, fname, defined)
**********************************************************************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 USE ModDataTypes USE prend
**********************************************************************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 USE ModDataTypes USE prbeg
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:346
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469