Specialization of the pimpleControl class for PISO control. More...


Public Member Functions | |
| TypeName ("pisoControl") | |
| Run-time type information. More... | |
| pisoControl (fvMesh &mesh, const word &dictName="PISO") | |
| Construct from mesh and the name of control sub-dictionary. More... | |
| virtual | ~pisoControl () |
| Destructor. More... | |
| bool | finalInnerIter () const |
| Return true if in the final inner (PISO) iteration. More... | |
Public Member Functions inherited from pimpleControl | |
| TypeName ("pimpleControl") | |
| Run-time type information. More... | |
| pimpleControl (fvMesh &mesh, const word &dictName="PIMPLE", const bool verbose=true) | |
| Construct from mesh and the name of control sub-dictionary. More... | |
| virtual | ~pimpleControl ()=default |
| Destructor. More... | |
| label | nCorrPIMPLE () const |
| Maximum number of PIMPLE correctors. More... | |
| label | nCorrPISO () const |
| Maximum number of PISO correctors. More... | |
| label | corrPISO () const |
| Current PISO corrector index. More... | |
| bool | SIMPLErho () const |
| Flag to indicate whether to update density in SIMPLE. More... | |
| virtual bool | loop () |
| PIMPLE loop. More... | |
| bool | correct () |
| Pressure corrector loop control. More... | |
| bool | storeInitialResiduals () const |
| Return true to store the initial residuals. More... | |
| bool | firstIter () const |
| Return true for first PIMPLE (outer) iteration. More... | |
| bool | finalIter () const |
| Return true for final PIMPLE (outer) iteration. More... | |
| bool | finalInnerIter () const |
| Return true for final inner iteration. More... | |
| bool | solveFlow () const |
| Return true to solve for flow. More... | |
| bool | turbCorr () |
| Return true to solve for turbulence. More... | |
| bool | ddtCorr () const |
| Return true to apply ddtCorr. More... | |
Public Member Functions inherited from solutionControl | |
| TypeName ("solutionControl") | |
| Run-time type information. More... | |
| solutionControl (fvMesh &mesh, const word &algorithmName) | |
| Construct from mesh. More... | |
| virtual | ~solutionControl ()=default |
| Destructor. More... | |
| virtual const dictionary | dict () const |
| Return the solution dictionary. More... | |
| label | corr () const |
| Current corrector loop index. More... | |
| label | corrNonOrtho () const |
| Current non-orthogonal corrector index. More... | |
| label | nNonOrthCorr () const |
| Maximum number of non-orthogonal correctors. More... | |
| bool | finalNonOrthogonalIter () const |
| Helper function to identify final non-orthogonal iteration. More... | |
| bool | momentumPredictor () const |
| Flag to indicate to solve for momentum. More... | |
| bool | transonic () const |
| Flag to indicate to solve using transonic algorithm. More... | |
| bool | consistent () const |
| Flag to indicate to relax pressure using the. More... | |
| bool | frozenFlow () const |
| Flag to indicate that the flow system of equations should not. More... | |
| bool | correctNonOrthogonal () |
| Non-orthogonal corrector loop. More... | |
Public Member Functions inherited from regIOobject | |
| TypeName ("regIOobject") | |
| Runtime type information. More... | |
| regIOobject (const IOobject &io, const bool isTimeObject=false) | |
| Construct from IOobject. The optional flag adds special handling if the object is the top-level regIOobject (eg, Time). More... | |
| regIOobject (const regIOobject &rio) | |
| Copy construct. More... | |
| regIOobject (const regIOobject &rio, bool registerCopy) | |
| Copy construct, transferring registry registration to the copy if registerCopy is true. More... | |
| regIOobject (const word &newName, const regIOobject &, bool registerCopy) | |
| Copy construct with new name, transferring registry registration to the copy f registerCopy is true. More... | |
| regIOobject (const IOobject &io, const regIOobject &rio) | |
| Copy construct with new IO parameters. More... | |
| virtual | ~regIOobject () |
| Destructor. More... | |
| bool | checkIn () |
| Add object to registry, if not already registered. More... | |
| bool | checkOut () |
| Remove all file watches and remove object from registry. More... | |
| virtual void | addWatch () |
| Add file watch on object (if registered and READ_IF_MODIFIED) More... | |
| bool | registered () const noexcept |
| Query the registered state (ie, has been checked in). This is not necessarily the same as registerObject(), which is just a stated preference. More... | |
| bool | ownedByRegistry () const noexcept |
| Is this object owned by the registry? More... | |
| bool | store () |
| Register object with its registry and transfer ownership to the registry. More... | |
| void | release (const bool unregister=false) noexcept |
| Set object as not ownedByRegistry. More... | |
| label | eventNo () const noexcept |
| Event number at last update. More... | |
| label & | eventNo () noexcept |
| Event number at last update. More... | |
| bool | upToDate (const regIOobject &) const |
| Return true if up-to-date with respect to given object. More... | |
| bool | upToDate (const regIOobject &, const regIOobject &) const |
| Return true if up-to-date with respect to given objects. More... | |
| bool | upToDate (const regIOobject &, const regIOobject &, const regIOobject &) const |
| Return true if up-to-date with respect to given objects. More... | |
| bool | upToDate (const regIOobject &, const regIOobject &, const regIOobject &, const regIOobject &) const |
| Return true if up-to-date with respect to given objects. More... | |
| void | setUpToDate () |
| Set as up-to-date. More... | |
| virtual void | rename (const word &newName) |
| Rename. More... | |
| const dictionary * | findMetaData () const noexcept |
| Return pointer to meta-data or nullptr. More... | |
| dictionary & | getMetaData () noexcept |
| Get or create meta-data. More... | |
| void | removeMetaData () |
| Remove meta-data. More... | |
| virtual void | updateMetaData () |
| Update internal meta-data (eg, prior to writing) More... | |
| virtual fileName | filePath () const |
| Return complete path + object name if the file exists. More... | |
| bool | headerOk () |
| Read and check header info. Does not check the headerClassName. More... | |
| Istream & | readStream (const word &, const bool valid=true) |
| Return Istream and check object type against that given. More... | |
| void | close () |
| Close Istream. More... | |
| virtual bool | readData (Istream &) |
| Virtual readData function. More... | |
| virtual label | addWatch (const fileName &) |
| Add file watch for fileName on object if not yet watched. More... | |
| const labelList & | watchIndices () const noexcept |
| Read access to file-monitoring handles. More... | |
| labelList & | watchIndices () noexcept |
| Write access to file-monitoring handles. More... | |
| virtual bool | modified () const |
| Return true if the object's file (or files for objectRegistry) have been modified. (modified state is cached by Time) More... | |
| virtual bool | readIfModified () |
| Read object if modified (as set by call to modified) More... | |
| virtual bool | writeObject (IOstreamOption streamOpt, const bool valid) const |
| Write using stream options. More... | |
| virtual bool | write (const bool valid=true) const |
| Write using setting from DB. More... | |
| virtual bool | global () const |
| Is object global. More... | |
| void | operator= (const IOobject &io) |
| Copy assignment. More... | |
| virtual bool | writeObject (IOstreamOption::streamFormat fmt, IOstreamOption::versionNumber ver, IOstreamOption::compressionType cmp, const bool valid) const |
| Write using given format, version and compression. More... | |
Public Member Functions inherited from IOobject | |
| TypeName ("IOobject") | |
| Declare type-name, virtual type (with debug switch) More... | |
| IOobject (const IOobject &)=default | |
| Copy construct. More... | |
| virtual | ~IOobject ()=default |
| Destructor. More... | |
| IOobject (const word &name, const fileName &instance, const objectRegistry ®istry, IOobjectOption ioOpt=IOobjectOption()) | |
| Construct from name, instance, registry, io options. More... | |
| IOobject (const word &name, const fileName &instance, const fileName &local, const objectRegistry ®istry, IOobjectOption ioOpt=IOobjectOption()) | |
| Construct from name, instance, local, registry, io options. More... | |
| IOobject (const fileName &path, const objectRegistry ®istry, IOobjectOption ioOpt=IOobjectOption()) | |
| Construct from path, registry, io options. More... | |
| IOobject (const word &name, const fileName &instance, const objectRegistry ®istry, IOobjectOption::readOption rOpt, IOobjectOption::writeOption wOpt=IOobjectOption::NO_WRITE, bool registerObject=true, bool globalObject=false) | |
| Construct from name, instance, registry, io options. More... | |
| IOobject (const word &name, const fileName &instance, const fileName &local, const objectRegistry ®istry, IOobjectOption::readOption rOpt, IOobjectOption::writeOption wOpt=IOobjectOption::NO_WRITE, bool registerObject=true, bool globalObject=false) | |
| Construct from name, instance, local, registry, io options. More... | |
| IOobject (const fileName &path, const objectRegistry ®istry, IOobjectOption::readOption rOpt, IOobjectOption::writeOption wOpt=IOobjectOption::NO_WRITE, bool registerObject=true, bool globalObject=false) | |
| Construct from path, registry, io options. More... | |
| IOobject (const IOobject &io, const objectRegistry ®istry) | |
| Copy construct, resetting registry. More... | |
| IOobject (const IOobject &io, const word &name) | |
| Copy construct, resetting name. More... | |
| IOobject (const IOobject &io, const word &name, const fileName &local) | |
| Copy construct, resetting name and local component. More... | |
| IOobject (const IOobject &io, IOobjectOption::readOption rOpt, IOobjectOption::writeOption wOpt) | |
| Copy construct, resetting read/write options. More... | |
| autoPtr< IOobject > | clone () const |
| Clone. More... | |
| autoPtr< IOobject > | clone (const objectRegistry ®istry) const |
| Clone resetting registry. More... | |
| const objectRegistry & | db () const noexcept |
| Return the local objectRegistry. More... | |
| const Time & | time () const |
| Return Time associated with the objectRegistry. More... | |
| const word & | name () const noexcept |
| Return the object name. More... | |
| const word & | headerClassName () const noexcept |
| Return name of the class name read from header. More... | |
| word & | headerClassName () noexcept |
| Return non-constant access to the class name read from header. More... | |
| const string & | note () const noexcept |
| Return the optional note. More... | |
| string & | note () noexcept |
| Modifiable access to the optional note. More... | |
| unsigned | labelByteSize () const noexcept |
| The sizeof (label) in bytes, possibly read from the header. More... | |
| unsigned | scalarByteSize () const noexcept |
| The sizeof (scalar) in bytes, possibly read from the header. More... | |
| bool | hasHeaderClass () const noexcept |
| True if headerClassName() is non-empty (after reading) More... | |
| template<class Type > | |
| bool | isHeaderClass () const |
| Check if headerClassName() equals Type::typeName. More... | |
| template<class Type > | |
| bool | isHeaderClassName () const |
| Same as isHeaderClass() More... | |
| word | group () const |
| Return group (extension part of name) More... | |
| word | member () const |
| Return member (name without the extension) More... | |
| const fileName & | rootPath () const |
| Return the Time::rootPath() More... | |
| const fileName & | caseName () const |
| Return the Time::caseName() More... | |
| const fileName & | instance () const noexcept |
| Read access to instance path component. More... | |
| fileName & | instance () noexcept |
| Write access to instance path component. More... | |
| const fileName & | local () const noexcept |
| Read access to local path component. More... | |
| fileName | path () const |
| The complete path. More... | |
| fileName | path (const word &instance, const fileName &local=fileName::null) const |
| The complete path with alternative instance and local. More... | |
| fileName | objectPath () const |
| The complete path + object name. More... | |
| fileName | objectRelPath () const |
| The object path relative to the root. More... | |
| fileName | localFilePath (const word &typeName, const bool search=true) const |
| Redirect to fileHandler filePath, searching locally. More... | |
| fileName | globalFilePath (const word &typeName, const bool search=true) const |
| Redirect to fileHandler filePath, searching up if in parallel. More... | |
| IOstreamOption | parseHeader (const dictionary &headerDict) |
| Parse 'FoamFile' header contents and set the IOobject characteristics and return the stream characteristics. More... | |
| bool | readHeader (Istream &is) |
| Read header ('FoamFile' dictionary) and set the IOobject and stream characteristics. More... | |
| bool | readHeader (dictionary &headerDict, Istream &is) |
| Read header (the 'FoamFile' dictionary) and set the IOobject and stream characteristics. More... | |
| template<class Type > | |
| bool | typeHeaderOk (const bool checkType=true, const bool search=true, const bool verbose=true) |
| Read header (uses typeFilePath to find file) and check its info. More... | |
| template<class Type > | |
| void | warnNoRereading () const |
| Helper: warn that type does not support re-reading. More... | |
| bool | writeHeader (Ostream &os) const |
| Write header with current type() More... | |
| bool | writeHeader (Ostream &os, const word &objectType) const |
| Write header with override of type. More... | |
| void | writeHeader (dictionary &dict, IOstreamOption streamOpt) const |
| Write header into a dictionary with current type() and given output format. More... | |
| void | writeHeader (dictionary &dict, const word &objectType, IOstreamOption streamOpt) const |
| Write header into a dictionary with override of type and given output format. More... | |
| bool | good () const noexcept |
| Did last readHeader() succeed? More... | |
| bool | bad () const noexcept |
| Did last readHeader() fail? More... | |
| InfoProxy< IOobject > | info () const |
| Return info proxy, for printing information to a stream. More... | |
| void | operator= (const IOobject &io) |
| Copy assignment, copies all values (except the registry) More... | |
| template<> | |
| bool | isHeaderClass () const |
Specialization for void always returns true (no headerClassName check). More... | |
| template<class StringType > | |
| Foam::word | groupName (StringType base, const word &group) |
Public Member Functions inherited from IOobjectOption | |
| constexpr | IOobjectOption (readOption rOpt=readOption::NO_READ, writeOption wOpt=writeOption::NO_WRITE, registerOption registerObject=registerOption::REGISTER, bool globalObject=false) noexcept |
| Default construct (NO_READ, NO_WRITE, register, non-global) or construct with specified options. More... | |
| constexpr | IOobjectOption (readOption rOpt, registerOption registerObject=registerOption::REGISTER, bool globalObject=false) noexcept |
| Construct NO_WRITE with specified read/register options. More... | |
| constexpr | IOobjectOption (writeOption wOpt, registerOption registerObject=registerOption::REGISTER, bool globalObject=false) noexcept |
| Construct NO_READ with specified write/register options. More... | |
| constexpr | IOobjectOption (registerOption registerObject, bool globalObject=false) noexcept |
| Construct (NO_READ, NO_WRITE) with specified register option. More... | |
| constexpr | IOobjectOption (readOption rOpt, writeOption wOpt, bool registerObject, bool globalObject=false) noexcept |
| Construct from components with specified register option as bool. More... | |
| constexpr | IOobjectOption (bool registerObject, bool globalObject=false) noexcept |
| Construct (NO_READ, NO_WRITE) with specified register option as bool. More... | |
| readOption | readOpt () const noexcept |
| Get the read option. More... | |
| readOption | readOpt (readOption opt) noexcept |
| Set the read option. More... | |
| writeOption | writeOpt () const noexcept |
| Get the write option. More... | |
| writeOption | writeOpt (writeOption opt) noexcept |
| Set the write option. More... | |
| bool | registerObject () const noexcept |
| Should objects created with this IOobject be registered? More... | |
| bool | registerObject (bool on) noexcept |
| Change registration preference. More... | |
| bool | globalObject () const noexcept |
| True if object is treated the same for all processors. More... | |
| bool | globalObject (bool on) noexcept |
| Change global-object status. More... | |
| bool | isReadRequired () const noexcept |
| True if (MUST_READ | MUST_READ_IF_MODIFIED) bits are set. More... | |
| bool | isReadOptional () const noexcept |
| True if (READ_IF_PRESENT) bits are set. More... | |
| readOption & | readOpt () noexcept |
| Access to the read option. More... | |
| writeOption & | writeOpt () noexcept |
| Access to the write option. More... | |
| bool & | registerObject () noexcept |
| Access to the register object option. More... | |
| bool & | globalObject () noexcept |
| Access to the global object option. More... | |
Additional Inherited Members | |
Public Types inherited from IOobject | |
| enum | objectState : char { GOOD, BAD } |
| Enumeration defining the valid states of an IOobject. More... | |
| enum | fileCheckTypes : char { timeStamp, timeStampMaster, inotify, inotifyMaster } |
| Enumeration defining the file checking options. More... | |
Public Types inherited from IOobjectOption | |
| enum | readOption : unsigned char { NO_READ = 0, MUST_READ = 0x1, MUST_READ_IF_MODIFIED = 0x3, READ_IF_PRESENT = 0x4 } |
| Enumeration defining read preferences. More... | |
| enum | writeOption : unsigned char { NO_WRITE = 0, AUTO_WRITE = 0x10 } |
| Enumeration defining write preferences. More... | |
| enum | registerOption : unsigned char { NO_REGISTER = 0, REGISTER = 1 } |
| Enumeration for use with registerObject(). Values map to bool (false/true) More... | |
Static Public Member Functions inherited from solutionControl | |
| static Pair< scalar > | maxResidual (const fvMesh &fvmesh, const entry &dataDictEntry) |
| Extract maximum residual for the solver performance entry, provided the corresponding volume field is available on the mesh. More... | |
Static Public Member Functions inherited from regIOobject | |
| template<class Type > | |
| static Type & | store (Type *p) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (autoPtr< Type > &ptr) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (autoPtr< Type > &&ptr) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (refPtr< Type > &ptr) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (refPtr< Type > &&ptr) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (tmp< Type > &ptr) |
| Transfer pointer ownership to its registry. More... | |
| template<class Type > | |
| static Type & | store (tmp< Type > &&ptr) |
| Transfer pointer ownership to its registry. More... | |
Static Public Member Functions inherited from IOobject | |
| static bool | bannerEnabled () noexcept |
| Status of output file banner. More... | |
| static bool | bannerEnabled (bool on) noexcept |
| Enable/disable output file banner. More... | |
| static bool | fileNameComponents (const fileName &path, fileName &instance, fileName &local, word &name) |
| Split path into instance, local, name components. More... | |
| template<class StringType > | |
| static word | groupName (StringType base, const word &group) |
| Create dot-delimited name.group string. More... | |
| static word | group (const word &name) |
| Return group (extension part of name) More... | |
| static word | member (const word &name) |
| Return member (name without the extension) More... | |
| static word | scopedName (const std::string &scope, const word &name) |
| Create scope:name or scope_name string. More... | |
| static IOobject | selectIO (const IOobject &io, const fileName &altFile, const word &ioName="") |
| Return the IOobject, but also consider an alternative file name. More... | |
| static Ostream & | writeBanner (Ostream &os, const bool noSyntaxHint=false) |
| Write the standard OpenFOAM file/dictionary banner. More... | |
| static Ostream & | writeDivider (Ostream &os) |
| Write the standard file section divider. More... | |
| static Ostream & | writeEndDivider (Ostream &os) |
| Write the standard end file divider. More... | |
Static Public Member Functions inherited from IOobjectOption | |
| static bool | isReadRequired (readOption opt) noexcept |
| True if (MUST_READ | MUST_READ_IF_MODIFIED) bits are set. More... | |
| static bool | isReadOptional (readOption opt) noexcept |
| True if (READ_IF_PRESENT) bits are set. More... | |
Static Public Attributes inherited from IOobject | |
| static const Enum< fileCheckTypes > | fileCheckTypesNames |
| Names for the fileCheckTypes. More... | |
| static char | scopeSeparator |
| Character for scoping object names (':' or '_') More... | |
| static fileCheckTypes | fileModificationChecking |
| Type of file modification checking. More... | |
| static float | fileModificationSkew |
| Time skew (seconds) for file modification checks. More... | |
| static int | maxFileModificationPolls |
| Max number of times to poll for file modification changes. More... | |
Protected Member Functions inherited from pimpleControl | |
| virtual bool | read () |
| Read controls from fvSolution dictionary. More... | |
| virtual bool | criteriaSatisfied () |
| Return true if all convergence checks are satisfied. More... | |
| virtual void | setFirstIterFlag (const bool check=true, const bool force=false) |
| Set the firstIteration flag on the mesh data dictionary. More... | |
Protected Member Functions inherited from solutionControl | |
| virtual bool | read (const bool absTolOnly) |
| Read controls from fvSolution dictionary. More... | |
| virtual label | applyToField (const word &fieldName, const bool useRegEx=true) const |
| Return index of field in residualControl_ if present. More... | |
| virtual void | storePrevIterFields () const |
| Store previous iteration fields. More... | |
| template<class Type > | |
| void | storePrevIter () const |
| Store previous iteration field for vol<Type>Fields. More... | |
| Pair< scalar > | maxResidual (const entry &solverPerfDictEntry) const |
| Extract the maximum residual for the specified field. More... | |
| virtual bool | writeData (Ostream &) const |
| Dummy write for regIOobject. More... | |
Protected Member Functions inherited from regIOobject | |
| bool | readHeaderOk (const IOstreamOption::streamFormat fmt, const word &typeName) |
| Helper: check readOpt flags and read if necessary. More... | |
Protected Member Functions inherited from IOobject | |
| void | setBad (const string &s) |
| Set the object state to bad. More... | |
Static Protected Member Functions inherited from solutionControl | |
| template<class Type > | |
| static bool | maxTypeResidual (const fvMesh &fvmesh, const entry &solverPerfDictEntry, Pair< scalar > &residuals) |
| Initial and final residual of the specified field-name, provided that the corresponding volume field is available on the fvMesh. More... | |
Static Protected Member Functions inherited from IOobject | |
| static void | writeHeaderContent (Ostream &os, const IOobject &io, const word &objectType, const dictionary *metaDataDict=nullptr) |
| Helper: write content for FoamFile IOobject header with optional meta information. More... | |
| static void | writeHeaderContent (dictionary &dict, const IOobject &io, const word &objectType, IOstreamOption streamOpt, const dictionary *metaDataDict=nullptr) |
| Helper: write dictionary content for FoamFile header with optional meta information. More... | |
Protected Attributes inherited from pimpleControl | |
| bool | solveFlow_ |
| Flag to indicate whether to solve for the flow. More... | |
| label | nCorrPIMPLE_ |
| Maximum number of PIMPLE correctors. More... | |
| label | nCorrPISO_ |
| Maximum number of PISO correctors. More... | |
| label | corrPISO_ |
| Current PISO corrector. More... | |
| bool | SIMPLErho_ |
| Flag to indicate whether to update density in SIMPLE rather than PISO mode. More... | |
| bool | turbOnFinalIterOnly_ |
| Flag to indicate whether to only solve turbulence on final iter. More... | |
| bool | finalOnLastPimpleIterOnly_ |
| Flag to indicate wheter the final solver is used only on the final pimple iter. More... | |
| bool | ddtCorr_ |
| Flag to indicate that ddtCorr should be applied; default = yes. More... | |
| bool | converged_ |
| Converged flag. More... | |
Protected Attributes inherited from solutionControl | |
| fvMesh & | mesh_ |
| Reference to the mesh database. More... | |
| List< fieldData > | residualControl_ |
| List of residual data per field. More... | |
| const word | algorithmName_ |
| The dictionary name, e.g. SIMPLE, PIMPLE. More... | |
| label | nNonOrthCorr_ |
| Maximum number of non-orthogonal correctors. More... | |
| bool | momentumPredictor_ |
| Flag to indicate to solve for momentum. More... | |
| bool | transonic_ |
| Flag to indicate to solve using transonic algorithm. More... | |
| bool | consistent_ |
| Flag to indicate to relax pressure using the. More... | |
| bool | frozenFlow_ |
| Flag to indicate that the flow system of equations should not. More... | |
| label | corr_ |
| Current corrector loop index. More... | |
| label | corrNonOrtho_ |
| Current non-orthogonal corrector loop index. More... | |
Static Protected Attributes inherited from regIOobject | |
| static bool | masterOnlyReading = false |
| To flag master-only reading of objects. More... | |
Specialization of the pimpleControl class for PISO control.
Definition at line 47 of file pisoControl.H.
| pisoControl | ( | fvMesh & | mesh, |
| const word & | dictName = "PISO" |
||
| ) |
Construct from mesh and the name of control sub-dictionary.
Definition at line 33 of file pisoControl.C.
|
virtual |
Destructor.
Definition at line 43 of file pisoControl.C.
| TypeName | ( | "pisoControl" | ) |
Run-time type information.
|
inline |
Return true if in the final inner (PISO) iteration.
Definition at line 24 of file pisoControl.H.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.