source: issm/trunk-jpl/src/m/qmu/qmuresponse.m@ 13646

Last change on this file since 13646 was 13646, checked in by Mathieu Morlighem, 12 years ago

CHG: cosmetics, removed multiple blank lines

File size: 4.6 KB
RevLine 
[2112]1function response=qmuresponse(models,results,processedresults,descriptor)
[963]2%QMURESPONSE - compute response function from model results.
3
4if strcmpi(descriptor,'max_vel'),
[2112]5 response=max(processedresults.vel);
[2110]6elseif strcmpi(descriptor,'min_vel'),
[2112]7 response=min(processedresults.vel);
[2110]8elseif strcmpi(descriptor,'max_vx'),
[2112]9 response=max(processedresults.vx);
[4430]10elseif strcmpi(descriptor,'max_abs_vx'),
11 response=max(abs(processedresults.vx));
[2110]12elseif strcmpi(descriptor,'min_vx'),
[2112]13 response=min(processedresults.vx);
[2110]14elseif strcmpi(descriptor,'max_vy'),
[2112]15 response=max(processedresults.vy);
[4430]16elseif strcmpi(descriptor,'max_abs_vy'),
17 response=max(abs(processedresults.vy));
[2110]18elseif strcmpi(descriptor,'min_vy'),
[2112]19 response=min(processedresults.vy);
[4430]20elseif strncmpi(descriptor,'mass_flux',9),
21 indx=str2int(descriptor(10:end));
22 if isempty(indx) || ~indx
23 indx=1;
24 end
25
[2110]26 %call mass flux module.
27 m_dh=models.dh;
28 m_dhu=models.dhu;
29 m_ds=models.ds;
[4430]30 ishutter=m_dhu.parameters.ishutter;
31 ismacayealpattyn=m_dh.parameters.ismacayealpattyn;
[2110]32 isstokes=m_ds.parameters.isstokes;
33 if ishutter,
[4431]34
35% for now, separate all segments from double array for parallel to make cells
36 if (length(m_dhu.parameters.qmu_mass_flux_num_segments) > 1)
37 segments=m_dhu.parameters.qmu_mass_flux_segments;
38 m_dhu.parameters.qmu_mass_flux_segments=cell(size(m_dhu.parameters.qmu_mass_flux_num_segments));
39 ipt=1;
40 for i=1:length(m_dhu.parameters.qmu_mass_flux_num_segments)
41 if m_dhu.parameters.qmu_mass_flux_num_segments(i)
42 m_dhu.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i)-1,:);
43 ipt=ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i);
44 end
45 end
46 clear segments
47 end
48
[4430]49 if isnumeric(m_dhu.parameters.qmu_mass_flux_segments)
50 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
51 else
52 save=m_dhu.parameters.qmu_mass_flux_segments;
53 m_dhu.parameters.qmu_mass_flux_segments=m_dhu.parameters.qmu_mass_flux_segments{indx};
54 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
55 m_dhu.parameters.qmu_mass_flux_segments=save;
56 clear save
57 end
[4431]58
[2110]59 elseif ismacayealpattyn,
[4430]60
61% for now, separate all segments from double array for parallel to make cells
[4431]62 if (length(m_dh.parameters.qmu_mass_flux_num_segments) > 1)
63 segments=m_dh.parameters.qmu_mass_flux_segments;
64 m_dh.parameters.qmu_mass_flux_segments=cell(size(m_dh.parameters.qmu_mass_flux_num_segments));
65 ipt=1;
66 for i=1:length(m_dh.parameters.qmu_mass_flux_num_segments)
67 if m_dh.parameters.qmu_mass_flux_num_segments(i)
68 m_dh.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dh.parameters.qmu_mass_flux_num_segments(i)-1,:);
69 ipt=ipt+m_dh.parameters.qmu_mass_flux_num_segments(i);
70 end
[4430]71 end
[4431]72 clear segments
[4430]73 end
74
75 if isnumeric(m_dh.parameters.qmu_mass_flux_segments)
76 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
77 else
78 save=m_dh.parameters.qmu_mass_flux_segments;
79 m_dh.parameters.qmu_mass_flux_segments=m_dh.parameters.qmu_mass_flux_segments{indx};
80 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
81 m_dh.parameters.qmu_mass_flux_segments=save;
82 clear save
83 end
[4431]84
[2110]85 elseif isstokes,
[4431]86
87% for now, separate all segments from double array for parallel to make cells
88 if (length(m_ds.parameters.qmu_mass_flux_num_segments) > 1)
89 segments=m_ds.parameters.qmu_mass_flux_segments;
90 m_ds.parameters.qmu_mass_flux_segments=cell(size(m_ds.parameters.qmu_mass_flux_num_segments));
91 ipt=1;
92 for i=1:length(m_ds.parameters.qmu_mass_flux_num_segments)
93 if m_ds.parameters.qmu_mass_flux_num_segments(i)
94 m_ds.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_ds.parameters.qmu_mass_flux_num_segments(i)-1,:);
95 ipt=ipt+m_ds.parameters.qmu_mass_flux_num_segments(i);
96 end
97 end
98 clear segments
99 end
100
[4430]101 if isnumeric(m_ds.parameters.qmu_mass_flux_segments)
102 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
103 else
104 save=m_ds.parameters.qmu_mass_flux_segments;
105 m_ds.parameters.qmu_mass_flux_segments=m_ds.parameters.qmu_mass_flux_segments{indx};
106 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
107 m_ds.parameters.qmu_mass_flux_segments=save;
108 clear save
109 end
[2110]110 else
111 error('qmuresponse error message: unsupported analysis type for mass_flux computation!');
112 end
[963]113else
[4430]114 error(['qmuresponse error message: unknown descriptor ' descriptor]);
[963]115end
Note: See TracBrowser for help on using the repository browser.