Changeset 21518


Ignore:
Timestamp:
02/03/17 16:05:09 (8 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added some changes for P1 interpolation

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r21513 r21518  
    11621162        int         numnodes    = this->GetNumberOfNodes();
    11631163        int*        doflist     = NULL;
     1164        IssmDouble  value;
    11641165        IssmDouble* values      = NULL;
     1166        Input*      input       = NULL;
    11651167
    11661168        switch(type){
    1167         case VertexPIdEnum:
    1168                 doflist = xNew<int>(numvertices);
    1169                 values = xNew<IssmDouble>(numvertices);
    1170                 /*Fill in values*/
    1171                 this->GetVertexPidList(doflist);
    1172                 this->GetInputListOnVertices(values,input_enum);
    1173                 vector->SetValues(numvertices,doflist,values,INS_VAL);
    1174                 break;
    1175         case VertexSIdEnum:
    1176                 doflist = xNew<int>(numvertices);
    1177                 values = xNew<IssmDouble>(numvertices);
    1178                 /*Fill in values*/
    1179                 this->GetVerticesSidList(doflist);
    1180                 this->GetInputListOnVertices(values,input_enum);
    1181                 vector->SetValues(numvertices,doflist,values,INS_VAL);
    1182                 break;
    1183         case NodesEnum:
    1184                 doflist = xNew<int>(numnodes);
    1185                 values = xNew<IssmDouble>(numnodes);
    1186                 /*Fill in values*/
    1187                 this->GetInputListOnNodes(values,input_enum);
    1188                 this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
    1189                 vector->SetValues(numnodes,doflist,values,INS_VAL);
    1190                 break;
    1191         case NodeSIdEnum:
    1192                 doflist = xNew<int>(numnodes);
    1193                 values = xNew<IssmDouble>(numnodes);
    1194                 /*Fill in values*/
    1195                 this->GetNodesSidList(doflist);
    1196                 this->GetInputListOnNodes(values,input_enum);
    1197                 vector->SetValues(numnodes,doflist,values,INS_VAL);
    1198                 break;
    1199         default:
    1200                 _error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
    1201         }
    1202        
     1169                case ElementSIdEnum:
     1170                        input=inputs->GetInput(input_enum); _assert_(input);
     1171                        input->GetInputAverage(&value);
     1172                        vector->SetValue(this->sid,value,INS_VAL);
     1173                        break;
     1174                case VertexPIdEnum:
     1175                        doflist = xNew<int>(numvertices);
     1176                        values = xNew<IssmDouble>(numvertices);
     1177                        /*Fill in values*/
     1178                        this->GetVertexPidList(doflist);
     1179                        this->GetInputListOnVertices(values,input_enum);
     1180                        vector->SetValues(numvertices,doflist,values,INS_VAL);
     1181                        break;
     1182                case VertexSIdEnum:
     1183                        doflist = xNew<int>(numvertices);
     1184                        values = xNew<IssmDouble>(numvertices);
     1185                        /*Fill in values*/
     1186                        this->GetVerticesSidList(doflist);
     1187                        this->GetInputListOnVertices(values,input_enum);
     1188                        vector->SetValues(numvertices,doflist,values,INS_VAL);
     1189                        break;
     1190                case NodesEnum:
     1191                        doflist = xNew<int>(numnodes);
     1192                        values = xNew<IssmDouble>(numnodes);
     1193                        /*Fill in values*/
     1194                        this->GetInputListOnNodes(values,input_enum);
     1195                        this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
     1196                        vector->SetValues(numnodes,doflist,values,INS_VAL);
     1197                        break;
     1198                case NodeSIdEnum:
     1199                        doflist = xNew<int>(numnodes);
     1200                        values = xNew<IssmDouble>(numnodes);
     1201                        /*Fill in values*/
     1202                        this->GetNodesSidList(doflist);
     1203                        this->GetInputListOnNodes(values,input_enum);
     1204                        vector->SetValues(numnodes,doflist,values,INS_VAL);
     1205                        break;
     1206                default:
     1207                        _error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
     1208        }
     1209
    12031210        /*Clean up*/
    12041211        xDelete<int>(doflist);
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r21517 r21518  
    1515#include "./modules/modules.h"
    1616#include "../shared/Enum/Enum.h"
    17 
    1817#include "../analyses/analyses.h"
    1918
     
    32023201        IssmDouble* P0inputsold = xNew<IssmDouble>(numelementsold*numP0inputs);
    32033202        IssmDouble* P0inputsnew = NULL;
     3203        IssmDouble* vector      = NULL;
    32043204
    32053205        for(int i=0;i<numP0inputs;i++){
    32063206                printf("Dealing with %s (type: %s)\n",EnumToStringx(P0input_enums[i]),EnumToStringx(P0input_interp[i]));
    3207         }
     3207                GetVectorFromInputsx(&vector,this,P0input_enums[i],ElementSIdEnum);
     3208
     3209                /*Copy vector in matrix*/
     3210                xMemCpy<int>(&P0inputsold[i*numelementsold],vector,numelementsold);
     3211                xDelete<IssmDouble>(vector);
     3212        }
     3213        printf("Printing array to make sure it looks alright\n");
     3214        printarray(P0inputsold,numelementsold,numP0inputs);
    32083215
    32093216        _error_("stop");
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21510 r21518  
    853853        MassconaxpbyEnum,
    854854        NodeSIdEnum,
     855        ElementSIdEnum,
    855856        VectorParamEnum,
    856857        RiftfrontEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21510 r21518  
    827827                case MassconaxpbyEnum : return "Massconaxpby";
    828828                case NodeSIdEnum : return "NodeSId";
     829                case ElementSIdEnum : return "ElementSId";
    829830                case VectorParamEnum : return "VectorParam";
    830831                case RiftfrontEnum : return "Riftfront";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21510 r21518  
    845845              else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
    846846              else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
     847              else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
    847848              else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
    848849              else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
     
    874875              else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
    875876              else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
    876               else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
     880              if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
     881              else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
    881882              else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
    882883              else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
     
    997998              else if (strcmp(name,"Nodes")==0) return NodesEnum;
    998999              else if (strcmp(name,"Contours")==0) return ContoursEnum;
    999               else if (strcmp(name,"Parameters")==0) return ParametersEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"Vertices")==0) return VerticesEnum;
     1003              if (strcmp(name,"Parameters")==0) return ParametersEnum;
     1004              else if (strcmp(name,"Vertices")==0) return VerticesEnum;
    10041005              else if (strcmp(name,"Results")==0) return ResultsEnum;
    10051006              else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
Note: See TracChangeset for help on using the changeset viewer.