%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