Changeset 11341


Ignore:
Timestamp:
02/07/12 09:07:26 (13 years ago)
Author:
Mathieu Morlighem
Message:

Almost done with Jacobian Stokes

File:
1 edited

Legend:

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

    r11340 r11341  
    74377437                case StokesApproximationEnum:
    74387438                        return CreateJacobianDiagnosticStokes();
     7439                case NoneApproximationEnum:
     7440                        return NULL;
    74397441                default:
    74407442                        _error_("Approximation %s not supported yet",EnumToStringx(approximation));
     
    74737475        /*Intermediaries */
    74747476        int        i,j,ig;
    7475         int        approximation;
    74767477        double     xyz_list[NUMVERTICES][3];
    74777478        double     Jdet;
     
    74897490
    74907491        /*Retrieve all inputs and parameters*/
    7491         inputs->GetInputValue(&approximation,ApproximationEnum);
    74927492        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    74937493        Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
     
    75357535ElementMatrix* Penta::CreateJacobianDiagnosticStokes(void){
    75367536
    7537         _error_("Not implemented yet");
    75387537        /*Constants*/
    7539         const int    numdof=NDOF2*NUMVERTICES;
     7538        const int    numdof=NDOF4*NUMVERTICES;
    75407539
    75417540        /*Intermediaries */
    75427541        int        i,j,ig;
    7543         int        approximation;
    75447542        double     xyz_list[NUMVERTICES][3];
    75457543        double     Jdet;
    75467544        double     eps1dotdphii,eps1dotdphij;
    75477545        double     eps2dotdphii,eps2dotdphij;
     7546        double     eps3dotdphii,eps3dotdphij;
    75487547        double     mu_prime;
    75497548        double     epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
    7550         double     eps1[3],eps2[3];
     7549        double     eps1[3],eps2[3],eps3[3];
    75517550        double     phi[NUMVERTICES];
    75527551        double     dphi[3][NUMVERTICES];
    75537552        GaussPenta *gauss=NULL;
    75547553
    7555         /*Initialize Jacobian with regular Pattyn (first part of the Gateau derivative)*/
    7556         ElementMatrix* Ke=CreateKMatrixDiagnosticPattyn();
     7554        /*Initialize Jacobian with regular Stokes (first part of the Gateau derivative)*/
     7555        ElementMatrix* Ke=CreateKMatrixDiagnosticStokes();
    75577556
    75587557        /*Retrieve all inputs and parameters*/
    7559         inputs->GetInputValue(&approximation,ApproximationEnum);
    75607558        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    75617559        Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
    75627560        Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
     7561        Input* vz_input=inputs->GetInput(VzEnum);       _assert_(vz_input);
    75637562
    75647563        /* Start  looping on the number of gaussian points: */
     
    75737572                this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
    75747573                matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);
    7575                 eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
    7576                 eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
    7577                 eps1[2]=epsilon[3];                eps2[2]=epsilon[4];
     7574                eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
     7575                eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
     7576                eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
    75787577
    75797578                for(i=0;i<6;i++){
     
    75837582                                eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i];
    75847583                                eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j];
    7585 
    7586                                 Ke->values[12*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
    7587                                 Ke->values[12*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
    7588                                 Ke->values[12*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
    7589                                 Ke->values[12*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
     7584                                eps3dotdphii=eps3[0]*dphi[0][i]+eps3[1]*dphi[1][i]+eps3[2]*dphi[2][i];
     7585                                eps3dotdphij=eps3[0]*dphi[0][j]+eps3[1]*dphi[1][j]+eps3[2]*dphi[2][j];
     7586
     7587                                Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
     7588                                Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
     7589                                Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
     7590
     7591                                Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
     7592                                Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
     7593                                Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
     7594
     7595                                Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
     7596                                Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
     7597                                Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
    75907598                        }
    75917599                }
     
    75937601
    75947602        /*Transform Coordinate System*/
    7595         TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum);
     7603        TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYZPEnum);
    75967604
    75977605        /*Clean up and return*/
Note: See TracChangeset for help on using the changeset viewer.