Source code for casefoam.utility

"""CaseFOAM utility.

A set of utilities to use with CaseFOAM.

"""
import os
import PyFoam.RunDictionary.ParsedParameterFile as PPF


[docs]def mkRmCases(baseCase, cases, isWriteDir=False): """Make case remove file. Generates a bash script 'rmCases' to remove all cases and bring folder to original structure. Parameters ---------- baseCase : string Path to the baseCase directory. cases : list List of parent, child and grandchild names. isWriteDir : bool If ``baseCase`` is a copy defined by ``writeDir``, only the ``writeDir`` will be removed. """ with open('rmCases', 'w') as _rmCasesFile: # write script head _rmCasesFile.write('# Script to remove all cases and bring folder to ' 'original structure\n') # bash command to remove cases for case in cases[0]: _rmCasesFile.write('rm -rf %s*\n' % os.path.join(baseCase, case)) # bash command to rebuild original structure _rmCasesFile.write('\nmv %s %s\n' % (os.path.join(baseCase, 'baseCase', '*'), os.path.join(baseCase, ''))) _rmCasesFile.write('rm -rf %s\n' % os.path.join(baseCase, 'baseCase')) _rmCasesFile.write('rm Allrun Allclean rmCases\n') if isWriteDir: _rmCasesFile.write( 'while true; do\n' ' read -p "Delete %s directory? All changes in %s will be lost. [y/N] " yn\n' ' case $yn in\n' ' [Yy]* ) rm -rf %s; break;;\n' ' [Nn]* ) exit;;\n' ' * ) exit;;\n' ' esac\n' 'done\n' % (baseCase, baseCase, baseCase) ) _rmCasesFile.write('rm -rf %s\n' % baseCase) os.system('chmod +x rmCases')
[docs]def mkAllRunClean(baseCase): """Make Allrun and Allclean script. Generate a Allrun and Allclean script to run and clean all cases generated by CaseFOAM. Parameters ---------- baseCase : string Path to the baseCase directory. """ cases = list() for _root, _dirs, _files in os.walk(baseCase): for _file in _files: if _file.endswith('run') and 'baseCase' not in _root: cases.append(_root) # generate Allrun with open('Allrun', 'w') as _allrunFile: # write script head _allrunFile.write('# OpenFOAM Allrun script to run all cases generated' ' by CaseFOAM\n\n') for case in cases: _allrunFile.write('%s/Allrun &\n' % case) # generate Allclean with open('Allclean', 'w') as _allcleanFile: # write script head _allcleanFile.write('# OpenFOAM Allclean script to clean all cases' ' generated by CaseFOAM\n\n') for case in cases: _allcleanFile.write('%s/Allclean &\n' % case) os.system('chmod +x Allrun Allclean')
[docs]def getFileStructure(file): """Get the structure of OpenFOAM dictionary. Parameters ---------- file : str Path to the OpenFOAM file. Returns ------- fileStructure : dict Content of the OpenFOAM file as dictionary. Examples -------- Get the file content and structure of a velocity file >>> casefoam.utility.getFileStructure('0/U') {'boundaryField': {'bottom': {'type': 'symmetryPlane'}, 'defaultFaces': {'type': 'empty'}, 'inlet': {'type': 'fixedValue', 'value': 'uniform (3 0 0)'}, 'obstacle': {'type': 'slip'}, 'outlet': {'inletValue': 'uniform (3 0 0)', 'type': 'inletOutlet', 'value': 'uniform (3 0 0)'}, 'top': {'type': 'symmetryPlane'}}, 'dimensions': '[ 0 1 -1 0 0 0 0 ]', 'internalField': 'uniform (3 0 0)'} """ fileStructure = PPF.ParsedParameterFile(file) return fileStructure.content