PyFoam.Infrastructure.FoamServer module

A XMLRPC-Server that answeres about the current state of a Foam-Run

class PyFoam.Infrastructure.FoamServer.FoamAnswerer(run=None, master=None, lines=100, foamserver=None)[source]

Bases: object

The class that handles the actual requests (only needed to hide the Thread-methods from the world

__dict__ = dict_proxy({'__module__': 'PyFoam.Infrastructure.FoamServer', 'writeDictionaryText': <function writeDictionaryText>, 'lastLine': <function lastLine>, 'actualCommandLine': <function actualCommandLine>, 'isLiving': <function isLiving>, 'ip': <function ip>, 'startTimestamp': <function startTimestamp>, 'pid': <function pid>, 'getEnviron': <function getEnviron>, 'jobId': <function jobId>, 'lastTimeStepSeen': <function lastTimeStepSeen>, 'uname': <function uname>, 'getPlots': <function getPlots>, 'isFoamServer': <function isFoamServer>, '__weakref__': <attribute '__weakref__' of 'FoamAnswerer' objects>, 'id': <function id>, '__init__': <function __init__>, 'writtenTimesteps': <function writtenTimesteps>, 'write': <function write>, 'getDictionaryContents': <function getDictionaryContents>, 'deltaT': <function deltaT>, 'procNr': <function procNr>, 'isParallel': <function isParallel>, 'commandLine': <function commandLine>, 'hostname': <function hostname>, 'scriptName': <function scriptName>, 'pathToSolution': <function pathToSolution>, 'elapsedTime': <function elapsedTime>, 'tail': <function tail>, 'runnerData': <function runnerData>, 'listFiles': <function listFiles>, 'getDictionaryText': <function getDictionaryText>, '__doc__': 'The class that handles the actual requests (only needed to hide the\n Thread-methods from the world\n ', 'foamVersion': <function foamVersion>, 'solutionFiles': <function solutionFiles>, 'writeDictionaryContents': <function writeDictionaryContents>, '_readParameter': <function _readParameter>, 'stop': <function stop>, 'setRemark': <function setRemark>, '_kill': <function _kill>, 'mpi': <function mpi>, '__dict__': <attribute '__dict__' of 'FoamAnswerer' objects>, 'lastLogLineSeen': <function lastLogLineSeen>, 'loadAvg': <function loadAvg>, 'argv': <function argv>, 'startTime': <function startTime>, 'usedArgv': <function usedArgv>, 'configuration': <function configuration>, 'createTime': <function createTime>, 'pyFoamVersion': <function pyFoamVersion>, 'getRemark': <function getRemark>, '_insertLine': <function _insertLine>, 'stopAtNextWrite': <function stopAtNextWrite>, 'controlDictUnmodified': <function controlDictUnmodified>, 'cwd': <function cwd>, 'getPlotData': <function getPlotData>, 'time': <function time>, 'endTime': <function endTime>, 'nrWarnings': <function nrWarnings>, 'user': <function user>})
__init__(run=None, master=None, lines=100, foamserver=None)[source]
Parameters:
  • run – The thread that controls the run
  • master – The Runner-Object that controls everything
  • lines – the number of lines the server should remember
__module__ = 'PyFoam.Infrastructure.FoamServer'
__weakref__

list of weak references to the object (if defined)

_insertLine(line)[source]

Inserts a new line, not to be called via XMLRPC

_kill(*args)[source]

Interrupts the FOAM-process

_readParameter(name)[source]

Reads a parametr from the controlDict :param name: the parameter :return: The value

actualCommandLine(*args)[source]

The actual command line used

argv()[source]

Argument vector with which the runner was called

commandLine()[source]

The command line

configuration(*args)[source]
Returns:all the configured parameters
controlDictUnmodified(*args)[source]

Checks whether there is a pending change to the controlDict

createTime()[source]
Returns:the time in the simulation for which the mesh was created
cwd(*args)[source]
Returns:the current working directory
deltaT()[source]
Returns:parameter startTime from the controlDict
elapsedTime()[source]
Returns:time in seconds since the last line was output
endTime()[source]
Returns:parameter endTime from the controlDict
foamVersion()[source]

Version number of the Foam-Version

getDictionaryContents(*args)[source]
Parameters:
  • directory – Sub-directory of the case
  • name – name of the dictionary file
Returns:

the contents of the file as a python data-structure

getDictionaryText(*args)[source]
Parameters:
  • directory – Sub-directory of the case
  • name – name of the dictionary file
Returns:

the contents of the file as a big string

getEnviron(*args)[source]
Parameters:name – name of an environment variable
Returns:value of the variable, empty string if non-existing
getPlotData(*args)[source]

Get all the data for the plots

getPlots(*args)[source]

Get all the information about the plots

getRemark()[source]

Get the user-defined remark for this job

hostname()[source]
Returns:The name of the computer
id()[source]
Returns:an ID for this run: IP:port:startTimestamp
ip()[source]
Returns:the ip of this machine
isFoamServer()[source]

This is a Foam-Server (True by default)

isLiving()[source]

The calculation still generates output and therefor seems to be living

isParallel()[source]

Is it a parallel run?

jobId()[source]

Return the job-ID of the queuing-system. Empty if unset

lastLine(*args)[source]
Returns:the last line that was output by the running FOAM-process
lastLogLineSeen()[source]
Returns:the time at which the last log-line was seen
lastTimeStepSeen()[source]
Returns:the time at which the last log-line was seen
listFiles(*args)[source]
Parameters:directory – Sub-directory of the case
Returns:List of the filenames (not directories) in that case
loadAvg()[source]
Returns:a tuple with the average loads of the last 1, 5 and 15 minutes
mpi()[source]
Returns:name of the MPI-implementation
nrWarnings(*args)[source]

Number of warnings the executable emitted

pathToSolution(*args)[source]
Returns:the path to the solution directory
pid(*args)[source]
Returns:the PID of the script
procNr()[source]

How many processors are used?

pyFoamVersion()[source]
Returns:Version number of the PyFoam
runnerData(*args)[source]
Returns:the data the runner collected so far
scriptName(*args)[source]

Name of the Python-Script that runs the show

setRemark(*args)[source]

Overwrite the user-defined remark :return: True if the remark was set previously

solutionFiles(*args)[source]
Parameters:time – name of the timestep
Returns:list of the solution files at that timestep
startTime()[source]
Returns:parameter startTime from the controlDict
startTimestamp()[source]
Returns:the unix-timestamp of the process start
stop(*args)[source]

Stops the run gracefully (after writing the last time-step to disk)

stopAtNextWrite(*args)[source]

Stops the run gracefully the next time data is written to disk

tail(*args)[source]
Returns:the current last lines as a string
time()[source]
Returns:the current time in the simulation
uname()[source]
Returns:the complete uname-information
usedArgv()[source]

Argument vector with which the runner started the run

user()[source]
Returns:the user that runs this script
write(*args)[source]

Makes the program write the next time-step to disk and the continue

writeDictionaryContents(*args)[source]

Writes the contents of a dictionary :param directory: Sub-directory of the case :param name: name of the dictionary file :param contents: Python-dictionary with the dictionary contents

writeDictionaryText(*args)[source]

Writes the contents of a dictionary :param directory: Sub-directory of the case :param name: name of the dictionary file :param text: String with the dictionary contents

writtenTimesteps(*args)[source]
Returns:list of the timesteps on disc
class PyFoam.Infrastructure.FoamServer.FoamServer(run=None, master=None, lines=100)[source]

Bases: threading.Thread

This is the class that serves the requests about the FOAM-Run

__init__(run=None, master=None, lines=100)[source]
Parameters:
  • run – The thread that controls the run
  • master – The Runner-Object that controls everything
  • lines – the number of lines the server should remember
__module__ = 'PyFoam.Infrastructure.FoamServer'
_insertLine(line)[source]

Inserts a new line, not to be called via XMLRPC

deregister()[source]

Tries to deregister with the Meta-Server

info()[source]

Returns the IP, the PID and the port of the server (as one tuple)

kill()[source]

Interrupts the FOAM-process (and kills the server)

killServer()[source]

Kills the server process

register()[source]

Tries to register with the Meta-Server

run()[source]

Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

PyFoam.Infrastructure.FoamServer.findFreePort(useSSL=None)[source]

Finds a free server port on this machine and returns it

Valid server ports are in the range 18000 upward (the function tries to find the lowest possible port number

ATTENTION: this part may introduce race conditions

PyFoam.Infrastructure.FoamServer.needsAuthentication(func)[source]
PyFoam.Infrastructure.FoamServer.random() → x in the interval [0, 1).