Changeset 17062


Ignore:
Timestamp:
01/06/14 12:27:49 (11 years ago)
Author:
Mathieu Morlighem
Message:

BUG: fixing constraints on P2xP4

Location:
issm/trunk-jpl/src/c/modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r17057 r17062  
    120120                                        }
    121121                                }
    122                                 _printf0_("WARNING: Skipping constraints along edges\n");
     122                                for(i=0;i<iomodel->numberofedges;i++){
     123                                        if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
     124                                                if(my_edges[i]){
     125                                                        v1 = iomodel->edges[3*i+0]-1;
     126                                                        v2 = iomodel->edges[3*i+1]-1;
     127                                                        if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
     128                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+4*i+1,
     129                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     130                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+4*i+2,
     131                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     132                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+4*i+3,
     133                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     134                                                                count=count+3;
     135                                                        }
     136                                                }
     137                                        }
     138                                        if(iomodel->edges[i*3+2]==1){/*Basal edges*/
     139                                                if(my_edges[i]){
     140                                                        v1 = iomodel->edges[3*i+0]-1;
     141                                                        v2 = iomodel->edges[3*i+1]-1;
     142                                                        if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
     143                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+4*i+1,
     144                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     145                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+4*i+2,
     146                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     147                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+4*i+3,
     148                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     149                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+4,iomodel->nodecounter+iomodel->numberofvertices+4*i+4,
     150                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     151                                                                count=count+4;
     152                                                        }
     153                                                }
     154                                        }
     155                                        if(iomodel->edges[i*3+2]==3){/*Top edges*/
     156                                                if(my_edges[i]){
     157                                                        v1 = iomodel->edges[3*i+0]-1;
     158                                                        v2 = iomodel->edges[3*i+1]-1;
     159                                                        if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
     160                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+4*i+1,
     161                                                                                                dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
     162                                                                count=count+1;
     163                                                        }
     164                                                }
     165                                        }
     166                                }
    123167                                break;
    124168                        case P1bubbleEnum:
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r17057 r17062  
    164164                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
    165165                                                nodes->AddObject(node);
    166                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+1,lid++,0,iomodel,analysis,approximation);
    167                                                 nodes->AddObject(node);
    168                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+1,lid++,0,iomodel,analysis,approximation);
    169                                                 nodes->AddObject(node);
    170                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+1,lid++,0,iomodel,analysis,approximation);
     166                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     167                                                nodes->AddObject(node);
     168                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     169                                                nodes->AddObject(node);
     170                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+4,lid++,0,iomodel,analysis,approximation);
    171171                                                nodes->AddObject(node);
    172172                                        }
Note: See TracChangeset for help on using the changeset viewer.