diff --git a/Cantera/matlab/cantera/@Func/char.m b/Cantera/matlab/cantera/@Func/char.m new file mode 100644 index 000000000..da50632c1 --- /dev/null +++ b/Cantera/matlab/cantera/@Func/char.m @@ -0,0 +1,52 @@ +function s = char(p) +% CHAR - +% +if strcmp(p.typ,'sum') + s = ['(' char(p.f1) ') + (' char(p.f2) ')']; +elseif strcmp(p.typ,'diff') + s = ['(' char(p.f1) ') - (' char(p.f2) ')']; +elseif strcmp(p.typ,'prod') + s = ['(' char(p.f1) ') * (' char(p.f2) ')']; +elseif strcmp(p.typ,'ratio') + s = ['(' char(p.f1) ') / (' char(p.f2) ')']; +elseif all(p.coeffs == 0) + s = '0'; +else + if strcmp(p.typ,'polynomial') + d = length(p.coeffs) - 1; + s = []; + nn = 0; + for b = p.coeffs; + cc(d+1-nn) = b; + nn = nn + 1; + end + for a = cc; + if a ~= 0; + if ~isempty(s) + if a > 0 + s = [s ' + ']; + else + s = [s ' - ']; + a = -a; + end + end + if a ~= 1 | d == 0 + s = [s num2str(a)]; + if d > 0 + s = [s '*']; + end + end + if d >= 2 + s = [s 'x^' int2str(d)]; + elseif d == 1 + s = [s 'x']; + end + end + d = d - 1; + end + else + print 'char not yet implemented'; + end +end + + diff --git a/Cantera/matlab/cantera/@Func/display.m b/Cantera/matlab/cantera/@Func/display.m new file mode 100644 index 000000000..d778a9a0b --- /dev/null +++ b/Cantera/matlab/cantera/@Func/display.m @@ -0,0 +1,9 @@ +function d = display(a) +% DISPLAY - +% +disp(' '); +disp([inputname(1),' = ']) +disp(' '); +disp([' ' char(a)]) +disp(' '); + diff --git a/Cantera/matlab/cantera/@Func/plus.m b/Cantera/matlab/cantera/@Func/plus.m new file mode 100644 index 000000000..1c5d68882 --- /dev/null +++ b/Cantera/matlab/cantera/@Func/plus.m @@ -0,0 +1,6 @@ +function r = plus(a, b) +% PLUS - +% +r = Func('sum',a,b); + + diff --git a/Cantera/matlab/cantera/@Func/private/funcmethods.m b/Cantera/matlab/cantera/@Func/private/funcmethods.m new file mode 100644 index 000000000..335489500 --- /dev/null +++ b/Cantera/matlab/cantera/@Func/private/funcmethods.m @@ -0,0 +1,13 @@ +function v = funcmethods(n, job, a, b, c, d) +% +if nargin == 2 + v = ctmethods(110, n, job); +elseif nargin == 3 + v = ctmethods(110, n, job, a); +elseif nargin == 4 + v = ctmethods(110, n, job, a, b); +elseif nargin == 5 + v = ctmethods(110, n, job, a, b, c); +elseif nargin == 6 + v = ctmethods(110, n, job, a, b, c, d); +end \ No newline at end of file diff --git a/Cantera/matlab/cantera/@Func/rdivide.m b/Cantera/matlab/cantera/@Func/rdivide.m new file mode 100644 index 000000000..517baffe5 --- /dev/null +++ b/Cantera/matlab/cantera/@Func/rdivide.m @@ -0,0 +1,5 @@ +function r = rdivide(a,b) +% RDIVIDE - +% +r = Func('ratio',a,b); + diff --git a/Cantera/matlab/cantera/@Func/subsref.m b/Cantera/matlab/cantera/@Func/subsref.m new file mode 100644 index 000000000..2000bf34d --- /dev/null +++ b/Cantera/matlab/cantera/@Func/subsref.m @@ -0,0 +1,11 @@ +function b = subsref(a,s) +% SUBSREF +switch s.type +case '()' + ind = s.subs{:}; + for k = 1:length(ind) + b(k) = funcmethods(2,a.index,ind(k)) + end +otherwise + error('Specify value for x as p(x)') +end diff --git a/Cantera/matlab/cantera/@Func/times.m b/Cantera/matlab/cantera/@Func/times.m new file mode 100644 index 000000000..348f9c1ac --- /dev/null +++ b/Cantera/matlab/cantera/@Func/times.m @@ -0,0 +1,5 @@ +function r = times(a,b) +% TIMES - +% +r = Func('prod',a,b); +