Changeset 10527


Ignore:
Timestamp:
11/08/11 11:46:01 (13 years ago)
Author:
Mathieu Morlighem
Message:

Extended CS rotation to macayeal Stokes coupling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r10526 r10527  
    53465346
    53475347        /*Constants*/
    5348         const int    numdofm=NDOF2*NUMVERTICES2D;
    5349         const int    numdofs=NDOF4*NUMVERTICES;
    5350         const int    numdoftotal=2*numdofm+numdofs;
     5348        const int numnodes    = 2 *NUMVERTICES;
     5349        const int numdofm     = NDOF2 *NUMVERTICES2D;
     5350        const int numdofs     = NDOF4 *NUMVERTICES;
     5351        const int numdoftotal = 2 *numdofm+numdofs;
    53515352
    53525353        /*Intermediaries */
     
    53695370        GaussPenta *gauss=NULL;
    53705371        GaussTria  *gauss_tria=NULL;
     5372        Node       *node_list[numnodes];
     5373        int         cs_list[numnodes];
    53715374
    53725375        /*Find penta on bed as stokes must be coupled to the dofs on the bed: */
    53735376        Penta* pentabase=GetBasalElement();
    53745377        Tria* tria=pentabase->SpawnTria(0,1,2); //nodes 0, 1 and 2 make the new tria.
     5378
     5379        /*Prepare node list*/
     5380        for(i=0;i<NUMVERTICES;i++){
     5381                node_list[i+0*NUMVERTICES] = pentabase->nodes[i];
     5382                node_list[i+1*NUMVERTICES] = this->nodes[i];
     5383                cs_list[i+0*NUMVERTICES] = XYEnum;
     5384                cs_list[i+1*NUMVERTICES] = XYZPEnum;
     5385        }
    53755386
    53765387        /*Initialize Element matrix and return if necessary*/
     
    54255436        for(i=0;i<numdofm;i++) for(j=0;j<numdofs;j++) Ke->values[i*numdoftotal+(j+2*numdofm)]+=Ke_gg2[i][j];
    54265437
     5438        /*Transform Coordinate System*/
     5439        TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
     5440
    54275441        /*Clean-up and return*/
    54285442        delete tria->matice; delete tria;
     
    54365450
    54375451        /*Constants*/
    5438         const int numdof=NUMVERTICES*NDOF4;
    5439         const int numdofm=NUMVERTICES*NDOF2;
    5440         const int numdof2d=NUMVERTICES2D*NDOF4;
    5441         const int numdof2dm=NUMVERTICES2D*NDOF2;
    5442         const int numdoftot=numdof+numdofm;
     5452        const int numnodes  = 2 *NUMVERTICES;
     5453        const int numdof    = NUMVERTICES *NDOF4;
     5454        const int numdofm   = NUMVERTICES *NDOF2;
     5455        const int numdof2d  = NUMVERTICES2D *NDOF4;
     5456        const int numdof2dm = NUMVERTICES2D *NDOF2;
     5457        const int numdoftot = numdof+numdofm;
    54435458
    54445459        /*Intermediaries */
     
    54615476        Friction*  friction=NULL;
    54625477        GaussPenta *gauss=NULL;
     5478        Node       *node_list[numnodes];
     5479        int         cs_list[numnodes];
    54635480
    54645481        /*If on water or not Stokes, skip stiffness: */
     
    54695486        ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
    54705487        delete Ke1; delete Ke2;
     5488
     5489        /*Prepare node list*/
     5490        for(i=0;i<NUMVERTICES;i++){
     5491                node_list[i+0*NUMVERTICES] = this->nodes[i];
     5492                node_list[i+1*NUMVERTICES] = this->nodes[i];
     5493                cs_list[i+0*NUMVERTICES] = XYEnum;
     5494                cs_list[i+1*NUMVERTICES] = XYZPEnum;
     5495        }
    54715496
    54725497        /*Retrieve all inputs and parameters*/
     
    55275552                for(i=0;i<numdof2d;i++) for(j=0;j<numdof2dm;j++) Ke->values[(i+numdofm)*numdoftot+j]+=Ke_drag_gaussian2[i][j];
    55285553        }
     5554
     5555        /*Transform Coordinate System*/
     5556        TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
    55295557
    55305558        /*Clean up and return*/
     
    63246352        }
    63256353
     6354        /*Transform coordinate system*/
     6355        TransformLoadVectorCoord(pe,nodes,NUMVERTICES,XYZPEnum);
     6356
    63266357        /*Clean up and return*/
    63276358        delete gauss;
     
    63946425                }
    63956426        }
     6427
     6428        /*Transform coordinate system*/
     6429        TransformLoadVectorCoord(pe,nodes,NUMVERTICES,XYZPEnum);
    63966430
    63976431        /*Clean up and return*/
     
    74747508        }
    74757509
     7510        /*Transform solution in Cartesian Space*/
     7511        TransformSolutionCoord(&macayeal_values[0],this->nodes,NUMVERTICES,XYEnum);
     7512        TransformSolutionCoord(&stokes_values[0],this->nodes,NUMVERTICES,XYZPEnum);
     7513
    74767514        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    74777515        for(i=0;i<NUMVERTICES;i++){
Note: See TracChangeset for help on using the changeset viewer.