Changeset 4430
- Timestamp:
- 07/07/10 11:31:55 (15 years ago)
- Location:
- issm/trunk/src/m/dakota
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/dakota/process_qmu_response_data.m
r2110 r4430 9 9 10 10 for i=1:numel(md.responsedescriptors), 11 if strcmpi(md.responsedescriptors{i},'mass_flux'), 11 if strncmpi(md.responsedescriptors{i},'mass_flux',9), 12 indx=str2int(md.responsedescriptors{i}(10:end)); 13 if isempty(indx) || ~indx 14 indx=1; 15 end 16 12 17 %we need a profile of points on which to compute the mass_flux, is it here? 13 18 if isnans(md.qmu_mass_flux_profile), 14 19 error('process_qmu_response_data error message: could not find a mass_flux exp profile!'); 15 20 end 16 if ~ischar(md.qmu_mass_flux_profile), 21 if ~(ischar(md.qmu_mass_flux_profile) && (indx == 1)) && ... 22 ~(iscell(md.qmu_mass_flux_profile) && length(md.qmu_mass_flux_profile) >= indx && ischar(md.qmu_mass_flux_profile{indx})), 17 23 error('process_qmu_response_data error message: mass_flux exp profile should be a domain outline name'); 18 24 end 25 19 26 %ok, process the qmu_mass_flux_profile to build a list of segments: 20 md.qmu_mass_flux_segments=MassFluxProcessProfile(md); 27 if ischar(md.qmu_mass_flux_profile), 28 md.qmu_mass_flux_segments=MassFluxProcessProfile(md); 29 md.qmu_mass_flux_num_segments=size(md.qmu_mass_flux_segments,1); 30 else 31 if isempty(md.qmu_mass_flux_segments) || ~iscell(md.qmu_mass_flux_segments) 32 md.qmu_mass_flux_segments=cell(numel(md.qmu_mass_flux_profile),1); 33 end 34 if isempty(md.qmu_mass_flux_num_segments) || ... 35 (numel(md.qmu_mass_flux_num_segments) == 1 && isnan(md.qmu_mass_flux_num_segments)) 36 md.qmu_mass_flux_num_segments=zeros(numel(md.qmu_mass_flux_profile),1); 37 end 38 save=md.qmu_mass_flux_profile; 39 md.qmu_mass_flux_profile=md.qmu_mass_flux_profile{indx}; 40 md.qmu_mass_flux_segments{indx,1}=MassFluxProcessProfile(md); 41 md.qmu_mass_flux_num_segments(indx,1)=size(md.qmu_mass_flux_segments{indx},1); 42 md.qmu_mass_flux_profile=save; 43 clear save 44 end 21 45 end 22 46 end 47 48 % for now, concatenate all segments from cells to make a double array for parallel 49 if iscell(md.qmu_mass_flux_segments) 50 segments=zeros(0,5); 51 for i=1:length(md.qmu_mass_flux_num_segments) 52 if md.qmu_mass_flux_num_segments(i) 53 segments=[segments; md.qmu_mass_flux_segments{i}]; 54 end 55 end 56 md.qmu_mass_flux_segments=segments; 57 clear segments 58 end 59 -
issm/trunk/src/m/dakota/qmuresponse.m
r3736 r4430 8 8 elseif strcmpi(descriptor,'max_vx'), 9 9 response=max(processedresults.vx); 10 elseif strcmpi(descriptor,'max_abs_vx'), 11 response=max(abs(processedresults.vx)); 10 12 elseif strcmpi(descriptor,'min_vx'), 11 13 response=min(processedresults.vx); 12 14 elseif strcmpi(descriptor,'max_vy'), 13 15 response=max(processedresults.vy); 16 elseif strcmpi(descriptor,'max_abs_vy'), 17 response=max(abs(processedresults.vy)); 14 18 elseif strcmpi(descriptor,'min_vy'), 15 19 response=min(processedresults.vy); 16 elseif strcmpi(descriptor,'mass_flux'), 20 elseif strncmpi(descriptor,'mass_flux',9), 21 indx=str2int(descriptor(10:end)); 22 if isempty(indx) || ~indx 23 indx=1; 24 end 25 17 26 %call mass flux module. 18 27 m_dh=models.dh; 19 28 m_dhu=models.dhu; 20 29 m_ds=models.ds; 21 ishutter=m_dh .parameters.ishutter;22 ismacayealpattyn=m_dh u.parameters.ismacayealpattyn;30 ishutter=m_dhu.parameters.ishutter; 31 ismacayealpattyn=m_dh.parameters.ismacayealpattyn; 23 32 isstokes=m_ds.parameters.isstokes; 24 33 if ishutter, 25 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g); 34 if isnumeric(m_dhu.parameters.qmu_mass_flux_segments) 35 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g); 36 else 37 save=m_dhu.parameters.qmu_mass_flux_segments; 38 m_dhu.parameters.qmu_mass_flux_segments=m_dhu.parameters.qmu_mass_flux_segments{indx}; 39 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g); 40 m_dhu.parameters.qmu_mass_flux_segments=save; 41 clear save 42 end 26 43 elseif ismacayealpattyn, 27 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g); 44 45 % for now, separate all segments from double array for parallel to make cells 46 if (length(m_dh.parameters.qmu_mass_flux_num_segments) > 1) 47 segments=m_dh.parameters.qmu_mass_flux_segments; 48 m_dh.parameters.qmu_mass_flux_segments=cell(size(m_dh.parameters.qmu_mass_flux_num_segments)); 49 ipt=1; 50 for i=1:length(m_dh.parameters.qmu_mass_flux_num_segments) 51 if m_dh.parameters.qmu_mass_flux_num_segments(i) 52 m_dh.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dh.parameters.qmu_mass_flux_num_segments(i)-1,:); 53 ipt=ipt+m_dh.parameters.qmu_mass_flux_num_segments(i); 54 end 55 end 56 clear segments 57 end 58 59 if isnumeric(m_dh.parameters.qmu_mass_flux_segments) 60 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g); 61 else 62 save=m_dh.parameters.qmu_mass_flux_segments; 63 m_dh.parameters.qmu_mass_flux_segments=m_dh.parameters.qmu_mass_flux_segments{indx}; 64 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g); 65 m_dh.parameters.qmu_mass_flux_segments=save; 66 clear save 67 end 28 68 elseif isstokes, 29 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g); 69 if isnumeric(m_ds.parameters.qmu_mass_flux_segments) 70 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g); 71 else 72 save=m_ds.parameters.qmu_mass_flux_segments; 73 m_ds.parameters.qmu_mass_flux_segments=m_ds.parameters.qmu_mass_flux_segments{indx}; 74 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g); 75 m_ds.parameters.qmu_mass_flux_segments=save; 76 clear save 77 end 30 78 else 31 79 error('qmuresponse error message: unsupported analysis type for mass_flux computation!'); 32 80 end 33 81 else 34 error(['qmuresponse error message: unknow descriptor ' descriptor]);82 error(['qmuresponse error message: unknown descriptor ' descriptor]); 35 83 end 84
Note:
See TracChangeset
for help on using the changeset viewer.