[21726] | 1 | Index: ../trunk-jpl/src/c/classes/Materials/Matestar.cpp
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/classes/Materials/Matestar.cpp (revision 21699)
|
---|
| 4 | +++ ../trunk-jpl/src/c/classes/Materials/Matestar.cpp (revision 21700)
|
---|
| 5 | @@ -159,6 +159,7 @@
|
---|
| 6 | }
|
---|
| 7 | /*}}}*/
|
---|
| 8 | IssmDouble Matestar::GetB(){/*{{{*/
|
---|
| 9 | +
|
---|
| 10 | /*Output*/
|
---|
| 11 | IssmDouble B;
|
---|
| 12 |
|
---|
| 13 | @@ -167,6 +168,7 @@
|
---|
| 14 | }
|
---|
| 15 | /*}}}*/
|
---|
| 16 | IssmDouble Matestar::GetBbar(){/*{{{*/
|
---|
| 17 | +
|
---|
| 18 | /*Output*/
|
---|
| 19 | IssmDouble Bbar;
|
---|
| 20 |
|
---|
| 21 | @@ -192,6 +194,15 @@
|
---|
| 22 | return Ec;
|
---|
| 23 | }
|
---|
| 24 | /*}}}*/
|
---|
| 25 | +IssmDouble Matestar::GetEcbar(){/*{{{*/
|
---|
| 26 | +
|
---|
| 27 | + /*Output*/
|
---|
| 28 | + IssmDouble Ecbar;
|
---|
| 29 | +
|
---|
| 30 | + element->inputs->GetInputAverage(&Ecbar,MaterialsRheologyEcbarEnum);
|
---|
| 31 | + return Ecbar;
|
---|
| 32 | +}
|
---|
| 33 | +/*}}}*/
|
---|
| 34 | IssmDouble Matestar::GetEs(){/*{{{*/
|
---|
| 35 |
|
---|
| 36 | /*Output*/
|
---|
| 37 | @@ -201,6 +212,15 @@
|
---|
| 38 | return Es;
|
---|
| 39 | }
|
---|
| 40 | /*}}}*/
|
---|
| 41 | +IssmDouble Matestar::GetEsbar(){/*{{{*/
|
---|
| 42 | +
|
---|
| 43 | + /*Output*/
|
---|
| 44 | + IssmDouble Esbar;
|
---|
| 45 | +
|
---|
| 46 | + element->inputs->GetInputAverage(&Esbar,MaterialsRheologyEsbarEnum);
|
---|
| 47 | + return Esbar;
|
---|
| 48 | +}
|
---|
| 49 | +/*}}}*/
|
---|
| 50 | IssmDouble Matestar::GetN(){/*{{{*/
|
---|
| 51 |
|
---|
| 52 | /*Output*/
|
---|
| 53 | @@ -210,51 +230,6 @@
|
---|
| 54 | /*}}}*/
|
---|
| 55 | void Matestar::GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
|
---|
| 56 | _error_("not implemented yet");
|
---|
| 57 | - /*From a string tensor and a material object, return viscosity, using Glen's flow law.
|
---|
| 58 | - (1-D) B
|
---|
| 59 | - viscosity= -------------------------
|
---|
| 60 | - 2 eps_eff ^[(n-1)/n]
|
---|
| 61 | -
|
---|
| 62 | - where viscosity is the viscotiy, B the flow law parameter , eps_eff is the effective strain rate
|
---|
| 63 | - and n the flow law exponent.
|
---|
| 64 | -
|
---|
| 65 | - If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we
|
---|
| 66 | - return 10^14, initial viscosity.
|
---|
| 67 | - */
|
---|
| 68 | -
|
---|
| 69 | - /*output: */
|
---|
| 70 | - IssmDouble viscosity;
|
---|
| 71 | -
|
---|
| 72 | - /*Intermediary: */
|
---|
| 73 | - IssmDouble B,D=0.,n;
|
---|
| 74 | -
|
---|
| 75 | - /*Get B and n*/
|
---|
| 76 | - B=GetB(); _assert_(B>0.);
|
---|
| 77 | - n=GetN(); _assert_(n>0.);
|
---|
| 78 | -
|
---|
| 79 | - if (n==1.){
|
---|
| 80 | - /*Linear Viscous behavior (Newtonian fluid) viscosity=B/2: */
|
---|
| 81 | - viscosity=(1.-D)*B/2.;
|
---|
| 82 | - }
|
---|
| 83 | - else{
|
---|
| 84 | -
|
---|
| 85 | - /*if no strain rate, return maximum viscosity*/
|
---|
| 86 | - if(eps_eff==0.){
|
---|
| 87 | - viscosity = 1.e+14/2.;
|
---|
| 88 | - //viscosity = B;
|
---|
| 89 | - //viscosity=2.5*pow(10.,17);
|
---|
| 90 | - }
|
---|
| 91 | -
|
---|
| 92 | - else{
|
---|
| 93 | - viscosity=(1.-D)*B/(2.*pow(eps_eff,(n-1.)/n));
|
---|
| 94 | - }
|
---|
| 95 | - }
|
---|
| 96 | -
|
---|
| 97 | - /*Checks in debugging mode*/
|
---|
| 98 | - if(viscosity<=0) _error_("Negative viscosity");
|
---|
| 99 | -
|
---|
| 100 | - /*Return: */
|
---|
| 101 | - *pviscosity=viscosity;
|
---|
| 102 | }
|
---|
| 103 | /*}}}*/
|
---|
| 104 | void Matestar::GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
|
---|
| 105 | @@ -273,14 +248,16 @@
|
---|
| 106 | _error_("not implemented yet");
|
---|
| 107 | }
|
---|
| 108 | /*}}}*/
|
---|
| 109 | -IssmDouble Matestar::GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz){/*{{{*/
|
---|
| 110 | +IssmDouble Matestar::GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,bool isdepthaveraged){/*{{{*/
|
---|
| 111 |
|
---|
| 112 | + /*output: */
|
---|
| 113 | + IssmDouble viscosity;
|
---|
| 114 | +
|
---|
| 115 | /*Intermediaries*/
|
---|
| 116 | - IssmDouble viscosity;
|
---|
| 117 | IssmDouble epseff,epsprime_norm;
|
---|
| 118 | IssmDouble lambdas;
|
---|
| 119 | IssmDouble vmag,dvmag[3];
|
---|
| 120 | - IssmDouble B,Ec,Es,E;
|
---|
| 121 | + IssmDouble B,Ec,Es,E,n;
|
---|
| 122 |
|
---|
| 123 | /*Calculate velocity magnitude and its derivative*/
|
---|
| 124 | vmag = sqrt(vx*vx+vy*vy+vz*vz);
|
---|
| 125 | @@ -299,9 +276,17 @@
|
---|
| 126 | lambdas=EstarLambdaS(epseff,epsprime_norm);
|
---|
| 127 |
|
---|
| 128 | /*Get B and enhancement*/
|
---|
| 129 | - B=GetB(); _assert_(B>0.);
|
---|
| 130 | - Ec=GetEc(); _assert_(Ec>=0.);
|
---|
| 131 | - Es=GetEs(); _assert_(Es>=0.);
|
---|
| 132 | + n=GetN(); _assert_(n>0.);
|
---|
| 133 | + if (isdepthaveraged==0.){
|
---|
| 134 | + B=GetB(); _assert_(B>0.);
|
---|
| 135 | + Ec=GetEc(); _assert_(Ec>=0.);
|
---|
| 136 | + Es=GetEs(); _assert_(Es>=0.);
|
---|
| 137 | + }
|
---|
| 138 | + else{
|
---|
| 139 | + B=GetBbar(); _assert_(B>0.);
|
---|
| 140 | + Ec=GetEcbar(); _assert_(Ec>=0.);
|
---|
| 141 | + Es=GetEsbar(); _assert_(Es>=0.);
|
---|
| 142 | + }
|
---|
| 143 |
|
---|
| 144 | /*Get total enhancement factor E(lambdas)*/
|
---|
| 145 | E = Ec + (Es-Ec)*lambdas*lambdas; _assert_(E>0.);
|
---|
| 146 | @@ -314,34 +299,64 @@
|
---|
| 147 | //viscosity=2.5*pow(10.,17);
|
---|
| 148 | }
|
---|
| 149 | else{
|
---|
| 150 | - viscosity = B/(2.*pow(E*epseff*epseff,1./3.));
|
---|
| 151 | + viscosity = B/(2.*pow(E,1./n)*pow(epseff,2./n));
|
---|
| 152 | }
|
---|
| 153 |
|
---|
| 154 | /*Assign output pointer*/
|
---|
| 155 | return viscosity;
|
---|
| 156 | }
|
---|
| 157 | /*}}}*/
|
---|
| 158 | -void Matestar::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff){/*{{{*/
|
---|
| 159 | - /*output: */
|
---|
| 160 | +IssmDouble Matestar::GetViscosity_BGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,bool isdepthaveraged){/*{{{*/
|
---|
| 161 | +
|
---|
| 162 | + /*Intermediaries*/
|
---|
| 163 | IssmDouble dmudB;
|
---|
| 164 | + IssmDouble epseff,epsprime_norm;
|
---|
| 165 | + IssmDouble lambdas;
|
---|
| 166 | + IssmDouble vmag,dvmag[3];
|
---|
| 167 | + IssmDouble Ec,Es,E;
|
---|
| 168 |
|
---|
| 169 | - /*Intermediary: */
|
---|
| 170 | - IssmDouble E=1.,n;
|
---|
| 171 | + /*Calculate velocity magnitude and its derivative*/
|
---|
| 172 | + vmag = sqrt(vx*vx+vy*vy+vz*vz);
|
---|
| 173 | + if(vmag<1e-12){
|
---|
| 174 | + dvmag[0]=0;
|
---|
| 175 | + dvmag[1]=0;
|
---|
| 176 | + dvmag[2]=0;
|
---|
| 177 | + }
|
---|
| 178 | + else{
|
---|
| 179 | + dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
|
---|
| 180 | + dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
|
---|
| 181 | + dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
|
---|
| 182 | + }
|
---|
| 183 |
|
---|
| 184 | - n=GetN(); _assert_(n>0.);
|
---|
| 185 | - if(n==1.){
|
---|
| 186 | - /*Linear Viscous behavior (Newtonian fluid) dmudB=B/2E: */
|
---|
| 187 | - dmudB=1./(2.*E);
|
---|
| 188 | + EstarStrainrateQuantities(&epseff,&epsprime_norm,vx,vy,vz,vmag,dvx,dvy,dvz,&dvmag[0]);
|
---|
| 189 | + lambdas=EstarLambdaS(epseff,epsprime_norm);
|
---|
| 190 | +
|
---|
| 191 | + /*Get enhancement*/
|
---|
| 192 | + if (isdepthaveraged==0.){
|
---|
| 193 | + Ec=GetEc(); _assert_(Ec>=0.);
|
---|
| 194 | + Es=GetEs(); _assert_(Es>=0.);
|
---|
| 195 | }
|
---|
| 196 | else{
|
---|
| 197 | - if(eps_eff==0.) dmudB = 0.;
|
---|
| 198 | - else dmudB = 1./(2.*pow(E*eps_eff*eps_eff,1./3.));
|
---|
| 199 | + Ec=GetEcbar(); _assert_(Ec>=0.);
|
---|
| 200 | + Es=GetEsbar(); _assert_(Es>=0.);
|
---|
| 201 | }
|
---|
| 202 |
|
---|
| 203 | - /*Return: */
|
---|
| 204 | - *pdmudB=dmudB;
|
---|
| 205 | + /*Get total enhancement factor E(lambdas)*/
|
---|
| 206 | + E = Ec + (Es-Ec)*lambdas*lambdas; _assert_(E>0.);
|
---|
| 207 | +
|
---|
| 208 | + /*Compute dmudB*/
|
---|
| 209 | + if(epseff==0.) dmudB = 0.;
|
---|
| 210 | + else dmudB = 1./(2.*pow(E,1./3.)*pow(epseff,2./3.));
|
---|
| 211 | +
|
---|
| 212 | + /*Assign output*/
|
---|
| 213 | + return dmudB;
|
---|
| 214 | +
|
---|
| 215 | }
|
---|
| 216 | /*}}}*/
|
---|
| 217 | +void Matestar::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff){/*{{{*/
|
---|
| 218 | + _error_("not implemented yet");
|
---|
| 219 | +}
|
---|
| 220 | +/*}}}*/
|
---|
| 221 | void Matestar::GetViscosity_D(IssmDouble* pdmudD,IssmDouble eps_eff){/*{{{*/
|
---|
| 222 | _error_("not implemented yet");
|
---|
| 223 | }
|
---|
| 224 | @@ -392,12 +407,99 @@
|
---|
| 225 |
|
---|
| 226 | }
|
---|
| 227 | /*}}}*/
|
---|
| 228 | +void Matestar::ViscosityBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
|
---|
| 229 | +
|
---|
| 230 | + /*Intermediaries*/
|
---|
| 231 | + IssmDouble vx,vy,vz;
|
---|
| 232 | + IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 233 | + bool isdepthaveraged=0.;
|
---|
| 234 | +
|
---|
| 235 | + /*Get velocity derivatives in all directions*/
|
---|
| 236 | + _assert_(dim>1);
|
---|
| 237 | + _assert_(vx_input);
|
---|
| 238 | + vx_input->GetInputValue(&vx,gauss);
|
---|
| 239 | + vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
|
---|
| 240 | + _assert_(vy_input);
|
---|
| 241 | + vy_input->GetInputValue(&vy,gauss);
|
---|
| 242 | + vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
|
---|
| 243 | + if(dim==3){
|
---|
| 244 | + _assert_(vz_input);
|
---|
| 245 | + vz_input->GetInputValue(&vz,gauss);
|
---|
| 246 | + vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
|
---|
| 247 | + }
|
---|
| 248 | + else{
|
---|
| 249 | + vz = 0.;
|
---|
| 250 | + dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
|
---|
| 251 | + }
|
---|
| 252 | +
|
---|
| 253 | + /*Compute dmudB*/
|
---|
| 254 | + *pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 255 | +}
|
---|
| 256 | +/*}}}*/
|
---|
| 257 | +void Matestar::ViscosityBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
|
---|
| 258 | +
|
---|
| 259 | + /*Intermediaries*/
|
---|
| 260 | + IssmDouble vx,vy,vz;
|
---|
| 261 | + IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 262 | + bool isdepthaveraged=0.;
|
---|
| 263 | +
|
---|
| 264 | + /*Get velocity derivatives in all directions*/
|
---|
| 265 | + _assert_(dim==2 || dim==3);
|
---|
| 266 | + _assert_(vx_input);
|
---|
| 267 | + vx_input->GetInputValue(&vx,gauss);
|
---|
| 268 | + vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
|
---|
| 269 | + if(dim==3){
|
---|
| 270 | + _assert_(vy_input);
|
---|
| 271 | + vy_input->GetInputValue(&vy,gauss);
|
---|
| 272 | + vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
|
---|
| 273 | + }
|
---|
| 274 | + else{
|
---|
| 275 | + dvx[2] = 0.;
|
---|
| 276 | + vy = 0.;
|
---|
| 277 | + dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
|
---|
| 278 | + }
|
---|
| 279 | + vz = 0.;
|
---|
| 280 | + dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
|
---|
| 281 | +
|
---|
| 282 | + /*Compute viscosity*/
|
---|
| 283 | + *pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 284 | +}/*}}}*/
|
---|
| 285 | +void Matestar::ViscosityBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
|
---|
| 286 | + /*Intermediaries*/
|
---|
| 287 | + IssmDouble vx,vy,vz;
|
---|
| 288 | + IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 289 | + bool isdepthaveraged=1.;
|
---|
| 290 | +
|
---|
| 291 | + /*Get velocity derivatives in all directions*/
|
---|
| 292 | + _assert_(dim==1 || dim==2);
|
---|
| 293 | + _assert_(vx_input);
|
---|
| 294 | + vx_input->GetInputValue(&vx,gauss);
|
---|
| 295 | + vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
|
---|
| 296 | + if(dim==2){
|
---|
| 297 | + _assert_(vy_input);
|
---|
| 298 | + vy_input->GetInputValue(&vy,gauss);
|
---|
| 299 | + vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
|
---|
| 300 | + }
|
---|
| 301 | + else{
|
---|
| 302 | + dvx[1] = 0.;
|
---|
| 303 | + dvx[2] = 0.;
|
---|
| 304 | + vy = 0.;
|
---|
| 305 | + dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
|
---|
| 306 | + }
|
---|
| 307 | + dvx[2] = 0.;
|
---|
| 308 | + dvy[2] = 0.;
|
---|
| 309 | + vz = 0.;
|
---|
| 310 | + dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
|
---|
| 311 | +
|
---|
| 312 | + /*Compute viscosity*/
|
---|
| 313 | + *pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 314 | +}/*}}}*/
|
---|
| 315 | void Matestar::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
|
---|
| 316 |
|
---|
| 317 | /*Intermediaries*/
|
---|
| 318 | IssmDouble vx,vy,vz;
|
---|
| 319 | IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 320 | - IssmDouble B,Ec,Es;
|
---|
| 321 | + bool isdepthaveraged=0.;
|
---|
| 322 |
|
---|
| 323 | /*Get velocity derivatives in all directions*/
|
---|
| 324 | _assert_(dim>1);
|
---|
| 325 | @@ -418,7 +520,7 @@
|
---|
| 326 | }
|
---|
| 327 |
|
---|
| 328 | /*Compute viscosity*/
|
---|
| 329 | - *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
|
---|
| 330 | + *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 331 | }
|
---|
| 332 | /*}}}*/
|
---|
| 333 | void Matestar::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
|
---|
| 334 | @@ -429,6 +531,7 @@
|
---|
| 335 | /*Intermediaries*/
|
---|
| 336 | IssmDouble vx,vy,vz;
|
---|
| 337 | IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 338 | + bool isdepthaveraged=0.;
|
---|
| 339 |
|
---|
| 340 | /*Get velocity derivatives in all directions*/
|
---|
| 341 | _assert_(dim==2 || dim==3);
|
---|
| 342 | @@ -449,7 +552,7 @@
|
---|
| 343 | dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
|
---|
| 344 |
|
---|
| 345 | /*Compute viscosity*/
|
---|
| 346 | - *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
|
---|
| 347 | + *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 348 | }/*}}}*/
|
---|
| 349 | void Matestar::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
|
---|
| 350 | _error_("not implemented yet");
|
---|
| 351 | @@ -458,10 +561,11 @@
|
---|
| 352 | _error_("not implemented yet");
|
---|
| 353 | }/*}}}*/
|
---|
| 354 | void Matestar::ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
|
---|
| 355 | +
|
---|
| 356 | /*Intermediaries*/
|
---|
| 357 | IssmDouble vx,vy,vz;
|
---|
| 358 | IssmDouble dvx[3],dvy[3],dvz[3];
|
---|
| 359 | - IssmDouble B,Ec,Es;
|
---|
| 360 | + bool isdepthaveraged=1.;
|
---|
| 361 |
|
---|
| 362 | /*Get velocity derivatives in all directions*/
|
---|
| 363 | _assert_(dim==1 || dim==2);
|
---|
| 364 | @@ -485,7 +589,7 @@
|
---|
| 365 | dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
|
---|
| 366 |
|
---|
| 367 | /*Compute viscosity*/
|
---|
| 368 | - *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
|
---|
| 369 | + *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],isdepthaveraged);
|
---|
| 370 | }/*}}}*/
|
---|
| 371 | void Matestar::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
|
---|
| 372 | _error_("not implemented yet");
|
---|
| 373 | Index: ../trunk-jpl/src/c/classes/Materials/Material.h
|
---|
| 374 | ===================================================================
|
---|
| 375 | --- ../trunk-jpl/src/c/classes/Materials/Material.h (revision 21699)
|
---|
| 376 | +++ ../trunk-jpl/src/c/classes/Materials/Material.h (revision 21700)
|
---|
| 377 | @@ -52,6 +52,9 @@
|
---|
| 378 | virtual void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0;
|
---|
| 379 | virtual void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
|
---|
| 380 | virtual void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0;
|
---|
| 381 | + virtual void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
|
---|
| 382 | + virtual void ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
|
---|
| 383 | + virtual void ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
|
---|
| 384 |
|
---|
| 385 | };
|
---|
| 386 | #endif
|
---|
| 387 | Index: ../trunk-jpl/src/c/classes/Materials/Matestar.h
|
---|
| 388 | ===================================================================
|
---|
| 389 | --- ../trunk-jpl/src/c/classes/Materials/Matestar.h (revision 21699)
|
---|
| 390 | +++ ../trunk-jpl/src/c/classes/Materials/Matestar.h (revision 21700)
|
---|
| 391 | @@ -69,7 +69,9 @@
|
---|
| 392 | IssmDouble GetD();
|
---|
| 393 | IssmDouble GetDbar();
|
---|
| 394 | IssmDouble GetEc();
|
---|
| 395 | + IssmDouble GetEcbar();
|
---|
| 396 | IssmDouble GetEs();
|
---|
| 397 | + IssmDouble GetEsbar();
|
---|
| 398 | IssmDouble GetN();
|
---|
| 399 | bool IsDamage();
|
---|
| 400 | bool IsEnhanced(){_error_("not supported");};
|
---|
| 401 | @@ -83,8 +85,12 @@
|
---|
| 402 | void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
|
---|
| 403 | void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
|
---|
| 404 | void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
|
---|
| 405 | + void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
|
---|
| 406 | + void ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
|
---|
| 407 | + void ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
|
---|
| 408 | /*}}}*/
|
---|
| 409 | - IssmDouble GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz);
|
---|
| 410 | + IssmDouble GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,bool isdepthaveraged);
|
---|
| 411 | + IssmDouble GetViscosity_BGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,bool isdepthaveraged);
|
---|
| 412 | };
|
---|
| 413 |
|
---|
| 414 | #endif /* _MATESTAR_H_ */
|
---|
| 415 | Index: ../trunk-jpl/src/c/classes/Materials/Matice.h
|
---|
| 416 | ===================================================================
|
---|
| 417 | --- ../trunk-jpl/src/c/classes/Materials/Matice.h (revision 21699)
|
---|
| 418 | +++ ../trunk-jpl/src/c/classes/Materials/Matice.h (revision 21700)
|
---|
| 419 | @@ -87,6 +87,9 @@
|
---|
| 420 | void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
|
---|
| 421 | void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
|
---|
| 422 | void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
|
---|
| 423 | + void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
|
---|
| 424 | + void ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
|
---|
| 425 | + void ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
|
---|
| 426 | /*}}}*/
|
---|
| 427 | };
|
---|
| 428 |
|
---|
| 429 | Index: ../trunk-jpl/src/c/classes/Materials/Matpar.h
|
---|
| 430 | ===================================================================
|
---|
| 431 | --- ../trunk-jpl/src/c/classes/Materials/Matpar.h (revision 21699)
|
---|
| 432 | +++ ../trunk-jpl/src/c/classes/Materials/Matpar.h (revision 21700)
|
---|
| 433 | @@ -124,6 +124,9 @@
|
---|
| 434 | void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");};
|
---|
| 435 | void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
|
---|
| 436 | void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not supported");};
|
---|
| 437 | + void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
|
---|
| 438 | + void ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
|
---|
| 439 | + void ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
|
---|
| 440 | /*}}}*/
|
---|
| 441 | /*Numerics: {{{*/
|
---|
| 442 | void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
|
---|