65 lines
2.3 KiB
Matlab
65 lines
2.3 KiB
Matlab
function probe_ansys_official_example
|
|
% Run the Ansys-installed Simulink coupling example as a control test.
|
|
|
|
projectDir = fileparts(mfilename('fullpath'));
|
|
artifactDir = fullfile(projectDir, 'analysis_artifacts');
|
|
cacheDir = fullfile(artifactDir, 'ansys_example_cache');
|
|
codeDir = fullfile(artifactDir, 'ansys_example_codegen');
|
|
if ~isfolder(artifactDir)
|
|
mkdir(artifactDir);
|
|
end
|
|
if ~isfolder(cacheDir)
|
|
mkdir(cacheDir);
|
|
end
|
|
if ~isfolder(codeDir)
|
|
mkdir(codeDir);
|
|
end
|
|
|
|
ansysEmRoot = getenv('ANSYSEM_ROOT252');
|
|
ansoftMatlabDir = fullfile(ansysEmRoot, 'cpl', 'matlab', 'r2024a');
|
|
exampleDir = fullfile(ansysEmRoot, 'Examples', 'Twin Builder', ...
|
|
'Components', 'Interfaces', 'Simulink');
|
|
modelFile = fullfile(exampleDir, 'synchronous_drive.mdl');
|
|
projectFile = fullfile(exampleDir, 'simulink.aedt');
|
|
|
|
assert(isfile(modelFile), 'Official example model not found: %s', modelFile);
|
|
assert(isfile(projectFile), 'Official example project not found: %s', projectFile);
|
|
assert(isfolder(ansoftMatlabDir), 'Ansys MATLAB interface not found: %s', ansoftMatlabDir);
|
|
|
|
addpath(ansoftMatlabDir, '-begin');
|
|
addpath(exampleDir, '-begin');
|
|
rehash;
|
|
Simulink.fileGenControl('set', 'CacheFolder', cacheDir, ...
|
|
'CodeGenFolder', codeDir, 'createDir', true);
|
|
|
|
fprintf('CONTROL_MODEL\t%s\n', modelFile);
|
|
fprintf('CONTROL_PROJECT\t%s\n', projectFile);
|
|
fprintf('ANSOFT_SFUNCTION\t%s\n', which('AnsoftSFunction'));
|
|
|
|
in = Simulink.SimulationInput('synchronous_drive');
|
|
in = in.setModelParameter('SimulationMode', 'normal');
|
|
try
|
|
out = sim(in);
|
|
catch ME
|
|
fprintf('CONTROL_STATUS\tFAIL\n');
|
|
fprintf('ERROR_ID\t%s\n', ME.identifier);
|
|
couplingVars = {'Simulink_Coupling_Error', ...
|
|
'Simulink_Coupling_InstanceName', 'DSDEActiveDesignName'};
|
|
for k = 1:numel(couplingVars)
|
|
varName = couplingVars{k};
|
|
if evalin('base', sprintf('exist(''%s'', ''var'')', varName))
|
|
value = evalin('base', varName);
|
|
fprintf('BASE_VAR\t%s\t%s\n', varName, string(value));
|
|
end
|
|
end
|
|
errorFile = fullfile(artifactDir, 'ansys_official_example_error.txt');
|
|
fid = fopen(errorFile, 'w', 'n', 'UTF-8');
|
|
fprintf(fid, '%s\n', getReport(ME, 'extended', 'hyperlinks', 'off'));
|
|
fclose(fid);
|
|
rethrow(ME);
|
|
end
|
|
|
|
fprintf('CONTROL_STATUS\tPASS\n');
|
|
fprintf('CONTROL_OUTPUTS\t%s\n', strjoin(who(out), ', '));
|
|
end
|