Changeset 15770


Ignore:
Timestamp:
08/09/13 10:44:43 (12 years ago)
Author:
seroussi
Message:

BUG: starting to debug tiling HO/FS for ice sheets

File:
1 edited

Legend:

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

    r15769 r15770  
    69906990
    69916991        /*Constants*/
    6992         const int numnodes  = 2 *NUMVERTICES;
    69936992        const int numdof    = NUMVERTICES *NDOF4;
    69946993        const int numdofm   = NUMVERTICES *NDOF2;
     
    70167015        Friction*  friction=NULL;
    70177016        GaussPenta *gauss=NULL;
    7018         Node       *node_list[numnodes];
    7019         int         cs_list[numnodes];
    70207017
    70217018        /*If on water or not FS, skip stiffness: */
    70227019        inputs->GetInputValue(&approximation,ApproximationEnum);
    70237020        if(IsFloating() || !IsOnBed()) return NULL;
     7021
     7022        int vnumnodes = this->NumberofNodesVelocity();
     7023        int pnumnodes = this->NumberofNodesPressure();
     7024        int numnodes  = 2*vnumnodes-1+pnumnodes;
     7025
     7026        Node       *node_list[numnodes];
     7027        int         cs_list[numnodes];
     7028
    70247029        ElementMatrix* Ke1=new ElementMatrix(this->nodes,NUMVERTICES,this->parameters,SSAApproximationEnum);
    7025         ElementMatrix* Ke2=new ElementMatrix(this->nodes,NUMVERTICES,this->parameters,FSvelocityEnum);
     7030        ElementMatrix* Ke2=new ElementMatrix(this->nodes,numnodes,this->parameters,FSvelocityEnum);
    70267031        ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
    70277032        delete Ke1; delete Ke2;
    70287033
    70297034        /*Prepare node list*/
    7030         for(i=0;i<NUMVERTICES;i++){
     7035        for(i=0;i<numnodes+NUMVERTICES;i++){
    70317036                node_list[i+0*NUMVERTICES] = this->nodes[i];
    70327037                node_list[i+1*NUMVERTICES] = this->nodes[i];
     
    70977102
    70987103        /*Clean up and return*/
     7104        xDelete<int>(cs_list);
    70997105        delete gauss;
    71007106        delete friction;
     
    83528358        inputs->GetInputValue(&approximation,ApproximationEnum);
    83538359        if(approximation!=HOFSApproximationEnum) return NULL;
    8354         ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters,FSvelocityEnum);
     8360
     8361        int vnumnodes = this->NumberofNodesVelocity();
     8362        int pnumnodes = this->NumberofNodesPressure();
     8363        int numnodes  = vnumnodes+pnumnodes;
     8364
     8365        /*Prepare coordinate system list*/
     8366        int* cs_list = xNew<int>(vnumnodes+pnumnodes);
     8367        for(i=0;i<vnumnodes;i++) cs_list[i]           = XYZEnum;
     8368        for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
     8369
     8370        ElementVector* pe=new ElementVector(nodes,numnodes,this->parameters,FSvelocityEnum);
    83558371
    83568372        /*Retrieve all inputs and parameters*/
     
    83868402
    83878403                for(i=0;i<NUMVERTICES2D;i++){
    8388                         pe->values[i*NDOF4+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
    8389                         pe->values[i*NDOF4+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
    8390                         pe->values[i*NDOF4+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
     8404                        pe->values[i*NDOF3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
     8405                        pe->values[i*NDOF3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
     8406                        pe->values[i*NDOF3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
    83918407                }
    83928408        }
    83938409
    83948410        /*Transform coordinate system*/
    8395         TransformLoadVectorCoord(pe,nodes,NUMVERTICES,XYZEnum);
     8411        TransformLoadVectorCoord(pe,nodes,vnumnodes+pnumnodes,cs_list);
    83968412
    83978413        /*Clean up and return*/
     8414        xDelete<int>(cs_list);
    83988415        delete gauss;
    83998416        delete friction;
Note: See TracChangeset for help on using the changeset viewer.