Changeset 20650
- Timestamp:
- 05/25/16 20:40:09 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Materials/Matbafl.cpp
r20649 r20650 331 331 } 332 332 else{ 333 dvx[2] = 0.; 333 334 vy = 0.; 334 335 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.; 335 336 } 336 337 vz = 0.; 337 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;338 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1]; 338 339 339 340 /*Get enhancement factors and ko*/ … … 371 372 } 372 373 else{ 374 dvx[1] = 0.; 375 dvx[2] = 0.; 373 376 vy = 0.; 374 377 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.; 375 378 } 376 379 vz = 0.; 377 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;380 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1]; 378 381 379 382 /*Get enhancement factors and ko*/ … … 382 385 Input* ko_input = element->inputs->GetInput(MaterialsRheologyKobarEnum); _assert_(ko_input); 383 386 ec_input->GetInputValue(&Ec,gauss); 384 es_input->GetInputValue(&Es,gauss);385 ko_input->GetInputValue(&ko,gauss);386 387 /*Compute viscosity*/388 *pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);389 }/*}}}*/390 void Matbafl::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/391 _error_("not implemented yet");392 }/*}}}*/393 void Matbafl::ResetHooks(){/*{{{*/394 395 this->element=NULL;396 397 /*Get Element type*/398 this->helement->reset();399 400 }401 /*}}}*/402 IssmDouble Matbafl::GetViscosityGeneral(IssmDouble ko,IssmDouble Ec, IssmDouble Es,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz){/*{{{*/403 404 /*Intermediaries*/405 IssmDouble viscosity;406 IssmDouble vorticity[3],vorticity_norm;407 IssmDouble nrsp[3],nrsp_norm;408 IssmDouble eps[3][3],epso;409 IssmDouble epsprime[3],epsprime_norm;410 IssmDouble E,lambdas;411 412 /*Create vorticity vector*/413 _assert_(dvx && dvy && dvz);414 vorticity[0] = dvz[1] - dvy[2];415 vorticity[1] = dvx[2] - dvz[0];416 vorticity[2] = dvy[0] - dvx[1];417 418 /*Normalize*/419 vorticity_norm = sqrt(vorticity[0]*vorticity[0] + vorticity[1]*vorticity[1] + vorticity[2]*vorticity[2]);420 if(vorticity_norm==0){421 vorticity[0] = 0.;422 vorticity[1] = 0.;423 vorticity[2] = 1.;424 }425 387 else{ 426 388 vorticity[0] =vorticity[0]/vorticity_norm; … … 472 434 for(int j=0;j<3;j++){ 473 435 for(int k=0;k<3;k++){ 474 epsprime[j] += nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j];436 epsprime[j] += -nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j]; 475 437 } 476 438 } … … 480 442 for(int j=0;j<3;j++){ 481 443 for(int k=0;k<3;k++){ 482 epsprime[j] += nrsp[i]*eps[i][k]*vorticity[k]*vorticity[j];444 epsprime[j] += -nrsp[i]*eps[i][k]*vorticity[k]*vorticity[j]; 483 445 } 484 446 } … … 490 452 /*Compute lambda_s*/ 491 453 _assert_(epso>0.); 492 lambdas = sqrt(2*epsprime_norm /(3*epso));454 lambdas = sqrt(2*epsprime_norm*epsprime_norm/(3*epso*epso)); 493 455 494 456 /*Get total enhancement factor E(lambdas)*/
Note:
See TracChangeset
for help on using the changeset viewer.