source: issm/oecreview/Archive/24684-25833/ISSM-25208-25209.diff@ 25834

Last change on this file since 25834 was 25834, checked in by Mathieu Morlighem, 4 years ago

CHG: added 24684-25833

File size: 10.5 KB
RevLine 
[25834]1Index: ../trunk-jpl/test/NightlyRun/test905.m
2===================================================================
3--- ../trunk-jpl/test/NightlyRun/test905.m (revision 25208)
4+++ ../trunk-jpl/test/NightlyRun/test905.m (revision 25209)
5@@ -40,14 +40,14 @@
6 duration=[md.timestepping.start_time:smb_step:md.timestepping.final_time];
7
8 ddf=10.0e-3;
9-md.smb.accuref=[[0.5 0.5];[0. 2.0]];
10+md.smb.accuref=[[0.5 0.5];[md.timestepping.start_time md.timestepping.final_time]];
11 md.smb.accualti=0.0;
12-md.smb.accugrad=0.0;
13+md.smb.accugrad=[[0. 0.];[md.timestepping.start_time md.timestepping.final_time]];
14
15 md.smb.runoffref=0.9*duration*ddf;
16 md.smb.runoffref=[md.smb.runoffref;duration];
17 md.smb.runoffalti=0.0;
18-md.smb.runoffgrad=-6.5e-3*ddf; %lapse rate *ddf*day per year
19+md.smb.runoffgrad=[[-6.5e-3*ddf -6.5e-3*ddf];[md.timestepping.start_time md.timestepping.final_time]]; %lapse rate *ddf*day per year
20
21 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
22 md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
23Index: ../trunk-jpl/test/NightlyRun/test905.py
24===================================================================
25--- ../trunk-jpl/test/NightlyRun/test905.py (revision 25208)
26+++ ../trunk-jpl/test/NightlyRun/test905.py (revision 25209)
27@@ -54,15 +54,15 @@
28 duration = np.arange(md.timestepping.start_time, md.timestepping.final_time + smb_step, smb_step)
29
30 ddf = 10.0e-3
31-md.smb.accuref = np.array([[0.5, 0.5], [0., 2.0]])
32+md.smb.accuref = np.array([[0.5, 0.5], [md.timestepping.start_time, md.timestepping.final_time]])
33 md.smb.accualti = 0.0
34-md.smb.accugrad = 0.0
35+md.smb.accugrad = np.array([[0., 0.], [md.timestepping.start_time, md.timestepping.final_time]])
36
37 #md.smb.runoffref = 9. * ddf * np.ones(np.shape(duration)) #constant input for testing
38 md.smb.runoffref = 0.9 * duration * ddf
39 md.smb.runoffref = np.vstack((md.smb.runoffref, duration))
40 md.smb.runoffalti = 0.0
41-md.smb.runoffgrad = -6.5e-3 * ddf #lapse rate *ddf*day per year
42+md.smb.runoffgrad = np.array([[-6.5e-3 * ddf, -6.5e-3 * ddf], [md.timestepping.start_time, md.timestepping.final_time]]) #lapse rate *ddf*day per year
43
44 md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
45 md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
46Index: ../trunk-jpl/src/m/classes/SMBgradientscomponents.m
47===================================================================
48--- ../trunk-jpl/src/m/classes/SMBgradientscomponents.m (revision 25208)
49+++ ../trunk-jpl/src/m/classes/SMBgradientscomponents.m (revision 25209)
50@@ -48,10 +48,10 @@
51 if ismember('MasstransportAnalysis',analyses),
52 md = checkfield(md,'fieldname','smb.accuref','singletimeseries',1,'NaN',1,'Inf',1);
53 md = checkfield(md,'fieldname','smb.accualti','numel',1,'NaN',1,'Inf',1);
54- md = checkfield(md,'fieldname','smb.accugrad','numel',1,'NaN',1,'Inf',1);
55+ md = checkfield(md,'fieldname','smb.accugrad','singletimeseries',1,'NaN',1,'Inf',1);
56 md = checkfield(md,'fieldname','smb.runoffref','singletimeseries',1,'NaN',1,'Inf',1);
57 md = checkfield(md,'fieldname','smb.runoffalti','numel',1,'NaN',1,'Inf',1);
58- md = checkfield(md,'fieldname','smb.runoffgrad','numel',1,'NaN',1,'Inf',1);
59+ md = checkfield(md,'fieldname','smb.runoffgrad','singletimeseries',1,'NaN',1,'Inf',1);
60 end
61 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
62 md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
63@@ -80,11 +80,10 @@
64 WriteData(fid,prefix,'name','md.smb.model','data',11,'format','Integer');
65 WriteData(fid,prefix,'object',self,'class','smb','fieldname','accuref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
66 WriteData(fid,prefix,'object',self,'class','smb','fieldname','accualti','format','Double');
67- WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','Double','scale',1./md.constants.yts);
68+ WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
69 WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
70 WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffalti','format','Double');
71- WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad', ...
72- 'format','Double','scale',1./md.constants.yts);
73+ WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
74 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
75 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
76
77Index: ../trunk-jpl/src/m/classes/SMBgradientscomponents.py
78===================================================================
79--- ../trunk-jpl/src/m/classes/SMBgradientscomponents.py (revision 25208)
80+++ ../trunk-jpl/src/m/classes/SMBgradientscomponents.py (revision 25209)
81@@ -63,10 +63,10 @@
82 if 'MasstransportAnalysis' in analyses:
83 md = checkfield(md, 'fieldname', 'smb.accuref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
84 md = checkfield(md, 'fieldname', 'smb.accualti', 'numel', [1], 'NaN', 1, 'Inf', 1)
85- md = checkfield(md, 'fieldname', 'smb.accugrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
86+ md = checkfield(md, 'fieldname', 'smb.accugrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
87 md = checkfield(md, 'fieldname', 'smb.runoffref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
88 md = checkfield(md, 'fieldname', 'smb.runoffalti', 'numel', [1], 'NaN', 1, 'Inf', 1)
89- md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
90+ md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
91
92 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
93 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
94@@ -79,10 +79,10 @@
95 WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 11, 'format', 'Integer')
96 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accuref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
97 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accualti', 'format', 'Double')
98- WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'Double', 'scale', 1. / md.constants.yts)
99+ WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts)
100 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
101 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffalti', 'format', 'Double')
102- WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'Double', 'scale', 1. / md.constants.yts)
103+ WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts)
104 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
105 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
106
107Index: ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp
108===================================================================
109--- ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp (revision 25208)
110+++ ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp (revision 25209)
111@@ -376,17 +376,21 @@
112 break;
113 case SMBgradientscomponentsEnum:
114 parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum));
115- parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum));
116 parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum));
117- parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum));
118
119- iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
120- parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
121- iomodel->DeleteData(temp,"md.smb.accuref");
122+ iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2);
123+ parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,M));
124+ iomodel->DeleteData(temp,"md.smb.accugrad");
125+ iomodel->FetchData(&temp,&N,&M,"md.smb.runoffgrad"); _assert_(N==2);
126+ parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,M));
127+ iomodel->DeleteData(temp,"md.smb.runoffgrad");
128
129- iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
130- parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
131- iomodel->DeleteData(temp,"md.smb.runoffref");
132+ iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
133+ parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
134+ iomodel->DeleteData(temp,"md.smb.accuref");
135+ iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
136+ parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
137+ iomodel->DeleteData(temp,"md.smb.runoffref");
138 break;
139 case SMBsemicEnum:
140 /*Nothing to add to parameters*/
141Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
142===================================================================
143--- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 25208)
144+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 25209)
145@@ -679,11 +679,11 @@
146 /*Recover parameters*/
147 parameters->FindParam(&time,TimeEnum);
148 parameters->FindParam(&accualti,SmbAccualtiEnum);
149- parameters->FindParam(&accugrad,SmbAccugradEnum);
150 parameters->FindParam(&runoffalti,SmbRunoffaltiEnum);
151- parameters->FindParam(&runoffgrad,SmbRunoffgradEnum);
152
153 /*Recover reference values at current time*/
154+ parameters->FindParam(&accugrad,SmbAccugradEnum,time);
155+ parameters->FindParam(&runoffgrad,SmbRunoffgradEnum,time);
156 parameters->FindParam(&accuref,SmbAccurefEnum,time);
157 parameters->FindParam(&runoffref,SmbRunoffrefEnum,time);
158
Note: See TracBrowser for help on using the repository browser.