Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_PrintUserInput.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: Write out TURB user input for checking purposes.
26 !
27 ! Description: none.
28 !
29 ! Input: region = user input in current region.
30 !
31 ! Output: to standard output (monitor).
32 !
33 ! Notes: none.
34 !
35 !******************************************************************************
36 !
37 ! $Id: TURB_PrintUserInput.F90,v 1.9 2008/12/06 08:44:42 mtcampbe Exp $
38 !
39 ! Copyright: (c) 2001 by the University of Illinois
40 !
41 !******************************************************************************
42 
43 SUBROUTINE turb_printuserinput( region ) ! PUBLIC
44 
45  USE moddatatypes
46  USE moddatastruct, ONLY : t_region
47  USE modglobal, ONLY : t_global
48  USE moderror
49  USE modparameters
51  IMPLICIT NONE
52 
53 ! ... parameters
54  TYPE(t_region) :: region
55 
56 ! ... loop variables
57 
58 ! ... local variables
59  CHARACTER(CHRLEN) :: rcsidentstring
60  TYPE(t_global), POINTER :: global
61 
62  INTEGER :: turbmodel, modelclass
63  INTEGER :: calcvort
64 
65 ! ... WLM variables
66  INTEGER :: wallmodel, wlmrefpoint
67  REAL(RFREAL) :: wallrough
68 
69 ! ... LES variables
70  INTEGER :: engmodel, filterwidth(diri:dirk)
71  REAL(RFREAL) :: csmag, xyzsmag(xcoord:zcoord)
72 #ifdef RFLO
73  INTEGER :: filtertype, deltatype, homdir(diri:dirk)
74 #endif
75 
76 ! ... RaNS/DES variables
77  INTEGER :: wdistmeth, functv1, discrtype, discrorder
78  REAL(RFREAL) :: cb1, cb2, cw2, cw3, cv1, rsigma, rkappa, cw1, cdes
79  REAL(RFREAL) :: smoocf, k2, ook4
80 
81 !******************************************************************************
82 
83  rcsidentstring = '$RCSfile: TURB_PrintUserInput.F90,v $'
84 
85  global => region%global
86  CALL registerfunction( global,'TURB_PrintUserInput',&
87  'TURB_PrintUserInput.F90' )
88 
89 ! get pointers ---------------------------------------------------------------
90 
91  turbmodel = region%mixtInput%turbModel
92  calcvort = region%turbInput%calcVort
93 
94 ! WLM
95  wallmodel = region%turbInput%wallModel
96  wlmrefpoint = region%turbInput%wlmRefPoint
97  wallrough = region%turbInput%wallRough
98 
99 ! LES
100  csmag = region%turbInput%cSmag
101  xyzsmag(:) = region%turbInput%xyzSmag(:)
102  modelclass = region%turbInput%modelClass
103  filterwidth(:) = region%turbInput%filterWidth(:)
104  engmodel = region%turbInput%engModel
105 #ifdef RFLO
106  filtertype = region%turbInput%filterType
107  deltatype = region%turbInput%deltaType
108  homdir(:) = region%turbInput%homDir(:)
109 #endif
110 
111 ! RaNS/DES
112  IF ((turbmodel==turb_model_sa).OR.(turbmodel==turb_model_dessa).OR. &
113  (turbmodel==turb_model_hdessa)) THEN
114  cb1 = region%turbInput%const(mc_sa_cb1)
115  cb2 = region%turbInput%const(mc_sa_cb2)
116  cw2 = region%turbInput%const(mc_sa_cw2)
117  cw3 = region%turbInput%const(mc_sa_cw3)
118  cv1 = region%turbInput%const(mc_sa_cv1)
119  rsigma = region%turbInput%const(mc_sa_rsig)
120  rkappa = region%turbInput%const(mc_sa_rkap)
121  cw1 = region%turbInput%const(mc_sa_cw1)
122  cdes = region%turbInput%cdes
123  ENDIF
124  wdistmeth = region%turbInput%wDistMethod
125  functv1 = region%turbInput%functV1
126  smoocf = region%turbInput%smoocf
127  discrtype = region%turbInput%spaceDiscr
128  k2 = region%turbInput%vis2
129  ook4 = 1._rfreal/region%turbInput%vis4
130  discrorder = region%turbInput%spaceOrder
131 
132 ! turbulence model selection
133 
134  IF (turbmodel==turb_model_fixsmag) THEN
135  WRITE(stdout,1005) solver_name//' turbulence model = basic Smagorinsky'
136  ELSEIF (turbmodel==turb_model_scalsim) THEN
137  WRITE(stdout,1005) solver_name//' turbulence model = scale similarity'
138  ELSEIF (turbmodel==turb_model_dynsmag) THEN
139  WRITE(stdout,1005) solver_name//' turbulence model = dynamic Smagorinsky'
140  ELSEIF (turbmodel==turb_model_dynmixd) THEN
141  WRITE(stdout,1005) solver_name//' turbulence model = dynamic mixed'
142  ELSEIF (turbmodel==turb_model_sa) THEN
143  WRITE(stdout,1005) solver_name//' turbulence model = Spalart-Allmaras'
144  ELSEIF (turbmodel==turb_model_dessa) THEN
145  WRITE(stdout,1005) solver_name//' turbulence model = DES-SA'
146  ELSEIF (turbmodel==turb_model_hdessa) THEN
147  WRITE(stdout,1005) solver_name//' turbulence model = Hybrid DES-SA'
148  ENDIF
149  WRITE(stdout,1030) solver_name//' relevant input-data based on above model:'
150 
151 ! model parameters selection
152 
153  IF (modelclass==model_les) THEN
154 
155 ! - LES part
156 
157  WRITE(stdout,1030) solver_name//' class of model = LES'
158  IF (engmodel==active) THEN
159  WRITE(stdout,1030) solver_name//' energy SGS model = active'
160  ELSE
161  WRITE(stdout,1030) solver_name//' energy SGS model = off'
162  ENDIF
163 
164  IF (turbmodel==turb_model_fixsmag) THEN
165  WRITE(stdout,1020) solver_name//' C-Smagorinsky =',csmag
166  ENDIF
167  IF (turbmodel==turb_model_fixsmag .OR. &
168  turbmodel==turb_model_dynsmag .OR. &
169  turbmodel==turb_model_dynmixd) THEN
170  IF (xyzsmag(xcoord) > -huge(1._rfreal )/1000._rfreal) THEN
171  WRITE(stdout,1020) solver_name//' x-tripping =',xyzsmag(xcoord)
172  ENDIF
173  IF (xyzsmag(ycoord) > -huge(1._rfreal )/1000._rfreal) THEN
174  WRITE(stdout,1020) solver_name//' y-tripping =',xyzsmag(ycoord)
175  ENDIF
176  IF (xyzsmag(zcoord) > -huge(1._rfreal )/1000._rfreal) THEN
177  WRITE(stdout,1020) solver_name//' z-tripping =',xyzsmag(zcoord)
178  ENDIF
179  ENDIF
180  IF (turbmodel/=turb_model_fixsmag) THEN
181 #ifdef RFLO
182  IF (filtertype==filtype_uniform) THEN
183  WRITE(stdout,1030) solver_name//' filter type = uniform'
184  ELSE
185  WRITE(stdout,1030) solver_name//' filter type = non-uniform'
186  ENDIF
187  IF (deltatype==deltype_cbrt) THEN
188  WRITE(stdout,1030) solver_name//' delta type = cuberoot formula'
189  ELSE
190  WRITE(stdout,1030) solver_name//' delta type = sqrroot formula'
191  ENDIF
192 
193  WRITE(stdout,1010) solver_name//' ijk-filter width =', &
194  filterwidth(diri), filterwidth(dirj), &
195  filterwidth(dirk),' grid-spacing'
196 
197  WRITE(stdout,1010) solver_name//' ijk-homogen dir. =', &
198  homdir(diri),homdir(dirj),homdir(dirk), &
199  ' (1 = homogeneous, 0 = non-homogeneous)'
200 #endif
201 #ifdef RFLU
202  WRITE(stdout,1008) solver_name//' filter width =', &
203  filterwidth(diri),' grid-spacing'
204 #endif
205  ENDIF ! turbModel
206  ELSE
207 
208 ! - RANS/DES part
209 
210  WRITE(stdout,1030) solver_name//' class of model = RANS or DES'
211  IF ((turbmodel==turb_model_sa).OR.(turbmodel==turb_model_dessa).OR. &
212  (turbmodel==turb_model_hdessa)) THEN
213  WRITE(stdout,1020) solver_name//' model const. cb1 =',cb1
214  WRITE(stdout,1020) solver_name//' model const. cb2 =',cb2
215  WRITE(stdout,1020) solver_name//' model const. cw2 =',cw2
216  WRITE(stdout,1020) solver_name//' model const. cw3 =',cw3
217  WRITE(stdout,1020) solver_name//' model const. cv1 =',cv1
218  WRITE(stdout,1020) solver_name//' model const. SIG =',1._rfreal/rsigma
219  WRITE(stdout,1020) solver_name//' model const. KAP =',1._rfreal/rkappa
220  WRITE(stdout,1020) solver_name//' model const. cw1 =',cw1
221  IF (turbmodel==turb_model_dessa .OR. turbmodel==turb_model_hdessa) &
222  WRITE(stdout,1020) solver_name//' DES spacing coef =',cdes
223  IF (wdistmeth == wdist_direct) &
224  WRITE(stdout,1030) solver_name//' wall dist.method = direct'
225  IF (wdistmeth == wdist_hierar) &
226  WRITE(stdout,1030) solver_name//' wall dist.method = hierarchical'
227  IF (functv1 == sa_fv1_pow3) &
228  WRITE(stdout,1030) solver_name//' visc. funct. fv1 = power 3 formula'
229  IF (functv1 == sa_fv1_pow2) &
230  WRITE(stdout,1030) solver_name//' visc. funct. fv1 = power 2 formula'
231  ENDIF
232  WRITE(stdout,1030) solver_name//' RANS/DES Numeric :'
233  WRITE(stdout,1020) solver_name//' RANS smoocf =',smoocf
234  IF (discrtype == rans_discr_cen) THEN
235  IF (discrorder == rans_discr_ord1) &
236  WRITE(stdout,1030) solver_name//' RANS spc discr. = 1st order central'
237  IF (discrorder == rans_discr_ord2) &
238  WRITE(stdout,1030) solver_name//' RANS spc discr. = 2nd order central'
239  WRITE(stdout,1020) solver_name//' RANS k2 =',k2
240  WRITE(stdout,1020) solver_name//' RANS 1/k4 =',ook4
241  ELSEIF (discrtype == rans_discr_upw) THEN
242  IF (discrorder == rans_discr_ord1) &
243  WRITE(stdout,1030) solver_name//' RANS spc discr. = 1st order upwind'
244  IF (discrorder == rans_discr_ord2) &
245  WRITE(stdout,1030) solver_name//' RANS spc discr. = 2nd order upwind'
246  ENDIF
247  ENDIF
248 
249 ! vorticity components
250 
251  IF (calcvort == calcvort_fdt) THEN
252  WRITE(stdout,1030) solver_name//' vorticity sample : per fluid dt'
253  ELSEIF (calcvort == calcvort_sdt) THEN
254  WRITE(stdout,1030) solver_name//' vorticity sample : per system dt (Genx)'
255  ENDIF
256 
257 ! wall model selection
258 
259  IF (wallmodel==wlm_model_loglay) THEN
260  WRITE(stdout,1030) solver_name//' best wall model = log layer model'
261  ELSEIF (wallmodel==wlm_model_bndlay) THEN
262  WRITE(stdout,1030) solver_name//' best wall model = boundary layer model'
263  ELSEIF (wallmodel==wlm_model_extern) THEN
264  WRITE(stdout,1030) solver_name//' best wall model = prescribed wall stress'
265  ENDIF
266  IF (wallmodel/=wlm_model_nomodel) THEN
267  WRITE(stdout,1020) solver_name//' max. ref. point =', wlmrefpoint
268  IF (wallrough > real_small) THEN
269  WRITE(stdout,1020) solver_name//' max. roughness =', wallrough
270  ENDIF
271  ENDIF
272 
273 ! finish ----------------------------------------------------------------------
274 
275  CALL deregisterfunction( global )
276 
277 1005 FORMAT(/,a)
278 1008 FORMAT(a,i8,a)
279 1010 FORMAT(a,3i4,a)
280 1015 FORMAT(a,3i4)
281 1020 FORMAT(a,e12.5)
282 1030 FORMAT(a)
283 
284 END SUBROUTINE turb_printuserinput
285 
286 !******************************************************************************
287 !
288 ! RCS Revision history:
289 !
290 ! $Log: TURB_PrintUserInput.F90,v $
291 ! Revision 1.9 2008/12/06 08:44:42 mtcampbe
292 ! Updated license.
293 !
294 ! Revision 1.8 2008/11/19 22:17:54 mtcampbe
295 ! Added Illinois Open Source License/Copyright
296 !
297 ! Revision 1.7 2006/01/18 06:38:46 wasistho
298 ! screen printed tripping locations for eddyvis LES
299 !
300 ! Revision 1.6 2006/01/12 09:50:15 wasistho
301 ! enabled tripping fixed Smagorinsky
302 !
303 ! Revision 1.5 2005/03/09 06:35:10 wasistho
304 ! incorporated HDESSA
305 !
306 ! Revision 1.4 2004/04/08 03:18:03 wasistho
307 ! left justification of screen output
308 !
309 ! Revision 1.3 2004/03/27 02:16:42 wasistho
310 ! compiled with Rocflu
311 !
312 ! Revision 1.2 2004/03/19 02:47:33 wasistho
313 ! prepared for RFLU
314 !
315 ! Revision 1.1 2004/03/05 04:37:00 wasistho
316 ! changed nomenclature
317 !
318 ! Revision 1.12 2004/02/19 04:03:50 wasistho
319 ! added new rans/SA parameter VISCFUNCTION
320 !
321 ! Revision 1.11 2004/02/14 03:43:15 wasistho
322 ! added new WLM parameter: reference point
323 !
324 ! Revision 1.10 2003/10/27 23:13:19 wasistho
325 ! bug fixed in the output of cDes
326 !
327 ! Revision 1.9 2003/10/26 00:56:24 wasistho
328 ! bug fixed
329 !
330 ! Revision 1.8 2003/10/26 00:08:55 wasistho
331 ! added multiple discr.types and order
332 !
333 ! Revision 1.7 2003/10/24 03:55:56 wasistho
334 ! screen output RaNS dissipation coef k2
335 !
336 ! Revision 1.6 2003/10/17 20:24:11 wasistho
337 ! added IF statement for rans model constants
338 !
339 ! Revision 1.5 2003/10/07 20:34:13 wasistho
340 ! added screen print RaNS/DES numeric
341 !
342 ! Revision 1.3 2003/08/06 15:57:43 wasistho
343 ! added vorticities computation
344 !
345 ! Revision 1.2 2003/05/31 01:47:00 wasistho
346 ! installed turb. wall layer model
347 !
348 ! Revision 1.1 2002/10/14 23:55:30 wasistho
349 ! Install Rocturb
350 !
351 !
352 !******************************************************************************
353 
354 
355 
356 
357 
358 
359 
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine turb_printuserinput(region)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
RT a() const
Definition: Line_2.h:140