Changeset 5215
- Timestamp:
- 08/12/10 17:51:48 (15 years ago)
- Location:
- issm/trunk/src/m/qmu
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/qmu/dakota_in_data.m
r3564 r5215 94 94 95 95 for i=1:length(fnames) 96 97 % currently all variable types can just be copied 98 dvar.(fnames{i})=variables.(fnames{i}); 99 100 end 96 101 97 % for linear constraints, just copy98 99 if isa(variables.(fnames{i}),'linear_inequality_constraint') || ...100 isa(variables.(fnames{i}),'linear_equality_constraint' )101 dvar.(fnames{i})=variables.(fnames{i});102 103 % for variables, call the setup function104 105 else106 fhandle=str2func([class(variables.(fnames{i})) '.empty']);107 dvar.(fnames{i})=fhandle();108 for j=1:length(variables.(fnames{i}))109 %call setupdesign110 dvar.(fnames{i})=QmuSetupDesign(dvar.(fnames{i}),variables.(fnames{i})(j),params,varargin{:});111 end112 end113 end114 115 116 102 %% responses 117 103 -
issm/trunk/src/m/qmu/postqmu.m
r3038 r5215 48 48 end 49 49 50 %scale sensitivities by partitioned average of the input parameter 51 disp('Do this for god''s akes!'); 52 53 50 54 %put dakotaresults in their right location. 51 55 md.results.dakota=dakotaresults; -
issm/trunk/src/m/qmu/preqmu.m
r5029 r5215 41 41 responses=md.responses(options.iresp); 42 42 43 %expand variables 44 variables=expandvariables(md,md.variables); 45 46 %go through variables, and check they don't have more than md.npart values 47 variable_fieldnames=fieldnames(variables); 48 for i=1:length(variable_fieldnames), 49 field_name=variable_fieldnames{i}; 50 fieldvariables=variables.(field_name); 51 if numel(fieldvariables)>md.npart, 52 error('preqmu error message: one of the expanded variables has more values than the number of partitions (setup in md.npart)'); 53 end 54 end 55 43 56 %create m and in files for dakota 44 dakota_in_data(md.qmu_method(options.imethod),variables,md.responses,md.qmu_params(options.iparams),options.qmufile ,md);57 dakota_in_data(md.qmu_method(options.imethod),variables,md.responses,md.qmu_params(options.iparams),options.qmufile); 45 58 46 59 %in library mode, we only need the dakota in file -
issm/trunk/src/m/qmu/qmumarshall.m
r4854 r5215 21 21 end 22 22 23 %count how many variables we have24 numvariables=0;25 variable_fieldnames=fieldnames(variables);26 for i=1:length(variable_fieldnames),27 field_name=variable_fieldnames{i};28 fieldvariables=variables.(field_name);29 numvariables=numvariables+numel(variables.(field_name));30 end31 23 %write number of variables to disk 32 WriteData(fid, numvariables,'Integer','numberofvariables');24 WriteData(fid,md.numberofvariables,'Integer','numberofvariables'); 33 25 34 26 %now, for each variable, write descriptor 35 count=0; 36 for i=1:length(variable_fieldnames), 37 field_name=variable_fieldnames{i}; 38 fieldvariables=variables.(field_name); 39 for j=1:length(fieldvariables), 40 descriptor=fieldvariables(j).descriptor; 41 WriteData(fid,descriptor,'String',['variabledescriptor' num2str(count)]); 42 count=count+1; 43 end 27 for i=1:numel(md.variabledescriptors), 28 field_name=md.variabledescriptors{i}; 29 WriteData(fid,field_name,'String',['variabledescriptor' num2str(i)]); 44 30 end 31 45 32 46 33 %deal with responses 47 34 48 %count how many responses we have49 numresponses=0;50 response_fieldnames=fieldnames(responses);51 for i=1:length(response_fieldnames),52 field_name=response_fieldnames{i};53 fieldresponses=responses.(field_name);54 numresponses=numresponses+numel(responses.(field_name));55 end56 35 %write number of responses to disk 57 WriteData(fid, numresponses,'Integer','numberofresponses');36 WriteData(fid,md.numberofresponses,'Integer','numberofresponses'); 58 37 59 38 %now, for each response, write descriptor 60 count=0; 61 for i=1:length(response_fieldnames), 62 field_name=response_fieldnames{i}; 63 fieldresponses=responses.(field_name); 64 for j=1:length(fieldresponses), 65 descriptor=fieldresponses(j).descriptor; 66 WriteData(fid,descriptor,'String',['responsedescriptor' num2str(count)]); 67 count=count+1; 68 end 39 for i=1:numel(md.responsedescriptors), 40 field_name=md.responsedescriptors{i}; 41 WriteData(fid,field_name,'String',['responsedescriptor' num2str(i)]); 69 42 end 43 70 44 71 45 %write response specific data 72 46 qmu_segments=0; 73 count=0; 74 for i=1:length(response_fieldnames), 75 field_name=response_fieldnames{i}; 76 fieldresponses=responses.(field_name); 77 for j=1:length(fieldresponses), 78 descriptor=fieldresponses(j).descriptor; 79 if strncmpi(descriptor,'MassFlux',8), 80 qmu_segments=1; 81 end 47 48 for i=1:numel(md.responsedescriptors), 49 field_name=md.responsedescriptors{i}; 50 if strncmpi(field_name,'MassFlux',8), 51 qmu_segments=1; 82 52 end 83 53 end -
issm/trunk/src/m/qmu/setupdesign/QmuSetupDesign.m
r5200 r5215 1 function dvar=QmuSetupDesign(dvar,variables,params,varargin) 2 3 %recover model 4 for i=1:length(varargin) 5 if strcmp(class(varargin{i}),'model') 6 md=varargin{i}; 7 break; 8 end 9 end 10 1 function dvar=QmuSetupDesign(md,dvar,variables) 11 2 12 3 %get descriptor … … 18 9 %if descriptor is something like 'Thickness1','Surface10', etc ... the variable expansion already did the work, skip 19 10 if qmuisdistributed(descriptor), 11 dvar(end+1)=variables; 20 12 return; 21 13 end … … 46 38 case {'RiftsFriction'}, 47 39 48 dvar=setupriftsfriction( dvar,variables,params,varargin{:});40 dvar=setupriftsfriction(md,dvar,variable); 49 41 50 42 otherwise -
issm/trunk/src/m/qmu/setupdesign/setupriftsfriction.m
r32 r5215 1 function dvar=setupriftsfriction(dvar,variables,params,varargin) 2 3 for i=1:length(varargin) 4 if strcmp(class(varargin{i}),'model') 5 md=varargin{i}; 6 break; 7 end 8 end 1 function dvar=setupriftsfriction(md,dvar,variables) 9 2 10 3 %we have several rifts.
Note:
See TracChangeset
for help on using the changeset viewer.