source: issm/oecreview/Archive/24684-25833/ISSM-25415-25416.diff

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

CHG: added 24684-25833

File size: 6.3 KB
RevLine 
[25834]1Index: ../trunk-jpl/jenkins/ross-debian_linux-codipack
2===================================================================
3--- ../trunk-jpl/jenkins/ross-debian_linux-codipack (revision 25415)
4+++ ../trunk-jpl/jenkins/ross-debian_linux-codipack (revision 25416)
5@@ -72,5 +72,5 @@
6 #
7 # See documentation in test/NightlyRun/runme.* for more information.
8 #
9-MATLAB_NROPTIONS="'benchmark','all','id',[3015,3119,3480,3201]"
10+MATLAB_NROPTIONS="'benchmark','all','id',[3015,3119,3480,3201,3202]"
11 PYTHON_NROPTIONS="--benchmark='all' -i 3015 3119 3480"
12Index: ../trunk-jpl/test/NightlyRun/test3202.m
13===================================================================
14--- ../trunk-jpl/test/NightlyRun/test3202.m (nonexistent)
15+++ ../trunk-jpl/test/NightlyRun/test3202.m (revision 25416)
16@@ -0,0 +1,111 @@
17+%Test Name: SquareShelfTransientCalibrationNBVcodipack
18+
19+%Generate observations
20+md = model;
21+md=triangle(model(),'../Exp/Square.exp',100000.);
22+md = setmask(md,'all','');
23+md = parameterize(md,'../Par/SquareShelf.par');
24+md = setflowequation(md,'SSA','all');
25+md.cluster = generic('np',2);
26+
27+%Create real time series for B
28+md.timestepping.interp_forcings = 0;
29+md.timestepping.final_time = 2*md.timestepping.time_step;
30+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofvertices,2);
31+md.materials.rheology_B(find(md.mesh.x<md.mesh.y),2)=1.4e8;
32+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step];
33+
34+%Initial values
35+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
36+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
37+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
38+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
39+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
40+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
41+
42+md = solve(md,'tr');
43+%plotmodel(md,'axis#all','tight','data',md.materials.rheology_B(1:end-1,1),'caxis#all',[ 1.3 1.9]*10^8,'title','"True" B',...
44+%'data',md.materials.rheology_B(1:end-1,2),'title','"True" B 2')
45+
46+%Modify rheology, now constant
47+md.materials.rheology_B(1:end-1,:) = 1.8e8;
48+
49+%Set cost function
50+count = 1;
51+for i=1:numel(md.results.TransientSolution)
52+ vx_obs = md.results.TransientSolution(i).Vx;
53+ vy_obs = md.results.TransientSolution(i).Vy;
54+ z_obs = md.results.TransientSolution(i).Surface;
55+
56+ time = md.results.TransientSolution(i).time;
57+ weights= ones(md.mesh.numberofvertices,1);
58+
59+ md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
60+ 'definitionstring',['Outputdefinition' num2str(count)],...
61+ 'vxobs_string','VxObs','vxobs',vx_obs,...
62+ 'vyobs_string','VyObs','vyobs',vy_obs,...
63+ 'weights',weights,'weights_string','WeightsSurfaceObservation',...
64+ 'datatime',time);
65+ md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
66+ count = count+1;
67+
68+ md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VyMisfit' num2str(count)],...
69+ 'definitionstring',['Outputdefinition' num2str(count)],...
70+ 'model_string','Vy','observation_string','VyObs',...
71+ 'observation',vy_obs/md.constants.yts,'weights',weights,'weights_string','WeightsSurfaceObservation',...
72+ 'datatime',time);
73+ md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
74+ count = count+1;
75+
76+ md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VxMisfit' num2str(count)],...
77+ 'definitionstring',['Outputdefinition' num2str(count)],...
78+ 'model_string','Vx','observation_string','VxObs',...
79+ 'observation',vx_obs/md.constants.yts,'weights',500*weights,'weights_string','WeightsSurfaceObservation',...
80+ 'datatime',time);
81+ md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
82+ count = count+1;
83+
84+ md.outputdefinition.definitions{count}=cfsurfacesquare('name',['DEMMisfit' num2str(count)],...
85+ 'definitionstring',['Outputdefinition' num2str(count)],...
86+ 'model_string','Surface','observation_string','SurfaceObservation',...
87+ 'observation',z_obs,...
88+ 'weights',1/(md.constants.yts)*weights,...
89+ 'weights_string','WeightsSurfaceObservation',...
90+ 'datatime',time);
91+ md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
92+ count = count+1;
93+end
94+
95+%Independent
96+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
97+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
98+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
99+ 'md_name','md.materials.rheology_B',...
100+ 'control_size',size(md.materials.rheology_B,2),...
101+ 'type','vertex',... %Really needed??
102+ 'min_parameters',min_params,...
103+ 'max_parameters',max_params,...
104+ 'control_scaling_factor',1e8);
105+
106+md.inversion=adm1qn3inversion(md.inversion);
107+md.inversion.iscontrol=1;
108+md.inversion.maxiter=4;
109+md.inversion.maxsteps=md.inversion.maxiter;
110+md.inversion.dxmin=1e-5;
111+md.autodiff.isautodiff=1;
112+md.autodiff.driver='fos_reverse';
113+
114+%Go solve!
115+md.verbose=verbose(0);
116+md=solve(md,'tr');
117+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
118+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
119+
120+%Fields and tolerances to track changes
121+field_names ={'Gradient','Misfit','Rheology'};
122+field_tolerances={1e-12,1e-12,1e-12};
123+field_values={...
124+ (md.results.TransientSolution(1).Gradient1),...
125+ (md.results.TransientSolution(1).J),...
126+ (md.results.TransientSolution(1).MaterialsRheologyBbar),...
127+ };
128Index: ../trunk-jpl/test/Archives/Archive3202.arch
129===================================================================
130Cannot display: file marked as a binary type.
131svn:mime-type = application/octet-stream
132Index: ../trunk-jpl/test/Archives/Archive3202.arch
133===================================================================
134--- ../trunk-jpl/test/Archives/Archive3202.arch (nonexistent)
135+++ ../trunk-jpl/test/Archives/Archive3202.arch (revision 25416)
136
137Property changes on: ../trunk-jpl/test/Archives/Archive3202.arch
138___________________________________________________________________
139Added: svn:mime-type
140## -0,0 +1 ##
141+application/octet-stream
142\ No newline at end of property
Note: See TracBrowser for help on using the repository browser.