Changeset 22200


Ignore:
Timestamp:
10/30/17 09:47:18 (7 years ago)
Author:
erobo
Message:

NEW: added inflow constraint as a possible variable for dakota, only working for MC for now

Location:
issm/trunk-jpl/src/c
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Constraints/Constraint.h

    r18931 r22200  
    2424                virtual bool InAnalysis(int analysis_type)=0;
    2525                virtual void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters)=0;
     26                virtual void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type) = 0;
    2627
    2728};
  • issm/trunk-jpl/src/c/classes/Constraints/SpcDynamic.h

    r20810 r22200  
    4242                bool InAnalysis(int analysis_type);
    4343                void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
     44                void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){_error_("not implemented yet");};
    4445
    4546                /*SpcDynamic management*/
  • issm/trunk-jpl/src/c/classes/Constraints/SpcStatic.cpp

    r20810 r22200  
    100100void SpcStatic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
    101101
    102         Node* node=NULL;
    103 
    104102        /*Chase through nodes and find the node to which this SpcStatic applys: */
    105         node=(Node*)nodes->GetObjectById(NULL,nodeid);
     103        Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
    106104
    107105        /*Apply constraint: */
     
    114112        if (in_analysis_type==this->analysis_type) return true;
    115113        else return false;
     114}
     115/*}}}*/
     116void SpcStatic::InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){/*{{{*/
     117
     118        /*Chase through nodes and find the node to which this SpcStatic applys: */
     119        Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
     120
     121        /*Apply constraint: */
     122        if(node){ //in case the spc is dealing with a node on another cpu
     123                int sid = node->Sid();
     124                this->value = vector[sid];
     125                _assert_(!xIsNan<IssmDouble>(this->value));
     126        }
    116127}
    117128/*}}}*/
  • issm/trunk-jpl/src/c/classes/Constraints/SpcStatic.h

    r20810 r22200  
    3838                /*Constraint virtual functions definitions: {{{*/
    3939                void ActivatePenaltyMethod(void);
    40                 void   ConstrainNode(Nodes* nodes,Parameters* parameters);
    41                 bool   InAnalysis(int analysis_type);
    42                 void   PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
     40                void ConstrainNode(Nodes* nodes,Parameters* parameters);
     41                bool InAnalysis(int analysis_type);
     42                void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
     43                void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type);
    4344                /*}}}*/
    4445                /*SpcStatic management:{{{ */
  • issm/trunk-jpl/src/c/classes/Constraints/SpcTransient.h

    r20810 r22200  
    4343                bool   InAnalysis(int analysis_type);
    4444                void   PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters);
     45                void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){_error_("not implemented yet");};
    4546                /*}}}*/
    4647                /*SpcTransient management:{{{ */
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r22199 r22200  
    17921792                                name==DeviatoricStresseffectiveEnum ||
    17931793                                name==VxAverageEnum ||
    1794                                 name==VyAverageEnum
     1794                                name==VyAverageEnum ||
     1795                                name==BalancethicknessSpcthicknessEnum
    17951796
    17961797                                ) {
  • issm/trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp

    r18521 r22200  
    1818void InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name, int type){
    1919
    20         int i;
    21 
    2220        /*Update elements, nodes, loads and materials from inputs: */
    23         for(i=0;i<femmodel->elements->Size();i++){
     21        for(int i=0;i<femmodel->elements->Size();i++){
    2422                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
    2523                element->InputUpdateFromVectorDakota(vector,name,type);
    2624        }
    27         for(i=0;i<femmodel->loads->Size();i++){
     25        for(int i=0;i<femmodel->loads->Size();i++){
    2826                Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
    2927                load->InputUpdateFromVectorDakota(vector,name,type);
    3028        }
    31         for(i=0;i<femmodel->materials->Size();i++){
     29        for(int i=0;i<femmodel->materials->Size();i++){
    3230                Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
    3331                material->InputUpdateFromVectorDakota(vector,name,type);
    3432        }
     33        for(int i=0;i<femmodel->constraints->Size();i++){
     34                Constraint* constraint=(Constraint*)femmodel->constraints->GetObjectByOffset(i);
     35                constraint->InputUpdateFromVectorDakota(vector,femmodel->nodes,name,type);
     36        }
    3537}
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r22199 r22200  
    378378        TransientNumRequestedOutputsEnum,
    379379        TransientRequestedOutputsEnum,
     380        BalancethicknessSpcthicknessEnum,
    380381        BalancethicknessApparentMassbalanceEnum,
    381382        BalancethicknessDiffusionCoefficientEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r22199 r22200  
    384384                case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
    385385                case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
     386                case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
    386387                case BalancethicknessApparentMassbalanceEnum : return "BalancethicknessApparentMassbalance";
    387388                case BalancethicknessDiffusionCoefficientEnum : return "BalancethicknessDiffusionCoefficient";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r22199 r22200  
    393393              else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
    394394              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
     395              else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
    395396              else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
    396397              else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum;
     
    505506              else if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum;
    506507              else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum;
    507               else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
     511              if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
     512              else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
    512513              else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
    513514              else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
     
    628629              else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
    629630              else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
    630               else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
     634              if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
     635              else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
    635636              else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
    636637              else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
     
    751752              else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
    752753              else if (strcmp(name,"Gradient")==0) return GradientEnum;
    753               else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"Gset")==0) return GsetEnum;
     757              if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
     758              else if (strcmp(name,"Gset")==0) return GsetEnum;
    758759              else if (strcmp(name,"Index")==0) return IndexEnum;
    759760              else if (strcmp(name,"Indexed")==0) return IndexedEnum;
     
    874875              else if (strcmp(name,"AmrGroundingLineDistance")==0) return AmrGroundingLineDistanceEnum;
    875876              else if (strcmp(name,"AmrIceFrontResolution")==0) return AmrIceFrontResolutionEnum;
    876               else if (strcmp(name,"AmrIceFrontDistance")==0) return AmrIceFrontDistanceEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"AmrThicknessErrorResolution")==0) return AmrThicknessErrorResolutionEnum;
     880              if (strcmp(name,"AmrIceFrontDistance")==0) return AmrIceFrontDistanceEnum;
     881              else if (strcmp(name,"AmrThicknessErrorResolution")==0) return AmrThicknessErrorResolutionEnum;
    881882              else if (strcmp(name,"AmrThicknessErrorThreshold")==0) return AmrThicknessErrorThresholdEnum;
    882883              else if (strcmp(name,"AmrDeviatoricErrorResolution")==0) return AmrDeviatoricErrorResolutionEnum;
     
    997998              else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
    998999              else if (strcmp(name,"GiaIvinsAnalysis")==0) return GiaIvinsAnalysisEnum;
    999               else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
     1003              if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
     1004              else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
    10041005              else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
    10051006              else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
Note: See TracChangeset for help on using the changeset viewer.