function verify_pmlsm_ansys_integration % Verify the persisted PMLSM-to-AEDT integration without manual path setup. projectDir = fileparts(mfilename('fullpath')); modelDir = fullfile(projectDir, 'LEM_slx'); modelFile = fullfile(modelDir, 'PMLSM.slx'); artifactDir = fullfile(projectDir, 'analysis_artifacts'); cacheDir = fullfile(artifactDir, 'pmlsm_verify_cache'); codeDir = fullfile(artifactDir, 'pmlsm_verify_codegen'); if ~isfolder(cacheDir) mkdir(cacheDir); end if ~isfolder(codeDir) mkdir(codeDir); end addpath(modelDir, '-begin'); Simulink.fileGenControl('set', 'CacheFolder', cacheDir, ... 'CodeGenFolder', codeDir, 'createDir', true); fprintf('ANSOFT_BEFORE_LOAD\t%s\n', which('AnsoftSFunction')); load_system(modelFile); closeModel = onCleanup(@() close_system('PMLSM', 0)); fprintf('PERSISTED_USER_DATA\t%s\n', get_param('PMLSM/S-Function', 'UserData')); fprintf('PERSISTED_INIT_FCN\t%s\n', get_param('PMLSM', 'InitFcn')); in = Simulink.SimulationInput('PMLSM'); in = in.setModelParameter('StopTime', '0.001', 'SimulationMode', 'normal'); try out = sim(in); catch ME fprintf('VERIFY_STATUS\tFAIL\n'); fprintf('ERROR_ID\t%s\n', ME.identifier); if evalin('base', 'exist(''Simulink_Coupling_Error'', ''var'')') fprintf('COUPLING_ERROR\t%s\n', ... string(evalin('base', 'Simulink_Coupling_Error'))); end rethrow(ME); end fprintf('ANSOFT_AFTER_INIT\t%s\n', which('AnsoftSFunction')); fprintf('VERIFY_STATUS\tPASS\n'); fprintf('VERIFY_OUTPUTS\t%s\n', strjoin(who(out), ', ')); end