Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_TimeStepping.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: Integrate the governing equations in time; move/regenerate the grid.
26 !
27 ! Description: None.
28 !
29 ! Input:
30 ! dTimeSystem Total solution time (unsteady flow)
31 ! dIterSystem Total number of iterations (steady flow)
32 ! regions Data for all grid regions
33 !
34 ! Output:
35 ! regions Data for all grid regions
36 !
37 ! Notes: None.
38 !
39 ! ******************************************************************************
40 !
41 ! $Id: RFLU_TimeStepping.F90,v 1.73 2008/12/06 08:44:30 mtcampbe Exp $
42 !
43 ! Copyright: (c) 2002-2006 by the University of Illinois
44 !
45 ! ******************************************************************************
46 
47 SUBROUTINE rflu_timestepping(dTimeSystem,dIterSystem,regions)
48 
49  USE moddatatypes
50  USE moderror
51  USE modparameters
52  USE modglobal, ONLY: t_global
53  USE modbndpatch, ONLY: t_patch
54  USE moddatastruct, ONLY: t_region
55  USE modmixture, ONLY: t_mixt_input
56  USE modmpi
57 
63  USE rflu_modprobes
67  USE rflu_modweights
68 
72 
73 #ifdef PLAG
78 #endif
79 
100  rungekuttamp, &
101  writeprobe, &
103 
104 #ifdef GENX
106 #endif
107 #ifdef STATS
108  USE modinterfaces, ONLY: rflu_writestat
110 #endif
111 
112  IMPLICIT NONE
113 
114 #ifdef GENX
115 #include "roccomf90.h"
116 #endif
117 
118 ! ******************************************************************************
119 ! Declarations and definitions
120 ! ******************************************************************************
121 
122 ! ==============================================================================
123 ! Arguments
124 ! ==============================================================================
125 
126  INTEGER :: ditersystem
127  REAL(RFREAL) :: dtimesystem
128  TYPE(t_region), POINTER :: regions(:)
129 
130 ! ==============================================================================
131 ! Locals
132 ! ==============================================================================
133 
134  CHARACTER(CHRLEN) :: rcsidentstring
135  INTEGER :: ipatch,ireg,stophandle,dtlimcount
136  LOGICAL :: doprint,doprobe,dowrite,finished,ftermnew,movegrid,residfterm, &
137  stopfileexists
138  TYPE(t_global), POINTER :: global
139  TYPE(t_mixt_input), POINTER :: pmixtinput
140  TYPE(t_patch), POINTER :: ppatch
141  TYPE(t_region), POINTER :: pregion,pregionserial
142 
143 ! ******************************************************************************
144 ! Start
145 ! ******************************************************************************
146 
147  rcsidentstring = '$RCSfile: RFLU_TimeStepping.F90,v $ $Revision: 1.73 $'
148 
149 ! ******************************************************************************
150 ! Set pointers and variables
151 ! ******************************************************************************
152 
153  global => regions(1)%global
154 
155  CALL registerfunction(global,'RFLU_TimeStepping',&
156  'RFLU_TimeStepping.F90')
157 
158  finished = .false. ! run not finished yet
159 
160 #ifdef GENX
161  global%timeSinceRestart = 0.0_rfreal
162 #endif
163 
164 ! ==============================================================================
165 ! No multigrid here
166 ! ==============================================================================
167 
168  ftermnew = .false. ! no new forcing term
169  residfterm = .false. ! do not add forcing term to residual
170 
171 ! ==============================================================================
172 ! Determine whether have moving grids
173 ! ==============================================================================
174  dtlimcount = 0
175  movegrid = .false.
176 
177  DO ireg = 1,global%nRegionsLocal
178  IF ( regions(ireg)%mixtInput%moveGrid .EQV. .true. ) THEN
179  movegrid = .true.
180  END IF ! regions
181  END DO ! iReg
182 
183 ! ******************************************************************************
184 ! Loop over iterations/time steps
185 ! ******************************************************************************
186 
187  DO
188 
189 ! ==============================================================================
190 ! Check for non-zero system time or iteration step. This is needed because
191 ! of changed restart mechanism. If restarting code when final time was
192 ! reached, can get zero time step which gives indeterminate or infinite
193 ! grid speeds for moving grid computations.
194 ! ==============================================================================
195 
196  IF ( global%flowType == flow_unsteady ) THEN
197  IF ( dtimesystem == 0.0_rfreal ) THEN
198  global%warnCounter = global%warnCounter + 1
199 
200  IF ( global%myProcid == masterproc .AND. &
201  global%verbLevel > verbose_none ) THEN
202  WRITE(stdout,'(A,2(1X,A))') solver_name,'*** WARNING *** ', &
203  'Nothing to be done. Returning to calling procedure.'
204  END IF ! global
205 
206  EXIT
207  END IF ! dTimeSystem
208  ELSE
209  IF ( ditersystem == 0 ) THEN
210  global%warnCounter = global%warnCounter + 1
211 
212  IF ( global%myProcid == masterproc .AND. &
213  global%verbLevel > verbose_none ) THEN
214  WRITE(stdout,'(A,2(1X,A))') solver_name,'*** WARNING *** ', &
215  'Nothing to be done. Returning to calling procedure.'
216  END IF ! global
217 
218  EXIT
219  END IF ! dIterSystem
220  END IF ! global%flowType
221 
222 ! ==============================================================================
223 ! Update iteration counter for steady flow. NOTE does not have to be done
224 ! here, but is more consistent, otherwise can get output for iteration 0
225 ! from RFLU_DecidePrint, and again from iteration 1 because of how MOD
226 ! function works. If update iteration counters here, only get output once.
227 ! ==============================================================================
228 
229  IF ( global%flowType == flow_steady ) THEN
230  global%currentIter = global%currentIter + 1
231  global%iterSinceRestart = global%iterSinceRestart + 1
232  END IF ! global%flowType
233 
234 ! ==============================================================================
235 ! Compute time step. For unsteady flow, compute minimum time step and make
236 ! sure do not run over maximum time.
237 ! ==============================================================================
238 
239  DO ireg = 1,global%nRegionsLocal
240  pregion => regions(ireg)
241 
242  IF ( pregion%mixtInput%flowModel == flow_euler ) THEN
243  CALL rflu_timestepinviscid(pregion)
244  ELSE
245  CALL rflu_timestepviscous(pregion)
246  END IF ! pRegion
247  END DO ! iReg
248 
249  IF ( global%flowType == flow_unsteady ) THEN
250  CALL rflu_minimumtimestep(regions)
251 #ifdef GENX
252  IF ( global%dtMin < global%dtImposed .AND. &
253  global%dtMin < global%dtMinLimit ) THEN
254  dtlimcount = dtlimcount + 1
255  IF ( dtlimcount > 2) THEN
256  dtlimcount = 0
257  stophandle = com_get_function_handle('Rocman.interrupt')
258  IF(stophandle <= 0) THEN
259  WRITE(*,*) 'Could not get Rocman.stop function handle.'
260  ELSE
261  CALL com_call_function(stophandle,2,3,'Rocflu dt < limit, requesting remesh')
262  ENDIF
263  ENDIF
264  ENDIF
265 #endif
266 
267  IF ( global%timeSinceRestart + global%dtMin > dtimesystem ) THEN
268  global%dtMin = dtimesystem - global%timeSinceRestart
269  finished = .true.
270  END IF ! global%timeSinceRestart
271  END IF ! global
272 
273 ! ==============================================================================
274 ! Move or generate new grid
275 ! ==============================================================================
276 
277  IF ( global%flowType == flow_unsteady ) THEN
278  IF ( movegrid .EQV. .true. ) THEN
279  CALL rflu_getdeformationwrapper(regions)
280  CALL rflu_movegridwrapper(regions)
281 
282  DO ireg=1,global%nRegionsLocal
283  pregion => regions(ireg)
284 
285  CALL rflu_buildgeometry(pregion)
286  CALL rflu_computegridspeeds(pregion)
287 
288  IF(global%zoomFactor > 1) THEN
289  CALL rflu_unzoomgridspeeds(pregion)
290  ENDIF
291 
292  IF ( global%checkLevel == check_high ) THEN
293  CALL rflu_checkgridspeeds(pregion)
294  END IF ! global%checkLevel
295  END DO ! iReg
296  END IF ! moveGrid
297  END IF ! global%flowType
298 
299 ! ==============================================================================
300 ! Recompute weights
301 ! ==============================================================================
302 #ifndef PROPONLY
303 
304  IF ( global%flowType == flow_unsteady ) THEN
305  IF ( movegrid .EQV. .true. ) THEN
306  DO ireg=1,global%nRegionsLocal
307  pregion => regions(ireg)
308  pmixtinput => pregion%mixtInput
309 
310  IF ( pmixtinput%spaceOrder > 1 ) THEN
311  CALL rflu_computewtsc2cwrapper(pregion,pmixtinput%spaceOrder-1)
312  END IF ! pMixtInput%spaceOrder
313 
314  IF ( pmixtinput%flowModel == flow_navst ) THEN
315  CALL rflu_computewtsf2cwrapper(pregion,pmixtinput%spaceOrder-1)
316  END IF ! pMixtInput%flowModel
317 
318  DO ipatch = 1,pregion%grid%nPatches
319  ppatch => pregion%patches(ipatch)
320 
321  IF ( rflu_decideneedbgradface(pregion,ppatch) .EQV. .true. ) THEN
322  CALL rflu_computewtsbf2cwrapper(pregion,ppatch,ppatch%spaceOrder)
323  END IF ! RFLU_DecideNeedBGradFace
324  END DO ! iPatch
325  END DO ! iReg
326  END IF ! moveGrid
327  END IF ! global%flowType
328 
329 ! ==============================================================================
330 ! Relocate probes
331 ! ==============================================================================
332 
333  IF ( global%flowType == flow_unsteady ) THEN
334  IF ( movegrid .EQV. .true. ) THEN
335  IF ( global%nProbes > 0 ) THEN
336  DO ireg = 1,global%nRegionsLocal
337  pregion => regions(ireg)
338  CALL rflu_findprobecells(pregion)
339  END DO ! iReg
340 
341  CALL rflu_printprobeinfo(global)
342  END IF ! global
343  END IF ! moveGrid
344  END IF ! global%flowType
345 
346 ! ==============================================================================
347 ! Compute new solution
348 ! ==============================================================================
349 
350  global%forceX = 0.0_rfreal
351  global%forceY = 0.0_rfreal
352  global%forceZ = 0.0_rfreal
353  global%massIn = 0.0_rfreal
354  global%massOut = 0.0_rfreal
355 
356  IF ( global%flowType == flow_unsteady ) THEN
357  CALL rungekuttamp(regions)
358 ! TEMPORARY - At present, do not use operator-split integration of chemistry
359 ! source terms based on modifications by Luca. This means that
360 ! call source term residual function directly in SourceTermsMP.F90
361 ! CALL IntegrateSourceTermsMP(regions)
362 ! END TEMPORARY
363  ELSE
364  CALL rflu_explicitmultistage(regions)
365  END IF ! global%flowType
366 
367 #ifdef STATS
368 ! ==============================================================================
369 ! Get statistics
370 ! ==============================================================================
371 
372  CALL getstatistics(regions)
373 #endif
374 
375 ! ==============================================================================
376 ! Reset global%timeSince* variables. NOTE this must be done right before
377 ! the update of the various time variables, otherwise calling the routines
378 ! RFLU_Decide* from within rungeKuttaMP or explicitMultiStage will not work
379 ! correctly.
380 ! ==============================================================================
381 
382  IF ( rflu_decideprint(global) .EQV. .true. ) THEN
383  IF ( global%flowType == flow_unsteady ) THEN
384  IF ( global%iterSinceRestart > 1 ) THEN
385  global%timeSincePrint = 0.0_rfreal
386  END IF ! global%iterSinceRestart
387  END IF ! global%flowType
388  END IF ! RFLU_DecidePrint
389 
390  IF ( rflu_decidewrite(global) .EQV. .true. ) THEN
391  IF ( global%flowType == flow_unsteady ) THEN
392  global%timeSinceWrite = 0.0_rfreal
393  END IF ! global%flowType
394  END IF ! RFLU_DecideWrite
395 
396  IF ( rflu_decidewriteprobes(global) .EQV. .true. ) THEN
397  IF ( global%flowType == flow_unsteady ) THEN
398  IF ( global%iterSinceRestart > 1 ) THEN
399  global%timeSinceProbe = 0.0_rfreal
400  END IF ! global%iterSinceRestart
401  END IF ! global%flowType
402  END IF ! RFLU_DecideWriteProbes
403 
404 ! ==============================================================================
405 ! Update times for unsteady flow
406 ! ==============================================================================
407 
408 ! ENDIF PROPONLY
409 #endif
410 
411  IF ( global%flowType == flow_unsteady ) THEN
412  global%currentTime = global%currentTime + global%dtMin
413  global%timeSinceRestart = global%timeSinceRestart + global%dtMin
414 
415  global%timeSincePrint = global%timeSincePrint + global%dtMin
416  global%timeSinceWrite = global%timeSinceWrite + global%dtMin
417  global%timeSinceProbe = global%timeSinceProbe + global%dtMin
418 
419  global%iterSinceRestart = global%iterSinceRestart + 1
420  END IF ! global%flowType
421 
422 ! ==============================================================================
423 ! Decide whether to print/write convergence, data, and probes
424 ! ==============================================================================
425 
426  doprint = rflu_decideprint(global)
427  dowrite = rflu_decidewrite(global)
428  doprobe = rflu_decidewriteprobes(global)
429 
430 ! ==============================================================================
431 ! Check for stop file
432 ! ==============================================================================
433 
434  INQUIRE(file="STOP",exist=stopfileexists)
435  IF ( stopfileexists .EQV. .true. ) THEN
436  IF ( global%myProcid == masterproc .AND. &
437  global%verbLevel /= verbose_none ) THEN
438  WRITE(stdout,'(A)') solver_name
439  WRITE(stdout,'(A,1X,A)') solver_name,'Stop file detected!'
440  WRITE(stdout,'(A)') solver_name
441  END IF ! global
442 
443  finished = .true.
444  END IF ! stopFileExists
445 
446 ! ==============================================================================
447 ! Check for end of time stepping
448 ! ==============================================================================
449 
450  IF ( global%flowType == flow_unsteady ) THEN
451  IF ( global%timeSinceRestart >= dtimesystem ) THEN
452  finished = .true.
453  END IF ! global%timeSinceRestart
454  ELSE
455  IF ( (doprint .EQV. .true.) .OR. (global%iterSinceRestart >= ditersystem) ) THEN
456  CALL rflu_residualnorm(regions)
457  IF ( (global%iterSinceRestart >= ditersystem) .OR. &
458  (global%residual/global%resInit <= global%resTol) ) THEN
459  finished = .true.
460  END IF ! global%iterSinceRestart
461  END IF ! doPrint
462  END IF ! global%flowType
463 
464 ! ==============================================================================
465 ! Write convergence (file & screen) and total mass (file) history
466 ! ==============================================================================
467 
468  IF ( (doprint .EQV. .true.) .OR. (finished .EQV. .true.) ) THEN
469  CALL rflu_printwriteconvergence(global)
470 
471 #ifndef GENX
472  IF ( movegrid .EQV. .true. ) THEN
473  CALL rflu_computeintegralvalues(regions)
474  CALL writetotalmass(regions)
475  END IF ! moveGrid
476 #endif
477 
478 #ifndef PROPONLY
479  DO ireg = 1,global%nRegionsLocal
480  IF ( regions(ireg)%mixtInput%spaceDiscr == discr_opt_les ) THEN
481  CALL rflu_writestatsfileoles(global)
482  END IF ! mixtInput
483  END DO ! iReg
484 #endif
485  END IF ! doPrint
486 
487 #ifndef PROPONLY
488 ! ==============================================================================
489 ! Compute forces and mass flow
490 ! ==============================================================================
491 
492  IF ( global%forceFlag .EQV. .true. ) THEN
493  IF ( (dowrite .EQV. .true.) .OR. (finished .EQV. .true.) ) THEN
494  DO ireg = 1,global%nRegionsLocal
495  pregion => regions(ireg)
496 
497  CALL rflu_computelocalforcesmoments(pregion)
498  END DO ! iReg
499 
500  CALL rflu_computeglobalforcesmoments(regions)
501 
502  DO ireg = 1,global%nRegionsLocal
503  pregion => regions(ireg)
504 
505  CALL rflu_tsi_computeglobalthrustsi(pregion)
506  END DO ! iReg
507 
508  pregion => regions(1)
509 
510  IF ( pregion%global%myProcid == masterproc ) THEN
511  CALL rflu_printglobalforcesmoments(pregion)
512  CALL rflu_writeglobalforcesmoments(pregion)
513  CALL rflu_tsi_printglobalvals(pregion)
514  CALL rflu_tsi_writeglobalvals(pregion)
515  END IF ! pRegion
516  END IF ! doWrite
517  END IF ! global%forceFlag
518 
519 ! ==============================================================================
520 ! Store probe data
521 ! ==============================================================================
522 
523  IF ( global%nProbes > 0 ) THEN
524  IF ( doprobe .EQV. .true. ) THEN
525  DO ireg = 1,global%nRegionsLocal
526  CALL writeprobe(regions,ireg)
527  END DO ! iReg
528  END IF ! doProbe
529  END IF ! global
530 
531 #ifndef GENX
532 ! ==============================================================================
533 ! Store flow field (and grid if moving). Write restart info file after
534 ! flow (and grid) files so that should those not be written due to reaching
535 ! the time limit, the restart file will not contain the time level of the
536 ! incomplete flow (and grid) files.
537 ! ==============================================================================
538 
539  IF ( (dowrite .EQV. .true.) .AND. (finished .EQV. .false.) ) THEN
540 #ifdef PLAG
541  IF ( global%plagUsed .EQV. .true. ) THEN
542  CALL plag_calcnpclsglobal(regions)
543 
544  IF ( global%myProcid == masterproc ) THEN
545  pregionserial => regions(0)
546 
547  CALL plag_rflu_writedimensions(pregionserial)
548  END IF ! global%myProcid
549  END IF ! global%plagUsed
550 #endif
551 
552  DO ireg=1,global%nRegionsLocal
553  pregion => regions(ireg)
554 
555  CALL rflu_writedimensionswrapper(pregion,write_dimens_mode_maybe)
556 
557  IF ( movegrid .EQV. .true. ) THEN
558  CALL rflu_writegridwrapper(pregion)
559  CALL rflu_writegridspeedswrapper(pregion)
560 
561  IF ( global%myProcid == masterproc .AND. &
562  global%verbLevel > verbose_none ) THEN
563  CALL rflu_printgridinfo(pregion)
564  END IF ! global%myProcid
565  END IF ! moveGrid
566 
567  CALL rflu_writeflowwrapper(pregion)
568  CALL rflu_bxv_writevarswrapper(pregion)
569 
570  IF ( global%patchCoeffFlag .EQV. .true. ) THEN
571  CALL rflu_writepatchcoeffswrapper(pregion)
572  END IF ! global%patchCoeffFlag
573 
574 #ifdef PLAG
575  IF ( global%plagUsed .EQV. .true. ) THEN
576  CALL plag_writesurfstatswrapper(pregion)
577  END IF ! global%plagUsed
578 #endif
579 
580  IF ( global%myProcid == masterproc .AND. &
581  global%verbLevel > verbose_none ) THEN
582  CALL rflu_printflowinfowrapper(pregion)
583 
584  IF ( global%verbLevel > verbose_low ) THEN
585  CALL rflu_printchangeinfo(pregion)
586  END IF ! global%verbLevel
587 
588 #ifdef PLAG
589  IF ( global%plagUsed .EQV. .true. ) THEN
590  CALL plag_printnpclsglobal(pregion)
591  END IF ! global%plagUsed
592 #endif
593  END IF ! global%myProcid
594  END DO ! iReg
595 
596  CALL rflu_writerestartinfo(global)
597  END IF ! doWrite
598 
599 #ifdef STATS
600 ! ==============================================================================
601 ! Output statistics
602 ! ==============================================================================
603 
604  IF ( (dowrite .EQV. .true.) .AND. (finished .EQV. .false.) .AND. &
605  (global%doStat == active) ) THEN
606  IF (global%myProcid==masterproc .AND. &
607  global%verbLevel/=verbose_none) THEN
608  WRITE(stdout,'(A)') solver_name,'Saving statistics ...'
609  ENDIF
610 
611  DO ireg = 1,global%nRegionsLocal
612  pregion => regions(ireg)
613  CALL rflu_writestat(pregion)
614  END DO ! iReg
615  END IF ! iReg
616 #endif
617 #endif
618 #endif
619 
620 ! ==============================================================================
621 ! If run finished, update GENX buffers and exit
622 ! ==============================================================================
623 
624  IF ( finished .EQV. .true. ) THEN
625 #ifdef GENX
626  DO ireg = 1,global%nRegionsLocal
627  CALL rflu_putboundaryvalues(regions(ireg))
628  END DO ! iReg
629 
630  global%timeStamp = global%currentTime
631 #endif
632  EXIT
633  END IF ! finished
634 
635  END DO ! loop over time/iterations
636 
637 ! ******************************************************************************
638 ! End
639 ! ******************************************************************************
640 
641  CALL deregisterfunction(global)
642 
643 END SUBROUTINE rflu_timestepping
644 
645 ! ******************************************************************************
646 !
647 ! RCS Revision history:
648 !
649 ! $Log: RFLU_TimeStepping.F90,v $
650 ! Revision 1.73 2008/12/06 08:44:30 mtcampbe
651 ! Updated license.
652 !
653 ! Revision 1.72 2008/11/19 22:17:43 mtcampbe
654 ! Added Illinois Open Source License/Copyright
655 !
656 ! Revision 1.71 2007/04/14 14:25:56 mtcampbe
657 ! Updated for TZ
658 !
659 ! Revision 1.70 2007/03/31 23:54:34 haselbac
660 ! Bug fix: Writing of PLAG dims should only be called by serial region on master proc
661 !
662 ! Revision 1.69 2007/03/27 00:41:17 haselbac
663 ! Added calls to calculate, write, and print particle dimensions
664 !
665 ! Revision 1.68 2007/02/18 03:17:56 mtcampbe
666 ! Added proponly for Rocstar proponly runs
667 !
668 ! Revision 1.67 2006/10/20 21:33:07 mparmar
669 ! Added calls to write thrust/specific impulse and again added code for NSCBC implementation
670 !
671 ! Revision 1.66 2006/09/12 14:58:44 mtcampbe
672 ! Moved include of Roccom after IMPLICIT NONE
673 !
674 ! Revision 1.65 2006/09/11 15:43:11 mtcampbe
675 ! Added Rocman interrupt call to support automatic remeshing.
676 !
677 ! Revision 1.64 2006/08/19 15:40:04 mparmar
678 ! Changed because of NSCBC implementation
679 !
680 ! Revision 1.63 2006/04/07 16:04:03 haselbac
681 ! Adapted to changes in bf2c wts computation
682 !
683 ! Revision 1.62 2006/04/07 15:19:22 haselbac
684 ! Removed tabs
685 !
686 ! Revision 1.61 2006/04/07 14:55:06 haselbac
687 ! Adapted to changes in bface stencil routine
688 !
689 ! Revision 1.60 2006/03/09 14:10:31 haselbac
690 ! Now call wrapper routine for F2C weights
691 !
692 ! Revision 1.59 2006/01/06 22:16:13 haselbac
693 ! Adapted to name changes, removed commented-out call to ExplMS routine
694 !
695 ! Revision 1.58 2005/11/10 16:51:29 fnajjar
696 ! Added plagUsed IF statement around PLAG routines
697 !
698 ! Revision 1.57 2005/10/25 19:39:23 haselbac
699 ! Added IF on forceFlag
700 !
701 ! Revision 1.56 2005/10/05 14:20:35 haselbac
702 ! Added call to recompute bface wts for moving grids
703 !
704 ! Revision 1.55 2005/08/09 00:59:56 haselbac
705 ! Enclosed writing of patch coeffs within IF (patchCoeffFlag)
706 !
707 ! Revision 1.54 2005/06/06 14:23:35 haselbac
708 ! Adapted to Lucas changes
709 !
710 ! Revision 1.53 2005/05/16 20:44:55 haselbac
711 ! Now compute time step also for steady flow, call RFLU_ExplicitMultiStage
712 !
713 ! Revision 1.52 2005/04/29 12:50:00 haselbac
714 ! Added USE RFLU_ModProbes, removed interfaces for probe routines
715 !
716 ! Revision 1.51 2005/04/20 14:44:04 haselbac
717 ! Removed CHECK_UNIFLOW code section
718 !
719 ! Revision 1.50 2005/04/15 15:07:26 haselbac
720 ! Now use RFLU_PrintWriteConvergence, fixed bug in writing forces
721 !
722 ! Revision 1.49 2004/12/28 20:28:20 wasistho
723 ! moved statistics routines into module ModStatsRoutines
724 !
725 ! Revision 1.48 2004/12/21 15:05:11 fnajjar
726 ! Included calls for PLAG surface statistics
727 !
728 ! Revision 1.47 2004/11/29 17:17:29 wasistho
729 ! use ModInterfacesStatistics
730 !
731 ! Revision 1.46 2004/11/03 17:05:53 haselbac
732 ! Removed HACK_PERIODIC ifdef
733 !
734 ! Revision 1.45 2004/10/19 19:29:36 haselbac
735 ! Added writing of grid speeds, changed time step interfaces, cosmetics
736 !
737 ! Revision 1.44 2004/07/06 15:14:53 haselbac
738 ! Adapted to changes in libflu and modflu, cosmetics
739 !
740 ! Revision 1.43 2004/06/16 20:01:15 haselbac
741 ! Added forces and moments stuff, cosmetics
742 !
743 ! Revision 1.42 2004/04/14 02:10:07 haselbac
744 ! Removed call to DescaleGridSpeeds
745 !
746 ! Revision 1.41 2004/04/01 21:30:35 haselbac
747 ! Added IntegrateSourceTermsMP, cosmetic changes
748 !
749 ! Revision 1.40 2004/03/17 04:28:25 haselbac
750 ! Adapted call to RFLU_WriteDimensionsWrapper
751 !
752 ! Revision 1.39 2004/03/11 16:34:32 fnajjar
753 ! ACH: Changed call to RFLU_WriteDimWrapper bcos of Rocpart
754 !
755 ! Revision 1.38 2004/01/31 03:59:03 haselbac
756 ! Improved updating of iteration counters
757 !
758 ! Revision 1.37 2004/01/29 22:59:24 haselbac
759 ! Added setting of timeSince* vars for improved useability of RFLU_Decide*
760 ! funcs
761 !
762 ! Revision 1.36 2003/12/04 03:30:09 haselbac
763 ! Adapted recomputation of weights
764 !
765 ! Revision 1.35 2003/11/25 21:04:46 haselbac
766 ! Added call to RFLU_PrintFlowInfoWrapper, cosmetic changes
767 !
768 ! Revision 1.34 2003/11/04 01:35:27 haselbac
769 ! Bug fix: added init for timeSinceRestart for GENX
770 !
771 ! Revision 1.33 2003/10/29 21:39:57 haselbac
772 ! Bug fix and clean-up: Writing of data to screen and files
773 !
774 ! Revision 1.32 2003/10/15 02:44:21 haselbac
775 ! Removed unnecessary initialization of dtMin
776 !
777 ! Revision 1.31 2003/10/03 20:47:21 haselbac
778 ! Changed from RungeKutta to RungeKuttaMP
779 !
780 ! Revision 1.30 2003/08/13 20:28:49 haselbac
781 ! Fixed bug with writing probe data within GENx
782 !
783 ! Revision 1.29 2003/07/22 02:11:40 haselbac
784 ! Added global%warnCounter
785 !
786 ! Revision 1.28 2003/07/09 22:37:48 haselbac
787 ! Added check to avoid wrong restart, find probes on moving grids
788 !
789 ! Revision 1.27 2003/06/20 22:36:23 haselbac
790 ! Added call to RFLU_WriteRestartInfo, fixed bug in steady conv check
791 !
792 ! Revision 1.26 2003/04/24 15:43:35 haselbac
793 ! Adapted interface to RFLU_PutBoundaryValues
794 !
795 ! Revision 1.25 2003/04/07 14:27:44 haselbac
796 ! Added interval writing of probe info
797 !
798 ! Revision 1.24 2003/03/31 16:18:17 haselbac
799 ! Replaced MoveGrid call by call to wrapper
800 !
801 ! Revision 1.23 2003/03/15 18:59:56 haselbac
802 ! Added calls to DescaleGridSpeeds and GetDeformationWrapper
803 !
804 ! Revision 1.22 2003/02/25 21:47:39 haselbac
805 ! Added call to DescaleGridSpeeds
806 !
807 ! Revision 1.21 2003/01/28 14:52:08 haselbac
808 ! Changes to be consistent with rewrite of RFLU_InitFlowSolver
809 !
810 ! Revision 1.20 2002/12/20 23:21:33 haselbac
811 ! Fixed output bug: no output for verbosity=0
812 !
813 ! Revision 1.19 2002/11/15 21:26:49 haselbac
814 ! Added RFLU_ComputeIntegralValues
815 !
816 ! Revision 1.18 2002/11/08 21:36:25 haselbac
817 ! Fixed bug in grid-speed comp, added RFLU_CheckGridSpeeds and WriteTotalMass
818 !
819 ! Revision 1.17 2002/11/02 02:04:49 wasistho
820 ! Added TURB statistics
821 !
822 ! Revision 1.16 2002/10/27 19:19:31 haselbac
823 ! Logical modifications of last part, cosmetic redesign
824 !
825 ! Revision 1.15 2002/10/16 21:18:50 haselbac
826 ! Added call to RFLU_NewGrid, some rearrangement of calls
827 !
828 ! Revision 1.14 2002/10/12 15:00:44 haselbac
829 ! Added statements for time check for GENX runs
830 !
831 ! Revision 1.13 2002/10/05 19:35:19 haselbac
832 ! Call wrapper routines for output, write probe data
833 !
834 ! Revision 1.12 2002/09/09 15:51:56 haselbac
835 ! global and mixtInput under regions, adapated calls to RFLU_CheckCalcGrad,
836 ! OLES routines removed, added viscous calls
837 !
838 ! Revision 1.11 2002/07/25 14:23:40 haselbac
839 ! Added OLES calls, gradient check, and HACK_PERIODIC segment
840 !
841 ! Revision 1.10 2002/06/18 00:26:20 wasistho
842 ! Added prefix SOLVER NAME to satistics STDOutput
843 !
844 ! Revision 1.9 2002/06/17 13:34:12 haselbac
845 ! Prefixed SOLVER_NAME to all screen output
846 !
847 ! Revision 1.8 2002/06/14 22:26:08 wasistho
848 ! update statistics
849 !
850 ! Revision 1.7 2002/06/14 21:54:35 wasistho
851 ! Added time avg statistics
852 !
853 ! Revision 1.6 2002/06/14 20:19:46 haselbac
854 ! Deleted ModLocal, changed local%nRegions to global%nRegionsLocal
855 !
856 ! Revision 1.5 2002/06/10 21:35:50 haselbac
857 ! Changed order of convergence and file writing, changed flag to CHECK_UNIFLOW
858 !
859 ! Revision 1.4 2002/06/05 18:59:12 haselbac
860 ! Miscellaneous small functionality changes
861 !
862 ! Revision 1.3 2002/05/28 14:02:04 haselbac
863 ! Activated unsteady routines
864 !
865 ! Revision 1.2 2002/05/04 17:13:15 haselbac
866 ! Many changes to enable flow solution
867 !
868 ! Revision 1.1 2002/04/11 18:57:06 haselbac
869 ! Initial revision, commented out RFLO stuff
870 !
871 ! ******************************************************************************
872 
873 
874 
875 
876 
877 
878 
subroutine rflu_timestepviscous(pRegion)
subroutine rflu_movegridwrapper(regions)
subroutine rflu_printwriteconvergence(global)
subroutine integratesourcetermsmp(regions)
subroutine, public rflu_tsi_printglobalvals(pRegion)
subroutine rflu_timestepinviscid(pRegion)
subroutine, public rflu_writedimensionswrapper(pRegion, writeMode)
subroutine, public rflu_writeflowwrapper(pRegion)
LOGICAL function rflu_decideneedbgradface(pRegion, pPatch)
subroutine, public rflu_writegridspeedswrapper(pRegion)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine, public rflu_zoomgridspeeds(pRegion)
LOGICAL function rflu_decidewrite(global)
subroutine, public rflu_buildgeometry(pRegion, sypeFaceFlag)
subroutine rflu_putboundaryvalues(region)
subroutine rflu_residualnorm(regions)
subroutine, public rflu_findprobecells(pRegion)
LOGICAL function, public rflu_decidewriteprobes(global)
subroutine, public rflu_computewtsbf2cwrapper(pRegion, pPatch, order)
subroutine rflu_minimumtimestep(regions)
subroutine rflu_writestat(region)
subroutine rflu_explicitmultistage(regions)
subroutine rflu_writestatsfileoles(global)
subroutine writeprobe(regions, iReg)
Definition: WriteProbe.F90:45
subroutine, public rflu_printprobeinfo(global)
subroutine rflu_computegridspeeds(pRegion)
subroutine, public getstatistics(regions)
subroutine, public rflu_writepatchcoeffswrapper(pRegion)
subroutine rflu_computeintegralvalues(regions)
subroutine rungekuttamp(regions)
subroutine, public rflu_writeglobalforcesmoments(pRegion)
subroutine, public rflu_tsi_computeglobalthrustsi(pRegion)
subroutine rflu_timestepping(dTimeSystem, dIterSystem, regions)
subroutine, public rflu_writegridwrapper(pRegion)
subroutine, public plag_writesurfstatswrapper(pRegion)
subroutine, public rflu_computewtsc2cwrapper(pRegion, order)
subroutine, public rflu_computeglobalforcesmoments(regions)
subroutine, public rflu_computelocalforcesmoments(pRegion)
subroutine rflu_printgridinfo(pRegion)
subroutine, public plag_printnpclsglobal(pRegion)
LOGICAL function rflu_decideprint(global)
subroutine rflu_printchangeinfo(pRegion)
subroutine, public rflu_computewtsf2cwrapper(pRegion, order)
subroutine, public plag_rflu_writedimensions(pRegion)
subroutine rflu_checkgridspeeds(pRegion)
subroutine writetotalmass(regions)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine, public plag_calcnpclsglobal(regions)
subroutine, public rflu_tsi_writeglobalvals(pRegion)
subroutine rflu_writerestartinfo(global)
subroutine, public rflu_bxv_writevarswrapper(pRegion)
subroutine rflu_getdeformationwrapper(regions)
subroutine, public rflu_printglobalforcesmoments(pRegion)
subroutine rflu_printflowinfowrapper(pRegion)
subroutine, public rflu_unzoomgridspeeds(pRegion)