Changeset 18531


Ignore:
Timestamp:
09/19/14 14:25:30 (11 years ago)
Author:
seroussi
Message:

NEW: return SigmaNN as P1Enums instead of P0

File:
1 edited

Legend:

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

    r18521 r18531  
    167167
    168168        if(!IsOnBase()){
    169                 IssmDouble sigma_nn=0;
    170                 this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn,P0Enum));
     169                IssmDouble sigma_nn[3]={0.};
     170                this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn[0],P1Enum));
    171171                return;
    172172        }
     
    174174                IssmDouble* xyz_list=NULL;
    175175                IssmDouble *xyz_list_base=NULL;
    176                 IssmDouble  pressure,viscosity,sigma_nn;
     176                IssmDouble  pressure,viscosity;
     177                IssmDouble  sigma_nn[3];
    177178                IssmDouble  sigma_xx,sigma_xy,sigma_yy;
    178179                IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
     
    192193
    193194                /* Start looping on the number of vertices: */
    194                 Gauss* gauss=NewGaussBase(1);
    195                 gauss->GaussPoint(0);
    196 
    197                 /*Compute strain rate viscosity and pressure: */
    198                 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
    199                 this->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,NULL);
    200                 pressure_input->GetInputValue(&pressure,gauss);
    201 
    202                 /*Compute Stress*/
    203                 sigma_xx=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
    204                 sigma_yy=2*viscosity*epsilon[1]-pressure;
    205                 sigma_xy=2*viscosity*epsilon[2];
    206 
    207                 /*Get normal vector to the bed */
    208                 NormalBase(&base_normal[0],xyz_list_base);
    209 
    210                 /*Compute sigma_nn*/
    211                 sigma_nn=sigma_xx*base_normal[0]*base_normal[0] + 2*sigma_xy*base_normal[0]*base_normal[1] + sigma_yy*base_normal[1]*base_normal[1];
     195                Gauss* gauss = this->NewGauss();
     196                for(int i=0;i<NUMVERTICES;i++){
     197                        gauss->GaussNode(P1Enum,i);
     198
     199                        /*Compute strain rate viscosity and pressure: */
     200                        this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
     201                        this->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,NULL);
     202                        pressure_input->GetInputValue(&pressure,gauss);
     203
     204                        /*Compute Stress*/
     205                        sigma_xx=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
     206                        sigma_yy=2*viscosity*epsilon[1]-pressure;
     207                        sigma_xy=2*viscosity*epsilon[2];
     208
     209                        /*Get normal vector to the bed */
     210                        NormalBase(&base_normal[0],xyz_list_base);
     211
     212                        /*Compute sigma_nn*/
     213                        sigma_nn[i]=sigma_xx*base_normal[0]*base_normal[0] + 2*sigma_xy*base_normal[0]*base_normal[1] + sigma_yy*base_normal[1]*base_normal[1];
     214                }
    212215
    213216                /*Add Stress tensor components into inputs*/
    214                 this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn,P0Enum));
     217                this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn[0],P1Enum));
    215218
    216219                /*Clean up and return*/
     
    17451748                        xz_plane[1]=sin(theta);       xz_plane[4]=0.; 
    17461749                        xz_plane[2]=0.;               xz_plane[5]=1.;         
     1750
    17471751                        if(groundedice>=0){
    17481752                                this->nodes[i]->DofInSSet(1); //vy
Note: See TracChangeset for help on using the changeset viewer.