You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: run_featool_benchmarks.m
    path of file: ./repos/featool-multiphysics/examples
    
    the code of the file until where you have to start completion: function [ data, fea ] = run_featool_benchmarks( opt )
%RUN_FEATOOL_BENCHMARKS Run FEATool benchmark scripts.
%
%   [ DATA, FEA ] = RUN_FEATOOL_BENCHMARKS( OPT ) Run FEATool
%   benchmark scripts. Input is a struct OPT with the following fields
%
%       basename - benchmark case name
%       solvers  - cell array of solver name/descriptions
%       grids    - cell array of grid cell name/descriptions
%       cases    - cell array of benchmark case definitions (n_cases x 4)
%                      cases = { solver_type, grid_type, shape_functions, grid_levels; }
%       fcn_fea  - function handle for constructing fea data struct callable as
%                      fea = fcn_fea( grid_type, case, grid_level )
%       fcn_err  - function handle for computing errors, err = fcn_err( fea )
%       fcn_proc - (optional) function handle to post-process data
%
%   The function can also be called with a file string to process

    
function [ data, fea ] = run_featool_benchmarks( opt )
%RUN_FEATOOL_BENCHMARKS Run FEATool benchmark scripts.
%
%   [ DATA, FEA ] = RUN_FEATOOL_BENCHMARKS( OPT ) Run FEATool
%   benchmark scripts. Input is a struct OPT with the following fields
%
%       basename - benchmark case name
%       solvers  - cell array of solver name/descriptions
%       grids    - cell array of grid cell name/descriptions
%       cases    - cell array of benchmark case definitions (n_cases x 4)
%                      cases = { solver_type, grid_type, shape_functions, grid_levels; }
%       fcn_fea  - function handle for constructing fea data struct callable as
%                      fea = fcn_fea( grid_type, case, grid_level )
%       fcn_err  - function handle for computing errors, err = fcn_err( fea )
%       fcn_proc - (optional) function handle to post-process data
%
%   The function can also be called with a file string to process
%   previously saved benchmark data.
%
%   See also EX_NAVIERSTOKES1B, EX_NAVIERSTOKES2B, EX_NAVIERSTOKES3B, EX_NAVIERSTOKES8B

% Copyright 2013-2023 Precise Simulation, Ltd.

if( ischar(opt) && exist(opt)==2 )
  load( opt );
  l_process_data( opt, data, fea );
  return
end