Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SPEC_RFLU_ModReadWriteVars.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: Suite of routines to read and write species solution files.
26 !
27 ! Description: None.
28 !
29 ! Notes: None.
30 !
31 ! ******************************************************************************
32 !
33 ! $Id: SPEC_RFLU_ModReadWriteVars.F90,v 1.4 2008/12/06 08:44:40 mtcampbe Exp $
34 !
35 ! Copyright: (c) 2005 by the University of Illinois
36 !
37 ! ******************************************************************************
38 
40 
41  USE modparameters
42  USE moddatatypes
43  USE moderror
44  USE modglobal, ONLY: t_global
45  USE modbndpatch, ONLY: t_patch
46  USE moddatastruct, ONLY: t_region
47  USE modgrid, ONLY: t_grid
48  USE modmpi
49 
52 
54 
55  IMPLICIT NONE
56 
57  PRIVATE
58  PUBLIC :: spec_rflu_readcvascii, &
66 
67 
68 ! ******************************************************************************
69 ! Declarations and definitions
70 ! ******************************************************************************
71 
72  CHARACTER(CHRLEN) :: RCSIdentString = &
73  '$RCSfile: SPEC_RFLU_ModReadWriteVars.F90,v $ $Revision: 1.4 $'
74 
75 ! ******************************************************************************
76 ! Routines
77 ! ******************************************************************************
78 
79  CONTAINS
80 
81 
82 
83 
84 
85 
86 
87 ! ******************************************************************************
88 !
89 ! Purpose: Read flow file for species in ASCII ROCFLU format.
90 !
91 ! Description: None.
92 !
93 ! Input:
94 ! pRegion Pointer to region
95 !
96 ! Output: None.
97 !
98 ! Notes:
99 ! 1. Read physical time for both steady and unsteady flows so that could
100 ! use steady solution as input for unsteady run and vice versa.
101 ! 2. For GENX runs, read file from time zero if restarting. This is for
102 ! convenience and will have to be changed once grid adaptation is used.
103 !
104 ! ******************************************************************************
105 
106 SUBROUTINE spec_rflu_readcvascii(pRegion)
107 
108  IMPLICIT NONE
109 
110 ! ******************************************************************************
111 ! Declarations and definitions
112 ! ******************************************************************************
113 
114 ! ==============================================================================
115 ! Local variables
116 ! ==============================================================================
117 
118  LOGICAL :: fileexists
119  CHARACTER(CHRLEN) :: errorstring,ifilename,ifilenameold,sectionstring, &
120  timestring1,timestring2
121  INTEGER :: errorflag,i,ifile,ivars,j,loopcounter,ncellstot,ncellsexpected, &
122  nvars,nvarsexpected,precactual,precexpected,rangeactual, &
123  rangeexpected
124  REAL(RFREAL) :: currenttime
125  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv
126  TYPE(t_grid), POINTER :: pgrid
127  TYPE(t_global), POINTER :: global
128 
129 ! ==============================================================================
130 ! Arguments
131 ! ==============================================================================
132 
133  TYPE(t_region), POINTER :: pregion
134 
135 ! ******************************************************************************
136 ! Start, open file
137 ! ******************************************************************************
138 
139  global => pregion%global
140 
141  CALL registerfunction(global,'SPEC_RFLU_ReadCvASCII',&
142  'SPEC_RFLU_ModReadWriteVars.F90')
143 
144  IF ( global%myProcid == masterproc .AND. &
145  global%verbLevel > verbose_none ) THEN
146  WRITE(stdout,'(A,1X,A)') solver_name,'Reading ASCII species cv file...'
147  END IF ! global%verbLevel
148 
149  IF ( global%flowType == flow_unsteady ) THEN
150  CALL buildfilenameunsteady(global,filedest_indir,'.spec.cva', &
151  pregion%iRegionGlobal,global%currentTime, &
152  ifilename)
153  CALL buildfilenameunsteady(global,filedest_indir,'.spca', &
154  pregion%iRegionGlobal,global%currentTime, &
155  ifilenameold)
156  ELSE
157  CALL buildfilenamesteady(global,filedest_indir,'.spec.cva', &
158  pregion%iRegionGlobal,global%currentIter, &
159  ifilename)
160  CALL buildfilenamesteady(global,filedest_indir,'.spca', &
161  pregion%iRegionGlobal,global%currentIter, &
162  ifilenameold)
163  END IF ! global%flowType
164 
165  ifile = if_solut
166 
167  INQUIRE(file=ifilename,exist=fileexists)
168 
169  IF ( fileexists .EQV. .true. ) THEN
170  OPEN(ifile,file=ifilename,form="FORMATTED",status="OLD",iostat=errorflag)
171  global%error = errorflag
172  IF ( global%error /= err_none ) THEN
173  CALL errorstop(global,err_file_open,__line__,ifilename)
174  END IF ! global%error
175  ELSE
176  OPEN(ifile,file=ifilenameold,form="FORMATTED",status="OLD",iostat=errorflag)
177  global%error = errorflag
178  IF ( global%error /= err_none ) THEN
179  CALL errorstop(global,err_file_open,__line__,ifilenameold)
180  END IF ! global%error
181  END IF ! fileExists
182 
183 ! ==============================================================================
184 ! Set state vector state: Solution always stored in conservative form
185 ! ==============================================================================
186 
187  pregion%spec%cvState = cv_mixt_state_cons
188 
189 ! ==============================================================================
190 ! Header and general information
191 ! ==============================================================================
192 
193  IF ( global%myProcid == masterproc .AND. &
194  global%verbLevel > verbose_low ) THEN
195  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
196  END IF ! global%verbLevel
197 
198  READ(ifile,'(A)') sectionstring
199  IF ( trim(sectionstring) /= '# ROCFLU species file' ) THEN
200  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
201  END IF ! TRIM
202 
203 ! -----------------------------------------------------------------------------
204 ! Precision and range
205 ! -----------------------------------------------------------------------------
206 
207  READ(ifile,'(A)') sectionstring
208  IF ( trim(sectionstring) /= '# Precision and range' ) THEN
209  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
210  END IF ! TRIM
211 
212  precexpected = precision(1.0_rfreal)
213  rangeexpected = range(1.0_rfreal)
214 
215  READ(ifile,'(2(I8))') precactual,rangeactual
216  IF ( precactual < precexpected .OR. rangeactual < rangeexpected ) THEN
217  CALL errorstop(global,err_prec_range,__line__)
218  END IF ! precActual
219 
220 ! -----------------------------------------------------------------------------
221 ! Physical time
222 ! -----------------------------------------------------------------------------
223 
224  READ(ifile,'(A)') sectionstring
225  IF ( trim(sectionstring) /= '# Physical time' ) THEN
226  CALL errorstop(global,err_invalid_marker,__line__,ifilename)
227  END IF ! TRIM
228 
229  READ(ifile,'(E23.16)') currenttime
230 
231  IF ( global%flowType == flow_unsteady ) THEN
232  IF ( global%currentTime < 0.0_rfreal ) THEN
233  global%currentTime = currenttime
234  ELSE
235  WRITE(timestring1,'(1PE11.5)') global%currentTime
236  WRITE(timestring2,'(1PE11.5)') currenttime
237  IF ( trim(timestring1) /= trim(timestring2) ) THEN
238  CALL errorstop(global,err_time_solution,__line__,trim(ifilename))
239  END IF ! global%currentTime
240  END IF ! global%currentTime
241  END IF ! global%flowType
242 
243 ! ==============================================================================
244 ! Dimensions
245 ! ==============================================================================
246 
247  pgrid => pregion%grid
248 
249  nvarsexpected = pregion%specInput%nSpecies
250  ncellsexpected = pgrid%nCellsTot
251 
252  READ(ifile,'(A)') sectionstring
253  IF ( trim(sectionstring) /= '# Dimensions' ) THEN
254  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
255  END IF ! TRIM
256 
257  READ(ifile,'(2(I8))') ncellstot,nvars
258  IF ( ncellstot /= ncellsexpected ) THEN
259  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',ncellstot, &
260  'but expected:',ncellsexpected
261  CALL errorstop(global,err_invalid_ncells,__line__,errorstring)
262  END IF ! nCellsExpected
263 
264  IF ( nvars /= nvarsexpected ) THEN
265  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',nvars, &
266  'but expected:',nvarsexpected
267  CALL errorstop(global,err_invalid_nvars,__line__)
268  END IF ! nVarsExpected
269 
270 ! ==============================================================================
271 ! Rest of file
272 ! ==============================================================================
273 
274  ivars = 0
275  loopcounter = 0
276 
277  DO ! set up infinite loop
278  loopcounter = loopcounter + 1
279 
280  READ(ifile,'(A)') sectionstring
281 
282  SELECT CASE ( trim(sectionstring) )
283 
284 ! ------------------------------------------------------------------------------
285 ! Species concentration
286 ! ------------------------------------------------------------------------------
287 
288  CASE ( '# Density' )
289  IF ( global%myProcid == masterproc .AND. &
290  global%verbLevel > verbose_low ) THEN
291  WRITE(stdout,'(A,3X,A)') solver_name,'Species concentration...'
292  END IF ! global%verbLevel
293 
294  pcv => pregion%spec%cv
295 
296  ivars = ivars + 1
297  READ(ifile,'(5(E23.16))') (pcv(ivars,j),j=1,pgrid%nCellsTot)
298 
299 ! ------------------------------------------------------------------------------
300 ! End marker
301 ! ------------------------------------------------------------------------------
302 
303  CASE ( '# End' )
304  IF ( global%myProcid == masterproc .AND. &
305  global%verbLevel > verbose_low ) THEN
306  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
307  END IF ! global%verbLevel
308 
309  EXIT
310 
311 ! ------------------------------------------------------------------------------
312 ! Invalid section string
313 ! ------------------------------------------------------------------------------
314 
315  CASE default
316  IF ( global%verbLevel > verbose_low ) THEN
317  WRITE(stdout,'(A,3X,A)') solver_name,sectionstring
318  END IF ! verbosityLevel
319 
320  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
321 
322  END SELECT ! TRIM
323 
324 ! ------------------------------------------------------------------------------
325 ! Guard against infinite loop - might be unnecessary because of read errors?
326 ! ------------------------------------------------------------------------------
327 
328  IF ( loopcounter >= limit_infinite_loop ) THEN
329  CALL errorstop(global,err_infinite_loop,__line__)
330  END IF ! loopCounter
331 
332  END DO ! <empty>
333 
334 ! ==============================================================================
335 ! Check and information about number of variables read
336 ! ==============================================================================
337 
338  IF ( ivars /= nvars ) THEN
339  CALL errorstop(global,err_invalid_nvars,__line__)
340  END IF ! iVar
341 
342 ! ==============================================================================
343 ! Close file
344 ! ==============================================================================
345 
346  CLOSE(ifile,iostat=errorflag)
347  global%error = errorflag
348  IF ( global%error /= err_none ) THEN
349  CALL errorstop(global,err_file_close,__line__,ifilename)
350  END IF ! global%error
351 
352 ! ******************************************************************************
353 ! End
354 ! ******************************************************************************
355 
356  IF ( global%myProcid == masterproc .AND. &
357  global%verbLevel > verbose_none ) THEN
358  WRITE(stdout,'(A,1X,A)') solver_name,'Reading ASCII species cv file done.'
359  END IF ! global%verbLevel
360 
361  CALL deregisterfunction(global)
362 
363 END SUBROUTINE spec_rflu_readcvascii
364 
365 
366 
367 
368 
369 
370 ! ******************************************************************************
371 !
372 ! Purpose: Read flow file for species in binary ROCFLU format.
373 !
374 ! Description: None.
375 !
376 ! Input:
377 ! pRegion Pointer to region
378 !
379 ! Output: None.
380 !
381 ! Notes:
382 ! 1. Read physical time for both steady and unsteady flows so that could
383 ! use steady solution as input for unsteady run and vice versa.
384 ! 2. For GENX runs, read file from time zero if restarting. This is for
385 ! convenience and will have to be changed once grid adaptation is used.
386 !
387 ! ******************************************************************************
388 
389 SUBROUTINE spec_rflu_readcvbinary(pRegion)
390 
391  IMPLICIT NONE
392 
393 ! ******************************************************************************
394 ! Declarations and definitions
395 ! ******************************************************************************
396 
397 ! ==============================================================================
398 ! Local variables
399 ! ==============================================================================
400 
401  LOGICAL :: fileexists
402  CHARACTER(CHRLEN) :: errorstring,ifilename,ifilenameold,sectionstring, &
403  timestring1,timestring2
404  INTEGER :: errorflag,i,ifile,ivars,j,loopcounter,ncellstot,ncellsexpected, &
405  nvars,nvarsexpected,precactual,precexpected,rangeactual, &
406  rangeexpected
407  REAL(RFREAL) :: currenttime
408  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv
409  TYPE(t_grid), POINTER :: pgrid
410  TYPE(t_global), POINTER :: global
411 
412 ! ==============================================================================
413 ! Arguments
414 ! ==============================================================================
415 
416  TYPE(t_region), POINTER :: pregion
417 
418 ! ******************************************************************************
419 ! Start, open file
420 ! ******************************************************************************
421 
422  global => pregion%global
423 
424  CALL registerfunction(global,'SPEC_RFLU_ReadCvBinary',&
425  'SPEC_RFLU_ModReadWriteVars.F90')
426 
427  IF ( global%myProcid == masterproc .AND. &
428  global%verbLevel > verbose_none ) THEN
429  WRITE(stdout,'(A,1X,A)') solver_name,'Reading binary species cv file...'
430  END IF ! global%verbLevel
431 
432  IF ( global%flowType == flow_unsteady ) THEN
433  CALL buildfilenameunsteady(global,filedest_indir,'.spec.cv', &
434  pregion%iRegionGlobal,global%currentTime, &
435  ifilename)
436  CALL buildfilenameunsteady(global,filedest_indir,'.spc', &
437  pregion%iRegionGlobal,global%currentTime, &
438  ifilenameold)
439  ELSE
440  CALL buildfilenamesteady(global,filedest_indir,'.spec.cv', &
441  pregion%iRegionGlobal,global%currentIter, &
442  ifilename)
443  CALL buildfilenamesteady(global,filedest_indir,'.spc', &
444  pregion%iRegionGlobal,global%currentIter, &
445  ifilenameold)
446  END IF ! global%flowType
447 
448  ifile = if_solut
449 
450  INQUIRE(file=ifilename,exist=fileexists)
451 
452  IF ( fileexists .EQV. .true. ) THEN
453  OPEN(ifile,file=ifilename,form="UNFORMATTED",status="OLD",iostat=errorflag)
454  global%error = errorflag
455  IF ( global%error /= err_none ) THEN
456  CALL errorstop(global,err_file_open,__line__,ifilename)
457  END IF ! global%error
458  ELSE
459  OPEN(ifile,file=ifilenameold,form="UNFORMATTED",status="OLD", &
460  iostat=errorflag)
461  global%error = errorflag
462  IF ( global%error /= err_none ) THEN
463  CALL errorstop(global,err_file_open,__line__,ifilenameold)
464  END IF ! global%error
465  END IF ! fileExists
466 
467 ! ==============================================================================
468 ! Set state vector state: Solution always stored in conservative form
469 ! ==============================================================================
470 
471  pregion%spec%cvState = cv_mixt_state_cons
472 
473 ! ==============================================================================
474 ! Header and general information
475 ! ==============================================================================
476 
477  IF ( global%myProcid == masterproc .AND. &
478  global%verbLevel > verbose_low ) THEN
479  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
480  END IF ! global%verbLevel
481 
482  READ(ifile) sectionstring
483  IF ( trim(sectionstring) /= '# ROCFLU species file' ) THEN
484  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
485  END IF ! TRIM
486 
487 ! -----------------------------------------------------------------------------
488 ! Precision and range
489 ! -----------------------------------------------------------------------------
490 
491  READ(ifile) sectionstring
492  IF ( trim(sectionstring) /= '# Precision and range' ) THEN
493  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
494  END IF ! TRIM
495 
496  precexpected = precision(1.0_rfreal)
497  rangeexpected = range(1.0_rfreal)
498 
499  READ(ifile) precactual,rangeactual
500  IF ( precactual < precexpected .OR. rangeactual < rangeexpected ) THEN
501  CALL errorstop(global,err_prec_range,__line__)
502  END IF ! precActual
503 
504 ! -----------------------------------------------------------------------------
505 ! Physical time
506 ! -----------------------------------------------------------------------------
507 
508  READ(ifile) sectionstring
509  IF ( trim(sectionstring) /= '# Physical time' ) THEN
510  CALL errorstop(global,err_invalid_marker,__line__,ifilename)
511  END IF ! TRIM
512 
513  READ(ifile) currenttime
514 
515  IF ( global%flowType == flow_unsteady ) THEN
516  IF ( global%currentTime < 0.0_rfreal ) THEN
517  global%currentTime = currenttime
518  ELSE
519  WRITE(timestring1,'(1PE11.5)') global%currentTime
520  WRITE(timestring2,'(1PE11.5)') currenttime
521  IF ( trim(timestring1) /= trim(timestring2) ) THEN
522  CALL errorstop(global,err_time_solution,__line__,trim(ifilename))
523  END IF ! global%currentTime
524  END IF ! global%currentTime
525  END IF ! global%flowType
526 
527 ! ==============================================================================
528 ! Dimensions
529 ! ==============================================================================
530 
531  pgrid => pregion%grid
532 
533  nvarsexpected = pregion%specInput%nSpecies
534  ncellsexpected = pgrid%nCellsTot
535 
536  READ(ifile) sectionstring
537  IF ( trim(sectionstring) /= '# Dimensions' ) THEN
538  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
539  END IF ! TRIM
540 
541  READ(ifile) ncellstot,nvars
542  IF ( ncellstot /= ncellsexpected ) THEN
543  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',ncellstot, &
544  'but expected:',ncellsexpected
545  CALL errorstop(global,err_invalid_ncells,__line__,errorstring)
546  END IF ! nCellsExpected
547 
548  IF ( nvars /= nvarsexpected ) THEN
549  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',nvars, &
550  'but expected:',nvarsexpected
551  CALL errorstop(global,err_invalid_nvars,__line__)
552  END IF ! nVarsExpected
553 
554 ! ==============================================================================
555 ! Rest of file
556 ! ==============================================================================
557 
558  ivars = 0
559  loopcounter = 0
560 
561  DO ! set up infinite loop
562  loopcounter = loopcounter + 1
563 
564  READ(ifile) sectionstring
565 
566  SELECT CASE ( trim(sectionstring) )
567 
568 ! ------------------------------------------------------------------------------
569 ! Species concentration
570 ! ------------------------------------------------------------------------------
571 
572  CASE ( '# Density' )
573  IF ( global%myProcid == masterproc .AND. &
574  global%verbLevel > verbose_low ) THEN
575  WRITE(stdout,'(A,3X,A)') solver_name,'Species concentration...'
576  END IF ! global%verbLevel
577 
578  pcv => pregion%spec%cv
579 
580  ivars = ivars + 1
581  READ(ifile) (pcv(ivars,j),j=1,pgrid%nCellsTot)
582 
583 ! ------------------------------------------------------------------------------
584 ! End marker
585 ! ------------------------------------------------------------------------------
586 
587  CASE ( '# End' )
588  IF ( global%myProcid == masterproc .AND. &
589  global%verbLevel > verbose_low ) THEN
590  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
591  END IF ! global%verbLevel
592 
593  EXIT
594 
595 ! ------------------------------------------------------------------------------
596 ! Invalid section string
597 ! ------------------------------------------------------------------------------
598 
599  CASE default
600  IF ( global%verbLevel > verbose_low ) THEN
601  WRITE(stdout,'(A,3X,A)') solver_name,sectionstring
602  END IF ! verbosityLevel
603 
604  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
605 
606  END SELECT ! TRIM
607 
608 ! ------------------------------------------------------------------------------
609 ! Guard against infinite loop - might be unnecessary because of read errors?
610 ! ------------------------------------------------------------------------------
611 
612  IF ( loopcounter >= limit_infinite_loop ) THEN
613  CALL errorstop(global,err_infinite_loop,__line__)
614  END IF ! loopCounter
615 
616  END DO ! <empty>
617 
618 ! ==============================================================================
619 ! Check and information about number of variables read
620 ! ==============================================================================
621 
622  IF ( ivars /= nvars ) THEN
623  CALL errorstop(global,err_invalid_nvars,__line__)
624  END IF ! iVar
625 
626 ! ==============================================================================
627 ! Close file
628 ! ==============================================================================
629 
630  CLOSE(ifile,iostat=errorflag)
631  global%error = errorflag
632  IF ( global%error /= err_none ) THEN
633  CALL errorstop(global,err_file_close,__line__,ifilename)
634  END IF ! global%error
635 
636 ! ******************************************************************************
637 ! End
638 ! ******************************************************************************
639 
640  IF ( global%myProcid == masterproc .AND. &
641  global%verbLevel > verbose_none ) THEN
642  WRITE(stdout,'(A,1X,A)') solver_name,'Reading binary species cv file done.'
643  END IF ! global%verbLevel
644 
645  CALL deregisterfunction(global)
646 
647 END SUBROUTINE spec_rflu_readcvbinary
648 
649 
650 
651 
652 
653 
654 
655 
656 
657 ! ******************************************************************************
658 !
659 ! Purpose: Read eev file for species in ASCII ROCFLU format.
660 !
661 ! Description: None.
662 !
663 ! Input:
664 ! pRegion Pointer to region
665 !
666 ! Output: None.
667 !
668 ! Notes:
669 ! 1. Read physical time for both steady and unsteady flows so that could
670 ! use steady solution as input for unsteady run and vice versa.
671 !
672 ! ******************************************************************************
673 
674 SUBROUTINE spec_rflu_readeevascii(pRegion)
675 
676  IMPLICIT NONE
677 
678 ! ******************************************************************************
679 ! Declarations and definitions
680 ! ******************************************************************************
681 
682 ! ==============================================================================
683 ! Local variables
684 ! ==============================================================================
685 
686  CHARACTER(CHRLEN) :: errorstring,ifilename,sectionstring,timestring1, &
687  timestring2
688  INTEGER :: errorflag,ifile,ispeceevtemp,ispeceevxvel,ispeceevyvel, &
689  ispeceevzvel,ivars,j,loopcounter,ncellstot,ncellsexpected, &
690  nvars,nvarsexpected,precactual,precexpected,rangeactual, &
691  rangeexpected
692  REAL(RFREAL) :: currenttime
693  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: peev
694  TYPE(t_grid), POINTER :: pgrid
695  TYPE(t_global), POINTER :: global
696 
697 ! ==============================================================================
698 ! Arguments
699 ! ==============================================================================
700 
701  TYPE(t_region), POINTER :: pregion
702 
703 ! ******************************************************************************
704 ! Start, open file
705 ! ******************************************************************************
706 
707  global => pregion%global
708 
709  CALL registerfunction(global,'SPEC_RFLU_ReadEEvASCII',&
710  'SPEC_RFLU_ModReadWriteVars.F90')
711 
712  IF ( global%myProcid == masterproc .AND. &
713  global%verbLevel > verbose_none ) THEN
714  WRITE(stdout,'(A,1X,A)') solver_name,'Reading ASCII species eev file...'
715  END IF ! global%verbLevel
716 
717  IF ( global%flowType == flow_unsteady ) THEN
718  CALL buildfilenameunsteady(global,filedest_indir,'.spec.eeva', &
719  pregion%iRegionGlobal,global%currentTime, &
720  ifilename)
721  ELSE
722  CALL buildfilenamesteady(global,filedest_indir,'.spec.eeva', &
723  pregion%iRegionGlobal,global%currentIter,ifilename)
724  END IF ! global%flowType
725 
726  ifile = if_solut
727  OPEN(ifile,file=ifilename,form="FORMATTED",status="OLD",iostat=errorflag)
728  global%error = errorflag
729  IF ( global%error /= err_none ) THEN
730  CALL errorstop(global,err_file_open,__line__,ifilename)
731  END IF ! global%error
732 
733 ! ==============================================================================
734 ! Header and general information
735 ! ==============================================================================
736 
737  IF ( global%myProcid == masterproc .AND. &
738  global%verbLevel > verbose_low ) THEN
739  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
740  END IF ! global%verbLevel
741 
742  READ(ifile,'(A)') sectionstring
743  IF ( trim(sectionstring) /= '# ROCFLU species eev file' ) THEN
744  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
745  END IF ! TRIM
746 
747 ! -----------------------------------------------------------------------------
748 ! Precision and range
749 ! -----------------------------------------------------------------------------
750 
751  READ(ifile,'(A)') sectionstring
752  IF ( trim(sectionstring) /= '# Precision and range' ) THEN
753  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
754  END IF ! TRIM
755 
756  precexpected = precision(1.0_rfreal)
757  rangeexpected = range(1.0_rfreal)
758 
759  READ(ifile,'(2(I8))') precactual,rangeactual
760  IF ( precactual < precexpected .OR. rangeactual < rangeexpected ) THEN
761  CALL errorstop(global,err_prec_range,__line__)
762  END IF ! precActual
763 
764 ! -----------------------------------------------------------------------------
765 ! Physical time
766 ! -----------------------------------------------------------------------------
767 
768  READ(ifile,'(A)') sectionstring
769  IF ( trim(sectionstring) /= '# Physical time' ) THEN
770  CALL errorstop(global,err_invalid_marker,__line__,ifilename)
771  END IF ! TRIM
772 
773  READ(ifile,'(E23.16)') currenttime
774 
775  IF ( global%flowType == flow_unsteady ) THEN
776  IF ( global%currentTime < 0.0_rfreal ) THEN
777  global%currentTime = currenttime
778  ELSE
779  WRITE(timestring1,'(1PE11.5)') global%currentTime
780  WRITE(timestring2,'(1PE11.5)') currenttime
781  IF ( trim(timestring1) /= trim(timestring2) ) THEN
782  CALL errorstop(global,err_time_solution,__line__,trim(ifilename))
783  END IF ! global%currentTime
784  END IF ! global%currentTime
785  END IF ! global%flowType
786 
787 ! ==============================================================================
788 ! Dimensions
789 ! ==============================================================================
790 
791  pgrid => pregion%grid
792 
793  nvarsexpected = pregion%specInput%nSpeciesEE*eev_spec_nvar
794  ncellsexpected = pgrid%nCellsTot
795 
796  READ(ifile,'(A)') sectionstring
797  IF ( trim(sectionstring) /= '# Dimensions' ) THEN
798  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
799  END IF ! TRIM
800 
801  READ(ifile,'(2(I8))') ncellstot,nvars
802  IF ( ncellstot /= ncellsexpected ) THEN
803  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',ncellstot, &
804  'but expected:',ncellsexpected
805  CALL errorstop(global,err_invalid_ncells,__line__,errorstring)
806  END IF ! nCellsExpected
807 
808  IF ( nvars /= nvarsexpected ) THEN
809  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',nvars, &
810  'but expected:',nvarsexpected
811  CALL errorstop(global,err_invalid_nvars,__line__)
812  END IF ! nVarsExpected
813 
814 ! ==============================================================================
815 ! Rest of file
816 ! ==============================================================================
817 
818  ispeceevxvel = 0
819  ispeceevyvel = 0
820  ispeceevzvel = 0
821  ispeceevtemp = 0
822  loopcounter = 0
823 
824  DO ! set up infinite loop
825  loopcounter = loopcounter + 1
826 
827  READ(ifile,'(A)') sectionstring
828 
829  SELECT CASE ( trim(sectionstring) )
830 
831 ! ------------------------------------------------------------------------------
832 ! Species x-velocity
833 ! ------------------------------------------------------------------------------
834 
835  CASE ( '# x-velocity' )
836  IF ( global%myProcid == masterproc .AND. &
837  global%verbLevel > verbose_low ) THEN
838  WRITE(stdout,'(A,3X,A)') solver_name,'Species x-velocity...'
839  END IF ! global%verbLevel
840 
841  peev => pregion%spec%eev
842 
843  ispeceevxvel = ispeceevxvel + 1
844  READ(ifile,'(5(E23.16))') (peev(eev_spec_xvel,ispeceevxvel,j), &
845  j=1,pgrid%nCellsTot)
846 
847 ! ------------------------------------------------------------------------------
848 ! Species y-velocity
849 ! ------------------------------------------------------------------------------
850 
851  CASE ( '# y-velocity' )
852  IF ( global%myProcid == masterproc .AND. &
853  global%verbLevel > verbose_low ) THEN
854  WRITE(stdout,'(A,3X,A)') solver_name,'Species y-velocity...'
855  END IF ! global%verbLevel
856 
857  peev => pregion%spec%eev
858 
859  ispeceevyvel = ispeceevyvel + 1
860  READ(ifile,'(5(E23.16))') (peev(eev_spec_yvel,ispeceevyvel,j), &
861  j=1,pgrid%nCellsTot)
862 
863 ! ------------------------------------------------------------------------------
864 ! Species x-velocity
865 ! ------------------------------------------------------------------------------
866 
867  CASE ( '# z-velocity' )
868  IF ( global%myProcid == masterproc .AND. &
869  global%verbLevel > verbose_low ) THEN
870  WRITE(stdout,'(A,3X,A)') solver_name,'Species z-velocity...'
871  END IF ! global%verbLevel
872 
873  peev => pregion%spec%eev
874 
875  ispeceevzvel = ispeceevzvel + 1
876  READ(ifile,'(5(E23.16))') (peev(eev_spec_zvel,ispeceevzvel,j), &
877  j=1,pgrid%nCellsTot)
878 
879 ! ------------------------------------------------------------------------------
880 ! Species temperature
881 ! ------------------------------------------------------------------------------
882 
883  CASE ( '# Temperature' )
884  IF ( global%myProcid == masterproc .AND. &
885  global%verbLevel > verbose_low ) THEN
886  WRITE(stdout,'(A,3X,A)') solver_name,'Species temperature...'
887  END IF ! global%verbLevel
888 
889  peev => pregion%spec%eev
890 
891  ispeceevtemp = ispeceevtemp + 1
892  READ(ifile,'(5(E23.16))') (peev(eev_spec_temp,ispeceevtemp,j), &
893  j=1,pgrid%nCellsTot)
894 
895 ! ------------------------------------------------------------------------------
896 ! End marker
897 ! ------------------------------------------------------------------------------
898 
899  CASE ( '# End' )
900  IF ( global%myProcid == masterproc .AND. &
901  global%verbLevel > verbose_low ) THEN
902  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
903  END IF ! global%verbLevel
904 
905  EXIT
906 
907 ! ------------------------------------------------------------------------------
908 ! Invalid section string
909 ! ------------------------------------------------------------------------------
910 
911  CASE default
912  IF ( global%verbLevel > verbose_low ) THEN
913  WRITE(stdout,'(A,3X,A)') solver_name,sectionstring
914  END IF ! verbosityLevel
915 
916  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
917 
918  END SELECT ! TRIM
919 
920 ! ------------------------------------------------------------------------------
921 ! Guard against infinite loop - might be unnecessary because of read errors?
922 ! ------------------------------------------------------------------------------
923 
924  IF ( loopcounter >= limit_infinite_loop ) THEN
925  CALL errorstop(global,err_infinite_loop,__line__)
926  END IF ! loopCounter
927  END DO ! <empty>
928 
929 ! ==============================================================================
930 ! Check and information about number of variables read
931 ! ==============================================================================
932 
933  nvars = ispeceevxvel + ispeceevyvel + ispeceevzvel + ispeceevtemp
934 
935  IF ( nvars /= nvarsexpected ) THEN
936  CALL errorstop(global,err_invalid_nvars,__line__)
937  END IF ! nVars
938 
939 ! ==============================================================================
940 ! Close file
941 ! ==============================================================================
942 
943  CLOSE(ifile,iostat=errorflag)
944  global%error = errorflag
945  IF ( global%error /= err_none ) THEN
946  CALL errorstop(global,err_file_close,__line__,ifilename)
947  END IF ! global%error
948 
949 ! ******************************************************************************
950 ! End
951 ! ******************************************************************************
952 
953  IF ( global%myProcid == masterproc .AND. &
954  global%verbLevel > verbose_none ) THEN
955  WRITE(stdout,'(A,1X,A)') solver_name,'Reading ASCII species eev file done.'
956  END IF ! global%verbLevel
957 
958  CALL deregisterfunction(global)
959 
960 END SUBROUTINE spec_rflu_readeevascii
961 
962 
963 
964 
965 
966 
967 
968 ! ******************************************************************************
969 !
970 ! Purpose: Read eev file for species in binary ROCFLU format.
971 !
972 ! Description: None.
973 !
974 ! Input:
975 ! pRegion Pointer to region
976 !
977 ! Output: None.
978 !
979 ! Notes:
980 ! 1. Read physical time for both steady and unsteady flows so that could
981 ! use steady solution as input for unsteady run and vice versa.
982 !
983 ! ******************************************************************************
984 
985 SUBROUTINE spec_rflu_readeevbinary(pRegion)
986 
987  IMPLICIT NONE
988 
989 ! ******************************************************************************
990 ! Declarations and definitions
991 ! ******************************************************************************
992 
993 ! ==============================================================================
994 ! Local variables
995 ! ==============================================================================
996 
997  CHARACTER(CHRLEN) :: errorstring,ifilename,sectionstring,timestring1, &
998  timestring2
999  INTEGER :: errorflag,ifile,ispeceevtemp,ispeceevxvel,ispeceevyvel, &
1000  ispeceevzvel,ivars,j,loopcounter,ncellstot,ncellsexpected, &
1001  nvars,nvarsexpected,precactual,precexpected,rangeactual, &
1002  rangeexpected
1003  REAL(RFREAL) :: currenttime
1004  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: peev
1005  TYPE(t_grid), POINTER :: pgrid
1006  TYPE(t_global), POINTER :: global
1007 
1008 ! ==============================================================================
1009 ! Arguments
1010 ! ==============================================================================
1011 
1012  TYPE(t_region), POINTER :: pregion
1013 
1014 ! ******************************************************************************
1015 ! Start, open file
1016 ! ******************************************************************************
1017 
1018  global => pregion%global
1019 
1020  CALL registerfunction(global,'SPEC_RFLU_ReadEEvBinary',&
1021  'SPEC_RFLU_ModReadWriteVars.F90')
1022 
1023  IF ( global%myProcid == masterproc .AND. &
1024  global%verbLevel > verbose_none ) THEN
1025  WRITE(stdout,'(A,1X,A)') solver_name,'Reading binary species eev file...'
1026  END IF ! global%verbLevel
1027 
1028  IF ( global%flowType == flow_unsteady ) THEN
1029  CALL buildfilenameunsteady(global,filedest_indir,'.spec.eev', &
1030  pregion%iRegionGlobal,global%currentTime, &
1031  ifilename)
1032  ELSE
1033  CALL buildfilenamesteady(global,filedest_indir,'.spec.eev', &
1034  pregion%iRegionGlobal,global%currentIter,ifilename)
1035  END IF ! global%flowType
1036 
1037  ifile = if_solut
1038  OPEN(ifile,file=ifilename,form="UNFORMATTED",status="OLD",iostat=errorflag)
1039  global%error = errorflag
1040  IF ( global%error /= err_none ) THEN
1041  CALL errorstop(global,err_file_open,__line__,ifilename)
1042  END IF ! global%error
1043 
1044 ! ==============================================================================
1045 ! Header and general information
1046 ! ==============================================================================
1047 
1048  IF ( global%myProcid == masterproc .AND. &
1049  global%verbLevel > verbose_low ) THEN
1050  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
1051  END IF ! global%verbLevel
1052 
1053  READ(ifile) sectionstring
1054  IF ( trim(sectionstring) /= '# ROCFLU species eev file' ) THEN
1055  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
1056  END IF ! TRIM
1057 
1058 ! -----------------------------------------------------------------------------
1059 ! Precision and range
1060 ! -----------------------------------------------------------------------------
1061 
1062  READ(ifile) sectionstring
1063  IF ( trim(sectionstring) /= '# Precision and range' ) THEN
1064  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
1065  END IF ! TRIM
1066 
1067  precexpected = precision(1.0_rfreal)
1068  rangeexpected = range(1.0_rfreal)
1069 
1070  READ(ifile) precactual,rangeactual
1071  IF ( precactual < precexpected .OR. rangeactual < rangeexpected ) THEN
1072  CALL errorstop(global,err_prec_range,__line__)
1073  END IF ! precActual
1074 
1075 ! -----------------------------------------------------------------------------
1076 ! Physical time
1077 ! -----------------------------------------------------------------------------
1078 
1079  READ(ifile) sectionstring
1080  IF ( trim(sectionstring) /= '# Physical time' ) THEN
1081  CALL errorstop(global,err_invalid_marker,__line__,ifilename)
1082  END IF ! TRIM
1083 
1084  READ(ifile) currenttime
1085 
1086  IF ( global%flowType == flow_unsteady ) THEN
1087  IF ( global%currentTime < 0.0_rfreal ) THEN
1088  global%currentTime = currenttime
1089  ELSE
1090  WRITE(timestring1,'(1PE11.5)') global%currentTime
1091  WRITE(timestring2,'(1PE11.5)') currenttime
1092  IF ( trim(timestring1) /= trim(timestring2) ) THEN
1093  CALL errorstop(global,err_time_solution,__line__,trim(ifilename))
1094  END IF ! global%currentTime
1095  END IF ! global%currentTime
1096  END IF ! global%flowType
1097 
1098 ! ==============================================================================
1099 ! Dimensions
1100 ! ==============================================================================
1101 
1102  pgrid => pregion%grid
1103 
1104  nvarsexpected = pregion%specInput%nSpeciesEE*eev_spec_nvar
1105  ncellsexpected = pgrid%nCellsTot
1106 
1107  READ(ifile) sectionstring
1108  IF ( trim(sectionstring) /= '# Dimensions' ) THEN
1109  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
1110  END IF ! TRIM
1111 
1112  READ(ifile) ncellstot,nvars
1113  IF ( ncellstot /= ncellsexpected ) THEN
1114  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',ncellstot, &
1115  'but expected:',ncellsexpected
1116  CALL errorstop(global,err_invalid_ncells,__line__,errorstring)
1117  END IF ! nCellsExpected
1118 
1119  IF ( nvars /= nvarsexpected ) THEN
1120  WRITE(errorstring,'(A,1X,I6,1X,A,1X,I6)') 'Specified:',nvars, &
1121  'but expected:',nvarsexpected
1122  CALL errorstop(global,err_invalid_nvars,__line__)
1123  END IF ! nVarsExpected
1124 
1125 ! ==============================================================================
1126 ! Rest of file
1127 ! ==============================================================================
1128 
1129  ispeceevxvel = 0
1130  ispeceevyvel = 0
1131  ispeceevzvel = 0
1132  ispeceevtemp = 0
1133  loopcounter = 0
1134 
1135  DO ! set up infinite loop
1136  loopcounter = loopcounter + 1
1137 
1138  READ(ifile) sectionstring
1139 
1140  SELECT CASE ( trim(sectionstring) )
1141 
1142 ! ------------------------------------------------------------------------------
1143 ! Species x-velocity
1144 ! ------------------------------------------------------------------------------
1145 
1146  CASE ( '# x-velocity' )
1147  IF ( global%myProcid == masterproc .AND. &
1148  global%verbLevel > verbose_low ) THEN
1149  WRITE(stdout,'(A,3X,A)') solver_name,'Species x-velocity...'
1150  END IF ! global%verbLevel
1151 
1152  peev => pregion%spec%eev
1153 
1154  ispeceevxvel = ispeceevxvel + 1
1155  READ(ifile) (peev(eev_spec_xvel,ispeceevxvel,j),j=1,pgrid%nCellsTot)
1156 
1157 ! ------------------------------------------------------------------------------
1158 ! Species y-velocity
1159 ! ------------------------------------------------------------------------------
1160 
1161  CASE ( '# y-velocity' )
1162  IF ( global%myProcid == masterproc .AND. &
1163  global%verbLevel > verbose_low ) THEN
1164  WRITE(stdout,'(A,3X,A)') solver_name,'Species y-velocity...'
1165  END IF ! global%verbLevel
1166 
1167  peev => pregion%spec%eev
1168 
1169  ispeceevyvel = ispeceevyvel + 1
1170  READ(ifile) (peev(eev_spec_yvel,ispeceevyvel,j),j=1,pgrid%nCellsTot)
1171 
1172 ! ------------------------------------------------------------------------------
1173 ! Species x-velocity
1174 ! ------------------------------------------------------------------------------
1175 
1176  CASE ( '# z-velocity' )
1177  IF ( global%myProcid == masterproc .AND. &
1178  global%verbLevel > verbose_low ) THEN
1179  WRITE(stdout,'(A,3X,A)') solver_name,'Species z-velocity...'
1180  END IF ! global%verbLevel
1181 
1182  peev => pregion%spec%eev
1183 
1184  ispeceevzvel = ispeceevzvel + 1
1185  READ(ifile) (peev(eev_spec_zvel,ispeceevzvel,j),j=1,pgrid%nCellsTot)
1186 
1187 ! ------------------------------------------------------------------------------
1188 ! Species temperature
1189 ! ------------------------------------------------------------------------------
1190 
1191  CASE ( '# Temperature' )
1192  IF ( global%myProcid == masterproc .AND. &
1193  global%verbLevel > verbose_low ) THEN
1194  WRITE(stdout,'(A,3X,A)') solver_name,'Species temperature...'
1195  END IF ! global%verbLevel
1196 
1197  peev => pregion%spec%eev
1198 
1199  ispeceevtemp = ispeceevtemp + 1
1200  READ(ifile) (peev(eev_spec_temp,ispeceevtemp,j),j=1,pgrid%nCellsTot)
1201 
1202 ! ------------------------------------------------------------------------------
1203 ! End marker
1204 ! ------------------------------------------------------------------------------
1205 
1206  CASE ( '# End' )
1207  IF ( global%myProcid == masterproc .AND. &
1208  global%verbLevel > verbose_low ) THEN
1209  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
1210  END IF ! global%verbLevel
1211 
1212  EXIT
1213 
1214 ! ------------------------------------------------------------------------------
1215 ! Invalid section string
1216 ! ------------------------------------------------------------------------------
1217 
1218  CASE default
1219  IF ( global%verbLevel > verbose_low ) THEN
1220  WRITE(stdout,'(A,3X,A)') solver_name,sectionstring
1221  END IF ! verbosityLevel
1222 
1223  CALL errorstop(global,err_invalid_marker,__line__,sectionstring)
1224 
1225  END SELECT ! TRIM
1226 
1227 ! ------------------------------------------------------------------------------
1228 ! Guard against infinite loop - might be unnecessary because of read errors?
1229 ! ------------------------------------------------------------------------------
1230 
1231  IF ( loopcounter >= limit_infinite_loop ) THEN
1232  CALL errorstop(global,err_infinite_loop,__line__)
1233  END IF ! loopCounter
1234  END DO ! <empty>
1235 
1236 ! ==============================================================================
1237 ! Check and information about number of variables read
1238 ! ==============================================================================
1239 
1240  nvars = ispeceevxvel + ispeceevyvel + ispeceevzvel + ispeceevtemp
1241 
1242  IF ( nvars /= nvarsexpected ) THEN
1243  CALL errorstop(global,err_invalid_nvars,__line__)
1244  END IF ! nVars
1245 
1246 ! ==============================================================================
1247 ! Close file
1248 ! ==============================================================================
1249 
1250  CLOSE(ifile,iostat=errorflag)
1251  global%error = errorflag
1252  IF ( global%error /= err_none ) THEN
1253  CALL errorstop(global,err_file_close,__line__,ifilename)
1254  END IF ! global%error
1255 
1256 ! ******************************************************************************
1257 ! End
1258 ! ******************************************************************************
1259 
1260  IF ( global%myProcid == masterproc .AND. &
1261  global%verbLevel > verbose_none ) THEN
1262  WRITE(stdout,'(A,1X,A)') solver_name,'Reading binary species eev file done.'
1263  END IF ! global%verbLevel
1264 
1265  CALL deregisterfunction(global)
1266 
1267 END SUBROUTINE spec_rflu_readeevbinary
1268 
1269 
1270 
1271 
1272 
1273 
1274 
1275 
1276 ! ******************************************************************************
1277 !
1278 ! Purpose: Write flow file for species in ASCII ROCFLU format.
1279 !
1280 ! Description: None.
1281 !
1282 ! Input:
1283 ! pRegion Pointer to region
1284 !
1285 ! Output: None.
1286 !
1287 ! Notes:
1288 ! 1. Write physical time for both steady and unsteady flows so that could
1289 ! use steady solution as input for unsteady run and vice versa.
1290 !
1291 ! ******************************************************************************
1292 
1293 SUBROUTINE spec_rflu_writecvascii(pRegion)
1294 
1295  IMPLICIT NONE
1296 
1297 ! ******************************************************************************
1298 ! Declarations and definitions
1299 ! ******************************************************************************
1300 
1301 ! ==============================================================================
1302 ! Local variables
1303 ! ==============================================================================
1304 
1305  CHARACTER(CHRLEN) :: ifilename,sectionstring
1306  INTEGER :: errorflag,ifile,ivar,j,nvars
1307  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv
1308  TYPE(t_grid), POINTER :: pgrid
1309  TYPE(t_global), POINTER :: global
1310 
1311 ! ==============================================================================
1312 ! Arguments
1313 ! ==============================================================================
1314 
1315  TYPE(t_region), POINTER :: pregion
1316 
1317 ! ******************************************************************************
1318 ! Start, open file
1319 ! ******************************************************************************
1320 
1321  global => pregion%global
1322 
1323  CALL registerfunction(global,'SPEC_RFLU_WriteCvASCII',&
1324  'SPEC_RFLU_ModReadWriteVars.F90')
1325 
1326  IF ( global%myProcid == masterproc .AND. &
1327  global%verbLevel > verbose_none ) THEN
1328  WRITE(stdout,'(A,1X,A)') solver_name,'Writing ASCII species cv file...'
1329  END IF ! global%verbLevel
1330 
1331  IF ( global%flowType == flow_unsteady ) THEN
1332  CALL buildfilenameunsteady(global,filedest_outdir,'.spec.cva', &
1333  pregion%iRegionGlobal,global%currentTime, &
1334  ifilename)
1335  ELSE
1336  CALL buildfilenamesteady(global,filedest_outdir,'.spec.cva', &
1337  pregion%iRegionGlobal,global%currentIter, &
1338  ifilename)
1339  END IF ! global%flowType
1340 
1341  ifile = if_solut
1342  OPEN(ifile,file=ifilename,form="FORMATTED",status="UNKNOWN", &
1343  iostat=errorflag)
1344  global%error = errorflag
1345  IF ( global%error /= err_none ) THEN
1346  CALL errorstop(global,err_file_open,__line__,ifilename)
1347  END IF ! global%error
1348 
1349 ! ==============================================================================
1350 ! Header and general information
1351 ! ==============================================================================
1352 
1353  IF ( global%myProcid == masterproc .AND. &
1354  global%verbLevel > verbose_low ) THEN
1355  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
1356  END IF ! global%verbLevel
1357 
1358  sectionstring = '# ROCFLU species file'
1359  WRITE(ifile,'(A)') sectionstring
1360 
1361  sectionstring = '# Precision and range'
1362  WRITE(ifile,'(A)') sectionstring
1363  WRITE(ifile,'(2(I8))') precision(1.0_rfreal),range(1.0_rfreal)
1364 
1365  sectionstring = '# Physical time'
1366  WRITE(ifile,'(A)') sectionstring
1367  WRITE(ifile,'(E23.16)') global%currentTime
1368 
1369 ! ==============================================================================
1370 ! Dimensions
1371 ! ==============================================================================
1372 
1373  nvars = pregion%specInput%nSpecies
1374 
1375  pgrid => pregion%grid
1376 
1377  sectionstring = '# Dimensions'
1378  WRITE(ifile,'(A)') sectionstring
1379  WRITE(ifile,'(2(I8))') pgrid%nCellsTot,nvars
1380 
1381 ! ==============================================================================
1382 ! Species concentration
1383 ! ==============================================================================
1384 
1385  pcv => pregion%spec%cv
1386 
1387  DO ivar = 1,nvars
1388  sectionstring = '# Density'
1389  WRITE(ifile,'(A)') sectionstring
1390  WRITE(ifile,'(5(E23.16))') (pcv(ivar,j),j=1,pgrid%nCellsTot)
1391  END DO ! iVar
1392 
1393 ! ==============================================================================
1394 ! End marker
1395 ! ==============================================================================
1396 
1397  IF ( global%myProcid == masterproc .AND. &
1398  global%verbLevel > verbose_low ) THEN
1399  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
1400  END IF ! global%verbLevel
1401 
1402  sectionstring = '# End'
1403  WRITE(ifile,'(A)') sectionstring
1404 
1405 ! ==============================================================================
1406 ! Close file
1407 ! ==============================================================================
1408 
1409  CLOSE(ifile,iostat=errorflag)
1410  global%error = errorflag
1411  IF ( global%error /= err_none ) THEN
1412  CALL errorstop(global,err_file_close,__line__,ifilename)
1413  END IF ! global%error
1414 
1415 ! ******************************************************************************
1416 ! End
1417 ! ******************************************************************************
1418 
1419  IF ( global%myProcid == masterproc .AND. &
1420  global%verbLevel > verbose_none ) THEN
1421  WRITE(stdout,'(A,1X,A)') solver_name,'Writing ASCII species cv file done.'
1422  END IF ! global%verbLevel
1423 
1424  CALL deregisterfunction(global)
1425 
1426 END SUBROUTINE spec_rflu_writecvascii
1427 
1428 
1429 
1430 
1431 
1432 
1433 
1434 ! ******************************************************************************
1435 !
1436 ! Purpose: Write flow file for species in binary ROCFLU format.
1437 !
1438 ! Description: None.
1439 !
1440 ! Input:
1441 ! pRegion Pointer to region
1442 !
1443 ! Output: None.
1444 !
1445 ! Notes:
1446 ! 1. Write physical time for both steady and unsteady flows so that could
1447 ! use steady solution as input for unsteady run and vice versa.
1448 !
1449 ! ******************************************************************************
1450 
1451 SUBROUTINE spec_rflu_writecvbinary(pRegion)
1452 
1453  IMPLICIT NONE
1454 
1455 ! ******************************************************************************
1456 ! Declarations and definitions
1457 ! ******************************************************************************
1458 
1459 ! ==============================================================================
1460 ! Local variables
1461 ! ==============================================================================
1462 
1463  CHARACTER(CHRLEN) :: ifilename,sectionstring
1464  INTEGER :: errorflag,ifile,ivar,j,nvars
1465  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv
1466  TYPE(t_grid), POINTER :: pgrid
1467  TYPE(t_global), POINTER :: global
1468 
1469 ! ==============================================================================
1470 ! Arguments
1471 ! ==============================================================================
1472 
1473  TYPE(t_region), POINTER :: pregion
1474 
1475 ! ******************************************************************************
1476 ! Start, open file
1477 ! ******************************************************************************
1478 
1479  global => pregion%global
1480 
1481  CALL registerfunction(global,'SPEC_RFLU_WriteCvBinary',&
1482  'SPEC_RFLU_ModReadWriteVars.F90')
1483 
1484  IF ( global%myProcid == masterproc .AND. &
1485  global%verbLevel > verbose_none ) THEN
1486  WRITE(stdout,'(A,1X,A)') solver_name,'Writing binary species cv file...'
1487  END IF ! global%verbLevel
1488 
1489  IF ( global%flowType == flow_unsteady ) THEN
1490  CALL buildfilenameunsteady(global,filedest_outdir,'.spec.cv', &
1491  pregion%iRegionGlobal,global%currentTime, &
1492  ifilename)
1493  ELSE
1494  CALL buildfilenamesteady(global,filedest_outdir,'.spec.cv', &
1495  pregion%iRegionGlobal,global%currentIter, &
1496  ifilename)
1497  END IF ! global%flowType
1498 
1499  ifile = if_solut
1500  OPEN(ifile,file=ifilename,form="UNFORMATTED",status="UNKNOWN", &
1501  iostat=errorflag)
1502  global%error = errorflag
1503  IF ( global%error /= err_none ) THEN
1504  CALL errorstop(global,err_file_open,__line__,ifilename)
1505  END IF ! global%error
1506 
1507 ! ==============================================================================
1508 ! Header and general information
1509 ! ==============================================================================
1510 
1511  IF ( global%myProcid == masterproc .AND. &
1512  global%verbLevel > verbose_low ) THEN
1513  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
1514  END IF ! global%verbLevel
1515 
1516  sectionstring = '# ROCFLU species file'
1517  WRITE(ifile) sectionstring
1518 
1519  sectionstring = '# Precision and range'
1520  WRITE(ifile) sectionstring
1521  WRITE(ifile) precision(1.0_rfreal),range(1.0_rfreal)
1522 
1523  sectionstring = '# Physical time'
1524  WRITE(ifile) sectionstring
1525  WRITE(ifile) global%currentTime
1526 
1527 ! ==============================================================================
1528 ! Dimensions
1529 ! ==============================================================================
1530 
1531  nvars = pregion%specInput%nSpecies
1532 
1533  pgrid => pregion%grid
1534 
1535  sectionstring = '# Dimensions'
1536  WRITE(ifile) sectionstring
1537  WRITE(ifile) pgrid%nCellsTot,nvars
1538 
1539 ! ==============================================================================
1540 ! Species concentration
1541 ! ==============================================================================
1542 
1543  pcv => pregion%spec%cv
1544 
1545  DO ivar = 1,nvars
1546  sectionstring = '# Density'
1547  WRITE(ifile) sectionstring
1548  WRITE(ifile) (pcv(ivar,j),j=1,pgrid%nCellsTot)
1549  END DO ! iVar
1550 
1551 ! ==============================================================================
1552 ! End marker
1553 ! ==============================================================================
1554 
1555  IF ( global%myProcid == masterproc .AND. &
1556  global%verbLevel > verbose_low ) THEN
1557  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
1558  END IF ! global%verbLevel
1559 
1560  sectionstring = '# End'
1561  WRITE(ifile) sectionstring
1562 
1563 ! ==============================================================================
1564 ! Close file
1565 ! ==============================================================================
1566 
1567  CLOSE(ifile,iostat=errorflag)
1568  global%error = errorflag
1569  IF ( global%error /= err_none ) THEN
1570  CALL errorstop(global,err_file_close,__line__,ifilename)
1571  END IF ! global%error
1572 
1573 ! ******************************************************************************
1574 ! End
1575 ! ******************************************************************************
1576 
1577  IF ( global%myProcid == masterproc .AND. &
1578  global%verbLevel > verbose_none ) THEN
1579  WRITE(stdout,'(A,1X,A)') solver_name,'Writing binary species cv file done.'
1580  END IF ! global%verbLevel
1581 
1582  CALL deregisterfunction(global)
1583 
1584 END SUBROUTINE spec_rflu_writecvbinary
1585 
1586 
1587 
1588 
1589 
1590 
1591 ! ******************************************************************************
1592 !
1593 ! Purpose: Write eev file for species in ASCII ROCFLU format.
1594 !
1595 ! Description: None.
1596 !
1597 ! Input:
1598 ! pRegion Pointer to region
1599 !
1600 ! Output: None.
1601 !
1602 ! Notes:
1603 ! 1. Write physical time for both steady and unsteady flows so that could
1604 ! use steady solution as input for unsteady run and vice versa.
1605 !
1606 ! ******************************************************************************
1607 
1608 SUBROUTINE spec_rflu_writeeevascii(pRegion)
1609 
1610  IMPLICIT NONE
1611 
1612 ! ******************************************************************************
1613 ! Declarations and definitions
1614 ! ******************************************************************************
1615 
1616 ! ==============================================================================
1617 ! Local variables
1618 ! ==============================================================================
1619 
1620  CHARACTER(CHRLEN) :: ifilename,sectionstring
1621  INTEGER :: errorflag,ifile,ispecee,j,nvars
1622  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: peev
1623  TYPE(t_grid), POINTER :: pgrid
1624  TYPE(t_global), POINTER :: global
1625 
1626 ! ==============================================================================
1627 ! Arguments
1628 ! ==============================================================================
1629 
1630  TYPE(t_region), POINTER :: pregion
1631 
1632 ! ******************************************************************************
1633 ! Start, open file
1634 ! ******************************************************************************
1635 
1636  global => pregion%global
1637 
1638  CALL registerfunction(global,'SPEC_RFLU_WriteEEvASCII',&
1639  'SPEC_RFLU_ModReadWriteVars.F90')
1640 
1641  IF ( global%myProcid == masterproc .AND. &
1642  global%verbLevel > verbose_none ) THEN
1643  WRITE(stdout,'(A,1X,A)') solver_name,'Writing ASCII species eev file...'
1644  END IF ! global%verbLevel
1645 
1646  IF ( global%flowType == flow_unsteady ) THEN
1647  CALL buildfilenameunsteady(global,filedest_outdir,'.spec.eeva', &
1648  pregion%iRegionGlobal,global%currentTime, &
1649  ifilename)
1650  ELSE
1651  CALL buildfilenamesteady(global,filedest_outdir,'.spec.eeva', &
1652  pregion%iRegionGlobal,global%currentIter,ifilename)
1653  ENDIF ! global%flowType
1654 
1655  ifile = if_solut
1656  OPEN(ifile,file=ifilename,form="FORMATTED",status="UNKNOWN",iostat=errorflag)
1657  global%error = errorflag
1658  IF ( global%error /= err_none ) THEN
1659  CALL errorstop(global,err_file_open,__line__,ifilename)
1660  END IF ! global%error
1661 
1662 ! ==============================================================================
1663 ! Header and general information
1664 ! ==============================================================================
1665 
1666  IF ( global%myProcid == masterproc .AND. &
1667  global%verbLevel > verbose_low ) THEN
1668  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
1669  END IF ! global%verbLevel
1670 
1671  sectionstring = '# ROCFLU species eev file'
1672  WRITE(ifile,'(A)') sectionstring
1673 
1674  sectionstring = '# Precision and range'
1675  WRITE(ifile,'(A)') sectionstring
1676  WRITE(ifile,'(2(I8))') precision(1.0_rfreal),range(1.0_rfreal)
1677 
1678  sectionstring = '# Physical time'
1679  WRITE(ifile,'(A)') sectionstring
1680  WRITE(ifile,'(E23.16)') global%currentTime
1681 
1682 ! ==============================================================================
1683 ! Dimensions
1684 ! ==============================================================================
1685 
1686  nvars = pregion%specInput%nSpeciesEE*eev_spec_nvar
1687 
1688  pgrid => pregion%grid
1689 
1690  sectionstring = '# Dimensions'
1691  WRITE(ifile,'(A)') sectionstring
1692  WRITE(ifile,'(2(I8))') pgrid%nCellsTot,nvars
1693 
1694 ! ==============================================================================
1695 ! Variables
1696 ! ==============================================================================
1697 
1698  peev => pregion%spec%eev
1699 
1700  DO ispecee = 1,pregion%specInput%nSpeciesEE
1701  sectionstring = '# x-velocity'
1702  WRITE(ifile,'(A)') sectionstring
1703  WRITE(ifile,'(5(E23.16))') (peev(eev_spec_xvel,ispecee,j), &
1704  j=1,pgrid%nCellsTot)
1705 
1706  sectionstring = '# y-velocity'
1707  WRITE(ifile,'(A)') sectionstring
1708  WRITE(ifile,'(5(E23.16))') (peev(eev_spec_yvel,ispecee,j), &
1709  j=1,pgrid%nCellsTot)
1710 
1711  sectionstring = '# z-velocity'
1712  WRITE(ifile,'(A)') sectionstring
1713  WRITE(ifile,'(5(E23.16))') (peev(eev_spec_zvel,ispecee,j), &
1714  j=1,pgrid%nCellsTot)
1715 
1716  sectionstring = '# Temperature'
1717  WRITE(ifile,'(A)') sectionstring
1718  WRITE(ifile,'(5(E23.16))') (peev(eev_spec_temp,ispecee,j), &
1719  j=1,pgrid%nCellsTot)
1720  END DO ! iSpecEE
1721 
1722 ! ==============================================================================
1723 ! End marker
1724 ! ==============================================================================
1725 
1726  IF ( global%myProcid == masterproc .AND. &
1727  global%verbLevel > verbose_low ) THEN
1728  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
1729  END IF ! global%verbLevel
1730 
1731  sectionstring = '# End'
1732  WRITE(ifile,'(A)') sectionstring
1733 
1734 ! ==============================================================================
1735 ! Close file
1736 ! ==============================================================================
1737 
1738  CLOSE(ifile,iostat=errorflag)
1739  global%error = errorflag
1740  IF ( global%error /= err_none ) THEN
1741  CALL errorstop(global,err_file_close,__line__,ifilename)
1742  END IF ! global%error
1743 
1744 ! ******************************************************************************
1745 ! End
1746 ! ******************************************************************************
1747 
1748  IF ( global%myProcid == masterproc .AND. &
1749  global%verbLevel > verbose_none ) THEN
1750  WRITE(stdout,'(A,1X,A)') solver_name,'Writing ASCII species eev file done.'
1751  END IF ! global%verbLevel
1752 
1753  CALL deregisterfunction(global)
1754 
1755 END SUBROUTINE spec_rflu_writeeevascii
1756 
1757 
1758 
1759 
1760 
1761 ! ******************************************************************************
1762 !
1763 ! Purpose: Write eev file for species in binary ROCFLU format.
1764 !
1765 ! Description: None.
1766 !
1767 ! Input:
1768 ! pRegion Pointer to region
1769 !
1770 ! Output: None.
1771 !
1772 ! Notes:
1773 ! 1. Write physical time for both steady and unsteady flows so that could
1774 ! use steady solution as input for unsteady run and vice versa.
1775 !
1776 ! ******************************************************************************
1777 
1778 SUBROUTINE spec_rflu_writeeevbinary(pRegion)
1779 
1780  IMPLICIT NONE
1781 
1782 ! ******************************************************************************
1783 ! Declarations and definitions
1784 ! ******************************************************************************
1785 
1786 ! ==============================================================================
1787 ! Local variables
1788 ! ==============================================================================
1789 
1790  CHARACTER(CHRLEN) :: ifilename,sectionstring
1791  INTEGER :: errorflag,ifile,ispecee,j,nvars
1792  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: peev
1793  TYPE(t_grid), POINTER :: pgrid
1794  TYPE(t_global), POINTER :: global
1795 
1796 ! ==============================================================================
1797 ! Arguments
1798 ! ==============================================================================
1799 
1800  TYPE(t_region), POINTER :: pregion
1801 
1802 ! ******************************************************************************
1803 ! Start, open file
1804 ! ******************************************************************************
1805 
1806  global => pregion%global
1807 
1808  CALL registerfunction(global,'SPEC_RFLU_WriteEEvBinary',&
1809  'SPEC_RFLU_ModReadWriteVars.F90')
1810 
1811  IF ( global%myProcid == masterproc .AND. &
1812  global%verbLevel > verbose_none ) THEN
1813  WRITE(stdout,'(A,1X,A)') solver_name,'Writing binary species eev file...'
1814  END IF ! global%verbLevel
1815 
1816  IF ( global%flowType == flow_unsteady ) THEN
1817  CALL buildfilenameunsteady(global,filedest_outdir,'.spec.eev', &
1818  pregion%iRegionGlobal,global%currentTime, &
1819  ifilename)
1820  ELSE
1821  CALL buildfilenamesteady(global,filedest_outdir,'.spec.eev', &
1822  pregion%iRegionGlobal,global%currentIter,ifilename)
1823  ENDIF ! global%flowType
1824 
1825  ifile = if_solut
1826  OPEN(ifile,file=ifilename,form="FORMATTED",status="UNKNOWN",iostat=errorflag)
1827  global%error = errorflag
1828  IF ( global%error /= err_none ) THEN
1829  CALL errorstop(global,err_file_open,__line__,ifilename)
1830  END IF ! global%error
1831 
1832 ! ==============================================================================
1833 ! Header and general information
1834 ! ==============================================================================
1835 
1836  IF ( global%myProcid == masterproc .AND. &
1837  global%verbLevel > verbose_low ) THEN
1838  WRITE(stdout,'(A,3X,A)') solver_name,'Header information...'
1839  END IF ! global%verbLevel
1840 
1841  sectionstring = '# ROCFLU species eev file'
1842  WRITE(ifile) sectionstring
1843 
1844  sectionstring = '# Precision and range'
1845  WRITE(ifile) sectionstring
1846  WRITE(ifile) precision(1.0_rfreal),range(1.0_rfreal)
1847 
1848  sectionstring = '# Physical time'
1849  WRITE(ifile) sectionstring
1850  WRITE(ifile) global%currentTime
1851 
1852 ! ==============================================================================
1853 ! Dimensions
1854 ! ==============================================================================
1855 
1856  nvars = pregion%specInput%nSpeciesEE*eev_spec_nvar
1857 
1858  pgrid => pregion%grid
1859 
1860  sectionstring = '# Dimensions'
1861  WRITE(ifile) sectionstring
1862  WRITE(ifile) pgrid%nCellsTot,nvars
1863 
1864 ! ==============================================================================
1865 ! Variables
1866 ! ==============================================================================
1867 
1868  peev => pregion%spec%eev
1869 
1870  DO ispecee = 1,pregion%specInput%nSpeciesEE
1871  sectionstring = '# x-velocity'
1872  WRITE(ifile) sectionstring
1873  WRITE(ifile) (peev(eev_spec_xvel,ispecee,j),j=1,pgrid%nCellsTot)
1874 
1875  sectionstring = '# y-velocity'
1876  WRITE(ifile) sectionstring
1877  WRITE(ifile) (peev(eev_spec_yvel,ispecee,j),j=1,pgrid%nCellsTot)
1878 
1879  sectionstring = '# z-velocity'
1880  WRITE(ifile) sectionstring
1881  WRITE(ifile) (peev(eev_spec_zvel,ispecee,j),j=1,pgrid%nCellsTot)
1882 
1883  sectionstring = '# Temperature'
1884  WRITE(ifile) sectionstring
1885  WRITE(ifile) (peev(eev_spec_temp,ispecee,j),j=1,pgrid%nCellsTot)
1886  END DO ! iSpecEE
1887 
1888 ! ==============================================================================
1889 ! End marker
1890 ! ==============================================================================
1891 
1892  IF ( global%myProcid == masterproc .AND. &
1893  global%verbLevel > verbose_low ) THEN
1894  WRITE(stdout,'(A,3X,A)') solver_name,'End marker...'
1895  END IF ! global%verbLevel
1896 
1897  sectionstring = '# End'
1898  WRITE(ifile) sectionstring
1899 
1900 ! ==============================================================================
1901 ! Close file
1902 ! ==============================================================================
1903 
1904  CLOSE(ifile,iostat=errorflag)
1905  global%error = errorflag
1906  IF ( global%error /= err_none ) THEN
1907  CALL errorstop(global,err_file_close,__line__,ifilename)
1908  END IF ! global%error
1909 
1910 ! ******************************************************************************
1911 ! End
1912 ! ******************************************************************************
1913 
1914  IF ( global%myProcid == masterproc .AND. &
1915  global%verbLevel > verbose_none ) THEN
1916  WRITE(stdout,'(A,1X,A)') solver_name,'Writing ASCII species eev file done.'
1917  END IF ! global%verbLevel
1918 
1919  CALL deregisterfunction(global)
1920 
1921 END SUBROUTINE spec_rflu_writeeevbinary
1922 
1923 
1924 
1925 
1926 ! ******************************************************************************
1927 ! End
1928 ! ******************************************************************************
1929 
1930 END MODULE spec_rflu_modreadwritevars
1931 
1932 
1933 ! ******************************************************************************
1934 !
1935 ! RCS Revision history:
1936 !
1937 ! $Log: SPEC_RFLU_ModReadWriteVars.F90,v $
1938 ! Revision 1.4 2008/12/06 08:44:40 mtcampbe
1939 ! Updated license.
1940 !
1941 ! Revision 1.3 2008/11/19 22:17:53 mtcampbe
1942 ! Added Illinois Open Source License/Copyright
1943 !
1944 ! Revision 1.2 2007/04/05 12:44:52 haselbac
1945 ! Removed superfluous close parentheses - found by ifort compiler
1946 !
1947 ! Revision 1.1 2005/11/27 01:47:26 haselbac
1948 ! Initial revision
1949 !
1950 ! ******************************************************************************
1951 
1952 
1953 
1954 
1955 
1956 
1957 
1958 
1959 
1960 
1961 
1962 
1963 
1964 
subroutine, public spec_rflu_readcvbinary(pRegion)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
int status() const
Obtain the status of the attribute.
Definition: Attribute.h:240
subroutine, public spec_rflu_writeeevbinary(pRegion)
subroutine, public spec_rflu_readeevbinary(pRegion)
subroutine, public spec_rflu_writecvbinary(pRegion)
blockLoc i
Definition: read.cpp:79
**********************************************************************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 form
subroutine, public spec_rflu_readcvascii(pRegion)
j indices j
Definition: Indexing.h:6
subroutine, public spec_rflu_writeeevascii(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine, public spec_rflu_writecvascii(pRegion)
subroutine, public spec_rflu_readeevascii(pRegion)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine buildfilenamesteady(global, dest, ext, id, it, fileName)
subroutine buildfilenameunsteady(global, dest, ext, id, tm, fileName)