Changeset 3884


Ignore:
Timestamp:
05/21/10 13:39:55 (15 years ago)
Author:
Mathieu Morlighem
Message:

some fixing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Loads/Numericalflux.cpp

    r3784 r3884  
    6363        int  num_nodes;
    6464        int  num_elems;
     65        bool   isinternal;
    6566
    6667        /*numericalflux constructor data: */
     
    7374        numericalflux_mparid=iomodel->numberofelements+1; //matlab indexing
    7475
    75         /*Get left and right elements*/
    76         e1=(int)iomodel->edges[4*i+2]; //edges are [node1 node2 elem1 elem2]
    77         e2=(int)iomodel->edges[4*i+3]; //edges are [node1 node2 elem1 elem2]
    78         if (isnan(e2)){
     76        /*First, see wether this is an internal or boundary edge (if e2=NaN)*/
     77        if (isnan((double)iomodel->edges[4*i+3])){ //edges are [node1 node2 elem1 elem2]
    7978                /* Boundary edge, only one element */
     79                e1=(int)iomodel->edges[4*i+2];
     80                e2=(int)UNDEF;
    8081                num_elems=1;
    8182                num_nodes=2;
     
    8586        else{
    8687                /* internal edge: connected to 2 elements */
     88                e1=(int)iomodel->edges[4*i+2];
     89                e2=(int)iomodel->edges[4*i+3];
    8790                num_elems=2;
    8891                num_nodes=4;
     
    103106                pos1=pos2=UNDEF;
    104107                for(j=0;j<3;j++){
    105                         if (iomodel->elements[3*(int)e1+j]==i1) pos1=j+1;
    106                         if (iomodel->elements[3*(int)e2+j]==i1) pos2=j+1;
     108                        if (iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
     109                        if (iomodel->elements[3*(e2-1)+j]==i1) pos2=j+1;
    107110                }
    108111                ISSMASSERT(pos1!=UNDEF && pos2!=UNDEF);
     
    110113                /*3: We have the id of the elements and the position of the vertices in the index
    111114                 * we can compute their dofs!*/
    112                 numericalflux_node_ids[0]=3*(int)e1+pos1;       //ex: 1 2 3
    113                 numericalflux_node_ids[1]=3*(int)e1+(pos1%3)+1; //ex: 2 3 1
    114                 numericalflux_node_ids[2]=3*(int)e2+pos2;           //ex: 1 2 3
    115                 numericalflux_node_ids[3]=3*(int)e2+((pos2+1)%3)+1; //ex: 3 1 2
     115                numericalflux_node_ids[0]=3*(e1-1)+pos1;       //ex: 1 2 3
     116                numericalflux_node_ids[1]=3*(e1-1)+(pos1%3)+1; //ex: 2 3 1
     117                numericalflux_node_ids[2]=3*(e2-1)+pos2;           //ex: 1 2 3
     118                numericalflux_node_ids[3]=3*(e2-1)+((pos2+1)%3)+1; //ex: 3 1 2
    116119        }
    117120        else{
     
    120123                pos1==UNDEF;
    121124                for(j=0;j<3;j++){
    122                         if (iomodel->elements[3*(int)e1+j]==i1) pos1=j+1;
     125                        if (iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
    123126                }
    124127                ISSMASSERT(pos1!=UNDEF);
     
    126129                /*3: We have the id of the elements and the position of the vertices in the index
    127130                 * we can compute their dofs!*/
    128                 numericalflux_node_ids[0]=3*(int)e1+pos1;
    129                 numericalflux_node_ids[1]=3*(int)e1+(pos1%3)+1;
    130 
     131                numericalflux_node_ids[0]=3*(e1-1)+pos1;
     132                numericalflux_node_ids[1]=3*(e1-1)+(pos1%3)+1;
    131133        }
    132134
Note: See TracChangeset for help on using the changeset viewer.