%HYDROLOGYSHREVE class definition
%
% Usage:
% hydrologyshreve=hydrologyshreve();
classdef hydrologyshreve
properties (SetAccess=public)
spcwatercolumn = NaN;
stabilization = 0;
end
methods
function createxml(obj,fid) % {{{
fprintf(fid, '\n\n');
fprintf(fid, '%s\n', '');
% Convergence criteria
fprintf(fid,'%s\n%s\n%s\n','','');
fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '', ' ',' water thickness constraints (NaN means no constraint) [m] ','');
fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '', ' ',' artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. ','');
fprintf(fid,'%s\n%s\n','');
end % }}}
function obj = hydrologyshreve(varargin) % {{{
switch nargin
case 0
obj=setdefaultparameters(obj);
case 1
obj=structtoobj(obj,varargin{1});
otherwise
error('constructor not supported');
end
end % }}}
function obj = setdefaultparameters(obj) % {{{
%Type of stabilization to use 0:nothing 1:artificial_diffusivity
obj.stabilization=1;
end % }}}
function md = checkconsistency(obj,md,solution,analyses) % {{{
%Early return
if ~ismember(HydrologyShreveAnalysisEnum(),analyses)
return;
end
md = checkfield(md,'fieldname','hydrology.spcwatercolumn','forcing',1);
md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
end % }}}
function disp(obj) % {{{
disp(sprintf(' hydrologyshreve solution parameters:'));
fielddisplay(obj,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
fielddisplay(obj,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
end % }}}
function marshall(obj,md,fid) % {{{
WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
WriteData(fid,'object',obj,'fieldname','stabilization','format','Double');
end % }}}
end
end