Changeset 8


Ignore:
Timestamp:
04/23/09 16:13:15 (16 years ago)
Author:
Eric.Larour
Message:

Introduced new Brent Search based Control Optimization algorithm

Location:
issm/trunk/src
Files:
7 added
13 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/DataSet/DataSet.cpp

    r1 r8  
    882882        Load* load=NULL;
    883883        Material* material=NULL;
     884        Node* node=NULL;
    884885
    885886        for ( object=objects.begin() ; object < objects.end(); object++ ){
     
    899900                        material=(Material*)(*object);
    900901                        material->UpdateFromInputs(inputs);
     902                }
     903                if((*object)->Enum()==NodeEnum()){
     904                        node=(Node*)(*object);
     905                        node->UpdateFromInputs(inputs);
    901906                }               
    902907        }
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp

    r1 r8  
    7373        else return 0;
    7474}
    75 
    76 
  • issm/trunk/src/c/UpdateFromInputsx/UpdateFromInputsx.cpp

    r1 r8  
    2929        elements->UpdateFromInputs(inputs);
    3030        loads->UpdateFromInputs(inputs);
     31        materials->UpdateFromInputs(inputs);
     32        nodes->UpdateFromInputs(inputs);
    3133
    3234        return noerr;
  • issm/trunk/src/c/objects/Matice.cpp

    r1 r8  
    109109void  Matice::UpdateFromInputs(ParameterInputs* inputs){
    110110       
    111         throw ErrorException(__FUNCT__," not supported yet!");
     111        //throw ErrorException(__FUNCT__," not supported yet!");
    112112
    113113}
  • issm/trunk/src/c/objects/Matpar.cpp

    r1 r8  
    160160void  Matpar::UpdateFromInputs(ParameterInputs* inputs){
    161161       
    162         throw ErrorException(__FUNCT__," not supported yet!");
     162        //throw ErrorException(__FUNCT__," not supported yet!");
    163163
    164164}
  • issm/trunk/src/c/objects/Node.cpp

    r1 r8  
    1414#include <string.h>
    1515#include "../EnumDefinitions/EnumDefinitions.h"
     16#include "./ParameterInputs.h"
    1617#include "../shared/shared.h"
    1718
     
    408409        return new Node(*this);
    409410}
     411
     412#undef __FUNCT__
     413#define __FUNCT__ "Node::UpdateFromInputs"
     414void  Node::UpdateFromInputs(ParameterInputs* inputs){
     415       
     416        //throw ErrorException(__FUNCT__," not supported yet!");
     417
     418}
  • issm/trunk/src/c/objects/Node.h

    r1 r8  
    88#include "./Object.h"
    99#include "../toolkits/toolkits.h"
     10#include "./ParameterInputs.h"
    1011
    1112#define MAXDOFSPERNODE 4
     
    6667                double GetZ();
    6768                Object* copy();
     69                void  UpdateFromInputs(ParameterInputs* inputs);
    6870
    6971};
  • issm/trunk/src/c/objects/objects.h

    r1 r8  
    3131#include "./SolverEnum.h"
    3232#include "./FemModel.h"
     33#include "./OptArgs.h"
     34#include "./OptPars.h"
    3335
    3436#endif
  • issm/trunk/src/c/shared/Matlab/matlabshared.h

    r1 r8  
    55#ifndef _MATLAB_SHARED_H_
    66#define _MATLAB_SHARED_H_
     7
     8#include "../../objects/objects.h"
    79
    810/*printf: */
  • issm/trunk/src/c/shared/Numerics/numerics.h

    r1 r8  
    77
    88#include "./GaussPoints.h"
     9#include "../../objects/objects.h"
    910
    1011double min(double a,double b);
    1112double max(double a,double b);
     13double OptFunc(double scalar, OptArgs* optargs);
     14void BrentSearch(double* psearch_scalar,double* pJ,OptPars* optpars,double (*f)(double,OptArgs*), OptArgs* optargs);
    1215
    1316#endif //ifndef _NUMERICS_H_
  • issm/trunk/src/m/solutions/cielo/control.m

    r1 r8  
    4848               
    4949                disp('      optimizing along gradient direction...');
    50                 [search_scalar c(n).J]=fminbnd('objectivefunctionC',-1,1,options,m,p_g,u_g_obs,c(n).grad_g,n);
     50                [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',-1,1,options,m,p_g,u_g_obs,c(n).grad_g,n);
    5151                disp('      done.');
    5252
  • issm/trunk/src/m/solutions/cielo/plot_direction.m

    r1 r8  
    11grad_g=c(n).grad_g;
    22grad_gx=grad_g(1:2:end);grad_gy=grad_g(2:2:end); grad_g=sqrt(grad_gx.^2+grad_gy.^2);
    3 plotmodel(md,'data',grad_g,'title',['Normalized Direction for ' m.parameters.control_type],'figure',1,'colorbar#all','on'); pause(1);
     3plotmodel(md,'data',grad_g,'title',['Normalized Direction for ' m.parameters.control_type],'figure',1,'colorbar#all','on'); drawnow;
    44clear grad_g grad_gx grad_gy
  • issm/trunk/src/m/solutions/cielo/plot_newdistribution.m

    r1 r8  
    11p_gx=p_g(1:2:end);p_gy=p_g(2:2:end); p_g=sqrt(p_gx.^2+p_gy.^2);
    2 plotmodel(md,'data',p_g,'title',['Distribution of ' m.parameters.control_type 'at iteration' num2str(n)],'figure',1,'colorbar#all','on'); pause(1);
     2plotmodel(md,'data',p_g,'title',['Distribution of ' m.parameters.control_type 'at iteration' num2str(n)],'figure',1,'colorbar#all','on'); drawnow;
    33clear p_gx p_gy
Note: See TracChangeset for help on using the changeset viewer.