HowTo Adding a new transport equation
Suppose you want to solve and additional scalar transport equation for the scalar by adding it to an existing solver. The equation has the form
where and are defined as dimensionedScalar and are retrieved from a dictionary using the lookup member function. is the source term.
To implement the equation, just add the line:
to the createFields.H file of the solver,
Then, solve the equation by adding the following lines in the point of the solver where you want the equation to be solved.
solve ( fvm::ddt(rho, psi) + fvm::div(phi, psi) - fvm::laplacian(gamma, psi) == S_psi );
In this example, the source term is treated explicitly. To manage it implicitly, OpenFOAM provides the Sp and the SuSp functions. Suppose we can write it as . The code lines to solve the same equation with an implicit treatment of the source term are:
solve ( fvm::ddt(rho, psi) + fvm::div(phi, psi) - fvm::laplacian(gamma, psi) == fvm::Sp(kappa, psi) );
SuSp(kappa, psi) can be used to discretise the source term implicitly or explicitly according to the sign of kappa.