Changeset 19033 for issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
- Timestamp:
- 01/22/15 14:51:25 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r19029 r19033 326 326 delete gauss; 327 327 328 } 329 /*}}}*/ 330 void Tria::CalvingRateDev(){/*{{{*/ 331 332 IssmDouble xyz_list[NUMVERTICES][3]; 333 IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/ 334 IssmDouble calvingratex[NUMVERTICES]; 335 IssmDouble calvingratey[NUMVERTICES]; 336 IssmDouble calvingrate[NUMVERTICES]; 337 IssmDouble lambda1,lambda2,ex,ey,vx,vy,vel; 338 339 /* Get node coordinates and dof list: */ 340 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 341 342 /*Retrieve all inputs and parameters we will need*/ 343 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 344 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 345 346 /* Start looping on the number of vertices: */ 347 GaussTria* gauss=new GaussTria(); 348 for(int iv=0;iv<NUMVERTICES;iv++){ 349 gauss->GaussVertex(iv); 350 351 /*Get velocity components and thickness*/ 352 vx_input->GetInputValue(&vx,gauss); 353 vy_input->GetInputValue(&vy,gauss); 354 vel=sqrt(vx*vx+vy*vy)+1.e-14; 355 356 /*Compute strain rate and viscosity: */ 357 this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 358 359 /*Get Eigen values*/ 360 Matrix2x2Eigen(&lambda1,&lambda2,&ex,&ey,epsilon[0],epsilon[2],epsilon[1]); 361 362 /*Process Eigen values*/ 363 lambda1>0? lambda1 = pow(lambda1,.3) : lambda1=0.; 364 lambda2>0? lambda2 = pow(lambda2,.3) : lambda2=0.; 365 lambda1 = lambda1*5.e-2; 366 lambda2 = lambda2*5.e-2; 367 _assert_(!xIsNan<IssmDouble>(lambda1)); 368 _assert_(!xIsNan<IssmDouble>(lambda2)); 369 370 /*Assign values*/ 371 //calvingratex[iv]=ex*lambda1 - ey*lambda2; 372 //calvingratey[iv]=ey*lambda1 + ex*lambda2; 373 calvingratex[iv]=vx/vel*(lambda1 + lambda2); 374 calvingratey[iv]=vy/vel*(lambda1 + lambda2); 375 calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]); 376 } 377 378 /*Add input*/ 379 this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum)); 380 this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum)); 381 this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum)); 382 383 /*Clean up and return*/ 384 delete gauss; 328 385 } 329 386 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.