Changeset 18057


Ignore:
Timestamp:
05/25/14 17:30:19 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: working on migrating gradients to adjoints

Location:
issm/trunk-jpl/src/c/analyses
Files:
66 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp

    r18055 r18057  
    123123        _error_("not implemented yet");
    124124}/*}}}*/
    125 void AdjointBalancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     125void AdjointBalancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    126126        _error_("Not implemented yet");
    127127}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp

    r18055 r18057  
    150150        _error_("not implemented yet");
    151151}/*}}}*/
    152 void AdjointBalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     152void AdjointBalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    153153        _error_("Not implemented yet");
    154154}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp

    r18055 r18057  
    900900           _error_("not implemented yet");
    901901}/*}}}*/
    902 void AdjointHorizAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
    903         _error_("Not implemented yet");
     902void AdjointHorizAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
     903        /*The gradient of the cost function is calculated in 2 parts.
     904         *
     905         * dJ    \partial J   \partial lambda^T(KU-F)
     906         * --  = ---------- + ------------------------
     907         * dk    \partial k   \parial k                 
     908         *
     909         * */
     910
     911        /*If on water, grad = 0: */
     912        if(!element->IsIceInElement()) return;
     913
     914        /*Get Approximation*/
     915        int approximation;
     916        element->GetInputValue(&approximation,ApproximationEnum);
     917
     918        /*Get list of cost functions*/
     919        int *responses = NULL;
     920        int num_responses,resp;
     921        element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
     922        element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
     923
     924        /*Check that control_type is supported*/
     925        if(control_type!=MaterialsRheologyBbarEnum || control_type!=FrictionCoefficientEnum || control_type!=DamageDbarEnum){
     926                _error_("Control "<<EnumToStringx(control_type)<<" not supported");
     927        }
     928
     929        /*Deal with first part (partial derivative a J with respect to k)*/
     930        for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
     931                case SurfaceAbsVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
     932                case SurfaceRelVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
     933                case SurfaceLogVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
     934                case SurfaceLogVxVyMisfitEnum:    /*Nothing, \partial J/\partial k = 0*/ break;
     935                case SurfaceAverageVelMisfitEnum: /*Nothing, \partial J/\partial k = 0*/ break;
     936                case DragCoefficientAbsGradientEnum: GradientJDragGradient(element,gradient,control_index); break;
     937                case RheologyBbarAbsGradientEnum:    GradientJBGradient(element,gradient,control_index);    break;
     938                default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
     939        }
     940
     941        /*Deal with second term*/
     942        switch(control_type){
     943                case FrictionCoefficientEnum:
     944                        switch(approximation){
     945                                case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_index); break;
     946                                case HOApproximationEnum:  GradientJDragHO( element,gradient,control_index); break;
     947                                case FSApproximationEnum:  GradientJDragFS( element,gradient,control_index); break;
     948                                case NoneApproximationEnum: /*Gradient is 0*/                    break;
     949                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     950                        }
     951                        break;
     952                case MaterialsRheologyBbarEnum:
     953                        switch(approximation){
     954                                case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_index); break;
     955                                case HOApproximationEnum:  GradientJBbarHO( element,gradient,control_index); break;
     956                                case FSApproximationEnum:  GradientJBbarFS( element,gradient,control_index); break;
     957                                case NoneApproximationEnum: /*Gradient is 0*/                    break;
     958                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     959                        }
     960                        break;
     961                case DamageDbarEnum:
     962                        switch(approximation){
     963                                case SSAApproximationEnum: GradientJDSSA(element,gradient,control_index); break;
     964                                case NoneApproximationEnum: /*Gradient is 0*/                 break;
     965                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     966                        }
     967                        break;
     968                default: _error_("control type not supported yet: " << EnumToStringx(control_type));
     969        }
     970
     971        /*Clean up and return*/
     972        xDelete<int>(responses);
     973                         
     974}/*}}}*/
     975void AdjointHorizAnalysis::GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     976        _error_("not implemented yet");
     977}/*}}}*/
     978void AdjointHorizAnalysis::GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     979        _error_("not implemented yet");
     980}/*}}}*/
     981void AdjointHorizAnalysis::GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     982        _error_("not implemented yet");
     983}/*}}}*/
     984void AdjointHorizAnalysis::GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     985        _error_("not implemented yet");
     986}/*}}}*/
     987void AdjointHorizAnalysis::GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     988        _error_("not implemented yet");
     989}/*}}}*/
     990void AdjointHorizAnalysis::GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     991        _error_("not implemented yet");
     992}/*}}}*/
     993void AdjointHorizAnalysis::GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     994        _error_("not implemented yet");
     995}/*}}}*/
     996void AdjointHorizAnalysis::GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     997        _error_("not implemented yet");
     998}/*}}}*/
     999void AdjointHorizAnalysis::GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     1000        _error_("not implemented yet");
    9041001}/*}}}*/
    9051002void AdjointHorizAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
  • issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h

    r18055 r18057  
    3333                ElementVector* CreatePVectorFS(Element* element);
    3434                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    35                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     35                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
     36                void GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
     37                void GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
     38                void GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
     39                void GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
     40                void GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
     41                void GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
     42                void GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
     43                void GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
     44                void GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
    3645                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3746                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/Analysis.h

    r18055 r18057  
    4040                virtual ElementVector* CreatePVector(Element* element)=0;
    4141                virtual void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element)=0;
    42                 virtual void GradientJ(Vector<IssmDouble>* gradient,int control_index)=0;
     42                virtual void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index)=0;
    4343                virtual void InputUpdateFromSolution(IssmDouble* solution,Element* element)=0;
    4444                virtual void UpdateConstraints(FemModel* femmodel)=0;
  • issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp

    r18055 r18057  
    196196           _error_("not implemented yet");
    197197}/*}}}*/
    198 void Balancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     198void Balancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    199199        _error_("Not implemented yet");
    200200}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.h

    r18055 r18057  
    2929                ElementVector* CreatePVectorBoundary(Element* element);
    3030                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    31                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     31                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3232                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3333                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp

    r18055 r18057  
    479479           _error_("not implemented yet");
    480480}/*}}}*/
    481 void BalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     481void BalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    482482        _error_("Not implemented yet");
    483483}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h

    r18055 r18057  
    3333                void GetBprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    3434                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    35                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     35                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3636                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3737                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp

    r18055 r18057  
    4545           _error_("not implemented yet");
    4646}/*}}}*/
    47 void BalancethicknessSoftAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     47void BalancethicknessSoftAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    4848        _error_("Not implemented yet");
    4949}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp

    r18055 r18057  
    241241           _error_("not implemented yet");
    242242}/*}}}*/
    243 void BalancevelocityAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     243void BalancevelocityAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    244244        _error_("Not implemented yet");
    245245}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp

    r18055 r18057  
    383383           _error_("not implemented yet");
    384384}/*}}}*/
    385 void DamageEvolutionAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     385void DamageEvolutionAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    386386        _error_("Not implemented yet");
    387387}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h

    r18055 r18057  
    2929                void GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3030                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    31                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     31                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3232                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3333                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp

    r18055 r18057  
    160160           _error_("not implemented yet");
    161161}/*}}}*/
    162 void DepthAverageAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     162void DepthAverageAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    163163        _error_("Not implemented yet");
    164164}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.h

    r18055 r18057  
    2828                void GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    2929                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    30                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     30                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3131                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3232                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp

    r18055 r18057  
    780780        element->GetSolutionFromInputsOneDof(solution,EnthalpyEnum);
    781781}/*}}}*/
    782 void EnthalpyAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     782void EnthalpyAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    783783        _error_("Not implemented yet");
    784784}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h

    r18055 r18057  
    3535                void GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    3636                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    37                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     37                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3838                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3939                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h

    r18055 r18057  
    2222                ElementVector* CreatePVector(Element* element);
    2323                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    24                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     24                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    2525                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    2626                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp

    r18055 r18057  
    240240        _error_("not implemented yet");
    241241}/*}}}*/
    242 void ExtrapolationAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     242void ExtrapolationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    243243        _error_("Not implemented yet");
    244244}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.h

    r18055 r18057  
    2727        ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030        void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131        void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp

    r18055 r18057  
    222222           _error_("not implemented yet");
    223223}/*}}}*/
    224 void ExtrudeFromBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     224void ExtrudeFromBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    225225        _error_("Not implemented yet");
    226226}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h

    r18055 r18057  
    3131                void GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3232                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    33                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     33                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3434                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3535                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp

    r18055 r18057  
    222222           _error_("not implemented yet");
    223223}/*}}}*/
    224 void ExtrudeFromTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     224void ExtrudeFromTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    225225        _error_("Not implemented yet");
    226226}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h

    r18055 r18057  
    3131                void GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3232                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    33                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     33                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3434                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3535                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp

    r18055 r18057  
    364364           _error_("not implemented yet");
    365365}/*}}}*/
    366 void FreeSurfaceBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     366void FreeSurfaceBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    367367        _error_("Not implemented yet");
    368368}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h

    r18055 r18057  
    2929                void GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3030                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    31                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     31                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3232                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3333                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp

    r18055 r18057  
    367367           _error_("not implemented yet");
    368368}/*}}}*/
    369 void FreeSurfaceTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     369void FreeSurfaceTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    370370        _error_("Not implemented yet");
    371371}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h

    r18055 r18057  
    2929                void GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3030                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    31                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     31                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3232                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3333                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp

    r18055 r18057  
    5757           _error_("not implemented yet");
    5858}/*}}}*/
    59 void GiaAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     59void GiaAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    6060        _error_("Not implemented yet");
    6161}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/GiaAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp

    r18055 r18057  
    317317        element->GetSolutionFromInputsOneDof(solution,EplHeadEnum);
    318318}/*}}}*/
    319 void HydrologyDCEfficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     319void HydrologyDCEfficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    320320        _error_("Not implemented yet");
    321321}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h

    r18055 r18057  
    2828                ElementVector* CreatePVector(Element* element);
    2929                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    30                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     30                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3131                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3232                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

    r18055 r18057  
    393393        element->GetSolutionFromInputsOneDof(solution,SedimentHeadEnum);
    394394}/*}}}*/
    395 void HydrologyDCInefficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     395void HydrologyDCInefficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    396396        _error_("Not implemented yet");
    397397}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h

    r18055 r18057  
    2828                ElementVector* CreatePVector(Element* element);
    2929                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    30                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     30                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3131                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3232                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp

    r18055 r18057  
    292292        element->GetSolutionFromInputsOneDof(solution,WatercolumnEnum);
    293293}/*}}}*/
    294 void HydrologyShreveAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     294void HydrologyShreveAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    295295        _error_("Not implemented yet");
    296296}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp

    r18055 r18057  
    199199           _error_("not implemented yet");
    200200}/*}}}*/
    201 void L2ProjectionBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     201void L2ProjectionBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    202202        _error_("Not implemented yet");
    203203}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp

    r18055 r18057  
    229229           _error_("not implemented yet");
    230230}/*}}}*/
    231 void L2ProjectionEPLAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     231void L2ProjectionEPLAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    232232        _error_("Not implemented yet");
    233233}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r18055 r18057  
    308308        _error_("not implemented yet");
    309309}/*}}}*/
    310 void LevelsetAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     310void LevelsetAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    311311        _error_("Not implemented yet");
    312312}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp

    r18055 r18057  
    284284
    285285}/*}}}*/
    286 void LsfReinitializationAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     286void LsfReinitializationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    287287        _error_("Not implemented yet");
    288288}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.h

    r18055 r18057  
    2727        ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030        void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131        void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r18055 r18057  
    675675           _error_("not implemented yet");
    676676}/*}}}*/
    677 void MasstransportAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     677void MasstransportAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    678678        _error_("Not implemented yet");
    679679}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h

    r18055 r18057  
    3333                void GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
    3434                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    35                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     35                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3636                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3737                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp

    r18055 r18057  
    151151           _error_("not implemented yet");
    152152}/*}}}*/
    153 void MeltingAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     153void MeltingAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    154154        _error_("Not implemented yet");
    155155}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp

    r18055 r18057  
    4545           _error_("not implemented yet");
    4646}/*}}}*/
    47 void MeshdeformationAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     47void MeshdeformationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    4848        _error_("Not implemented yet");
    4949}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp

    r18055 r18057  
    172172           _error_("not implemented yet");
    173173}/*}}}*/
    174 void SmoothedSurfaceSlopeXAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     174void SmoothedSurfaceSlopeXAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    175175        _error_("Not implemented yet");
    176176}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp

    r18055 r18057  
    171171           _error_("not implemented yet");
    172172}/*}}}*/
    173 void SmoothedSurfaceSlopeYAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     173void SmoothedSurfaceSlopeYAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    174174        _error_("Not implemented yet");
    175175}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3131                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r18055 r18057  
    10401040        xDelete<int>(doflist);
    10411041}/*}}}*/
    1042 void StressbalanceAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     1042void StressbalanceAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    10431043        _error_("Not implemented yet");
    10441044}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h

    r18055 r18057  
    2727                ElementVector* CreatePVector(Element* element);
    2828                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    29                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     29                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3030                void GetSolutionFromInputsHoriz(Vector<IssmDouble>* solution,Element* element);
    3131                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
  • issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

    r18055 r18057  
    493493        xDelete<IssmDouble>(values);
    494494}/*}}}*/
    495 void StressbalanceSIAAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     495void StressbalanceSIAAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    496496        _error_("Not implemented yet");
    497497}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h

    r18055 r18057  
    3131                ElementVector* CreatePVector3D(Element* element);
    3232                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    33                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     33                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3434                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3535                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp

    r18055 r18057  
    357357        element->GetSolutionFromInputsOneDof(solution,VzEnum);
    358358}/*}}}*/
    359 void StressbalanceVerticalAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     359void StressbalanceVerticalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    360360        _error_("Not implemented yet");
    361361}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h

    r18055 r18057  
    3333                void GetBprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    3434                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    35                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     35                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3636                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3737                void UpdateConstraints(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp

    r18055 r18057  
    654654        xDelete<IssmDouble>(dbasis);
    655655}/*}}}*/
    656 void ThermalAnalysis::GradientJ(Vector<IssmDouble>* gradient,int control_index){/*{{{*/
     656void ThermalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    657657        _error_("Not implemented yet");
    658658}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h

    r18055 r18057  
    3535                void GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    3636                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    37                 void GradientJ(Vector<IssmDouble>* gradient,int control_index);
     37                void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
    3838                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
    3939                void UpdateConstraints(FemModel* femmodel);
Note: See TracChangeset for help on using the changeset viewer.