Changeset 18531
- Timestamp:
- 09/19/14 14:25:30 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r18521 r18531 167 167 168 168 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)); 171 171 return; 172 172 } … … 174 174 IssmDouble* xyz_list=NULL; 175 175 IssmDouble *xyz_list_base=NULL; 176 IssmDouble pressure,viscosity,sigma_nn; 176 IssmDouble pressure,viscosity; 177 IssmDouble sigma_nn[3]; 177 178 IssmDouble sigma_xx,sigma_xy,sigma_yy; 178 179 IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/ … … 192 193 193 194 /* 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 } 212 215 213 216 /*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)); 215 218 216 219 /*Clean up and return*/ … … 1745 1748 xz_plane[1]=sin(theta); xz_plane[4]=0.; 1746 1749 xz_plane[2]=0.; xz_plane[5]=1.; 1750 1747 1751 if(groundedice>=0){ 1748 1752 this->nodes[i]->DofInSSet(1); //vy
Note:
See TracChangeset
for help on using the changeset viewer.