Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion RK-coeff-opt/nonlinear_constraints.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
% The input arguments are:
% * :math:`x`: vector of the decision variables. See unpack_rk.m for details about
% the order in which they are stored.
% * *class*: class of method to search ('erk' = explicit RK; 'irk' = implicit RK; 'dirk' = diagonally implicit RK; 'sdirk' = singly diagonally implicit RK; '2S', '3S', '2S*', '3S*' = low-storage formulations).
% * *class*: class of method to search ('erk' = explicit RK; 'irk' = implicit RK; 'dirk' = diagonally implicit RK; 'sdirk' = singly diagonally implicit RK; '2S', '3S', '2S*', '3S*', '2N' = low-storage formulations).
% * :math:`s`:number of stages.
% * :math:`p`: order of the RK scheme.
% * *objective*: objective function ('ssp' = maximize SSP coefficient; 'acc' = minimize leading truncation error coefficient).
Expand Down
2 changes: 1 addition & 1 deletion RK-coeff-opt/rk_obj.m
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
%
% Inputs:
% * :math:`x`: vector of the unknowns.
% * class: class of method to search ('erk' = explicit RK; 'irk' = implicit RK; 'dirk' = diagonally implicit RK; 'sdirk' = singly diagonally implicit RK; '2S', '3S', '2S*', '3S*' = low-storage formulations).
% * *class*: class of method to search ('erk' = explicit RK; 'irk' = implicit RK; 'dirk' = diagonally implicit RK; 'sdirk' = singly diagonally implicit RK; '2S', '3S', '2S*', '3S*', '2N' = low-storage formulations).
% * :math:`s`:number of stages.
% * :math:`p`: order of the RK scheme.
% * objective: objective function ('ssp' = maximize SSP coefficient; 'acc' = minimize leading truncation error coefficient).
Expand Down
2 changes: 2 additions & 0 deletions RK-coeff-opt/set_n.m
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
n = 4*s - 3;
case '3SstarembFSAL' %Low-storage 3S* embedded pairs of Ketcheson
n = 4*s - 2;
case '2N' % Williamson
n = 2*s -1;

%=====================
% Multistep RK classes
Expand Down
21 changes: 21 additions & 0 deletions RK-coeff-opt/unpack_lsrk.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,27 @@
% gamma_{53} ... gamma_{s+1,3} delta_s delta_{s+1} delta_{s+2} ]
delta =[1 X(s:2*s-3) X(end-3:end-1)];
betahat = X(end);
case '2N'
% n = 2s - 1 free parameters
s = (length(X)+1)/2; % # of stages
% for 2N methods:
% X = [A_2, A_3, ..., A_s, B_1, ..., B_s]
A_2N = [0 X(1:s-1)];
B_2N = X(s:end);
K = zeros(s+1,s);
for i=1:s-1
K(i,i+1) = B_2N(i);
for j = 2:s-i+1
for k=0:j-1
K(i+j,i) = K(i+j,i) + B_2N(i+k)*prod(A_2N(i+1:i+k));
end
end
end
A = K(1:s,:);
b = K(s+1,:); b=b';
c=sum(A,2);
alpha=zeros(s+1,s); beta=zeros(s+1,s); % Not yet implemented

end

if strcmp(class(1:2),'2S')
Expand Down
20 changes: 20 additions & 0 deletions RK-coeff-opt/unpack_rk.m
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,26 @@
% gamma_{53} ... gamma_{s+1,3} delta_s delta_{s+1} delta_{s+2} ]
delta =[1 X(s:2*s-3) X(end-3:end-1)];
betahat = X(end);
case '2N'
% n = 2s - 1 free parameters
s = (length(X)+1)/2; % # of stages
% for 2N methods:
% X = [A_2, A_3, ..., A_s, B_1, ..., B_s]
A_2N = [0 X(1:s-1)];
B_2N = X(s:end);
K = zeros(s+1,s);
for i=1:s-1
K(i,i+1) = B_2N(i);
for j = 2:s-i+1
for k=0:j-1
K(i+j,i) = K(i+j,i) + B_2N(i+k)*prod(A_2N(i+1:i+k));
end
end
end
A = K(1:s,:);
b = K(s+1,:); b=b';
c=sum(A,2);

end


Expand Down