Changeset 20993


Ignore:
Timestamp:
07/24/16 00:20:27 (9 years ago)
Author:
agscott1
Message:

CHG: Changed flowequation classes to use IoCodeToEnumElementEquation and IoCodeToEnumVertexEquation for StressbalanceAnalysis and Penta/Tetra/Tria Elements.

Location:
issm/trunk-jpl/src
Files:
11 edited

Legend:

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

    r20835 r20993  
    130130                                        for(i=0;i<iomodel->numberofvertices;i++){
    131131                                                if(iomodel->my_vertices[i]){
    132                                                         if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
     132                                                        if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
    133133                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    134134                                                                count++;
     
    140140                                        for(i=0;i<iomodel->numberofvertices;i++){
    141141                                                if(iomodel->my_vertices[i]){
    142                                                         if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
     142                                                        if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
    143143                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    144144                                                                count++;
     
    150150                                        for(i=0;i<iomodel->numberofvertices;i++){
    151151                                                if(iomodel->my_vertices[i]){
    152                                                         if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
     152                                                        if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
    153153                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    154154                                                                count++;
     
    160160                                        for(i=0;i<iomodel->numberofvertices;i++){
    161161                                                if(iomodel->my_vertices[i]){
    162                                                         if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
     162                                                        if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
    163163                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    164164                                                                count++;
     
    224224
    225225                        /*Start with adding spcs of coupling: zero at the border SSA/HO for the appropriate dofs*/
    226                         if(reCast<int,IssmDouble>(vertices_type[i]==SSAHOApproximationEnum)){
     226                        if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAHOApproximationEnum){
    227227                                /*If grionSSA, spc HO dofs: 3 & 4*/
    228228                                        if (reCast<int,IssmDouble>(nodeonHO[i])){
     
    259259                        }
    260260                        /*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
    261                         else if (reCast<int,IssmDouble>(vertices_type[i])==HOFSApproximationEnum){
     261                        else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==HOFSApproximationEnum){
    262262                                /*If grion,HO spc FS dofs: 3 4 & 5*/
    263263                                        if (reCast<int,IssmDouble>(nodeonHO[i])){
     
    299299                        }
    300300                        /*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
    301                         else if (reCast<int,IssmDouble>(vertices_type[i])==SSAFSApproximationEnum){
     301                        else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAFSApproximationEnum){
    302302                                /*If grion,HO spc FS dofs: 3 4 & 5*/
    303303                                        if (reCast<int,IssmDouble>(nodeonSSA[i])){
     
    360360                                        xDelete<IssmDouble>(values);
    361361                                }
    362                                 else if (vertices_type[i]==SIAApproximationEnum){
     362                                else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
    363363                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,StressbalanceAnalysisEnum));
    364364                                        count++;
     
    383383                                        xDelete<IssmDouble>(values);
    384384                                }
    385                                 else if (vertices_type[i]==SIAApproximationEnum){
     385                                else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
    386386                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum));
    387387                                        count++;
    388388                                }
    389389
    390                                 if (reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum ||  (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){
     390                                if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==FSApproximationEnum ||  (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum)){
    391391                                        if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){
    392392                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     
    409409
    410410                                }
    411                                 if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
     411                                if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
    412412                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    413413                                        count++;
     
    560560                        for(int i=0;i<iomodel->numberofvertices;i++){
    561561                                if(iomodel->my_vertices[i]){
    562                                         approximation=reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]);
     562                                        approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
    563563                                        if(approximation==FSApproximationEnum)  approximation=FSvelocityEnum;
    564564                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation));
     
    575575                        for(int i=0;i<iomodel->numberofvertices;i++){
    576576                                if(iomodel->my_vertices[i]){
    577                                         approximation=reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]);
     577                                        approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
    578578                                        node = new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
    579579                                        if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){
     
    587587                        for(int i=0;i<iomodel->numberofvertices;i++){
    588588                                if(iomodel->my_vertices[i]){
    589                                         nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
     589                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
    590590                                }
    591591                        }
     
    717717                if(isFS){
    718718                        for(int i=0;i<iomodel->numberofelements;i++){
    719                                 approximation=reCast<int>(iomodel->Data("md.flowequation.element_equation")[i]);
     719                                approximation=IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i]));
    720720                                if(approximation==FSApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
    721721                                        finiteelement_list[i]=MINIcondensedEnum;
  • TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

    r20690 r20993  
    4444                        /*keep only this partition's nodes:*/
    4545                        if((iomodel->my_vertices[i])){
    46                                 if (reCast<int,IssmDouble>(iomodel->Data("md.flowequation.vertex_equation")[i])!=SIAApproximationEnum){
     46                                if (IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
    4747
    4848                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));
     
    9999
    100100                        /*Create new node if is in this processor's partition*/
    101                         node = new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
     101                        node = new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
    102102
    103103                        /*Deactivate node if not SIA*/
    104                         if(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])!=SIAApproximationEnum){
     104                        if(IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
    105105                                node->Deactivate();
    106106                        }
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r20810 r20993  
    14831483        /*Need to know the type of approximation for this element*/
    14841484        if(iomodel->Data("md.flowequation.element_equation")){
    1485                 this->inputs->AddInput(new IntInput(ApproximationEnum,reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));
     1485                this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
    14861486        }
    14871487
     
    30773077                        _assert_(iomodel->Data("md.flowequation.element_equation"));
    30783078
    3079                         if(*(iomodel->Data("md.flowequation.element_equation")+index)==HOFSApproximationEnum){
     3079                        if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==HOFSApproximationEnum){
    30803080                                /*Create VzHO and VzFS Enums*/
    30813081                                if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
     
    30913091                                }
    30923092                        }
    3093                         if(*(iomodel->Data("md.flowequation.element_equation")+index)==SSAFSApproximationEnum){
     3093                        if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==SSAFSApproximationEnum){
    30943094                                /*Create VzSSA and VzFS Enums*/
    30953095                                if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r20810 r20993  
    225225        z6=xyz_list[3*5+2];
    226226
    227         /* DEBUG
    228          * REMOVE BEFORE SUBMITTING
    229          * ----------
    230          *  CHANGE SQRT3/12 TO MULTIPLY BY RECIPROCAL
    231          */
    232227        j_const_reciprocal=SQRT3/12;
    233228
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp

    r20690 r20993  
    447447        /*Need to know the type of approximation for this element*/
    448448        if(iomodel->Data("md.flowequation.element_equation")){
    449                 this->inputs->AddInput(new IntInput(ApproximationEnum,reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));
     449                this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
    450450        }
    451451
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r20871 r20993  
    17471747        /*Need to know the type of approximation for this element*/
    17481748        if(iomodel->Data("md.flowequation.element_equation")){
    1749                 this->inputs->AddInput(new IntInput(ApproximationEnum,reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));
     1749                this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
    17501750        }
    17511751
  • TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r20925 r20993  
    9090}/*}}}*/
    9191
     92int IoCodeToEnumVertexEquation(int enum_in){/*{{{*/
     93        switch(enum_in){
     94                case 0: return NoneApproximationEnum;
     95                case 1: return SIAApproximationEnum;
     96                case 2: return SSAApproximationEnum;
     97                case 3: return L1L2ApproximationEnum;
     98                case 4: return HOApproximationEnum;
     99                case 5: return FSApproximationEnum;
     100                case 6: return SSAHOApproximationEnum;
     101                case 7: return HOFSApproximationEnum;
     102                case 8: return SSAFSApproximationEnum;
     103                default: _error_("Marshalled vertex equation code \""<<enum_in<<"\" not supported yet.");
     104        }
     105}/*}}}*/
     106int IoCodeToEnumElementEquation(int enum_in){/*{{{*/
     107        switch(enum_in){
     108                case 0: return NoneApproximationEnum;
     109                case 1: return SIAApproximationEnum;
     110                case 2: return SSAApproximationEnum;
     111                case 3: return L1L2ApproximationEnum;
     112                case 4: return HOApproximationEnum;
     113                case 5: return FSApproximationEnum;
     114                case 6: return SSAHOApproximationEnum;
     115                case 7: return SSAFSApproximationEnum;
     116                case 8: return HOFSApproximationEnum;
     117                default: _error_("Marshalled element equation code \""<<enum_in<<"\" not supported yet.");
     118        }
     119
     120}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h

    r20925 r20993  
    1010int IoCodeToEnumMaterials(int enum_in);
    1111
     12int IoCodeToEnumVertexEquation(int enum_in);
     13int IoCodeToEnumElementEquation(int enum_in);
    1214#endif 
  • TabularUnified issm/trunk-jpl/src/m/classes/flowequation.js

    r20927 r20993  
    118118
    119119                        //convert approximations to enums
    120                         data=this.vertex_equation;
    121                        
    122                         //some optimization:
    123                         var noneap=NoneApproximationEnum();
    124                         var siaap=SIAApproximationEnum();
    125                         var ssaap=SSAApproximationEnum();
    126                         var l1l2ap=L1L2ApproximationEnum();
    127                         var hoap=HOApproximationEnum();
    128                         var fsap=FSApproximationEnum();
    129                         var ssahoap=SSAHOApproximationEnum();
    130                         var hofsaap=HOFSApproximationEnum();
    131                         var ssafsap=SSAFSApproximationEnum();
    132 
    133                         for(var i=0;i<data.length;i++){
    134                                 if(data[i]==0)data[i]=nonap;
    135                                 if(data[i]==1) data[i]=siaap;
    136                                 if(data[i]==2) data[i]=ssaap;
    137                                 if(data[i]==3) data[i]=l1l2ap;
    138                                 if(data[i]==4) data[i]=hoap;
    139                                 if(data[i]==5) data[i]=fsap;
    140                                 if(data[i]==6) data[i]=ssahoap;
    141                                 if(data[i]==7) data[i]=hofsaap;
    142                                 if(data[i]==8) data[i]=ssafsap;
    143                         }
    144                         WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
    145 
    146                         data=this.element_equation;
    147                         for(var i=0;i<data.length;i++){
    148                                 if(data[i]==0) data[i]=nonap;
    149                                 if(data[i]==1) data[i]=siaap;
    150                                 if(data[i]==2) data[i]=ssaap;
    151                                 if(data[i]==3) data[i]=l1l2ap;
    152                                 if(data[i]==4) data[i]=hoap;
    153                                 if(data[i]==5) data[i]=fsap;
    154                                 if(data[i]==6) data[i]=ssahoap;
    155                                 if(data[i]==7) data[i]=ssafsap;
    156                                 if(data[i]==8) data[i]=hofsaap;
    157                         }
    158                         WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
     120                        WriteData(fid,prefix,'data',this.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
     121                        WriteData(fid,prefix,'data',this.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
    159122
    160123                }//}}}
  • TabularUnified issm/trunk-jpl/src/m/classes/flowequation.m

    r20925 r20993  
    172172                        WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1);
    173173                        %convert approximations to enums
    174                         data=self.vertex_equation;
    175                         pos=find(data==0); data(pos,end)=NoneApproximationEnum();
    176                         pos=find(data==1); data(pos,end)=SIAApproximationEnum();
    177                         pos=find(data==2); data(pos,end)=SSAApproximationEnum();
    178                         pos=find(data==3); data(pos,end)=L1L2ApproximationEnum();
    179                         pos=find(data==4); data(pos,end)=HOApproximationEnum();
    180                         pos=find(data==5); data(pos,end)=FSApproximationEnum();
    181 
    182                         pos=find(data==6); data(pos,end)=SSAHOApproximationEnum();
    183                         pos=find(data==7); data(pos,end)=HOFSApproximationEnum();
    184                         pos=find(data==8); data(pos,end)=SSAFSApproximationEnum();
    185                         WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
    186                         data=self.element_equation;
    187                         pos=find(data==0); data(pos,end)=NoneApproximationEnum();
    188                         pos=find(data==1); data(pos,end)=SIAApproximationEnum();
    189                         pos=find(data==2); data(pos,end)=SSAApproximationEnum();
    190                         pos=find(data==3); data(pos,end)=L1L2ApproximationEnum();
    191                         pos=find(data==4); data(pos,end)=HOApproximationEnum();
    192                         pos=find(data==5); data(pos,end)=FSApproximationEnum();
    193 
    194                         pos=find(data==6); data(pos,end)=SSAHOApproximationEnum();
    195                         pos=find(data==7); data(pos,end)=SSAFSApproximationEnum();
    196                         pos=find(data==8); data(pos,end)=HOFSApproximationEnum();
    197                         WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
     174                        WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
     175                        WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
    198176                end % }}}
    199177                function savemodeljs(self,fid,modelname) % {{{
  • TabularUnified issm/trunk-jpl/src/m/classes/flowequation.py

    r20925 r20993  
    138138                WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
    139139                #convert approximations to enums
    140                 data=copy.deepcopy(self.vertex_equation);
     140                WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1)
     141                WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2)
    141142
    142                 if isinstance(data, (list, tuple, numpy.ndarray)):
    143                         data[numpy.nonzero(data==0)]=NoneApproximationEnum()
    144                         data[numpy.nonzero(data==1)]=SIAApproximationEnum()
    145                         data[numpy.nonzero(data==2)]=SSAApproximationEnum()
    146                         data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
    147                         data[numpy.nonzero(data==4)]=HOApproximationEnum()
    148                         data[numpy.nonzero(data==5)]=FSApproximationEnum()
    149                         data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
    150                         data[numpy.nonzero(data==7)]=HOFSApproximationEnum()
    151                         data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()
    152                 WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1)
    153                 data=copy.deepcopy(self.element_equation)
    154                 if isinstance(data, (list, tuple, numpy.ndarray)):
    155                         data[numpy.nonzero(data==0)]=NoneApproximationEnum()
    156                         data[numpy.nonzero(data==1)]=SIAApproximationEnum()
    157                         data[numpy.nonzero(data==2)]=SSAApproximationEnum()
    158                         data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
    159                         data[numpy.nonzero(data==4)]=HOApproximationEnum()
    160                         data[numpy.nonzero(data==5)]=FSApproximationEnum()
    161                         data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
    162                         data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()
    163                         data[numpy.nonzero(data==8)]=HOFSApproximationEnum()
    164                 WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2)
    165143        # }}}
Note: See TracChangeset for help on using the changeset viewer.