From e4154648bde59103f7da78255a6b49754100668d Mon Sep 17 00:00:00 2001 From: Federico Felici <federico.felici@epfl.ch> Date: Mon, 22 Nov 2021 23:55:23 +0100 Subject: [PATCH] Add logic for parent algorithms In case algorithm inherits data dicationary objects from another algorithm --- code/classes/SCDclass_algo.m | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/code/classes/SCDclass_algo.m b/code/classes/SCDclass_algo.m index 46e0b6c..db6cee1 100644 --- a/code/classes/SCDclass_algo.m +++ b/code/classes/SCDclass_algo.m @@ -18,6 +18,7 @@ classdef SCDclass_algo buslist % list of buses and their sources modelslx % slx model file name folder % folder containing algorithm + parentalgos % algorithms on which this algo depends end methods @@ -190,7 +191,11 @@ classdef SCDclass_algo fprintf('\n'); end - + %% Parent algo getter and setter + function obj = addparentalgo(obj,parentalgo) + assert(isa(parentalgo,'SCDclass_algo'),'parent algorithm must be SCDclass_algo object') + obj.parentalgos{end+1} = parentalgo; + end %% Data dictionary setter and getter function obj = setdatadictionary(obj, datadict) @@ -493,7 +498,7 @@ classdef SCDclass_algo end %% Initializations - function setupdd(obj) + function initdd(obj) % setup data dictionary % generate data dictionary if it does not exist yet @@ -514,6 +519,19 @@ classdef SCDclass_algo % add referenced data dictionaries obj.addrefdd end + + function callparentinits(obj) + for ii=1:numel(obj.parentalgos) + parentalgo = obj.parentalgos{ii}; +% if ~isempty(which(parentalgo.getdatadictionary)) +% fprintf('%s is present, not rerunning %s init\n',... +% parentalgo.getdatadictionary,parentalgo.getname) +% else + fprintf('running inits for parent algorithm %s\n',parentalgo.getname); + parentalgo.init; +% end + end + end function callinits(obj) for ii=1:numel(obj.stdinits) @@ -580,8 +598,9 @@ classdef SCDclass_algo %% generic operation methods function init(obj) SCDconf_setConf('SIM'); + obj.callparentinits; obj.callinits; % call generic algorithm init functions - obj.setupdd; % setup data dictionary + obj.initdd; % setup data dictionary end function setup(obj) -- GitLab