Multiple outputs using Legacy Toolbox
Hi, i’m currently working on a project and I have to create a s-function written in C language. I have multiple outputs (V, m, h & fm) and multiple inputs(q1, q2, qe & qo). Here’s my main file:
#include "Reservoir.h"
#include <math.h>
double Reservoir(double q1,
double q2,
double qe,
double qo,
double *V,
double *m,
double *h,
double *fm)
{
*V = q1 + q2 + qe – qo;
*m = 1875.0 * q1 + 1667.0 * q2 + 1000.0 * qe – 1468.48 * qo;
*h = sqrt(*V + 1) – 1;
*fm = ((3000.0) * (1 – 1000.0)) / ((3000.0 – 1000.0) * (*m/*V))
}
And here’s my header file :
#ifndef RESERVOIR_H_INCLUDED
#define RESERVOIR_H_INCLUDED
double Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm);
#endif // RESERVOIR_H_INCLUDED
I’M also working with Legacy Toolbox to generate a tlc file and the s-function. I’m using these lines to generate the s-function :
def = legacy_code(‘initialize’)
def.SFunctionName = ‘S_function1’
def.OutputFcnSpec = ‘Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)’
def.HeaderFiles = {‘Reservoir.h’}
def.SourceFiles = {‘main.c’}
legacy_code(‘sfcn_cmex_generate’, def)
When i execute the last line, i receive this error :
Error using legacycode.LCT.legacyCodeImpl
Unrecognized elements in the function specification:
–> Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)
Error in legacy_code (line 103)
[varargout{1:nargout}] = legacycode.LCT.legacyCodeImpl(action, varargin{1:end});
Thus, I was wondering what i’ve done wrong ? Thanks for your help.Hi, i’m currently working on a project and I have to create a s-function written in C language. I have multiple outputs (V, m, h & fm) and multiple inputs(q1, q2, qe & qo). Here’s my main file:
#include "Reservoir.h"
#include <math.h>
double Reservoir(double q1,
double q2,
double qe,
double qo,
double *V,
double *m,
double *h,
double *fm)
{
*V = q1 + q2 + qe – qo;
*m = 1875.0 * q1 + 1667.0 * q2 + 1000.0 * qe – 1468.48 * qo;
*h = sqrt(*V + 1) – 1;
*fm = ((3000.0) * (1 – 1000.0)) / ((3000.0 – 1000.0) * (*m/*V))
}
And here’s my header file :
#ifndef RESERVOIR_H_INCLUDED
#define RESERVOIR_H_INCLUDED
double Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm);
#endif // RESERVOIR_H_INCLUDED
I’M also working with Legacy Toolbox to generate a tlc file and the s-function. I’m using these lines to generate the s-function :
def = legacy_code(‘initialize’)
def.SFunctionName = ‘S_function1’
def.OutputFcnSpec = ‘Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)’
def.HeaderFiles = {‘Reservoir.h’}
def.SourceFiles = {‘main.c’}
legacy_code(‘sfcn_cmex_generate’, def)
When i execute the last line, i receive this error :
Error using legacycode.LCT.legacyCodeImpl
Unrecognized elements in the function specification:
–> Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)
Error in legacy_code (line 103)
[varargout{1:nargout}] = legacycode.LCT.legacyCodeImpl(action, varargin{1:end});
Thus, I was wondering what i’ve done wrong ? Thanks for your help. Hi, i’m currently working on a project and I have to create a s-function written in C language. I have multiple outputs (V, m, h & fm) and multiple inputs(q1, q2, qe & qo). Here’s my main file:
#include "Reservoir.h"
#include <math.h>
double Reservoir(double q1,
double q2,
double qe,
double qo,
double *V,
double *m,
double *h,
double *fm)
{
*V = q1 + q2 + qe – qo;
*m = 1875.0 * q1 + 1667.0 * q2 + 1000.0 * qe – 1468.48 * qo;
*h = sqrt(*V + 1) – 1;
*fm = ((3000.0) * (1 – 1000.0)) / ((3000.0 – 1000.0) * (*m/*V))
}
And here’s my header file :
#ifndef RESERVOIR_H_INCLUDED
#define RESERVOIR_H_INCLUDED
double Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm);
#endif // RESERVOIR_H_INCLUDED
I’M also working with Legacy Toolbox to generate a tlc file and the s-function. I’m using these lines to generate the s-function :
def = legacy_code(‘initialize’)
def.SFunctionName = ‘S_function1’
def.OutputFcnSpec = ‘Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)’
def.HeaderFiles = {‘Reservoir.h’}
def.SourceFiles = {‘main.c’}
legacy_code(‘sfcn_cmex_generate’, def)
When i execute the last line, i receive this error :
Error using legacycode.LCT.legacyCodeImpl
Unrecognized elements in the function specification:
–> Reservoir(double q1, double q2, double qe, double qo, double *V, double *m, double *h, double *fm)
Error in legacy_code (line 103)
[varargout{1:nargout}] = legacycode.LCT.legacyCodeImpl(action, varargin{1:end});
Thus, I was wondering what i’ve done wrong ? Thanks for your help. legacy, code, c language MATLAB Answers — New Questions