get_F_from_fnl
function F = get_F_from_fnl(obj)
get first order force from second order force
F = {}; F_flag = false; if ~isempty(obj.fnl) for j = 1:numel(obj.fnl) if size(obj.fnl{j},1) == obj.N F_flag = true; % F was set under the "fnl" property continue end end end if F_flag % F is set in fnl for j = 1:numel(obj.fnl) if isempty(obj.fnl{j}) sizej = obj.N*ones(1,j+2); F{j+1} = sptensor(sizej); else F{j+1} = obj.fnl{j}; end end else % F needs to be set from fnl for j = 1:numel(obj.fnl) sizej = obj.N*ones(1,j+2); if isempty(obj.fnl{j}) F{j+1} = sptensor(sizej); else F{j+1} = sptensor(obj.fnl{j}.subs,-obj.fnl{j}.vals,sizej); end end end
end