Skip to content

Adding a New Forward Solver to the VTS

Lisa Malenfant edited this page Apr 26, 2017 · 9 revisions

Bring up the VTS project In Visual Studio

Browse to the location of the existing forward solvers:
Core/Vts/Modeling/ForwardSolvers/

In File System:
…\vts\src\Vts\Modeling\ForwardSolvers\

Here you will see the the list of all the existing forward solvers
ForwardSolvers

To create a new forward solver, in Visual Studio right click on the ForwardSolvers folder and select Add → Class…
AddClass

Name the class and click the Add button.
Forward Solvers

Visual Studio will create a class within the Vts.Modeling.ForwardSolvers namespace with the name you gave the file.

namespace Vts.Modeling.ForwardSolvers
{
    public class ReallyAwfulForwardSolver
    {
    }
}

Inherit from the ForwardSolverBase class.
Type a : after the name of the class and a list of options should appear, select ForwardSolverBase.
To automatically implement the class, after typing or selecting ForwardSolverBase click CTRL + . or highlight the smart tag to the bottom left of the name and select "Implement abstract class 'ForwardSolverBase'.

    public class ReallyAwfulForwardSolver : ForwardSolverBase
    {
        public override double RofRho(OpticalProperties op, double rho)
        {
            throw new NotImplementedException();
        }
...

Remove the line of code that throws a not implemented exception and replace it with your Forward Solver code

        public override double RofRho(OpticalProperties op, double rho)
        {
            return 0.01 * (op.Musp * op.Mua * rho);
        }

To allow you to select your new Forward Solver from the GUI interface, you need to add a line of code under ForwardSolverType in the enums file which can be found here:
Core/Vts/Common/Enums.cs

In File System:
…\vts\src\Vts\Common\Enums.cs

    public enum ForwardSolverType
    {
        PointSourceSDA,
        DistributedPointSourceSDA,
        DistributedGaussianSourceSDA,
        DeltaPOne,
        MonteCarlo,
        Nurbs,
        pMC,
        DiscreteOrdinates
        ReallyAwful
    }


If you compile and run the GUI, you will see your new forward solver added to the list.
ReallyAwfulForwardSolver

Clone this wiki locally