ENH: provide dictionary access for coded BCs etc (#1922)

- in some cases, additional dictionary inputs are useful for extending
  the input parameters or functionality of dynamic coded conditions.

  Typically this can be used to provide a simple set of dictionary
  inputs that are used to drive specific code, but allows changing the
  inputs without causing a recompilation.

  Accessed with this type of code:
  ```
  const dictionary& dict = this->codeContext();
  ```

boundary conditions and function objects:

* specify an additional codeContext dictionary entry:
  ```
  codeContext
  {
      ...
  }
  ```

PatchFunction1:

* The code context dictionary is simply the dictionary used to specify
  the PatchFunction1 coefficients.

  To replicated persistant data, use local member static data.
  Eg,
  ```
  code
  #{
      // Persistent (Member) Data
      static autoPtr<Function1<scalar>> baseVel;
      static autoPtr<Function1<vector>> baseDir;
      ...
  #}
  ```

fvOptions:

* currently not applicable
This commit is contained in:
Mark Olesen
2021-06-01 11:27:45 +02:00
parent b0891824fa
commit b59ae32d68
18 changed files with 233 additions and 19 deletions

View File

@ -36,6 +36,7 @@ SourceFiles
#define codedPoints0MotionSolverTemplate_H
#include "points0MotionSolver.H"
#include "dictionaryContent.H"
//{{{ begin codeInclude
${codeInclude}
@ -52,7 +53,8 @@ namespace Foam
class ${typeName}Points0MotionSolver
:
public points0MotionSolver
public points0MotionSolver,
public dictionaryContent
{
// Private Member Functions
@ -100,6 +102,12 @@ public:
// Member Functions
//- Code context as a dictionary
const dictionary& codeContext() const
{
return dictionaryContent::dict();
}
//- Provide current points for motion. Uses current motion field
virtual tmp<pointField> curPoints() const;