MATLAB interface: An example

Below is a MATLAB version of the C example code written using the MATLAB interface for OrcaFlex.

Download this example as a text file.
function [result1, result2] = matlabexample(filename)
    model = ofxModel; % Create an empty model

    VesselName = 'Vessel1';
    model.CreateObject(ofx.otVesselType, 'VesselType1'); % Create a Vessel Type
    % Create a Vessel (it will use the Vessel Type just created)
    model.CreateObject(ofx.otVessel, VesselName);

    % Create a Line (a Line Type will be created automatically since none yet exist)
    line = model.CreateObject(ofx.otLine, 'Line1');

    line.EndAConnection = VesselName; % Connect the Line top end to the Vessel
    line.EndBConnection = 'Anchored'; % anchor the Line bottom end

    % Set the Line end positions
    line.EndAX = 50.0;
    line.EndAY = 0.0;
    line.EndAZ = 10.0;
    line.EndBX = 220.0;
    line.EndBY = 0.0;
    line.EndBZ = 0.0;

    line.NumberOfSections = 2; % Give the line 2 sections
    % Set the section lengths and segmentation, first of all section 1 ...
    % Note the Matlab Interface is One based for indexed data items
    line.Length(1) = 90.0;
    line.TargetSegmentLength(1) = line.Length(1) / 20;
    % ... and then section 2
    line.Length(2) = 130.0;
    line.TargetSegmentLength(1) = line.Length(2) / 15;

    % Setup wave train data
    environment = model.environment;
    environment.NumberOfWaveTrains = 2;

    function SetWaveTrainData(WaveTrainName, Hs, Direction)
        environment.SelectedWaveTrain = WaveTrainName;
        environment.WaveTrainType = 'JONSWAP';
        environment.WaveTrainHs = Hs;
        environment.WaveTrainDirection = Direction;
    end
    
    SetWaveTrainData('Wave1', 4.0, 120.0);
    SetWaveTrainData('Wave2', 3.7, 67.0);

    model.SaveData(filename); % Save the model 
    model.CalculateStatics;
    model.RunSimulation;
    % Get time history and range graph results from line
    result1 = line.TimeHistory('Effective Tension', ofx.oeEndA);
    result2 = line.RangeGraph('Bend Moment', ofx.oeArcLength(25.0));
    % No need to explicitly destroy the model
end