Changeset 6214


Ignore:
Timestamp:
10/08/10 16:49:32 (14 years ago)
Author:
Mathieu Morlighem
Message:

Prepared ISSM for multivariable CM

Location:
issm/trunk/src/m
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/model/marshall.m

    r6201 r6214  
    100100WriteData(fid,md.control_analysis,'Integer','control_analysis');
    101101WriteData(fid,md.num_control_type,'Integer','num_control_type');
    102 WriteData(fid,md.control_type,'Integer','control_type');
     102WriteData(fid,md.control_type,'Mat','control_type');
    103103
    104104%Write solution parameters
  • issm/trunk/src/m/solutions/control_core.m

    r6200 r6214  
    99        verbose=femmodel.parameters.Verbose;
    1010        nsteps=femmodel.parameters.NSteps;
     11        num_controls=femmodel.parameters.NumControls;
    1112        control_type=femmodel.parameters.ControlType;
    1213        solution_type=femmodel.parameters.SolutionType;
     
    8384
    8485        %Some results not computed by diagnostic or steadystate
    85         femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type);
     86        for i=1:num_controls,
     87                femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type(i));
     88        end
    8689        femmodel.results=AddExternalResult(femmodel.results,JEnum,J);
    87         femmodel.results=AddExternalResult(femmodel.results,ControlTypeEnum,control_type);
     90        %femmodel.results=AddExternalResult(femmodel.results,ControlTypeEnum,control_type);
    8891
    8992end %end function
  • issm/trunk/src/m/solutions/gradient_core.m

    r6200 r6214  
    2222        %recover parameters common to all solutions
    2323        verbose=femmodel.parameters.Verbose;
     24        num_controls=femmodel.parameters.NumControls;
    2425        control_type=femmodel.parameters.ControlType;
    2526        control_steady=femmodel.parameters.ControlSteady;
    2627
    27         displaystring(verbose,'%s\n',['      compute gradient...']);
    28         grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
     28        for i=1:num_controls,
     29
     30                displaystring(verbose,['      compute gradient of J with respect to %s\n'],EnumToString(control_type(i)));
     31                grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
    2932
    3033
    31         if control_steady;
    32                 femmodel=diagnostic_core(femmodel);
     34                if control_steady;
     35                        femmodel=diagnostic_core(femmodel);
     36                end
     37
     38                if (step>1 && search_scalar==0),
     39                        displaystring(verbose,'%s\n',['      orthogonalization...']);
     40                        old_gradient=ControlInputGetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,control_type(i));
     41                        new_gradient=Orth(grad,old_gradient);
     42                else
     43                        displaystring(verbose,'%s\n',['      normalizing direction...']);
     44                        new_gradient=Orth(grad,[]);
     45                end
     46
     47                %plug back into inputs:
     48                [femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=ControlInputSetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,  femmodel.parameters,control_type(i),new_gradient);
    3349        end
    34 
    35         if (step>1 && search_scalar==0),
    36                 displaystring(verbose,'%s\n',['      orthogonalization...']);
    37                 displaystring(verbose,'%s\n',['      retrieve old gradient...']);
    38                 old_gradient=ControlInputGetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,control_type);
    39                 new_gradient=Orth(grad,old_gradient);
    40         else
    41                 displaystring(verbose,'%s\n',['      normalizing direction...']);
    42                 new_gradient=Orth(grad,[]);
    43         end
    44 
    45         %plug back into inputs:
    46         [femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=ControlInputSetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,  femmodel.parameters,control_type,new_gradient);
  • issm/trunk/src/m/solutions/objectivefunctionC.m

    r5579 r6214  
    66optscal=femmodel.parameters.OptScal(n);
    77response=femmodel.parameters.CmResponses(n);
    8 control_type=femmodel.parameters.ControlType;
    98analysis_type=femmodel.parameters.AnalysisType;
    109solution_type=femmodel.parameters.SolutionType;
Note: See TracChangeset for help on using the changeset viewer.