Changeset 5487


Ignore:
Timestamp:
08/23/10 00:37:16 (15 years ago)
Author:
Eric.Larour
Message:

We now have a different number of responses and responses descriptors. Same thing
for variables. Makes processing of Qmu inputs a lot simpler.
Had to adapt qmu/ to this new scenario. We now have DescriptorIndex
that tells us whether a variable is scaled, indexed, nodal or regular.
We need to expand responses as well as variables.

Location:
issm/trunk/src/m/qmu
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/qmu/expandvariables.m

    r5215 r5487  
    1818        for j=1:length(variables.(fnames{i}))
    1919            %call setupdesign
    20             dvar.(fnames{i})=QmuSetupDesign(md,dvar.(fnames{i}),variables.(fnames{i})(j));
     20            dvar.(fnames{i})=QmuSetupVariables(md,dvar.(fnames{i}),variables.(fnames{i})(j));
    2121        end
    2222    end
  • issm/trunk/src/m/qmu/preqmu.m

    r5215 r5487  
    4141responses=md.responses(options.iresp);
    4242
    43 %expand variables
     43%expand variables and responses
    4444variables=expandvariables(md,md.variables);
     45responses=expandresponses(md,md.responses);
    4546
    46 %go through variables, and check they don't have more than md.npart values
     47%go through variables and responses, and check they don't have more than md.npart values. Also determine numvariables and numresponses{{{1
     48numvariables=0;
    4749variable_fieldnames=fieldnames(variables);
    4850for i=1:length(variable_fieldnames),
     
    5254                error('preqmu error message: one of the expanded variables has more values than the number of partitions (setup in md.npart)');
    5355        end
    54 end
    55 
    56 %create m and in files for dakota
    57 dakota_in_data(md.qmu_method(options.imethod),variables,md.responses,md.qmu_params(options.iparams),options.qmufile);
    58 
    59 %in library mode, we only need the dakota in file
    60 system(['rm -rf ' md.name '.m']);
    61 
    62 %figure out number of variables and responses, it's not straightforwared
    63 numvariables=0;
    64 variable_fieldnames=fieldnames(variables);
    65 for i=1:length(variable_fieldnames),
    66         field_name=variable_fieldnames{i};
    67         fieldvariables=variables.(field_name);
    6856        numvariables=numvariables+numel(variables.(field_name));
    6957end
     
    7462        field_name=response_fieldnames{i};
    7563        fieldresponses=responses.(field_name);
     64        if numel(fieldresponses)>md.npart,
     65                error('preqmu error message: one of the expanded responses has more values than the number of partitions (setup in md.npart)');
     66        end
    7667        numresponses=numresponses+numel(responses.(field_name));
    7768end
     69%}}}}
    7870
    79 %ok, now, for this particular qmu analysis, iresp and ivar specifiy the variables and responses.
    80 %The Qmu module will need a list of variable descriptors and response descriptors.
    81 %For ease of use, we gather this list here.
     71%create in file for dakota
     72dakota_in_data(md.qmu_method(options.imethod),variables,responses,md.qmu_params(options.iparams),options.qmufile);
     73system(['rm -rf ' md.name '.m']);
    8274
    83 count=0;
    84 variable_fieldnames=fieldnames(variables);
     75%build a list of variables and responses descriptors. the list is not expanded. {{{1
    8576variabledescriptors={};
     77variable_fieldnames=fieldnames(md.variables);
    8678for i=1:length(variable_fieldnames),
    8779        field_name=variable_fieldnames{i};
    88         fieldvariables=variables.(field_name);
    89         for j=1:length(fieldvariables),
    90                 descriptor=fieldvariables(j).descriptor;
    91                 variabledescriptors{end+1}=descriptor;
    92                 count=count+1;
    93         end
     80        variabledescriptors{end+1}=md.variables.(field_name).descriptor;
    9481end
    9582
    96 count=0;
    97 response_fieldnames=fieldnames(responses);
    9883responsedescriptors={};
     84response_fieldnames=fieldnames(md.responses);
    9985for i=1:length(response_fieldnames),
    10086        field_name=response_fieldnames{i};
    101         fieldresponses=responses.(field_name);
    102         for j=1:length(fieldresponses),
    103                 descriptor=fieldresponses(j).descriptor;
    104                 responsedescriptors{end+1}=descriptor;
    105                 count=count+1;
    106         end
     87        responsedescriptors{end+1}=md.responses.(field_name).descriptor;
    10788end
     89%}}}
    10890
    10991%register the fields that will be needed by the Qmu model.
     
    11294md.variabledescriptors=variabledescriptors;
    11395md.responsedescriptors=responsedescriptors;
     96md.numvariabledescriptors=numel(md.variabledescriptors);
     97md.numresponsedescriptors=numel(md.responsedescriptors);
    11498
    11599%now, we have to provide all the info necessary for the solutions to compute the responses. For ex, if mass_flux
  • issm/trunk/src/m/qmu/process_qmu_response_data.m

    r4861 r5487  
    1616
    1717        %Do we have to process  mass flux profiles?
    18         if strncmpi(md.responsedescriptors{i},'MassFlux',8),
     18        if strncmpi(md.responsedescriptors{i},'indexed_MassFlux',16),
    1919                num_mass_flux=num_mass_flux+1;
    2020                process_mass_flux_profiles=1;
  • issm/trunk/src/m/qmu/qmumarshall.m

    r5215 r5487  
    2121end
    2222
    23 %write number of variables to disk
     23%deal with variables
    2424WriteData(fid,md.numberofvariables,'Integer','numberofvariables');
    25 
    26 %now, for each variable, write descriptor
    27 for i=1:numel(md.variabledescriptors),
     25WriteData(fid,md.numvariabledescriptors,'Integer','numvariabledescriptors');
     26for i=1:md.numvariabledescriptors,
    2827        field_name=md.variabledescriptors{i};
    2928        WriteData(fid,field_name,'String',['variabledescriptor' num2str(i)]);
    3029end
    31 
    3230
    3331%deal with responses
     
    3533%write number of responses to disk
    3634WriteData(fid,md.numberofresponses,'Integer','numberofresponses');
    37 
    38 %now, for each response, write descriptor
    39 for i=1:numel(md.responsedescriptors),
     35WriteData(fid,md.numresponsedescriptors,'Integer','numresponsedescriptors');
     36for i=1:md.numresponsedescriptors,
    4037        field_name=md.responsedescriptors{i};
    4138        WriteData(fid,field_name,'String',['responsedescriptor' num2str(i)]);
    4239end
    43 
    4440
    4541%write response specific data
     
    4844for i=1:numel(md.responsedescriptors),
    4945        field_name=md.responsedescriptors{i};
    50         if strncmpi(field_name,'MassFlux',8),
     46        if strncmpi(field_name,'indexed_MassFlux',16),
    5147                qmu_segments=1;
    5248        end
Note: See TracChangeset for help on using the changeset viewer.