FIX: Remove undistributable CHEMKIN files
[freefoam.git] / bin / freefoam-graphResKE.py.in
blob46e4796b148afdcd46e3a22e563a52b341028a9b
1 #!@PYTHON_EXECUTABLE@
2 #-------------------------------------------------------------------------------
3 # ______ _ ____ __ __
4 # | ____| _| |_ / __ \ /\ | \/ |
5 # | |__ _ __ ___ ___ / \| | | | / \ | \ / |
6 # | __| '__/ _ \/ _ ( (| |) ) | | |/ /\ \ | |\/| |
7 # | | | | | __/ __/\_ _/| |__| / ____ \| | | |
8 # |_| |_| \___|\___| |_| \____/_/ \_\_| |_|
10 # FreeFOAM: The Cross-Platform CFD Toolkit
12 # Copyright (C) 2008-2012 Michael Wild <themiwi@users.sf.net>
13 # Gerber van der Graaf <gerber_graaf@users.sf.net>
14 #-------------------------------------------------------------------------------
15 # License
16 # This file is part of FreeFOAM.
18 # FreeFOAM is free software: you can redistribute it and/or modify it
19 # under the terms of the GNU General Public License as published by the
20 # Free Software Foundation, either version 3 of the License, or (at your
21 # option) any later version.
23 # FreeFOAM is distributed in the hope that it will be useful, but WITHOUT
24 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26 # for more details.
28 # You should have received a copy of the GNU General Public License
29 # along with FreeFOAM. If not, see <http://www.gnu.org/licenses/>.
31 # Script
32 # freefoam-graphResKE
34 # Description
35 # The utility extracts the residuals of the k and epsilon equations at each
36 # time step and writes them to 'residualKE.dat' in TecPlot format.
37 #------------------------------------------------------------------------------
39 """Usage: freefoam@PY_SCRIPT_SUFFIX@ graphResKE [-h, -help] <logFile>
41 The utility extracts the residuals of the k and epsilon equations at each time
42 step and writes them to 'residualKE.dat' in TecPlot format.
44 Options
45 -------
46 <logFile> The log file from which to extract the data.
47 -h, -help Display this help message.
49 """
51 import sys
52 import os.path
53 import re
54 # want to be future proof
55 sys.path.insert(0, '@FOAM_PYTHON_DIR@')
56 from FreeFOAM.compat import *
58 if len(sys.argv[1:]) != 1:
59 sys.stderr.write('Error: Require a log file as argument\n')
60 sys.stderr.write(__doc__+'\n')
61 sys.exit(1)
63 if sys.argv[1] == '-h' or sys.argv[1] == '-help':
64 print(__doc__)
65 sys.exit(0)
67 logFile = sys.argv[1]
68 if not os.path.isfile(logFile):
69 sys.stderr.write('Error: no such file')
70 sys.exit(1)
72 # parse the residuals for k and epsilon from the log file
73 regex = re.compile(r'Solving for (?P<var>k|epsilon),\s+.*Initial residual\s+=\s+(?P<res>\S+),')
74 res = {'k':[], 'epsilon':[]}
75 for l in open(logFile, 'rt'):
76 m = regex.search(l)
77 if m:
78 res[m.group('var')].append(float(m.group('res')))
80 # write file header
81 ngraphs = 0
82 for v in res.values():
83 if len(v) > 0:
84 ngraphs += 1
85 outFile = open('residualKE.dat', 'wt')
86 outFile.write("""Solver Performance
87 number of iterations
88 residual
89 0 0
90 0 0
92 """%ngraphs)
94 # write data
95 for n, r in res.items():
96 if len(r) > 0:
97 outFile.write("""%s
100 """%(n, len(r)))
101 for i, v in enumerate(r):
102 outFile.write('%d %g\n'%(i+1, v))
104 outFile.close()
106 # ------------------- vim: set sw=3 sts=3 ft=python et: ------------ end-of-file