79 lines
2.8 KiB
Matlab
79 lines
2.8 KiB
Matlab
classdef Calculator < handle & matlab.mixin.Copyable
|
|
|
|
properties (Access = private)
|
|
|
|
CalculatorDefaults = struct('ChemicalPotential', 1, ...
|
|
'EnergyComponents', 1, ...
|
|
'NormalizedResiduals', 1, ...
|
|
'TotalEnergy', 1);
|
|
|
|
end
|
|
|
|
properties (Access = public)
|
|
ChemicalPotential;
|
|
EnergyComponents;
|
|
NormalizedResiduals;
|
|
TotalEnergy;
|
|
end
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%- Methods
|
|
|
|
methods
|
|
function this = Calculator(varargin)
|
|
|
|
this.ChemicalPotential = this.CalculatorDefaults.ChemicalPotential;
|
|
this.EnergyComponents = this.CalculatorDefaults.EnergyComponents;
|
|
this.NormalizedResiduals = this.CalculatorDefaults.NormalizedResiduals;
|
|
this.TotalEnergy = this.CalculatorDefaults.TotalEnergy;
|
|
end
|
|
|
|
function restoreDefaults(this)
|
|
this.ChemicalPotential = this.CalculatorDefaults.ChemicalPotential;
|
|
this.EnergyComponents = this.CalculatorDefaults.EnergyComponents;
|
|
this.NormalizedResiduals = this.CalculatorDefaults.NormalizedResiduals;
|
|
this.TotalEnergy = this.CalculatorDefaults.TotalEnergy;
|
|
end
|
|
|
|
end %
|
|
|
|
% methods
|
|
|
|
% end % - setters and getters
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%- Methods
|
|
|
|
methods(Access = protected)
|
|
function cp = copyElement(this)
|
|
% Shallow copy object
|
|
cp = copyElement@matlab.mixin.Copyable(this);
|
|
|
|
% Forces the setter to redefine the function handles to the new copied object
|
|
|
|
pl = properties(this);
|
|
for k = 1:length(pl)
|
|
sc = superclasses(this.(pl{k}));
|
|
if any(contains(sc,{'matlab.mixin.Copyable'}))
|
|
cp.(pl{k}) = this.(pl{k}).copy();
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
methods (Static)
|
|
|
|
% Creates an Instance of Class, ensures singleton behaviour (that there
|
|
% can only be one Instance of this class
|
|
function singleObj = getInstance(varargin)
|
|
% Creates an Instance of Class, ensures singleton behaviour
|
|
persistent localObj;
|
|
if isempty(localObj) || ~isvalid(localObj)
|
|
localObj = Simulator.Calculator(varargin{:});
|
|
end
|
|
singleObj = localObj;
|
|
end
|
|
end
|
|
|
|
end
|