source: issm/trunk/src/m/solutions/jpl/diagnostic.m@ 3203

Last change on this file since 3203 was 3203, checked in by Mathieu Morlighem, 15 years ago

Added field weights for CM

File size: 2.4 KB
Line 
1function md=diagnostic(md);
2%DIAGNOSTIC - compute the velocity field of a model
3%
4% Usage:
5% md=diagnostic(md)
6%
7 %timing
8 t1=clock;
9
10 %Build all models requested for diagnostic simulation
11 models.analysis_type=DiagnosticAnalysisEnum; %needed for processresults
12
13 displaystring(md.verbose,'%s',['reading diagnostic horiz model data']);
14 md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=HorizAnalysisEnum; models.dh=CreateFemModel(md);
15
16 displaystring(md.verbose,'\n%s',['reading diagnostic vert model data']);
17 md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=VertAnalysisEnum; models.dv=CreateFemModel(md);
18
19 displaystring(md.verbose,'\n%s',['reading diagnostic stokes model data']);
20 md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=StokesAnalysisEnum; models.ds=CreateFemModel(md);
21
22 displaystring(md.verbose,'\n%s',['reading diagnostic hutter model data']);
23 md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=HutterAnalysisEnum; models.dhu=CreateFemModel(md);
24
25 displaystring(md.verbose,'\n%s',['reading surface and bed slope computation model data']);
26 md.analysis_type=SlopecomputeAnalysisEnum; md.sub_analysis_type=NoneAnalysisEnum; models.sl=CreateFemModel(md);
27
28 % figure out number of dof: just for information purposes.
29 md.dof=modelsize(models);
30
31 %initialize inputs
32 inputs=inputlist;
33 inputs=add(inputs,'velocity',models.dh.parameters.u_g,'doublevec',3,models.dh.parameters.numberofnodes);
34 if md.control_analysis,
35 inputs=add(inputs,'velocity_obs',models.dh.parameters.u_g_obs,'doublevec',2,models.dh.parameters.numberofnodes);
36 inputs=add(inputs,'weights',models.dh.parameters.weights,'doublevec',1,models.dh.parameters.numberofnodes);
37 end
38
39 %compute solution
40 if ~models.dh.parameters.qmu_analysis,
41 if md.control_analysis,
42 %launch core of control solution.
43 results=control_core(models,inputs);
44
45 %process results
46 if ~isstruct(md.results), md.results=struct(); end
47 md.results.diagnostic=processresults(models,results);
48 else,
49 %launch core of diagnostic solution.
50 results=diagnostic_core(models,inputs);
51
52 %process results
53 if ~isstruct(md.results), md.results=struct(); end
54 md.results.diagnostic=processresults(models,results);
55 end
56 else
57 %launch dakota driver for diagnostic core solution
58 Qmu(models,inputs,models.dh.parameters);
59 end
60
61 %stop timing
62 t2=clock;
63 displaystring(md.verbose,'\n%s\n',['solution converged in ' num2str(etime(t2,t1)) ' seconds']);
Note: See TracBrowser for help on using the repository browser.