Changeset 18699
- Timestamp:
- 10/28/14 13:27:40 (10 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Elements
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r18613 r18699 1106 1106 name==EplHeadOldEnum || 1107 1107 name==StressIntensityFactorEnum || 1108 name==StrainRateparallelEnum || 1109 name==StrainRateperpendicularEnum || 1108 1110 name==HydrologydcEplThicknessOldEnum || 1109 1111 name==HydrologydcEplInitialThicknessEnum || … … 1208 1210 input=this->inputs->GetInput(output_enum); 1209 1211 break; 1212 case StrainRateparallelEnum: 1213 this->StrainRateparallel(); 1214 input=this->inputs->GetInput(output_enum); 1215 break; 1216 case StrainRateperpendicularEnum: 1217 this->StrainRateperpendicular(); 1218 input=this->inputs->GetInput(output_enum); 1219 break; 1210 1220 default: 1211 1221 _error_("input "<<EnumToStringx(output_enum)<<" not found in element"); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r18613 r18699 220 220 virtual void ComputeDeviatoricStressTensor(void)=0; 221 221 virtual void StressIntensityFactor(void)=0; 222 virtual void StrainRateparallel(void)=0; 223 virtual void StrainRateperpendicular(void)=0; 222 224 223 225 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r18613 r18699 422 422 this->inputs->AddInput(new PentaInput(StressIntensityFactorEnum,&ki[0],P1Enum)); 423 423 this->InputExtrude(StressIntensityFactorEnum,-1); 424 } 425 /*}}}*/ 426 void Penta::StrainRateparallel(){/*{{{*/ 427 428 IssmDouble xyz_list[NUMVERTICES][3]; 429 GaussPenta* gauss=NULL; 430 IssmDouble vx,vy,vel; 431 IssmDouble strainxx; 432 IssmDouble strainxy; 433 IssmDouble strainyy; 434 IssmDouble strainparallel[NUMVERTICES]; 435 436 /* Get node coordinates and dof list: */ 437 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 438 439 /*Retrieve all inputs we will need*/ 440 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 441 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 442 Input* strainxx_input=inputs->GetInput(StrainRatexxEnum); _assert_(strainxx_input); 443 Input* strainxy_input=inputs->GetInput(StrainRatexyEnum); _assert_(strainxy_input); 444 Input* strainyy_input=inputs->GetInput(StrainRateyyEnum); _assert_(strainyy_input); 445 446 /* Start looping on the number of vertices: */ 447 gauss=new GaussPenta(); 448 for (int iv=0;iv<NUMVERTICES;iv++){ 449 gauss->GaussVertex(iv); 450 451 /* Get the value we need*/ 452 vx_input->GetInputValue(&vx,gauss); 453 vy_input->GetInputValue(&vy,gauss); 454 vel=vx*vx+vy*vy; 455 strainxx_input->GetInputValue(&strainxx,gauss); 456 strainxy_input->GetInputValue(&strainxy,gauss); 457 strainyy_input->GetInputValue(&strainyy,gauss); 458 459 /*strainparallel= Strain rate along the ice flow direction */ 460 strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-6); 461 } 462 463 /*Add input*/ 464 this->inputs->AddInput(new PentaInput(StrainRateparallelEnum,&strainparallel[0],P1Enum)); 465 466 /*Clean up and return*/ 467 delete gauss; 468 } 469 /*}}}*/ 470 void Penta::StrainRateperpendicular(){/*{{{*/ 471 472 IssmDouble xyz_list[NUMVERTICES][3]; 473 GaussPenta* gauss=NULL; 474 IssmDouble vx,vy,vel; 475 IssmDouble strainxx; 476 IssmDouble strainxy; 477 IssmDouble strainyy; 478 IssmDouble strainperpendicular[NUMVERTICES]; 479 480 /* Get node coordinates and dof list: */ 481 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 482 483 /*Retrieve all inputs we will need*/ 484 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 485 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 486 Input* strainxx_input=inputs->GetInput(StrainRatexxEnum); _assert_(strainxx_input); 487 Input* strainxy_input=inputs->GetInput(StrainRatexyEnum); _assert_(strainxy_input); 488 Input* strainyy_input=inputs->GetInput(StrainRateyyEnum); _assert_(strainyy_input); 489 490 491 /* Start looping on the number of vertices: */ 492 gauss=new GaussPenta(); 493 for (int iv=0;iv<NUMVERTICES;iv++){ 494 gauss->GaussVertex(iv); 495 496 /* Get the value we need*/ 497 vx_input->GetInputValue(&vx,gauss); 498 vy_input->GetInputValue(&vy,gauss); 499 vel=vx*vx+vy*vy; 500 strainxx_input->GetInputValue(&strainxx,gauss); 501 strainxy_input->GetInputValue(&strainxy,gauss); 502 strainyy_input->GetInputValue(&strainyy,gauss); 503 504 /*strainperpendicular= Strain rate perpendicular to the ice flow direction */ 505 strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-6); 506 } 507 508 /*Add input*/ 509 this->inputs->AddInput(new PentaInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1Enum)); 510 511 /*Clean up and return*/ 512 delete gauss; 424 513 } 425 514 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r18613 r18699 58 58 void ComputeDeviatoricStressTensor(); 59 59 void StressIntensityFactor(); 60 void StrainRateparallel(); 61 void StrainRateperpendicular(); 60 62 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters); 61 63 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r18613 r18699 58 58 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 59 59 void StressIntensityFactor(void){_error_("not implemented yet");}; 60 void StrainRateparallel(void){_error_("not implemented yet");}; 61 void StrainRateperpendicular(void){_error_("not implemented yet");}; 60 62 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 61 63 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r18613 r18699 58 58 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 59 59 void StressIntensityFactor(void){_error_("not implemented yet");}; 60 void StrainRateparallel(void){_error_("not implemented yet");}; 61 void StrainRateperpendicular(void){_error_("not implemented yet");}; 60 62 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 61 63 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r18565 r18699 271 271 this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0],P1Enum)); 272 272 this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0],P1Enum)); 273 274 /*Clean up and return*/ 275 delete gauss; 276 } 277 /*}}}*/ 278 void Tria::StrainRateperpendicular(){/*{{{*/ 279 280 IssmDouble xyz_list[NUMVERTICES][3]; 281 GaussPenta* gauss=NULL; 282 IssmDouble vx,vy,vel; 283 IssmDouble strainxx; 284 IssmDouble strainxy; 285 IssmDouble strainyy; 286 IssmDouble strainperpendicular[NUMVERTICES]; 287 288 /* Get node coordinates and dof list: */ 289 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 290 291 /*Retrieve all inputs we will need*/ 292 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 293 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 294 Input* strainxx_input=inputs->GetInput(StrainRatexxEnum); _assert_(strainxx_input); 295 Input* strainxy_input=inputs->GetInput(StrainRatexyEnum); _assert_(strainxy_input); 296 Input* strainyy_input=inputs->GetInput(StrainRateyyEnum); _assert_(strainyy_input); 297 298 299 /* Start looping on the number of vertices: */ 300 gauss=new GaussPenta(); 301 for (int iv=0;iv<NUMVERTICES;iv++){ 302 gauss->GaussVertex(iv); 303 304 /* Get the value we need*/ 305 vx_input->GetInputValue(&vx,gauss); 306 vy_input->GetInputValue(&vy,gauss); 307 vel=vx*vx+vy*vy; 308 strainxx_input->GetInputValue(&strainxx,gauss); 309 strainxy_input->GetInputValue(&strainxy,gauss); 310 strainyy_input->GetInputValue(&strainyy,gauss); 311 312 /*strainperpendicular= Strain rate perpendicular to the ice flow direction */ 313 strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-6); 314 } 315 316 /*Add input*/ 317 this->inputs->AddInput(new PentaInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1Enum)); 318 319 /*Clean up and return*/ 320 delete gauss; 321 } 322 /*}}}*/ 323 void Tria::StrainRateparallel(){/*{{{*/ 324 325 IssmDouble xyz_list[NUMVERTICES][3]; 326 GaussPenta* gauss=NULL; 327 IssmDouble vx,vy,vel; 328 IssmDouble strainxx; 329 IssmDouble strainxy; 330 IssmDouble strainyy; 331 IssmDouble strainparallel[NUMVERTICES]; 332 333 /* Get node coordinates and dof list: */ 334 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 335 336 /*Retrieve all inputs we will need*/ 337 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 338 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 339 Input* strainxx_input=inputs->GetInput(StrainRatexxEnum); _assert_(strainxx_input); 340 Input* strainxy_input=inputs->GetInput(StrainRatexyEnum); _assert_(strainxy_input); 341 Input* strainyy_input=inputs->GetInput(StrainRateyyEnum); _assert_(strainyy_input); 342 343 /* Start looping on the number of vertices: */ 344 gauss=new GaussPenta(); 345 for (int iv=0;iv<NUMVERTICES;iv++){ 346 gauss->GaussVertex(iv); 347 348 /* Get the value we need*/ 349 vx_input->GetInputValue(&vx,gauss); 350 vy_input->GetInputValue(&vy,gauss); 351 vel=vx*vx+vy*vy; 352 strainxx_input->GetInputValue(&strainxx,gauss); 353 strainxy_input->GetInputValue(&strainxy,gauss); 354 strainyy_input->GetInputValue(&strainyy,gauss); 355 356 /*strainparallel= Strain rate along the ice flow direction */ 357 strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-6); 358 } 359 360 /*Add input*/ 361 this->inputs->AddInput(new PentaInput(StrainRateparallelEnum,&strainparallel[0],P1Enum)); 273 362 274 363 /*Clean up and return*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r18613 r18699 57 57 void ComputeSurfaceNormalVelocity(); 58 58 void StressIntensityFactor(void){_error_("not implemented yet");}; 59 void StrainRateparallel(); 60 void StrainRateperpendicular(); 59 61 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 60 62 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
Note:
See TracChangeset
for help on using the changeset viewer.