[21337] | 1 | Index: ../trunk-jpl/src/c/classes/Materials/Matbafl.cpp
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/classes/Materials/Matbafl.cpp (revision 20650)
|
---|
| 4 | +++ ../trunk-jpl/src/c/classes/Materials/Matbafl.cpp (revision 20651)
|
---|
| 5 | @@ -384,6 +384,47 @@
|
---|
| 6 | Input* es_input = element->inputs->GetInput(MaterialsRheologyEsbarEnum); _assert_(es_input);
|
---|
| 7 | Input* ko_input = element->inputs->GetInput(MaterialsRheologyKobarEnum); _assert_(ko_input);
|
---|
| 8 | ec_input->GetInputValue(&Ec,gauss);
|
---|
| 9 | + es_input->GetInputValue(&Es,gauss);
|
---|
| 10 | + ko_input->GetInputValue(&ko,gauss);
|
---|
| 11 | +
|
---|
| 12 | + /*Compute viscosity*/
|
---|
| 13 | + *pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
|
---|
| 14 | +}/*}}}*/
|
---|
| 15 | +void Matbafl::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
|
---|
| 16 | + _error_("not implemented yet");
|
---|
| 17 | +}/*}}}*/
|
---|
| 18 | +void Matbafl::ResetHooks(){/*{{{*/
|
---|
| 19 | +
|
---|
| 20 | + this->element=NULL;
|
---|
| 21 | +
|
---|
| 22 | + /*Get Element type*/
|
---|
| 23 | + this->helement->reset();
|
---|
| 24 | +
|
---|
| 25 | +}
|
---|
| 26 | +/*}}}*/
|
---|
| 27 | +IssmDouble Matbafl::GetViscosityGeneral(IssmDouble ko,IssmDouble Ec, IssmDouble Es,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz){/*{{{*/
|
---|
| 28 | +
|
---|
| 29 | + /*Intermediaries*/
|
---|
| 30 | + IssmDouble viscosity;
|
---|
| 31 | + IssmDouble vorticity[3],vorticity_norm;
|
---|
| 32 | + IssmDouble nrsp[3],nrsp_norm;
|
---|
| 33 | + IssmDouble eps[3][3],epso;
|
---|
| 34 | + IssmDouble epsprime[3],epsprime_norm;
|
---|
| 35 | + IssmDouble E,lambdas;
|
---|
| 36 | +
|
---|
| 37 | + /*Create vorticity vector*/
|
---|
| 38 | + _assert_(dvx && dvy && dvz);
|
---|
| 39 | + vorticity[0] = dvz[1] - dvy[2];
|
---|
| 40 | + vorticity[1] = dvx[2] - dvz[0];
|
---|
| 41 | + vorticity[2] = dvy[0] - dvx[1];
|
---|
| 42 | +
|
---|
| 43 | + /*Normalize*/
|
---|
| 44 | + vorticity_norm = sqrt(vorticity[0]*vorticity[0] + vorticity[1]*vorticity[1] + vorticity[2]*vorticity[2]);
|
---|
| 45 | + if(vorticity_norm==0){
|
---|
| 46 | + vorticity[0] = 0.;
|
---|
| 47 | + vorticity[1] = 0.;
|
---|
| 48 | + vorticity[2] = 1.;
|
---|
| 49 | + }
|
---|
| 50 | else{
|
---|
| 51 | vorticity[0] =vorticity[0]/vorticity_norm;
|
---|
| 52 | vorticity[1] =vorticity[1]/vorticity_norm;
|
---|