source: issm/trunk-jpl/src/m/classes/hydrologyshreve.m@ 17720

Last change on this file since 17720 was 17720, checked in by Eric.Larour, 11 years ago

CHG: implemented createxml method for each class.

File size: 4.9 KB
Line 
1%HYDROLOGYSHREVE class definition
2%
3% Usage:
4% hydrologyshreve=hydrologyshreve();
5
6classdef hydrologyshreve
7 properties (SetAccess=public)
8 spcwatercolumn = NaN;
9 n = 0;
10 CR = 0;
11 p = 0;
12 q = 0;
13 kn = 0;
14 stabilization = 0;
15 end
16 methods
17 function createxml(obj,fid) % {{{
18 fprintf(fid, '\n\n');
19 fprintf(fid, '%s\n', '<!-- Hydrology -->');
20
21 % Convergence criteria
22 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Hydrologyshreve solution parameters">','<section name="hydrologyshreve" />');
23
24 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="spcwatercolumn" type="', class(obj.spcwatercolumn),'" default="', convert2str(obj.spcwatercolumn),'">', ' <section name="hydrologyshreve" />',' <help> water thickness constraints (NaN means no constraint) [m] </help>','</parameter>');
25 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="n" type="', class(obj.n),'" default="', convert2str(obj.n),'">', ' <section name="hydrologyshreve" />',' <help> Manning roughness coefficient </help>','</parameter>');
26 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="CR" type="', class(obj.CR),'" default="', convert2str(obj.CR),'">', ' <section name="hydrologyshreve" />',' <help> tortuosity parameter </help>','</parameter>');
27 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="p" type="', class(obj.p),'" default="', convert2str(obj.p),'">', ' <section name="hydrologyshreve" />',' <help> dimensionless exponent in Manning velocity formula </help>','</parameter>');
28 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="q" type="', class(obj.q),'" default="', convert2str(obj.q),'">', ' <section name="hydrologyshreve" />',' <help> dimensionless exponent in Manning velocity formula </help>','</parameter>');
29 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="kn" type="', class(obj.kn),'" default="', convert2str(obj.kn),'">', ' <section name="hydrologyshreve" />',' <help> parameter in effective pressure formula </help>','</parameter>');
30 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="stabilization" type="', class(obj.stabilization),'" default="', convert2str(obj.stabilization),'">', ' <section name="hydrologyshreve" />',' <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>');
31 fprintf(fid,'%s\n%s\n','</frame>');
32 end % }}}
33 function obj = hydrologyshreve(varargin) % {{{
34 switch nargin
35 case 0
36 obj=setdefaultparameters(obj);
37 case 1
38 obj=structtoobj(obj,varargin{1});
39 otherwise
40 error('constructor not supported');
41 end
42 end % }}}
43 function obj = setdefaultparameters(obj) % {{{
44
45 %Parameters from Johnson's 2002 thesis, section 3.5.4
46 obj.n = .02;
47 obj.CR = .01;
48 obj.p = 2;
49 obj.q = 1;
50 obj.kn = 0;
51
52 %Type of stabilization to use 0:nothing 1:artificial_diffusivity
53 obj.stabilization=1;
54 end % }}}
55 function md = checkconsistency(obj,md,solution,analyses) % {{{
56
57 %Early return
58 if ~ismember(HydrologyShreveAnalysisEnum(),analyses)
59 return;
60 end
61
62 md = checkfield(md,'fieldname','hydrology.spcwatercolumn','forcing',1);
63 md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
64 end % }}}
65 function disp(obj) % {{{
66 disp(sprintf(' hydrologyshreve solution parameters:'));
67
68 fielddisplay(obj,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
69 fielddisplay(obj,'n','Manning roughness coefficient');
70 fielddisplay(obj,'CR','tortuosity parameter');
71 fielddisplay(obj,'p','dimensionless exponent in Manning velocity formula');
72 fielddisplay(obj,'q','dimensionless exponent in Manning velocity formula');
73 fielddisplay(obj,'kn','parameter in effective pressure formula');
74 fielddisplay(obj,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
75
76 end % }}}
77 function marshall(obj,md,fid) % {{{
78 WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
79 WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
80 WriteData(fid,'object',obj,'fieldname','n','format','Double');
81 WriteData(fid,'object',obj,'fieldname','CR','format','Double');
82 WriteData(fid,'object',obj,'fieldname','p','format','Double');
83 WriteData(fid,'object',obj,'fieldname','q','format','Double');
84 WriteData(fid,'object',obj,'fieldname','kn','format','Double');
85 WriteData(fid,'object',obj,'fieldname','stabilization','format','Double');
86 end % }}}
87 end
88end
Note: See TracBrowser for help on using the repository browser.