[2112] | 1 | function response=qmuresponse(models,results,processedresults,descriptor)
|
---|
[963] | 2 | %QMURESPONSE - compute response function from model results.
|
---|
| 3 |
|
---|
| 4 | if strcmpi(descriptor,'max_vel'),
|
---|
[2112] | 5 | response=max(processedresults.vel);
|
---|
[2110] | 6 | elseif strcmpi(descriptor,'min_vel'),
|
---|
[2112] | 7 | response=min(processedresults.vel);
|
---|
[2110] | 8 | elseif strcmpi(descriptor,'max_vx'),
|
---|
[2112] | 9 | response=max(processedresults.vx);
|
---|
[4430] | 10 | elseif strcmpi(descriptor,'max_abs_vx'),
|
---|
| 11 | response=max(abs(processedresults.vx));
|
---|
[2110] | 12 | elseif strcmpi(descriptor,'min_vx'),
|
---|
[2112] | 13 | response=min(processedresults.vx);
|
---|
[2110] | 14 | elseif strcmpi(descriptor,'max_vy'),
|
---|
[2112] | 15 | response=max(processedresults.vy);
|
---|
[4430] | 16 | elseif strcmpi(descriptor,'max_abs_vy'),
|
---|
| 17 | response=max(abs(processedresults.vy));
|
---|
[2110] | 18 | elseif strcmpi(descriptor,'min_vy'),
|
---|
[2112] | 19 | response=min(processedresults.vy);
|
---|
[4430] | 20 | elseif 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] | 113 | else
|
---|
[4430] | 114 | error(['qmuresponse error message: unknown descriptor ' descriptor]);
|
---|
[963] | 115 | end
|
---|