Source code for butterfly.controlDict
# coding=utf-8
"""BlockMeshDict class."""
from .foamfile import FoamFile, foam_file_from_file
from .functions import Function
from collections import OrderedDict
[docs]class ControlDict(FoamFile):
"""Control dict class."""
# set default valus for this class
__default_values = OrderedDict()
__default_values['#include'] = None
# application will be updated based on recipe
__default_values['application'] = None
__default_values['startFrom'] = 'latestTime'
__default_values['startTime'] = '0'
__default_values['stopAt'] = 'endTime'
__default_values['endTime'] = '1000'
__default_values['deltaT'] = '1'
__default_values['writeControl'] = 'timeStep'
__default_values['writeInterval'] = '100'
__default_values['purgeWrite'] = '0'
__default_values['writeFormat'] = 'ascii'
__default_values['writePrecision'] = '7'
__default_values['writeCompression'] = 'off'
__default_values['timeFormat'] = 'general'
__default_values['timePrecision'] = '6'
__default_values['runTimeModifiable'] = 'true'
__default_values['functions'] = OrderedDict()
def __init__(self, values=None):
"""Init class."""
FoamFile.__init__(self, name='controlDict', cls='dictionary',
location='system', default_values=self.__default_values,
values=values)
[docs] @classmethod
def from_file(cls, filepath):
"""Create a FoamFile from a file.
Args:
filepath: Full file path to dictionary.
"""
return cls(values=foam_file_from_file(filepath, cls.__name__))
@property
def include(self):
"""Get if any file is included in controlDict."""
return self.values['#include']
@include.setter
def include(self, file_name):
"""Add include to controlDict."""
self.values['#include'] = '"{}"'.format(file_name.replace('"', ''))
@property
def application(self):
"""Set solver application.
(default: simpleFoam)
"""
return self.values['application']
@application.setter
def application(self, value='simpleFoam'):
self.values['application'] = str(value)
@property
def startTime(self):
"""Set start timestep (default: 0)."""
return self.values['startTime']
@startTime.setter
def startTime(self, value=0):
self.values['startTime'] = str(int(value))
@property
def endTime(self):
"""Set end timestep (default: 1000)."""
return self.values['endTime']
@endTime.setter
def endTime(self, value=0):
self.values['endTime'] = str(int(value))
@property
def writeInterval(self):
"""Set the number of intervals for writing the results (default: 100)."""
return self.values['writeInterval']
@writeInterval.setter
def writeInterval(self, value=100):
self.values['writeInterval'] = str(int(value))
@property
def purgeWrite(self):
"""Set the number of results folders to be kept (default: 0)."""
return self.values['purgeWrite']
@purgeWrite.setter
def purgeWrite(self, value=0):
self.values['purgeWrite'] = str(int(value))
@property
def writeCompression(self):
"""Write results as .zip files.
Set to True to compress the results before writing to your machine
(default: False)
"""
return self.values['writeCompression']
@writeCompression.setter
def writeCompression(self, value=True):
self.values['writeCompression'] = self.convert_bool_value(value)
@property
def functions(self):
"""Function objects."""
self.values['functions']
@functions.setter
def functions(self, func_objects):
fos = (f if hasattr(f, 'isFunction') else Function.from_cpp_dictionary(f)
for f in func_objects)
self.values['functions'] = OrderedDict()
for f in fos:
self.values['functions'].update(f.values)