Changeset 6200


Ignore:
Timestamp:
10/08/10 11:14:43 (15 years ago)
Author:
Mathieu Morlighem
Message:

New class ControlInput used in controlmethods

Location:
issm/trunk/src
Files:
15 added
1 deleted
196 edited

Legend:

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

    r6175 r6200  
    234234                                dataset->AddObject(pentavertexinput);}
    235235                                break;
     236                        case ControlInputEnum:{
     237                           ControlInput* controlinputinput=NULL;
     238                                controlinputinput=new ControlInput();
     239                                controlinputinput->Demarshall(&marshalled_dataset);
     240                                dataset->AddObject(controlinputinput);}
     241                                break;
    236242                        case TriaVertexElementResultEnum:{
    237243                                TriaVertexElementResult* triavertexelementresult=NULL;
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r6165 r6200  
    127127        PentaVertexInputEnum,
    128128        TriaVertexInputEnum,
     129        ControlInputEnum,
    129130        /*Params: */
    130131        ParamEnum,
     
    321322        OldGradientEnum,
    322323        ConnectivityEnum,
    323         ControlParameterEnum,
    324324        ControlSteadyEnum,
    325325        DakotaParameterEnum,
  • issm/trunk/src/c/EnumDefinitions/EnumToString.cpp

    r6165 r6200  
    110110                case PentaVertexInputEnum : return "PentaVertexInput";
    111111                case TriaVertexInputEnum : return "TriaVertexInput";
     112                case ControlInputEnum : return "ControlInput";
    112113                case ParamEnum : return "Param";
    113114                case BoolParamEnum : return "BoolParam";
     
    283284                case OldGradientEnum : return "OldGradient";
    284285                case ConnectivityEnum : return "Connectivity";
    285                 case ControlParameterEnum : return "ControlParameter";
    286286                case ControlSteadyEnum : return "ControlSteady";
    287287                case DakotaParameterEnum : return "DakotaParameter";
  • issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp

    r6165 r6200  
    108108        else if (strcmp(name,"PentaVertexInput")==0) return PentaVertexInputEnum;
    109109        else if (strcmp(name,"TriaVertexInput")==0) return TriaVertexInputEnum;
     110        else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
    110111        else if (strcmp(name,"Param")==0) return ParamEnum;
    111112        else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
     
    281282        else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
    282283        else if (strcmp(name,"Connectivity")==0) return ConnectivityEnum;
    283         else if (strcmp(name,"ControlParameter")==0) return ControlParameterEnum;
    284284        else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
    285285        else if (strcmp(name,"DakotaParameter")==0) return DakotaParameterEnum;
  • issm/trunk/src/c/Makefile.am

    r6165 r6200  
    150150                                        ./objects/Inputs/DoubleInput.h\
    151151                                        ./objects/Inputs/DoubleInput.cpp\
     152                                        ./objects/Inputs/ControlInput.h\
     153                                        ./objects/Inputs/ControlInput.cpp\
    152154                                        ./objects/Elements/Penta.h\
    153155                                        ./objects/Elements/Penta.cpp\
     
    544546                                        ./modules/MassFluxx/MassFluxx.cpp\
    545547                                        ./modules/MassFluxx/MassFluxx.h\
     548                                        ./modules/ControlInputGetGradientx/ControlInputGetGradientx.cpp\
     549                                        ./modules/ControlInputGetGradientx/ControlInputGetGradientx.h\
     550                                        ./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
     551                                        ./modules/ControlInputSetGradientx/ControlInputSetGradientx.h\
    546552                                        ./modules/SystemMatricesx/SystemMatricesx.cpp\
    547553                                        ./modules/SystemMatricesx/SystemMatricesx.h\
     
    715721                                        ./objects/Inputs/DoubleInput.h\
    716722                                        ./objects/Inputs/DoubleInput.cpp\
     723                                        ./objects/Inputs/ControlInput.h\
     724                                        ./objects/Inputs/ControlInput.cpp\
    717725                                        ./objects/Elements/Penta.h\
    718726                                        ./objects/Elements/Penta.cpp\
     
    11011109                                        ./modules/MassFluxx/MassFluxx.cpp\
    11021110                                        ./modules/MassFluxx/MassFluxx.h\
     1111                                        ./modules/ControlInputGetGradientx/ControlInputGetGradientx.cpp\
     1112                                        ./modules/ControlInputGetGradientx/ControlInputGetGradientx.h\
     1113                                        ./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
     1114                                        ./modules/ControlInputSetGradientx/ControlInputSetGradientx.h\
    11031115                                        ./modules/SystemMatricesx/SystemMatricesx.cpp\
    11041116                                        ./modules/SystemMatricesx/SystemMatricesx.h\
  • issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp

    r6131 r6200  
    7171
    7272                IoModelFetchData(&control_parameter,NULL,NULL,iomodel_handle,EnumToModelField(iomodel->control_type));
    73                 parameters->AddObject(new DoubleVecParam(ControlParameterEnum,control_parameter,iomodel->nsteps));
    7473                xfree((void**)&control_parameter);
    7574        }
  • issm/trunk/src/c/modules/modules.h

    r6130 r6200  
    1919#include "./ContourToMeshx/ContourToMeshx.h"
    2020#include "./ContourToNodesx/ContourToNodesx.h"
     21#include "./ControlInputGetGradientx/ControlInputGetGradientx.h"
     22#include "./ControlInputSetGradientx/ControlInputSetGradientx.h"
    2123#include "./CostFunctionx/CostFunctionx.h"
    2224#include "./CreateNodalConstraintsx/CreateNodalConstraintsx.h"
  • issm/trunk/src/c/objects/Elements/Element.h

    r6130 r6200  
    5858                virtual void   UpdateGeometry(void)=0;
    5959                virtual void   InputToResult(int enum_type,int step,double time)=0;
     60                virtual void   ControlInputGetGradient(Vec gradient,int enum_type)=0;
     61                virtual void   ControlInputSetGradient(double* gradient,int enum_type)=0;
    6062                virtual void   ProcessResultsUnits(void)=0;
    6163                virtual void   MinVel(double* pminvel, bool process_units)=0;
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r6150 r6200  
    627627}
    628628/*}}}*/
     629/*FUNCTION Penta::ControlInputGetGradient{{{1*/
     630void Penta::ControlInputGetGradient(Vec gradient,int enum_type){
     631
     632        int doflist1[NUMVERTICES];
     633        Input* input=NULL;
     634
     635        if(enum_type==RheologyBbarEnum){
     636                if(!IsOnBed()) return;
     637                input=(Input*)matice->inputs->GetInput(RheologyBEnum);
     638        }
     639        else{
     640                input=inputs->GetInput(enum_type);
     641        }
     642        if (!input) ISSMERROR("Input %s not found",EnumToString(enum_type));
     643
     644        this->GetDofList1(&doflist1[0]);
     645        ((ControlInput*)input)->GetGradient(gradient,&doflist1[0]);
     646
     647}/*}}}*/
     648/*FUNCTION Penta::ControlInputSetGradient{{{1*/
     649void Penta::ControlInputSetGradient(double* gradient,int enum_type){
     650
     651        int    doflist1[NUMVERTICES];
     652        double grad_list[NUMVERTICES];
     653        Input* grad_input=NULL;
     654        Input* input=NULL;
     655
     656        if(enum_type==RheologyBbarEnum){
     657                input=(Input*)matice->inputs->GetInput(RheologyBEnum);
     658        }
     659        else{
     660                input=inputs->GetInput(enum_type);
     661        }
     662        if (!input) ISSMERROR("Input %s not found",EnumToString(enum_type));
     663
     664        this->GetDofList1(&doflist1[0]);
     665        for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[doflist1[i]];
     666        grad_input=new PentaVertexInput(GradientEnum,grad_list);
     667        ((ControlInput*)input)->SetGradient(grad_input);
     668
     669}/*}}}*/
    629670/*FUNCTION Penta::RegularizeInversion {{{1*/
    630671double Penta::RegularizeInversion(void){
     
    918959
    919960        /*Intermediary*/
     961        int    control_type;
    920962        Input* input=NULL;
    921963        double cm_min,cm_max;
    922         int    control_type;
    923964
    924965        /*retrieve some parameters: */
     
    927968        this->parameters->FindParam(&control_type,ControlTypeEnum);
    928969
    929         /*Rheology*/
    930970        if(control_type==RheologyBbarEnum){
    931 
    932                 /*The update is done by the element on bed only*/
    933971                if (!IsOnBed()) return;
    934 
    935                 /*First, get revert to previous parameter value (kept in ControlParameter input)*/
    936                 matice->inputs->DuplicateInput(ControlParameterEnum,RheologyBEnum);
    937 
    938                 /*Now, update using the gradient new = old + scalar * gradient*/
    939                 //matice->inputs->AXPY(RheologyBbarEnum,scalar,GradientEnum);
    940                 // For now: Gradient is in element (TO BE CHANGED) and parameter in matice
    941                 Input* input_B   =(Input*)matice->inputs->GetInput(RheologyBEnum); ISSMASSERT(input_B);
    942                 Input* input_Grad=(Input*)this->inputs->GetInput(GradientEnum); ISSMASSERT(input_Grad);
    943                 input_B->AXPY(input_Grad,scalar);
    944 
    945                 /*Constrain constrain input*/
    946972                input=(Input*)matice->inputs->GetInput(RheologyBEnum); ISSMASSERT(input);
    947                 input->Constrain(cm_min,cm_max);
    948 
    949                 /*OK, now we can propagate the new parameter up*/
     973        }
     974        else{
     975                input=(Input*)this->inputs->GetInput(control_type);   ISSMASSERT(input);
     976        }
     977
     978        if (input->Enum()!=ControlInputEnum) ISSMERROR("input %s is not a ControlInput",EnumToString(control_type));
     979
     980        ((ControlInput*)input)->UpdateValue(scalar);
     981        input->Constrain(cm_min,cm_max);
     982        if (save_parameter) ((ControlInput*)input)->SaveValue();
     983
     984        if(control_type==RheologyBbarEnum){
    950985                this->InputExtrude(RheologyBEnum,MaterialsEnum);
    951 
    952                 /*Finally: save input if requested*/
    953                 if (save_parameter){
    954                         matice->inputs->DuplicateInput(RheologyBEnum,ControlParameterEnum);
    955                         this->InputExtrude(ControlParameterEnum,MaterialsEnum);
    956                 }
    957 
    958         }
    959         else if(control_type==DragCoefficientEnum){
    960 
    961                 /*First, get revert to previous parameter value (kept in ControlParameter input)*/
    962                 this->inputs->DuplicateInput(ControlParameterEnum,DragCoefficientEnum);
    963 
    964                 /*Now, update using the gradient new = old + scalar * gradient*/
    965                 this->inputs->AXPY(DragCoefficientEnum,scalar,GradientEnum);
    966 
    967                 /*Constrain input*/
    968                 input=(Input*)this->inputs->GetInput(DragCoefficientEnum); ISSMASSERT(input);
    969                 input->Constrain(cm_min,cm_max);
    970 
    971                 /*Finally: save input if requested*/
    972                 if (save_parameter) inputs->DuplicateInput(DragCoefficientEnum,ControlParameterEnum);
    973 
    974         }
    975         else{
    976                 ISSMERROR("control type %s not implemented yet",EnumToString(control_type));
    977986        }
    978987}
     
    10221031                        if (original_input->Enum()==PentaVertexInputEnum)
    10231032                         total_integrated_input=new PentaVertexInput(average_enum_type,zeros_list);
     1033                        else if (original_input->Enum()==ControlInputEnum)
     1034                         total_integrated_input=new PentaVertexInput(average_enum_type,zeros_list);
    10241035                        else if (original_input->Enum()==DoubleInputEnum)
    10251036                         total_integrated_input=new DoubleInput(average_enum_type,0.0);
     
    11181129
    11191130        /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
    1120         if (enum_type==RheologyBbarEnum){
    1121                 input=this->matice->inputs->GetInput(RheologyBEnum);
    1122         }
    1123         else{
    1124                 input=this->inputs->GetInput(enum_type);
    1125         }
     1131        if (enum_type==RheologyBbarEnum) input=this->matice->inputs->GetInput(RheologyBEnum);
     1132        else input=this->inputs->GetInput(enum_type);
    11261133        if (!input) ISSMERROR("Input %s not found in penta->inputs",EnumToString(enum_type));
    11271134
     
    11291136         * object out of the input, with the additional step and time information: */
    11301137        this->results->AddObject((Object*)input->SpawnResult(step,time));
     1138        if(input->Enum()==ControlInputEnum) this->results->AddObject((Object*)((ControlInput*)input)->SpawnGradient(step,time));
    11311139
    11321140}
     
    17421750                this->inputs->AddInput(new IntInput(DragTypeEnum,iomodel->drag_type));
    17431751
    1744         }
    1745         if (iomodel->control_parameter) {
    1746                 for(i=0;i<6;i++)nodeinputs[i]=iomodel->control_parameter[penta_vertex_ids[i]-1];
    1747                 this->inputs->AddInput(new PentaVertexInput(ControlParameterEnum,nodeinputs));
    17481752        }
    17491753        if (iomodel->melting_rate) {
     
    18821886                        /*No update for other solution types*/
    18831887                        break;
    1884 
     1888        }
     1889
     1890        /*Control Inputs*/
     1891        if (iomodel->control_analysis){
     1892                switch(iomodel->control_type){
     1893                        case DhDtEnum:
     1894                                if (iomodel->dhdt){
     1895                                        for(i=0;i<6;i++)nodeinputs[i]=iomodel->dhdt[penta_vertex_ids[i]-1]/iomodel->yts;
     1896                                        this->inputs->AddInput(new ControlInput(DhDtEnum,PentaVertexInputEnum,nodeinputs));
     1897                                }
     1898                                break;
     1899                        case VxEnum:
     1900                                if (iomodel->vx){
     1901                                        for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx[penta_vertex_ids[i]-1]/iomodel->yts;
     1902                                        this->inputs->AddInput(new ControlInput(VxEnum,PentaVertexInputEnum,nodeinputs));
     1903                                }
     1904                                break;
     1905                        case VyEnum:
     1906                                if (iomodel->vy){
     1907                                        for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy[penta_vertex_ids[i]-1]/iomodel->yts;
     1908                                        this->inputs->AddInput(new ControlInput(VyEnum,PentaVertexInputEnum,nodeinputs));
     1909                                }
     1910                                break;
     1911                        case DragCoefficientEnum:
     1912                                if (iomodel->drag_coefficient){
     1913                                        for(i=0;i<6;i++)nodeinputs[i]=iomodel->drag_coefficient[penta_vertex_ids[i]-1];
     1914                                        this->inputs->AddInput(new ControlInput(DragCoefficientEnum,PentaVertexInputEnum,nodeinputs));
     1915                                }
     1916                                break;
     1917                        case RheologyBbarEnum:
     1918                                /*Matice will take care of it*/ break;
     1919                        default:
     1920                                ISSMERROR("Control %s not implemented yet",EnumToString(iomodel->control_type));
     1921                }
    18851922        }
    18861923
     
    53575394                                name==VzObsEnum ||
    53585395                                name==TemperatureEnum ||
    5359                                 name==ControlParameterEnum ||
    53605396                                name==CmResponseEnum ||
    53615397                                name==DragCoefficientEnum ||
  • issm/trunk/src/c/objects/Elements/Penta.h

    r6150 r6200  
    9393                void   InputDuplicate(int original_enum,int new_enum);
    9494                void   InputScale(int enum_type,double scale_factor);
     95                void   ControlInputGetGradient(Vec gradient,int enum_type);
     96                void   ControlInputSetGradient(double* gradient,int enum_type);
    9597                void   InputToResult(int enum_type,int step,double time);
    9698                double MassFlux(double* segment,bool process_units);
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r6158 r6200  
    628628}
    629629/*}}}*/
     630/*FUNCTION Tria::ControlInputGetGradient{{{1*/
     631void Tria::ControlInputGetGradient(Vec gradient,int enum_type){
     632
     633        int doflist1[NUMVERTICES];
     634        Input* input=NULL;
     635
     636        if(enum_type==RheologyBbarEnum){
     637                input=(Input*)matice->inputs->GetInput(enum_type);
     638        }
     639        else{
     640                input=inputs->GetInput(enum_type);
     641        }
     642        if (!input) ISSMERROR("Input %s not found",EnumToString(enum_type));
     643
     644        this->GetDofList1(&doflist1[0]);
     645        ((ControlInput*)input)->GetGradient(gradient,&doflist1[0]);
     646
     647}/*}}}*/
     648/*FUNCTION Tria::ControlInputSetGradient{{{1*/
     649void Tria::ControlInputSetGradient(double* gradient,int enum_type){
     650
     651        int    doflist1[NUMVERTICES];
     652        double grad_list[NUMVERTICES];
     653        Input* grad_input=NULL;
     654        Input* input=NULL;
     655
     656        if(enum_type==RheologyBbarEnum){
     657                input=(Input*)matice->inputs->GetInput(enum_type);
     658        }
     659        else{
     660                input=inputs->GetInput(enum_type);
     661        }
     662        if (!input) ISSMERROR("Input %s not found",EnumToString(enum_type));
     663
     664        this->GetDofList1(&doflist1[0]);
     665        for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[doflist1[i]];
     666        grad_input=new TriaVertexInput(GradientEnum,grad_list);
     667
     668        ((ControlInput*)input)->SetGradient(grad_input);
     669
     670}/*}}}*/
    630671/*FUNCTION Tria::RegularizeInversion {{{1*/
    631672double Tria::RegularizeInversion(){
     
    11551196        this->parameters->FindParam(&control_type,ControlTypeEnum);
    11561197
    1157         /*Rheology*/
    1158         switch(control_type){
    1159 
    1160                 case RheologyBbarEnum:{
    1161 
    1162                         /*First, get revert to previous parameter value (kept in ControlParameter input)*/
    1163                         matice->inputs->DuplicateInput(ControlParameterEnum,RheologyBbarEnum);
    1164 
    1165                         /*Now, update using the gradient new = old + scalar * gradient*/
    1166                         //matice->inputs->AXPY(RheologyBbarEnum,scalar,GradientEnum);
    1167                         // For now: Gradient is in element (TO BE CHANGED) and parameter in matice
    1168                         Input* input_B   =(Input*)matice->inputs->GetInput(RheologyBbarEnum); ISSMASSERT(input_B);
    1169                         Input* input_Grad=(Input*)this->inputs->GetInput(GradientEnum); ISSMASSERT(input_Grad);
    1170                         input_B->AXPY(input_Grad,scalar);
    1171 
    1172                         /*Constrain constrain input*/
    1173                         input=(Input*)matice->inputs->GetInput(RheologyBbarEnum); ISSMASSERT(input);
    1174                         input->Constrain(cm_min,cm_max);
    1175 
    1176                         /*Finally: save input if requested*/
    1177                         if (save_parameter) matice->inputs->DuplicateInput(RheologyBbarEnum,ControlParameterEnum);
    1178                                                                          }
    1179                         break;
    1180 
    1181                 case DragCoefficientEnum:{
    1182                         this->inputs->DuplicateInput(ControlParameterEnum,DragCoefficientEnum);
    1183                         this->inputs->AXPY(DragCoefficientEnum,scalar,GradientEnum);
    1184                         input=(Input*)this->inputs->GetInput(DragCoefficientEnum); ISSMASSERT(input);
    1185                         input->Constrain(cm_min,cm_max);
    1186                         if (save_parameter) inputs->DuplicateInput(DragCoefficientEnum,ControlParameterEnum);
    1187                                                                                  }
    1188                         break;
    1189                 case DhDtEnum:{
    1190                         this->inputs->DuplicateInput(ControlParameterEnum,DhDtEnum);
    1191                         this->inputs->AXPY(DhDtEnum,scalar,GradientEnum);
    1192                         input=(Input*)this->inputs->GetInput(DhDtEnum); ISSMASSERT(input);
    1193                         input->Constrain(cm_min,cm_max);
    1194                         if (save_parameter) inputs->DuplicateInput(DhDtEnum,ControlParameterEnum);
    1195                                                   }
    1196                         break;
    1197                 case VxEnum:{
    1198                         this->inputs->DuplicateInput(ControlParameterEnum,VxEnum);
    1199                         this->inputs->AXPY(VxEnum,scalar,GradientEnum);
    1200                         input=(Input*)this->inputs->GetInput(VxEnum); ISSMASSERT(input);
    1201                         input->Constrain(cm_min,cm_max);
    1202                         if (save_parameter) inputs->DuplicateInput(VxEnum,ControlParameterEnum);
    1203                                                   }
    1204                         break;
    1205                 case VyEnum:{
    1206                         this->inputs->DuplicateInput(ControlParameterEnum,VyEnum);
    1207                         this->inputs->AXPY(VyEnum,scalar,GradientEnum);
    1208                         input=(Input*)this->inputs->GetInput(VyEnum); ISSMASSERT(input);
    1209                         input->Constrain(cm_min,cm_max);
    1210                         if (save_parameter) inputs->DuplicateInput(VyEnum,ControlParameterEnum);
    1211                                                   }
    1212                         break;
    1213                 default:
    1214                         ISSMERROR("control type %s not implemented yet",EnumToString(control_type));
    1215         }
     1198        if(control_type==RheologyBbarEnum){
     1199                input=(Input*)matice->inputs->GetInput(control_type); ISSMASSERT(input);
     1200        }
     1201        else{
     1202                input=(Input*)this->inputs->GetInput(control_type);   ISSMASSERT(input);
     1203        }
     1204
     1205        if (input->Enum()!=ControlInputEnum){
     1206                ISSMERROR("input %s is not a ControlInput",EnumToString(control_type));
     1207        }
     1208
     1209        ((ControlInput*)input)->UpdateValue(scalar);
     1210        input->Constrain(cm_min,cm_max);
     1211        if (save_parameter) ((ControlInput*)input)->SaveValue();
    12161212}
    12171213/*}}}*/
     
    13181314        if (enum_type==RheologyBbarEnum) input=this->matice->inputs->GetInput(enum_type);
    13191315        else input=this->inputs->GetInput(enum_type);
    1320 
    13211316        if (!input) ISSMERROR("Input %s not found in tria->inputs",EnumToString(enum_type));
    13221317
     
    13241319         * object out of the input, with the additional step and time information: */
    13251320        this->results->AddObject((Object*)input->SpawnResult(step,time));
     1321        if(input->Enum()==ControlInputEnum) this->results->AddObject((Object*)((ControlInput*)input)->SpawnGradient(step,time));
    13261322}
    13271323/*}}}*/
     
    21382134        /*Recover element type*/
    21392135        if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancedthicknessAnalysisEnum) && iomodel->prognostic_DG){
    2140 
    21412136                /*P1 Discontinuous Galerkin*/
    21422137                tria_type=P1DGEnum;
     
    21912186                this->inputs->AddInput(new IntInput(DragTypeEnum,iomodel->drag_type));
    21922187        }
    2193         if (iomodel->control_parameter) {
    2194                 for(i=0;i<3;i++)nodeinputs[i]=iomodel->control_parameter[tria_vertex_ids[i]-1];
    2195                 this->inputs->AddInput(new TriaVertexInput(ControlParameterEnum,nodeinputs));
    2196         }
    21972188        if (iomodel->thickness_obs) {
    21982189                for(i=0;i<3;i++)nodeinputs[i]=iomodel->thickness_obs[tria_vertex_ids[i]-1];
     
    22112202                this->inputs->AddInput(new TriaVertexInput(GeothermalFluxEnum,nodeinputs));
    22122203        }
    2213         if (iomodel->dhdt) {
     2204        if (iomodel->dhdt){
    22142205                for(i=0;i<3;i++)nodeinputs[i]=iomodel->dhdt[tria_vertex_ids[i]-1]/iomodel->yts;
    22152206                this->inputs->AddInput(new TriaVertexInput(DhDtEnum,nodeinputs));
    22162207        }
    2217         if (iomodel->pressure) {
     2208        if (iomodel->pressure){
    22182209                for(i=0;i<3;i++)nodeinputs[i]=iomodel->pressure[tria_vertex_ids[i]-1];
    22192210                this->inputs->AddInput(new TriaVertexInput(PressureEnum,nodeinputs));
     
    23052296        }
    23062297
     2298        /*Control Inputs*/
     2299        if (iomodel->control_analysis){
     2300                switch(iomodel->control_type){
     2301                        case DhDtEnum:
     2302                                if (iomodel->dhdt){
     2303                                        for(i=0;i<3;i++)nodeinputs[i]=iomodel->dhdt[tria_vertex_ids[i]-1]/iomodel->yts;
     2304                                        this->inputs->AddInput(new ControlInput(DhDtEnum,TriaVertexInputEnum,nodeinputs));
     2305                                }
     2306                                break;
     2307                        case VxEnum:
     2308                                if (iomodel->vx){
     2309                                        for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx[tria_vertex_ids[i]-1]/iomodel->yts;
     2310                                        this->inputs->AddInput(new ControlInput(VxEnum,TriaVertexInputEnum,nodeinputs));
     2311                                }
     2312                                break;
     2313                        case VyEnum:
     2314                                if (iomodel->vy){
     2315                                        for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy[tria_vertex_ids[i]-1]/iomodel->yts;
     2316                                        this->inputs->AddInput(new ControlInput(VyEnum,TriaVertexInputEnum,nodeinputs));
     2317                                }
     2318                                break;
     2319                        case DragCoefficientEnum:
     2320                                if (iomodel->drag_coefficient){
     2321                                        for(i=0;i<3;i++)nodeinputs[i]=iomodel->drag_coefficient[tria_vertex_ids[i]-1];
     2322                                        this->inputs->AddInput(new ControlInput(DragCoefficientEnum,TriaVertexInputEnum,nodeinputs));
     2323                                }
     2324                                break;
     2325                        case RheologyBbarEnum:
     2326                                /*Matice will take care of it*/ break;
     2327                        default:
     2328                                ISSMERROR("Control %s not implemented yet",EnumToString(iomodel->control_type));
     2329                }
     2330
     2331        }
     2332
    23072333        //this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
    23082334        this->parameters=NULL;
     
    49815007                                name==AccumulationRateEnum ||
    49825008                                name==SurfaceAreaEnum||
    4983                                 name==ControlParameterEnum ||
    49845009                                name==VxEnum ||
    49855010                                name==VyEnum ||
  • issm/trunk/src/c/objects/Elements/Tria.h

    r6131 r6200  
    9494                void   InputDuplicate(int original_enum,int new_enum);
    9595                void   InputScale(int enum_type,double scale_factor);
     96                void   ControlInputGetGradient(Vec gradient,int enum_type);
     97                void   ControlInputSetGradient(double* gradient,int enum_type);
    9698                void   InputToResult(int enum_type,int step,double time);
    9799                void   DeleteResults(void);
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r5743 r6200  
    494494        int i;
    495495        const int numgrids=6;
    496         PentaVertexInput*  xpentavertexinput=NULL;
    497496
    498497        /*xinput is of the same type, so cast it: */
    499         xpentavertexinput=(PentaVertexInput*)xinput;
    500498
    501499        /*Carry out the AXPY operation depending on type:*/
    502500        switch(xinput->Enum()){
    503501
    504                 case PentaVertexInputEnum:
    505                         for(i=0;i<numgrids;i++)this->values[i]=this->values[i]+scalar*xpentavertexinput->values[i];
     502                case PentaVertexInputEnum:{
     503                        PentaVertexInput* cast_input=(PentaVertexInput*)xinput;
     504                        for(i=0;i<numgrids;i++)this->values[i]=this->values[i]+scalar*(cast_input->values[i]);}
    506505                        return;
    507 
     506                case ControlInputEnum:{
     507                        ControlInput* cont_input=(ControlInput*)xinput;
     508                        if(cont_input->values->Enum()!=PentaVertexInputEnum) ISSMERROR("not supported yet");
     509                        PentaVertexInput* cast_input=(PentaVertexInput*)cont_input->values;
     510                        for(i=0;i<numgrids;i++)this->values[i]=this->values[i]+scalar*(cast_input->values[i]);}
     511                        return;
    508512                default:
    509513                        ISSMERROR("not implemented yet");
  • issm/trunk/src/c/objects/Materials/Matice.cpp

    r5884 r6200  
    5656                }
    5757
    58                 /*Get control_parameter*/
    59                 if (iomodel->control_parameter) {
    60                         for(i=0;i<num_vertices;i++)nodeinputs[i]=iomodel->control_parameter[int(iomodel->elements[num_vertices*index+i]-1)];
    61                         this->inputs->AddInput(new TriaVertexInput(ControlParameterEnum,nodeinputs));
     58                /*Control Inputs*/
     59                if (iomodel->control_analysis){
     60                        switch(iomodel->control_type){
     61                                case RheologyBbarEnum:
     62                                        if (iomodel->rheology_B){
     63                                                for(i=0;i<num_vertices;i++)nodeinputs[i]=iomodel->rheology_B[int(iomodel->elements[num_vertices*index+i]-1)];
     64                                                this->inputs->AddInput(new ControlInput(RheologyBbarEnum,TriaVertexInputEnum,nodeinputs));
     65                                        }
     66                                        break;
     67                                default:
     68                                        /*Nothing*/;
     69                        }
    6270                }
    6371        }
     
    8290                }
    8391
    84                 /*Get control_parameter*/
    85                 if (iomodel->control_parameter) {
    86                         for(i=0;i<num_vertices;i++)nodeinputs[i]=iomodel->control_parameter[int(iomodel->elements[num_vertices*index+i]-1)];
    87                         this->inputs->AddInput(new PentaVertexInput(ControlParameterEnum,nodeinputs));
    88                 }
    89         }
    90         /*Else*/
    91         else ISSMERROR(" Mesh type not supported yet!");
     92                /*Control Inputs*/
     93                if (iomodel->control_analysis){
     94                        switch(iomodel->control_type){
     95                                case RheologyBbarEnum:
     96                                        if (iomodel->rheology_B){
     97                                                for(i=0;i<num_vertices;i++)nodeinputs[i]=iomodel->rheology_B[int(iomodel->elements[num_vertices*index+i]-1)];
     98                                                this->inputs->AddInput(new ControlInput(RheologyBEnum,PentaVertexInputEnum,nodeinputs));
     99                                        }
     100                                        break;
     101                        }
     102                }
     103        }
     104        else{
     105                ISSMERROR(" Mesh type not supported yet!");
     106        }
     107
    92108
    93109        /*Hooks: */
     
    653669                                name==RheologyBEnum ||
    654670                                name==RheologyBbarEnum ||
    655                                 name==RheologyNEnum ||
    656                                 name==ControlParameterEnum
     671                                name==RheologyNEnum
    657672                ){
    658673                return true;
  • issm/trunk/src/c/objects/objects.h

    r6165 r6200  
    5151#include "./Inputs/PentaVertexInput.h"
    5252#include "./Inputs/TriaVertexInput.h"
     53#include "./Inputs/ControlInput.h"
    5354
    5455/*ElementResults: */
  • issm/trunk/src/c/solutions/control_core.cpp

    r5623 r6200  
    104104                //OptimalSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs);
    105105
    106                 _printf_("%s\n","      updating parameter using optimized search scalar..."); //true means update parameter and copy it onto ControlParameter input
     106                _printf_("%s\n","      updating parameter using optimized search scalar..."); //true means update save controls
    107107                InputControlUpdatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,search_scalar*optscal[n],true);
    108108               
     
    123123        if(!qmu_analysis){ //do not save this if we are running the control core from a qmu run!
    124124                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_type); //the parameter itself!
    125                 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GradientEnum);
    126125                femmodel->results->AddObject(new DoubleVecExternalResult(femmodel->results->Size()+1,JEnum,J,nsteps,1,0));
    127126                femmodel->results->AddObject(new StringExternalResult(femmodel->results->Size()+1,ControlTypeEnum,EnumToString(control_type),1,0));
  • issm/trunk/src/c/solutions/gradient_core.cpp

    r5578 r6200  
    3232        if(verbose)_printf_("%s\n","      compute gradient:");
    3333        Gradjx(&gradient, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters, control_type);
    34        
    35         if(verbose)_printf_("%s\n","      retrieve old gradient:");
    36         GetVectorFromInputsx(&old_gradient, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters, OldGradientEnum,VertexEnum);
    3734
    3835        if(control_steady)diagnostic_core(femmodel);
    3936       
    4037        if (step>0 && search_scalar==0){
    41                 _printf_("%s","      orthogonalization...");
     38                _printf_("%s","      orthogonalization...\n");
     39                if(verbose)_printf_("%s\n","      retrieve old gradient:");
     40                ControlInputGetGradientx(&old_gradient,femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,control_type);
    4241                Orthx(&new_gradient,gradient,old_gradient);
     42                VecFree(&old_gradient);
    4343        }
    4444        else{
    45                 _printf_("%s","      normalizing directions...");
     45                _printf_("%s","      normalizing directions...\n");
    4646                Orthx(&new_gradient,gradient,NULL);
    4747        }
    48         _printf_("%s\n"," done.");
    49        
    50         /*point gradient and old_gradient to new_gradient: */
    51         VecFree(&gradient); gradient=new_gradient;
    52         VecFree(&old_gradient); old_gradient=new_gradient;
     48        VecFree(&gradient);
    5349
    5450        /*plug back into inputs: */
    55         InputUpdateFromVectorx(femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials,  femmodel->parameters,gradient,GradientEnum,VertexEnum);
    56         InputUpdateFromVectorx(femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials,  femmodel->parameters,old_gradient,OldGradientEnum,VertexEnum);
    57         //InputArtificialNoisex(  femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials,  femmodel->parameters,GradientEnum,-0.5,0.5);
     51        ControlInputSetGradientx(femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials,  femmodel->parameters,control_type,new_gradient);
    5852
    5953        /*Free ressources and return:*/
  • issm/trunk/src/c/solutions/objectivefunctionC.cpp

    r5579 r6200  
    6262        }
    6363
    64         /*update parameter according to scalar: */ //false means: do not copy updated parameter onto ControlParameter input
     64        /*update parameter according to scalar: */ //false means: do not save control
    6565        InputControlUpdatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,search_scalar*optscal[n],false);
    6666
  • issm/trunk/src/m/enum/AbsoluteEnum.m

    r6166 r6200  
    99%      macro=AbsoluteEnum()
    1010
    11 macro=248;
     11macro=249;
  • issm/trunk/src/m/enum/AccumulationRateEnum.m

    r6166 r6200  
    99%      macro=AccumulationRateEnum()
    1010
    11 macro=117;
     11macro=118;
  • issm/trunk/src/m/enum/AdjointEnum.m

    r6166 r6200  
    99%      macro=AdjointEnum()
    1010
    11 macro=263;
     11macro=264;
  • issm/trunk/src/m/enum/AdjointpEnum.m

    r6166 r6200  
    99%      macro=AdjointpEnum()
    1010
    11 macro=121;
     11macro=122;
  • issm/trunk/src/m/enum/AdjointxEnum.m

    r6166 r6200  
    99%      macro=AdjointxEnum()
    1010
    11 macro=118;
     11macro=119;
  • issm/trunk/src/m/enum/AdjointyEnum.m

    r6166 r6200  
    99%      macro=AdjointyEnum()
    1010
    11 macro=119;
     11macro=120;
  • issm/trunk/src/m/enum/AdjointzEnum.m

    r6166 r6200  
    99%      macro=AdjointzEnum()
    1010
    11 macro=120;
     11macro=121;
  • issm/trunk/src/m/enum/AirEnum.m

    r6166 r6200  
    99%      macro=AirEnum()
    1010
    11 macro=115;
     11macro=116;
  • issm/trunk/src/m/enum/ArtDiffEnum.m

    r6166 r6200  
    99%      macro=ArtDiffEnum()
    1010
    11 macro=122;
     11macro=123;
  • issm/trunk/src/m/enum/BedEnum.m

    r6166 r6200  
    99%      macro=BedEnum()
    1010
    11 macro=123;
     11macro=124;
  • issm/trunk/src/m/enum/BedSlopeXEnum.m

    r6166 r6200  
    99%      macro=BedSlopeXEnum()
    1010
    11 macro=124;
     11macro=125;
  • issm/trunk/src/m/enum/BedSlopeYEnum.m

    r6166 r6200  
    99%      macro=BedSlopeYEnum()
    1010
    11 macro=125;
     11macro=126;
  • issm/trunk/src/m/enum/BetaEnum.m

    r6166 r6200  
    99%      macro=BetaEnum()
    1010
    11 macro=258;
     11macro=259;
  • issm/trunk/src/m/enum/BoolExternalResultEnum.m

    r6166 r6200  
    99%      macro=BoolExternalResultEnum()
    1010
    11 macro=222;
     11macro=223;
  • issm/trunk/src/m/enum/BoolParamEnum.m

    r6139 r6200  
    99%      macro=BoolParamEnum()
    1010
    11 macro=95;
     11macro=96;
  • issm/trunk/src/m/enum/BoundaryEnum.m

    r6166 r6200  
    99%      macro=BoundaryEnum()
    1010
    11 macro=126;
     11macro=127;
  • issm/trunk/src/m/enum/CflCoefficientEnum.m

    r6166 r6200  
    99%      macro=CflCoefficientEnum()
    1010
    11 macro=140;
     11macro=141;
  • issm/trunk/src/m/enum/CmGradientEnum.m

    r6166 r6200  
    99%      macro=CmGradientEnum()
    1010
    11 macro=259;
     11macro=260;
  • issm/trunk/src/m/enum/CmJumpEnum.m

    r6166 r6200  
    99%      macro=CmJumpEnum()
    1010
    11 macro=260;
     11macro=261;
  • issm/trunk/src/m/enum/CmMaxEnum.m

    r6166 r6200  
    99%      macro=CmMaxEnum()
    1010
    11 macro=261;
     11macro=262;
  • issm/trunk/src/m/enum/CmMinEnum.m

    r6166 r6200  
    99%      macro=CmMinEnum()
    1010
    11 macro=262;
     11macro=263;
  • issm/trunk/src/m/enum/CmNoiseDmpEnum.m

    r6166 r6200  
    99%      macro=CmNoiseDmpEnum()
    1010
    11 macro=129;
     11macro=130;
  • issm/trunk/src/m/enum/CmResponseEnum.m

    r6166 r6200  
    99%      macro=CmResponseEnum()
    1010
    11 macro=127;
     11macro=128;
  • issm/trunk/src/m/enum/CmResponsesEnum.m

    r6166 r6200  
    99%      macro=CmResponsesEnum()
    1010
    11 macro=128;
     11macro=129;
  • issm/trunk/src/m/enum/ColinearEnum.m

    r6166 r6200  
    99%      macro=ColinearEnum()
    1010
    11 macro=256;
     11macro=257;
  • issm/trunk/src/m/enum/ConnectivityEnum.m

    r6166 r6200  
    99%      macro=ConnectivityEnum()
    1010
    11 macro=266;
     11macro=267;
  • issm/trunk/src/m/enum/ConstantEnum.m

    r6166 r6200  
    99%      macro=ConstantEnum()
    1010
    11 macro=130;
     11macro=131;
  • issm/trunk/src/m/enum/ControlTypeEnum.m

    r6166 r6200  
    99%      macro=ControlTypeEnum()
    1010
    11 macro=131;
     11macro=132;
  • issm/trunk/src/m/enum/ConvergedEnum.m

    r6166 r6200  
    99%      macro=ConvergedEnum()
    1010
    11 macro=132;
     11macro=133;
  • issm/trunk/src/m/enum/DhDtEnum.m

    r6166 r6200  
    99%      macro=DhDtEnum()
    1010
    11 macro=133;
     11macro=134;
  • issm/trunk/src/m/enum/DoubleElementResultEnum.m

    r6166 r6200  
    99%      macro=DoubleElementResultEnum()
    1010
    11 macro=219;
     11macro=220;
  • issm/trunk/src/m/enum/DoubleExternalResultEnum.m

    r6166 r6200  
    99%      macro=DoubleExternalResultEnum()
    1010
    11 macro=223;
     11macro=224;
  • issm/trunk/src/m/enum/DoubleMatArrayParamEnum.m

    r6139 r6200  
    99%      macro=DoubleMatArrayParamEnum()
    1010
    11 macro=97;
     11macro=98;
  • issm/trunk/src/m/enum/DoubleMatExternalResultEnum.m

    r6166 r6200  
    99%      macro=DoubleMatExternalResultEnum()
    1010
    11 macro=225;
     11macro=226;
  • issm/trunk/src/m/enum/DoubleMatParamEnum.m

    r6139 r6200  
    99%      macro=DoubleMatParamEnum()
    1010
    11 macro=96;
     11macro=97;
  • issm/trunk/src/m/enum/DoubleParamEnum.m

    r6139 r6200  
    99%      macro=DoubleParamEnum()
    1010
    11 macro=98;
     11macro=99;
  • issm/trunk/src/m/enum/DoubleVecExternalResultEnum.m

    r6166 r6200  
    99%      macro=DoubleVecExternalResultEnum()
    1010
    11 macro=224;
     11macro=225;
  • issm/trunk/src/m/enum/DoubleVecParamEnum.m

    r6139 r6200  
    99%      macro=DoubleVecParamEnum()
    1010
    11 macro=99;
     11macro=100;
  • issm/trunk/src/m/enum/DragCoefficientEnum.m

    r6166 r6200  
    99%      macro=DragCoefficientEnum()
    1010
    11 macro=134;
     11macro=135;
  • issm/trunk/src/m/enum/DragPEnum.m

    r6166 r6200  
    99%      macro=DragPEnum()
    1010
    11 macro=135;
     11macro=136;
  • issm/trunk/src/m/enum/DragQEnum.m

    r6166 r6200  
    99%      macro=DragQEnum()
    1010
    11 macro=136;
     11macro=137;
  • issm/trunk/src/m/enum/DragTypeEnum.m

    r6166 r6200  
    99%      macro=DragTypeEnum()
    1010
    11 macro=137;
     11macro=138;
  • issm/trunk/src/m/enum/DtEnum.m

    r6166 r6200  
    99%      macro=DtEnum()
    1010
    11 macro=138;
     11macro=139;
  • issm/trunk/src/m/enum/ElementOnBedEnum.m

    r6166 r6200  
    99%      macro=ElementOnBedEnum()
    1010
    11 macro=141;
     11macro=142;
  • issm/trunk/src/m/enum/ElementOnIceShelfEnum.m

    r6166 r6200  
    99%      macro=ElementOnIceShelfEnum()
    1010
    11 macro=142;
     11macro=143;
  • issm/trunk/src/m/enum/ElementOnSurfaceEnum.m

    r6166 r6200  
    99%      macro=ElementOnSurfaceEnum()
    1010
    11 macro=143;
     11macro=144;
  • issm/trunk/src/m/enum/ElementOnWaterEnum.m

    r6166 r6200  
    99%      macro=ElementOnWaterEnum()
    1010
    11 macro=144;
     11macro=145;
  • issm/trunk/src/m/enum/ElementResultEnum.m

    r6166 r6200  
    99%      macro=ElementResultEnum()
    1010
    11 macro=107;
     11macro=108;
  • issm/trunk/src/m/enum/EnumToString.m

    r6166 r6200  
    105105case PentaVertexInputEnum(), string='PentaVertexInput'; return
    106106case TriaVertexInputEnum(), string='TriaVertexInput'; return
     107case ControlInputEnum(), string='ControlInput'; return
    107108case ParamEnum(), string='Param'; return
    108109case BoolParamEnum(), string='BoolParam'; return
     
    278279case OldGradientEnum(), string='OldGradient'; return
    279280case ConnectivityEnum(), string='Connectivity'; return
    280 case ControlParameterEnum(), string='ControlParameter'; return
    281281case ControlSteadyEnum(), string='ControlSteady'; return
    282282case DakotaParameterEnum(), string='DakotaParameter'; return
  • issm/trunk/src/m/enum/EpsVelEnum.m

    r6166 r6200  
    99%      macro=EpsVelEnum()
    1010
    11 macro=145;
     11macro=146;
  • issm/trunk/src/m/enum/ExtToIuEnum.m

    r6166 r6200  
    99%      macro=ExtToIuEnum()
    1010
    11 macro=153;
     11macro=154;
  • issm/trunk/src/m/enum/ExternalResultEnum.m

    r6166 r6200  
    99%      macro=ExternalResultEnum()
    1010
    11 macro=108;
     11macro=109;
  • issm/trunk/src/m/enum/FileParamEnum.m

    r6166 r6200  
    99%      macro=FileParamEnum()
    1010
    11 macro=102;
     11macro=103;
  • issm/trunk/src/m/enum/FillEnum.m

    r6166 r6200  
    99%      macro=FillEnum()
    1010
    11 macro=146;
     11macro=147;
  • issm/trunk/src/m/enum/FractionIncrementEnum.m

    r6166 r6200  
    99%      macro=FractionIncrementEnum()
    1010
    11 macro=147;
     11macro=148;
  • issm/trunk/src/m/enum/FrictionEnum.m

    r6166 r6200  
    99%      macro=FrictionEnum()
    1010
    11 macro=148;
     11macro=149;
  • issm/trunk/src/m/enum/GeographyEnum.m

    r6166 r6200  
    99%      macro=GeographyEnum()
    1010
    11 macro=110;
     11macro=111;
  • issm/trunk/src/m/enum/GeothermalFluxEnum.m

    r6166 r6200  
    99%      macro=GeothermalFluxEnum()
    1010
    11 macro=149;
     11macro=150;
  • issm/trunk/src/m/enum/GradientEnum.m

    r6166 r6200  
    99%      macro=GradientEnum()
    1010
    11 macro=264;
     11macro=265;
  • issm/trunk/src/m/enum/GravityEnum.m

    r6166 r6200  
    99%      macro=GravityEnum()
    1010
    11 macro=251;
     11macro=252;
  • issm/trunk/src/m/enum/IceEnum.m

    r6166 r6200  
    99%      macro=IceEnum()
    1010
    11 macro=114;
     11macro=115;
  • issm/trunk/src/m/enum/IceSheetEnum.m

    r6166 r6200  
    99%      macro=IceSheetEnum()
    1010
    11 macro=111;
     11macro=112;
  • issm/trunk/src/m/enum/IceShelfEnum.m

    r6166 r6200  
    99%      macro=IceShelfEnum()
    1010
    11 macro=112;
     11macro=113;
  • issm/trunk/src/m/enum/IntExternalResultEnum.m

    r6166 r6200  
    99%      macro=IntExternalResultEnum()
    1010
    11 macro=226;
     11macro=227;
  • issm/trunk/src/m/enum/IntParamEnum.m

    r6139 r6200  
    99%      macro=IntParamEnum()
    1010
    11 macro=100;
     11macro=101;
  • issm/trunk/src/m/enum/IntVecParamEnum.m

    r6166 r6200  
    99%      macro=IntVecParamEnum()
    1010
    11 macro=101;
     11macro=102;
  • issm/trunk/src/m/enum/InternalEnum.m

    r6166 r6200  
    99%      macro=InternalEnum()
    1010
    11 macro=150;
     11macro=151;
  • issm/trunk/src/m/enum/IntersectEnum.m

    r6166 r6200  
    99%      macro=IntersectEnum()
    1010
    11 macro=255;
     11macro=256;
  • issm/trunk/src/m/enum/IuToExtEnum.m

    r6166 r6200  
    99%      macro=IuToExtEnum()
    1010
    11 macro=152;
     11macro=153;
  • issm/trunk/src/m/enum/JEnum.m

    r6166 r6200  
    99%      macro=JEnum()
    1010
    11 macro=229;
     11macro=230;
  • issm/trunk/src/m/enum/KflagEnum.m

    r6166 r6200  
    99%      macro=KflagEnum()
    1010
    11 macro=151;
     11macro=152;
  • issm/trunk/src/m/enum/MassFluxEnum.m

    r6166 r6200  
    99%      macro=MassFluxEnum()
    1010
    11 macro=154;
     11macro=155;
  • issm/trunk/src/m/enum/MaxAbsVxEnum.m

    r6166 r6200  
    99%      macro=MaxAbsVxEnum()
    1010
    11 macro=239;
     11macro=240;
  • issm/trunk/src/m/enum/MaxAbsVyEnum.m

    r6166 r6200  
    99%      macro=MaxAbsVyEnum()
    1010
    11 macro=242;
     11macro=243;
  • issm/trunk/src/m/enum/MaxAbsVzEnum.m

    r6166 r6200  
    99%      macro=MaxAbsVzEnum()
    1010
    11 macro=245;
     11macro=246;
  • issm/trunk/src/m/enum/MaxPenetrationEnum.m

    r6166 r6200  
    99%      macro=MaxPenetrationEnum()
    1010
    11 macro=161;
     11macro=162;
  • issm/trunk/src/m/enum/MaxVelEnum.m

    r6166 r6200  
    99%      macro=MaxVelEnum()
    1010
    11 macro=236;
     11macro=237;
  • issm/trunk/src/m/enum/MaxVxEnum.m

    r6166 r6200  
    99%      macro=MaxVxEnum()
    1010
    11 macro=238;
     11macro=239;
  • issm/trunk/src/m/enum/MaxVyEnum.m

    r6166 r6200  
    99%      macro=MaxVyEnum()
    1010
    11 macro=241;
     11macro=242;
  • issm/trunk/src/m/enum/MaxVzEnum.m

    r6166 r6200  
    99%      macro=MaxVzEnum()
    1010
    11 macro=244;
     11macro=245;
  • issm/trunk/src/m/enum/MeanVelEnum.m

    r6166 r6200  
    99%      macro=MeanVelEnum()
    1010
    11 macro=162;
     11macro=163;
  • issm/trunk/src/m/enum/MelangeEnum.m

    r6166 r6200  
    99%      macro=MelangeEnum()
    1010
    11 macro=116;
     11macro=117;
  • issm/trunk/src/m/enum/MeltingOffsetEnum.m

    r6166 r6200  
    99%      macro=MeltingOffsetEnum()
    1010
    11 macro=163;
     11macro=164;
  • issm/trunk/src/m/enum/MeltingRateEnum.m

    r6166 r6200  
    99%      macro=MeltingRateEnum()
    1010
    11 macro=164;
     11macro=165;
  • issm/trunk/src/m/enum/MinVelEnum.m

    r6166 r6200  
    99%      macro=MinVelEnum()
    1010
    11 macro=235;
     11macro=236;
  • issm/trunk/src/m/enum/MinVxEnum.m

    r6166 r6200  
    99%      macro=MinVxEnum()
    1010
    11 macro=237;
     11macro=238;
  • issm/trunk/src/m/enum/MinVyEnum.m

    r6166 r6200  
    99%      macro=MinVyEnum()
    1010
    11 macro=240;
     11macro=241;
  • issm/trunk/src/m/enum/MinVzEnum.m

    r6166 r6200  
    99%      macro=MinVzEnum()
    1010
    11 macro=243;
     11macro=244;
  • issm/trunk/src/m/enum/MiniEnum.m

    r6166 r6200  
    99%      macro=MiniEnum()
    1010
    11 macro=218;
     11macro=219;
  • issm/trunk/src/m/enum/MisfitEnum.m

    r6166 r6200  
    99%      macro=MisfitEnum()
    1010
    11 macro=165;
     11macro=166;
  • issm/trunk/src/m/enum/MixedLayerCapacityEnum.m

    r6166 r6200  
    99%      macro=MixedLayerCapacityEnum()
    1010
    11 macro=253;
     11macro=254;
  • issm/trunk/src/m/enum/NodeOnBedEnum.m

    r6166 r6200  
    99%      macro=NodeOnBedEnum()
    1010
    11 macro=166;
     11macro=167;
  • issm/trunk/src/m/enum/NodeOnIceSheetEnum.m

    r6166 r6200  
    99%      macro=NodeOnIceSheetEnum()
    1010
    11 macro=167;
     11macro=168;
  • issm/trunk/src/m/enum/NodeOnIceShelfEnum.m

    r6166 r6200  
    99%      macro=NodeOnIceShelfEnum()
    1010
    11 macro=168;
     11macro=169;
  • issm/trunk/src/m/enum/NodeOnSurfaceEnum.m

    r6166 r6200  
    99%      macro=NodeOnSurfaceEnum()
    1010
    11 macro=169;
     11macro=170;
  • issm/trunk/src/m/enum/NumberNodeToElementConnectivityEnum.m

    r6166 r6200  
    99%      macro=NumberNodeToElementConnectivityEnum()
    1010
    11 macro=170;
     11macro=171;
  • issm/trunk/src/m/enum/OldGradientEnum.m

    r6166 r6200  
    99%      macro=OldGradientEnum()
    1010
    11 macro=265;
     11macro=266;
  • issm/trunk/src/m/enum/OutputFrequencyEnum.m

    r6166 r6200  
    99%      macro=OutputFrequencyEnum()
    1010
    11 macro=234;
     11macro=235;
  • issm/trunk/src/m/enum/P0Enum.m

    r6166 r6200  
    99%      macro=P0Enum()
    1010
    11 macro=215;
     11macro=216;
  • issm/trunk/src/m/enum/P1DGEnum.m

    r6166 r6200  
    99%      macro=P1DGEnum()
    1010
    11 macro=217;
     11macro=218;
  • issm/trunk/src/m/enum/P1Enum.m

    r6166 r6200  
    99%      macro=P1Enum()
    1010
    11 macro=216;
     11macro=217;
  • issm/trunk/src/m/enum/ParamEnum.m

    r6139 r6200  
    99%      macro=ParamEnum()
    1010
    11 macro=94;
     11macro=95;
  • issm/trunk/src/m/enum/PatchEnum.m

    r6166 r6200  
    99%      macro=PatchEnum()
    1010
    11 macro=230;
     11macro=231;
  • issm/trunk/src/m/enum/PatchNodesEnum.m

    r6166 r6200  
    99%      macro=PatchNodesEnum()
    1010
    11 macro=232;
     11macro=233;
  • issm/trunk/src/m/enum/PatchVerticesEnum.m

    r6166 r6200  
    99%      macro=PatchVerticesEnum()
    1010
    11 macro=231;
     11macro=232;
  • issm/trunk/src/m/enum/PenaltyOffsetEnum.m

    r6166 r6200  
    99%      macro=PenaltyOffsetEnum()
    1010
    11 macro=171;
     11macro=172;
  • issm/trunk/src/m/enum/PentaVertexElementResultEnum.m

    r6166 r6200  
    99%      macro=PentaVertexElementResultEnum()
    1010
    11 macro=221;
     11macro=222;
  • issm/trunk/src/m/enum/PetscMatParamEnum.m

    r6166 r6200  
    99%      macro=PetscMatParamEnum()
    1010
    11 macro=103;
     11macro=104;
  • issm/trunk/src/m/enum/PetscVecExternalResultEnum.m

    r6166 r6200  
    99%      macro=PetscVecExternalResultEnum()
    1010
    11 macro=227;
     11macro=228;
  • issm/trunk/src/m/enum/PetscVecParamEnum.m

    r6166 r6200  
    99%      macro=PetscVecParamEnum()
    1010
    11 macro=104;
     11macro=105;
  • issm/trunk/src/m/enum/PflagEnum.m

    r6166 r6200  
    99%      macro=PflagEnum()
    1010
    11 macro=172;
     11macro=173;
  • issm/trunk/src/m/enum/PressureEnum.m

    r6166 r6200  
    99%      macro=PressureEnum()
    1010
    11 macro=173;
     11macro=174;
  • issm/trunk/src/m/enum/PressureOldEnum.m

    r6166 r6200  
    99%      macro=PressureOldEnum()
    1010
    11 macro=174;
     11macro=175;
  • issm/trunk/src/m/enum/QmuPressureEnum.m

    r6166 r6200  
    99%      macro=QmuPressureEnum()
    1010
    11 macro=175;
     11macro=176;
  • issm/trunk/src/m/enum/QmuVxEnum.m

    r6166 r6200  
    99%      macro=QmuVxEnum()
    1010
    11 macro=200;
     11macro=201;
  • issm/trunk/src/m/enum/QmuVyEnum.m

    r6166 r6200  
    99%      macro=QmuVyEnum()
    1010
    11 macro=205;
     11macro=206;
  • issm/trunk/src/m/enum/QmuVzEnum.m

    r6166 r6200  
    99%      macro=QmuVzEnum()
    1010
    11 macro=213;
     11macro=214;
  • issm/trunk/src/m/enum/RelativeEnum.m

    r6166 r6200  
    99%      macro=RelativeEnum()
    1010
    11 macro=246;
     11macro=247;
  • issm/trunk/src/m/enum/ResetPenaltiesEnum.m

    r6166 r6200  
    99%      macro=ResetPenaltiesEnum()
    1010
    11 macro=176;
     11macro=177;
  • issm/trunk/src/m/enum/ResidualEnum.m

    r6166 r6200  
    99%      macro=ResidualEnum()
    1010
    11 macro=247;
     11macro=248;
  • issm/trunk/src/m/enum/RheologyBEnum.m

    r6166 r6200  
    99%      macro=RheologyBEnum()
    1010
    11 macro=177;
     11macro=178;
  • issm/trunk/src/m/enum/RheologyBbarEnum.m

    r6166 r6200  
    99%      macro=RheologyBbarEnum()
    1010
    11 macro=178;
     11macro=179;
  • issm/trunk/src/m/enum/RheologyNEnum.m

    r6166 r6200  
    99%      macro=RheologyNEnum()
    1010
    11 macro=179;
     11macro=180;
  • issm/trunk/src/m/enum/RhoIceEnum.m

    r6166 r6200  
    99%      macro=RhoIceEnum()
    1010
    11 macro=249;
     11macro=250;
  • issm/trunk/src/m/enum/RhoWaterEnum.m

    r6166 r6200  
    99%      macro=RhoWaterEnum()
    1010
    11 macro=250;
     11macro=251;
  • issm/trunk/src/m/enum/SegmentOnIceShelfEnum.m

    r6166 r6200  
    99%      macro=SegmentOnIceShelfEnum()
    1010
    11 macro=180;
     11macro=181;
  • issm/trunk/src/m/enum/SeparateEnum.m

    r6166 r6200  
    99%      macro=SeparateEnum()
    1010
    11 macro=257;
     11macro=258;
  • issm/trunk/src/m/enum/SpcEnum.m

    r6166 r6200  
    99%      macro=SpcEnum()
    1010
    11 macro=109;
     11macro=110;
  • issm/trunk/src/m/enum/StabilizeConstraintsEnum.m

    r6166 r6200  
    99%      macro=StabilizeConstraintsEnum()
    1010
    11 macro=181;
     11macro=182;
  • issm/trunk/src/m/enum/StokesReconditioningEnum.m

    r6166 r6200  
    99%      macro=StokesReconditioningEnum()
    1010
    11 macro=182;
     11macro=183;
  • issm/trunk/src/m/enum/StringArrayParamEnum.m

    r6166 r6200  
    99%      macro=StringArrayParamEnum()
    1010
    11 macro=105;
     11macro=106;
  • issm/trunk/src/m/enum/StringExternalResultEnum.m

    r6166 r6200  
    99%      macro=StringExternalResultEnum()
    1010
    11 macro=228;
     11macro=229;
  • issm/trunk/src/m/enum/StringParamEnum.m

    r6166 r6200  
    99%      macro=StringParamEnum()
    1010
    11 macro=106;
     11macro=107;
  • issm/trunk/src/m/enum/StringToEnum.m

    r6166 r6200  
    103103                        elseif (strcmpi(name,'PentaVertexInput')), enum=PentaVertexInputEnum(); return
    104104                        elseif (strcmpi(name,'TriaVertexInput')), enum=TriaVertexInputEnum(); return
     105                        elseif (strcmpi(name,'ControlInput')), enum=ControlInputEnum(); return
    105106                        elseif (strcmpi(name,'Param')), enum=ParamEnum(); return
    106107                        elseif (strcmpi(name,'BoolParam')), enum=BoolParamEnum(); return
     
    276277                        elseif (strcmpi(name,'OldGradient')), enum=OldGradientEnum(); return
    277278                        elseif (strcmpi(name,'Connectivity')), enum=ConnectivityEnum(); return
    278                         elseif (strcmpi(name,'ControlParameter')), enum=ControlParameterEnum(); return
    279279                        elseif (strcmpi(name,'ControlSteady')), enum=ControlSteadyEnum(); return
    280280                        elseif (strcmpi(name,'DakotaParameter')), enum=DakotaParameterEnum(); return
  • issm/trunk/src/m/enum/SurfaceAbsVelMisfitEnum.m

    r6166 r6200  
    99%      macro=SurfaceAbsVelMisfitEnum()
    1010
    11 macro=156;
     11macro=157;
  • issm/trunk/src/m/enum/SurfaceAreaEnum.m

    r6166 r6200  
    99%      macro=SurfaceAreaEnum()
    1010
    11 macro=183;
     11macro=184;
  • issm/trunk/src/m/enum/SurfaceAverageVelMisfitEnum.m

    r6166 r6200  
    99%      macro=SurfaceAverageVelMisfitEnum()
    1010
    11 macro=160;
     11macro=161;
  • issm/trunk/src/m/enum/SurfaceEnum.m

    r6166 r6200  
    99%      macro=SurfaceEnum()
    1010
    11 macro=184;
     11macro=185;
  • issm/trunk/src/m/enum/SurfaceLogVelMisfitEnum.m

    r6166 r6200  
    99%      macro=SurfaceLogVelMisfitEnum()
    1010
    11 macro=158;
     11macro=159;
  • issm/trunk/src/m/enum/SurfaceLogVxVyMisfitEnum.m

    r6166 r6200  
    99%      macro=SurfaceLogVxVyMisfitEnum()
    1010
    11 macro=159;
     11macro=160;
  • issm/trunk/src/m/enum/SurfaceRelVelMisfitEnum.m

    r6166 r6200  
    99%      macro=SurfaceRelVelMisfitEnum()
    1010
    11 macro=157;
     11macro=158;
  • issm/trunk/src/m/enum/SurfaceSlopeXEnum.m

    r6166 r6200  
    99%      macro=SurfaceSlopeXEnum()
    1010
    11 macro=185;
     11macro=186;
  • issm/trunk/src/m/enum/SurfaceSlopeYEnum.m

    r6166 r6200  
    99%      macro=SurfaceSlopeYEnum()
    1010
    11 macro=186;
     11macro=187;
  • issm/trunk/src/m/enum/TemperatureEnum.m

    r6166 r6200  
    99%      macro=TemperatureEnum()
    1010
    11 macro=187;
     11macro=188;
  • issm/trunk/src/m/enum/TemperatureOldEnum.m

    r6166 r6200  
    99%      macro=TemperatureOldEnum()
    1010
    11 macro=189;
     11macro=190;
  • issm/trunk/src/m/enum/TemporaryTemperatureEnum.m

    r6166 r6200  
    99%      macro=TemporaryTemperatureEnum()
    1010
    11 macro=188;
     11macro=189;
  • issm/trunk/src/m/enum/ThermalConductivityEnum.m

    r6166 r6200  
    99%      macro=ThermalConductivityEnum()
    1010
    11 macro=252;
     11macro=253;
  • issm/trunk/src/m/enum/ThermalExchangeVelocityEnum.m

    r6166 r6200  
    99%      macro=ThermalExchangeVelocityEnum()
    1010
    11 macro=254;
     11macro=255;
  • issm/trunk/src/m/enum/ThicknessAbsMisfitEnum.m

    r6166 r6200  
    99%      macro=ThicknessAbsMisfitEnum()
    1010
    11 macro=155;
     11macro=156;
  • issm/trunk/src/m/enum/ThicknessEnum.m

    r6166 r6200  
    99%      macro=ThicknessEnum()
    1010
    11 macro=190;
     11macro=191;
  • issm/trunk/src/m/enum/ThicknessObsEnum.m

    r6166 r6200  
    99%      macro=ThicknessObsEnum()
    1010
    11 macro=191;
     11macro=192;
  • issm/trunk/src/m/enum/TimeAdaptEnum.m

    r6166 r6200  
    99%      macro=TimeAdaptEnum()
    1010
    11 macro=139;
     11macro=140;
  • issm/trunk/src/m/enum/TimeEnum.m

    r6166 r6200  
    99%      macro=TimeEnum()
    1010
    11 macro=233;
     11macro=234;
  • issm/trunk/src/m/enum/TriaVertexElementResultEnum.m

    r6166 r6200  
    99%      macro=TriaVertexElementResultEnum()
    1010
    11 macro=220;
     11macro=221;
  • issm/trunk/src/m/enum/TypeEnum.m

    r6166 r6200  
    99%      macro=TypeEnum()
    1010
    11 macro=192;
     11macro=193;
  • issm/trunk/src/m/enum/VelEnum.m

    r6166 r6200  
    99%      macro=VelEnum()
    1010
    11 macro=193;
     11macro=194;
  • issm/trunk/src/m/enum/VelObsEnum.m

    r6166 r6200  
    99%      macro=VelObsEnum()
    1010
    11 macro=194;
     11macro=195;
  • issm/trunk/src/m/enum/ViscosityOvershootEnum.m

    r6166 r6200  
    99%      macro=ViscosityOvershootEnum()
    1010
    11 macro=195;
     11macro=196;
  • issm/trunk/src/m/enum/VxAverageEnum.m

    r6166 r6200  
    99%      macro=VxAverageEnum()
    1010
    11 macro=196;
     11macro=197;
  • issm/trunk/src/m/enum/VxEnum.m

    r6166 r6200  
    99%      macro=VxEnum()
    1010
    11 macro=197;
     11macro=198;
  • issm/trunk/src/m/enum/VxObsEnum.m

    r6166 r6200  
    99%      macro=VxObsEnum()
    1010
    11 macro=198;
     11macro=199;
  • issm/trunk/src/m/enum/VxOldEnum.m

    r6166 r6200  
    99%      macro=VxOldEnum()
    1010
    11 macro=199;
     11macro=200;
  • issm/trunk/src/m/enum/VyAverageEnum.m

    r6166 r6200  
    99%      macro=VyAverageEnum()
    1010
    11 macro=201;
     11macro=202;
  • issm/trunk/src/m/enum/VyEnum.m

    r6166 r6200  
    99%      macro=VyEnum()
    1010
    11 macro=202;
     11macro=203;
  • issm/trunk/src/m/enum/VyObsEnum.m

    r6166 r6200  
    99%      macro=VyObsEnum()
    1010
    11 macro=203;
     11macro=204;
  • issm/trunk/src/m/enum/VyOldEnum.m

    r6166 r6200  
    99%      macro=VyOldEnum()
    1010
    11 macro=204;
     11macro=205;
  • issm/trunk/src/m/enum/VzAverageEnum.m

    r6166 r6200  
    99%      macro=VzAverageEnum()
    1010
    11 macro=206;
     11macro=207;
  • issm/trunk/src/m/enum/VzEnum.m

    r6166 r6200  
    99%      macro=VzEnum()
    1010
    11 macro=207;
     11macro=208;
  • issm/trunk/src/m/enum/VzMacAyealEnum.m

    r6166 r6200  
    99%      macro=VzMacAyealEnum()
    1010
    11 macro=210;
     11macro=211;
  • issm/trunk/src/m/enum/VzObsEnum.m

    r6166 r6200  
    99%      macro=VzObsEnum()
    1010
    11 macro=208;
     11macro=209;
  • issm/trunk/src/m/enum/VzOldEnum.m

    r6166 r6200  
    99%      macro=VzOldEnum()
    1010
    11 macro=209;
     11macro=210;
  • issm/trunk/src/m/enum/VzPattynEnum.m

    r6166 r6200  
    99%      macro=VzPattynEnum()
    1010
    11 macro=211;
     11macro=212;
  • issm/trunk/src/m/enum/VzStokesEnum.m

    r6166 r6200  
    99%      macro=VzStokesEnum()
    1010
    11 macro=212;
     11macro=213;
  • issm/trunk/src/m/enum/WaterEnum.m

    r6166 r6200  
    99%      macro=WaterEnum()
    1010
    11 macro=113;
     11macro=114;
  • issm/trunk/src/m/enum/WeightsEnum.m

    r6166 r6200  
    99%      macro=WeightsEnum()
    1010
    11 macro=214;
     11macro=215;
  • issm/trunk/src/m/solutions/control_core.m

    r5466 r6200  
    8484        %Some results not computed by diagnostic or steadystate
    8585        femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type);
    86         femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,GradientEnum);
    8786        femmodel.results=AddExternalResult(femmodel.results,JEnum,J);
    8887        femmodel.results=AddExternalResult(femmodel.results,ControlTypeEnum,control_type);
  • issm/trunk/src/m/solutions/gradient_core.m

    r5466 r6200  
    2525        control_steady=femmodel.parameters.ControlSteady;
    2626
    27         displaystring(verbose,'\n%s',['      compute gradient...']);
     27        displaystring(verbose,'%s\n',['      compute gradient...']);
    2828        grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
    2929
    30         displaystring(verbose,'\n%s',['      retrieve old gradient...']);
    31         old_gradient=GetVectorFromInputs(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,OldGradientEnum,VertexEnum);
    3230
    3331        if control_steady;
     
    3634
    3735        if (step>1 && search_scalar==0),
    38                 displaystring(verbose,'\n%s',['      orthogonalization...']);
     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);
    3939                new_gradient=Orth(grad,old_gradient);
    4040        else
    41                 displaystring(verbose,'\n%s',['      normalizing direction...']);
     41                displaystring(verbose,'%s\n',['      normalizing direction...']);
    4242                new_gradient=Orth(grad,[]);
    4343        end
    44         displaystring(verbose,'\n%s',['      done...']);
    45 
    46         %point gradient and old_gradient to new_gradient:
    47         grad=new_gradient;
    48         old_gradient=new_gradient;
    4944
    5045        %plug back into inputs:
    51         [femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=InputUpdateFromVector(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,grad,GradientEnum,VertexEnum);
    52         [femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=InputUpdateFromVector(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,old_gradient,OldGradientEnum,VertexEnum);
     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/mex/Makefile.am

    r6130 r6200  
    1414                                ConfigureObjects \
    1515                                ControlOptimization\
     16                                ControlInputGetGradient\
     17                                ControlInputSetGradient\
    1618                                ContourToMesh \
    1719                                ContourToNodes \
     
    128130                          ControlOptimization/ControlOptimization.h
    129131
     132ControlInputGetGradient_SOURCES = ControlInputGetGradient/ControlInputGetGradient.cpp\
     133                                                                                ControlInputGetGradient/ControlInputGetGradient.h
     134
     135ControlInputSetGradient_SOURCES = ControlInputSetGradient/ControlInputSetGradient.cpp\
     136                          ControlInputSetGradient/ControlInputSetGradient.h
     137
    130138InputControlUpdate_SOURCES = InputControlUpdate/InputControlUpdate.cpp\
    131139                                                                                  InputControlUpdate/InputControlUpdate.h
Note: See TracChangeset for help on using the changeset viewer.