Coded source

The coded option provides several hooks that can be implemented in C++ code to manipulate the system of equations, e.g. by including additional source terms and modifying the equation matrices.

Properties

The coded option is available to all primitive field types, i.e.

  • scalarCodedSource: scalar equations
  • vectorCodedSource: vector equations
  • sphericalTensorCodedSource: vector equations
  • symmTensorCodedSource: vector equations
  • tensorCodedSource: vector equations

It provides hooks to:

  • include sources: codeAddSup
  • constrain values before the equation is solved: codeSetValue
  • apply corrections after the equation has been solved: codeCorrect

Usage

An example showing how to add a source to the energy equation of the form

\[ S_h = \frac{1}{V} 100000 \sin(200 C_x) \]

is shown below:

codedSource
{
    type            coded;
    selectionMode   all;

    fields          (h);
    name            sourceTime;

    codeAddSup
    #{
        const Time& time = mesh().time();
        const scalarField& V = mesh_.V();
        scalarField& heSource = eqn.source();

        // Start time
        const scalar startTime = 2.0;

        // Retrieve the x component of the cell centres
        const scalarField& cellx = mesh_.C().component(0);

        // Only apply when we have reached the start time
        if (time.value() > startTime)
        {
            // Apply the source
            forAll(cellx, i)
            {
                // cell volume specific source
                heSource[i] += 1e5*sin(200*cellx[i])*V[i];
            };
        }
    #};
}

By default the coded option links against the following libraries:

  • finiteVolume: finite volume machinery
  • meshTools: mesh tools
  • sampling: sampling

These can be extended using the following options:

  • codeInclude : include additional header files
  • codeOptions : path to additional header files
  • codeLibs : linking additional libraries

Further information

Tutorials

  • none

Source code


Would you like to suggest an improvement to this page? Create an issue

Copyright © 2018 OpenCFD Ltd.

Licensed under the Creative Commons License BY-NC-ND Creative Commons License