Changeset 18170


Ignore:
Timestamp:
06/20/14 11:17:45 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added P2bubble element, to be debugged

Location:
issm/trunk-jpl/src
Files:
2 added
3 deleted
11 edited

Legend:

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

    r18135 r18170  
    19261926                        tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
    19271927                        break;
     1928                case P2bubbleEnum: case P2bubblecondensedEnum:
     1929                        numnodes        = 7;
     1930                        tria_node_ids   = xNew<int>(numnodes);
     1931                        tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
     1932                        tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
     1933                        tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
     1934                        tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
     1935                        tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
     1936                        tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
     1937                        tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;
     1938                        break;
    19281939                case P1P1Enum: case P1P1GLSEnum:
    19291940                        numnodes        = 6;
  • issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp

    r18078 r18170  
    2020#define NUMNODESP1b 4
    2121#define NUMNODESP2  6
     22#define NUMNODESP2b 7
    2223
    2324/*Object constructors and destructor*/
     
    173174                        basis[4]=4.*gauss->coord3*gauss->coord1;
    174175                        basis[5]=4.*gauss->coord1*gauss->coord2;
     176                        return;
     177                case P2bubbleEnum: case P2bubblecondensedEnum:
     178                        /*Corner nodes*/
     179                        basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
     180                        basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
     181                        basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
     182                        /*Mid-sides*/
     183                        basis[3]=4.*gauss->coord3*gauss->coord2;
     184                        basis[4]=4.*gauss->coord3*gauss->coord1;
     185                        basis[5]=4.*gauss->coord1*gauss->coord2;
     186                        /*bubble*/
     187                        basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
    175188                        return;
    176189                default:
     
    309322                        dbasis[NUMNODESP2*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
    310323                        return;
     324                case P2bubbleEnum: case P2bubblecondensedEnum:
     325                        /*Nodal function 1*/
     326                        dbasis[NUMNODESP2b*0+0] = -2.*gauss->coord1 + 0.5;
     327                        dbasis[NUMNODESP2b*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.;
     328                        /*Nodal function 2*/
     329                        dbasis[NUMNODESP2b*0+1] = +2.*gauss->coord2 - 0.5;
     330                        dbasis[NUMNODESP2b*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.;
     331                        /*Nodal function 3*/
     332                        dbasis[NUMNODESP2b*0+2] = 0.;
     333                        dbasis[NUMNODESP2b*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.;
     334                        /*Nodal function 4*/
     335                        dbasis[NUMNODESP2b*0+3] = +2.*gauss->coord3;
     336                        dbasis[NUMNODESP2b*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3;
     337                        /*Nodal function 5*/
     338                        dbasis[NUMNODESP2b*0+4] = -2.*gauss->coord3;
     339                        dbasis[NUMNODESP2b*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3;
     340                        /*Nodal function 6*/
     341                        dbasis[NUMNODESP2b*0+5] = 2.*(gauss->coord1-gauss->coord2);
     342                        dbasis[NUMNODESP2b*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
     343                        /*Nodal function 7*/
     344                        dbasis[NUMNODESP2b*0+6] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
     345                        dbasis[NUMNODESP2b*1+6] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
     346                        return;
    311347                default:
    312348                        _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
     
    376412                case P1bubblecondensedEnum: return NUMNODESP1b;
    377413                case P2Enum:                return NUMNODESP2;
     414                case P2bubbleEnum:          return NUMNODESP2b;
     415                case P2bubblecondensedEnum: return NUMNODESP2b;
    378416                case P1P1Enum:              return NUMNODESP1*2;
    379417                case P1P1GLSEnum:           return NUMNODESP1*2;
  • issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp

    r18064 r18170  
    463463                        }
    464464                        break;
     465                case P2bubbleEnum: case P2bubblecondensedEnum:
     466                        switch(iv){
     467                                case 0: coord1=1.; coord2=0.; coord3=0.; break;
     468                                case 1: coord1=0.; coord2=1.; coord3=0.; break;
     469                                case 2: coord1=0.; coord2=0.; coord3=1.; break;
     470                                case 3: coord1=0.; coord2=.5; coord3=.5; break;
     471                                case 4: coord1=.5; coord2=0.; coord3=.5; break;
     472                                case 5: coord1=.5; coord2=.5; coord3=0.; break;
     473                                case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
     474                                default: _error_("node index should be in [0 6]");
     475                        }
     476                        break;
    465477                default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
    466478        }
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r17924 r18170  
    7575                        }
    7676                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
     77                        break;
     78                case P2bubbleEnum:
     79                        EdgesPartitioning(&my_edges,iomodel);
     80                        if(iomodel->meshelementtype==PentaEnum){
     81                                FacesPartitioning(&my_faces,iomodel);
     82                        }
     83                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
     84                        switch(iomodel->meshelementtype){
     85                                case TriaEnum:  elementnbv = 3; break;
     86                                case TetraEnum: elementnbv = 4; break;
     87                                case PentaEnum: elementnbv = 6; break;
     88                                default: _error_("mesh type not supported yet");
     89                        }
    7790                        break;
    7891                case P2xP4Enum:
     
    138151                                }
    139152                                break;
     153                        case P2bubbleEnum:
     154                                for(i=0;i<iomodel->numberofvertices;i++){
     155                                        if((iomodel->my_vertices[i])){
     156                                                if (!xIsNan<IssmDouble>(spcdata[i])){
     157                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
     158                                                        count++;
     159                                                }
     160                                        }
     161                                }
     162                                for(i=0;i<iomodel->numberofedges;i++){
     163                                        if(my_edges[i] && boundaryedge[i]){
     164                                                v1 = iomodel->edges[3*i+0]-1;
     165                                                v2 = iomodel->edges[3*i+1]-1;
     166                                                if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
     167                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
     168                                                                                        dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
     169                                                        count++;
     170                                                }
     171                                        }
     172                                }
     173                                if(iomodel->meshelementtype==PentaEnum){
     174                                        for(i=0;i<iomodel->numberoffaces;i++){
     175                                                if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
     176                                                        if(my_faces[i]){
     177                                                                numfacevertices = iomodel->faces[i*iomodel->facescols+3];
     178                                                                value=0.;
     179                                                                for(j=0;j<numfacevertices;j++){
     180                                                                        value += spcdata[iomodel->faces[i*iomodel->facescols+4+j] -1];
     181                                                                }
     182                                                                value = value/reCast<IssmDouble>(numfacevertices);
     183                                                                if(!xIsNan<IssmDouble>(value)){
     184                                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,
     185                                                                                                        iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
     186                                                                                                        dof,value,analysis_type));
     187                                                                        count++;
     188                                                                }
     189                                                        }
     190                                                }
     191                                        }
     192                                }
     193                                for(i=0;i<iomodel->numberofelements;i++){
     194                                        if(iomodel->my_elements[i]){
     195                                                value = spcdata[iomodel->elements[i*elementnbv+0]-1];
     196                                                for(j=1;j<elementnbv;j++) value += spcdata[iomodel->elements[i*elementnbv+j]-1];
     197                                                value = value/reCast<IssmDouble,int>(elementnbv+0);
     198                                                if(!xIsNan<IssmDouble>(value)){
     199                                                        int nodeid = iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1;
     200                                                        if(iomodel->meshelementtype==PentaEnum){
     201                                                                nodeid += iomodel->numberoffaces;
     202                                                        }
     203                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,nodeid,dof,value,analysis_type));
     204                                                        count++;
     205                                                }
     206                                        }
     207                                }
     208                                break;
    140209                        case P2xP4Enum:
    141210                                for(i=0;i<iomodel->numberofvertices;i++){
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r17842 r18170  
    162162                        }
    163163                        break;
     164                case P2bubbleEnum:
     165                        EdgesPartitioning(&my_edges,iomodel);
     166                        for(i=0;i<iomodel->numberofvertices;i++){
     167                                if(iomodel->my_vertices[i]){
     168                                        nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     169                                }
     170                        }
     171                        for(i=0;i<iomodel->numberofedges;i++){
     172                                if(my_edges[i]){
     173                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
     174                                }
     175                        }
     176                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     177                        if(iomodel->meshelementtype==PentaEnum){
     178                                FacesPartitioning(&my_faces,iomodel);
     179                                for(i=0;i<iomodel->numberoffaces;i++){
     180                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
     181                                                if(my_faces[i]){
     182                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
     183                                                        nodes->AddObject(node);
     184                                                }
     185                                        }
     186                                        else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
     187                                                /*Nothing*/
     188                                        }
     189                                        else{
     190                                                _error_("not supported");
     191                                        }
     192                                }
     193                                id0 = id0+iomodel->numberoffaces;
     194                        }
     195                        for(i=0;i<iomodel->numberofelements;i++){
     196                                if(iomodel->my_elements[i]){
     197                                        nodes->AddObject(new Node(id0+i+1,id0-iomodel->nodecounter+i,lid++,0,iomodel,analysis,approximation));
     198                                }
     199                        }
     200                        break;
    164201                case P2xP4Enum:
    165202                        EdgesPartitioning(&my_edges,iomodel);
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r18093 r18170  
    602602        P1bubblecondensedEnum,
    603603        P2Enum,
     604        P2bubbleEnum,
     605        P2bubblecondensedEnum,
    604606        P2xP1Enum,
    605607        P1xP2Enum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r18093 r18170  
    591591                case P1bubblecondensedEnum : return "P1bubblecondensed";
    592592                case P2Enum : return "P2";
     593                case P2bubbleEnum : return "P2bubble";
     594                case P2bubblecondensedEnum : return "P2bubblecondensed";
    593595                case P2xP1Enum : return "P2xP1";
    594596                case P1xP2Enum : return "P1xP2";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r18093 r18170  
    603603              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    604604              else if (strcmp(name,"P2")==0) return P2Enum;
     605              else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
     606              else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
    605607              else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
    606608              else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
     
    627629              else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    628630              else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
    629               else if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum;
    630               else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
     634              if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum;
     635              else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
     636              else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
    635637              else if (strcmp(name,"MisfitModelEnum")==0) return MisfitModelEnumEnum;
    636638              else if (strcmp(name,"MisfitObservation")==0) return MisfitObservationEnum;
  • issm/trunk-jpl/src/m/classes/flowequation.m

    r18076 r18170  
    5959        end
    6060        methods
    61         function createxml(obj,fid) % {{{
    62             fprintf(fid, '\n\n');
    63             fprintf(fid, '%s\n', '<!-- flowequation -->');
    64             fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Flow equation parameters">','<section name="flowequation" />');                   
    65            
     61                function createxml(obj,fid) % {{{
     62                        fprintf(fid, '\n\n');
     63                        fprintf(fid, '%s\n', '<!-- flowequation -->');
     64                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Flow equation parameters">','<section name="flowequation" />');                   
     65
    6666                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSIA" type="',              class(obj.isSIA),'" default="',                  convert2str(obj.isSIA),'">',              '     <section name="flowequation" />','     <help> is the Shallow Ice Approximation (SIA) used ? </help>','</parameter>');
    67             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSSA" type="',            class(obj.isSSA),'" default="',                convert2str(obj.isSSA),'">',   '     <section name="flowequation" />','     <help> is the Shelfy-Stream Approximation (SSA) used ? </help>','</parameter>');
    68             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isL1L2" type="',      class(obj.isL1L2),'" default="',          convert2str(obj.isL1L2),'">',            '     <section name="flowequation" />','     <help> is the L1L2 approximation used ? </help>','</parameter>');
    69             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isHO" type="',     class(obj.isHO),'" default="',         convert2str(obj.isHO),'">',            '     <section name="flowequation" />','     <help> is the Higher-Order (HO) approximation used ? </help>','</parameter>');
    70            
    71             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isFS" type="',       class(obj.isFS),'" default="',              convert2str(obj.isFS),'">',              '     <section name="flowequation" />','     <help> are the Full-FS (FS) equations used ? </help>','</parameter>');
    72            
    73             % fe_SSA drop-down (P1, P1bubble, P1bubblecondensed, P2)
    74             fprintf(fid,'%s\n%s\n%s\n%s\n',    '<parameter key ="fe_SSA" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for SSA  "P1", "P1bubble" "P1bubblecondensed" "P2" </help>');
    75             fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
    76             fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
    77             fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
    78             fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
    79            
    80             %fe_HO drop-down (P1, P1bubble, P1bubblecondensed, P1xP2, P2xP1, P2)
    81             fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_HO" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for HO   "P1" "P1bubble" "P1bubblecondensed" "P1xP2" "P2xP1" "P2" </help>');
    82             fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
    83             fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
    84             fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
    85             fprintf(fid,'%s\n','       <option value="P1xP2" type="string" default="false"> </option>');
    86             fprintf(fid,'%s\n','       <option value="P2xP1" type="string" default="false"> </option>');
    87             fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
    88            
    89             % fe_FS drop-down (P1P1, P1P1GLS, MINIcondensed, MINI, TaylowHood)
    90             fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_FS" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for FS   "P1P1" (debugging only) "P1P1GLS" "MINIcondensed" "MINI" "TaylorHood" </help>');
    91             fprintf(fid,'%s\n','       <option value="P1P1" type="string" default="true"> </option>');
    92             fprintf(fid,'%s\n','       <option value="P1P1GLS" type="string" default="false"> </option>');
    93             fprintf(fid,'%s\n','       <option value="MINIcondensed" type="string" default="false"> </option>');
    94             fprintf(fid,'%s\n','       <option value="MINI" type="string" default="false"> </option>');
    95             fprintf(fid,'%s\n%s\n','       <option value="TaylorHood" type="string" default="false"> </option>','</parameter>');
    96            
    97             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="vertex_equation" type="',      class(obj.vertex_equation),'" default="',            convert2str(obj.vertex_equation),'">',            '     <section name="flowequation" />','     <help> flow equation for each vertex </help>','</parameter>');
    98        
    99             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="element_equation" type="',            class(obj.element_equation),'" default="',              convert2str(obj.element_equation),'">',              '     <section name="flowequation" />','     <help> flow equation for each element </help>','</parameter>');
    100             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="borderSSA" type="', class(obj.borderSSA),'" default="',   convert2str(obj.borderSSA),'">',   '     <section name="flowequation" />','     <help> vertices on SSAs border (for tiling) </help>','</parameter>');
    101             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="borderHO" type="',          class(obj.borderHO),'" default="',            convert2str(obj.borderHO),'">',            '     <section name="flowequation" />','     <help> vertices on HOs border (for tiling) </help>','</parameter>');
    102             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="borderFS" type="',          class(obj.borderFS),'" default="',            convert2str(obj.borderFS),'">',            '     <section name="flowequation" />','     <help> vertices on FS border (for tiling) </help>','</parameter>');
    103      
    104             fprintf(fid,'%s\n%s\n','</frame>');
    105         end % }}}
     67                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSSA" type="',            class(obj.isSSA),'" default="',                convert2str(obj.isSSA),'">',   '     <section name="flowequation" />','     <help> is the Shelfy-Stream Approximation (SSA) used ? </help>','</parameter>');
     68                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isL1L2" type="',      class(obj.isL1L2),'" default="',          convert2str(obj.isL1L2),'">',            '     <section name="flowequation" />','     <help> is the L1L2 approximation used ? </help>','</parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isHO" type="',     class(obj.isHO),'" default="',         convert2str(obj.isHO),'">',            '     <section name="flowequation" />','     <help> is the Higher-Order (HO) approximation used ? </help>','</parameter>');
     70
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isFS" type="',       class(obj.isFS),'" default="',              convert2str(obj.isFS),'">',              '     <section name="flowequation" />','     <help> are the Full-FS (FS) equations used ? </help>','</parameter>');
     72
     73                        % fe_SSA drop-down (P1, P1bubble, P1bubblecondensed, P2)
     74                        fprintf(fid,'%s\n%s\n%s\n%s\n',    '<parameter key ="fe_SSA" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for SSA  "P1", "P1bubble" "P1bubblecondensed" "P2" </help>');
     75                        fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
     76                        fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
     77                        fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
     78                        fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
     79
     80                        %fe_HO drop-down (P1, P1bubble, P1bubblecondensed, P1xP2, P2xP1, P2)
     81                        fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_HO" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for HO   "P1" "P1bubble" "P1bubblecondensed" "P1xP2" "P2xP1" "P2" </help>');
     82                        fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
     83                        fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
     84                        fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
     85                        fprintf(fid,'%s\n','       <option value="P1xP2" type="string" default="false"> </option>');
     86                        fprintf(fid,'%s\n','       <option value="P2xP1" type="string" default="false"> </option>');
     87                        fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
     88
     89                        % fe_FS drop-down (P1P1, P1P1GLS, MINIcondensed, MINI, TaylowHood)
     90                        fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_FS" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for FS   "P1P1" (debugging only) "P1P1GLS" "MINIcondensed" "MINI" "TaylorHood" </help>');
     91                        fprintf(fid,'%s\n','       <option value="P1P1" type="string" default="true"> </option>');
     92                        fprintf(fid,'%s\n','       <option value="P1P1GLS" type="string" default="false"> </option>');
     93                        fprintf(fid,'%s\n','       <option value="MINIcondensed" type="string" default="false"> </option>');
     94                        fprintf(fid,'%s\n','       <option value="MINI" type="string" default="false"> </option>');
     95                        fprintf(fid,'%s\n%s\n','       <option value="TaylorHood" type="string" default="false"> </option>','</parameter>');
     96
     97                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="vertex_equation" type="',      class(obj.vertex_equation),'" default="',            convert2str(obj.vertex_equation),'">',            '     <section name="flowequation" />','     <help> flow equation for each vertex </help>','</parameter>');
     98
     99                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="element_equation" type="',            class(obj.element_equation),'" default="',              convert2str(obj.element_equation),'">',              '     <section name="flowequation" />','     <help> flow equation for each element </help>','</parameter>');
     100                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="borderSSA" type="', class(obj.borderSSA),'" default="',   convert2str(obj.borderSSA),'">',   '     <section name="flowequation" />','     <help> vertices on SSAs border (for tiling) </help>','</parameter>');
     101                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="borderHO" type="',          class(obj.borderHO),'" default="',            convert2str(obj.borderHO),'">',            '     <section name="flowequation" />','     <help> vertices on HOs border (for tiling) </help>','</parameter>');
     102                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="borderFS" type="',          class(obj.borderFS),'" default="',            convert2str(obj.borderFS),'">',            '     <section name="flowequation" />','     <help> vertices on FS border (for tiling) </help>','</parameter>');
     103
     104                        fprintf(fid,'%s\n%s\n','</frame>');
     105                end % }}}
    106106                function obj = flowequation(varargin) % {{{
    107107                        switch nargin
     
    132132                                md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]);
    133133                                md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
    134                                 md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2'});
     134                                md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2','P2bubble'});
    135135                                md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'});
    136136                                md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z'});
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r18076 r18170  
    7676                        md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])
    7777                        md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])
    78                         md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2'])
     78                        md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])
    7979                        md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'])
    8080                        md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z'])
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r18093 r18170  
    583583def P1bubblecondensedEnum(): return StringToEnum("P1bubblecondensed")[0]
    584584def P2Enum(): return StringToEnum("P2")[0]
     585def P2bubbleEnum(): return StringToEnum("P2bubble")[0]
     586def P2bubblecondensedEnum(): return StringToEnum("P2bubblecondensed")[0]
    585587def P2xP1Enum(): return StringToEnum("P2xP1")[0]
    586588def P1xP2Enum(): return StringToEnum("P1xP2")[0]
Note: See TracChangeset for help on using the changeset viewer.