Ignore:
Timestamp:
04/22/14 12:19:15 (11 years ago)
Author:
jbondzio
Message:

ADD: Compute Strainrates for Penta and Tria

File:
1 edited

Legend:

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

    r17797 r17812  
    204204/*FUNCTION Tria::ComputeStrainRate {{{*/
    205205void  Tria::ComputeStrainRate(Vector<IssmDouble>* eps){
    206         _error_("Not Implemented yet");
     206
     207        IssmDouble      xyz_list[NUMVERTICES][3];
     208        IssmDouble      epsilon[6]; /* epsilon=[exx,eyy,exy];*/
     209        IssmDouble      eps_xx[NUMVERTICES];
     210        IssmDouble               eps_yy[NUMVERTICES];
     211        IssmDouble               eps_zz[NUMVERTICES]={0,0,0};
     212        IssmDouble      eps_xy[NUMVERTICES];
     213        IssmDouble               eps_xz[NUMVERTICES]={0,0,0};
     214        IssmDouble               eps_yz[NUMVERTICES]={0,0,0};
     215        GaussPenta*     gauss=NULL;
     216
     217        /* Get node coordinates and dof list: */
     218        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     219
     220        /*Retrieve all inputs we will be needing: */
     221        Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
     222        Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
     223
     224        /* Start looping on the number of vertices: */
     225        gauss=new GaussPenta();
     226        for (int iv=0;iv<NUMVERTICES;iv++){
     227                gauss->GaussVertex(iv);
     228
     229                /*Compute strain rate viscosity and pressure: */
     230                this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
     231
     232                eps_xx[iv]=epsilon[0];
     233                eps_yy[iv]=epsilon[1];
     234                eps_xy[iv]=epsilon[2];
     235        }
     236
     237        /*Add Stress tensor components into inputs*/
     238        this->inputs->AddInput(new TriaInput(StrainRatexxEnum,&eps_xx[0],P1Enum));
     239        this->inputs->AddInput(new TriaInput(StrainRatexyEnum,&eps_xy[0],P1Enum));
     240        this->inputs->AddInput(new TriaInput(StrainRatexzEnum,&eps_xz[0],P1Enum));
     241        this->inputs->AddInput(new TriaInput(StrainRateyyEnum,&eps_yy[0],P1Enum));
     242        this->inputs->AddInput(new TriaInput(StrainRateyzEnum,&eps_yz[0],P1Enum));
     243        this->inputs->AddInput(new TriaInput(StrainRatezzEnum,&eps_zz[0],P1Enum));
     244
     245        /*Clean up and return*/
     246        delete gauss;
     247
    207248}
    208249/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.