Changeset 16922
- Timestamp:
- 11/25/13 10:24:32 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r16909 r16922 2271 2271 this->GetBFSprime(Bprime,element,dim,xyz_list,gauss); 2272 2272 2273 element->ViscosityFS(&viscosity, xyz_list,gauss,vx_input,vy_input,vz_input);2273 element->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input); 2274 2274 for(i=0;i<epssize;i++) D[i*bsize+i] = + 2.*viscosity*gauss->weight*Jdet; 2275 2275 for(i=epssize;i<bsize;i++) D[i*bsize+i] = - FSreconditioning*gauss->weight*Jdet; -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r16916 r16922 109 109 }/*}}}*/ 110 110 111 void Element::ViscosityFS(IssmDouble* pviscosity, IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/111 void Element::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/ 112 112 113 113 /*Intermediaries*/ … … 116 116 IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy]; */ 117 117 118 if( vz_input){118 if(dim==3){ 119 119 /*3D*/ 120 120 this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input); … … 207 207 *pviscosity=viscosity; 208 208 }/*}}}*/ 209 void Element::ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/ 210 211 /*Intermediaries*/ 212 IssmDouble viscosity; 213 IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy]; */ 214 215 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 216 material->GetViscosity2d(&viscosity, &epsilon[0]); 217 218 /*Assign output pointer*/ 219 *pviscosity=viscosity; 220 }/*}}}*/ 221 void Element::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/ 222 this->material->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon); 223 }/*}}}*/ 209 224 void Element::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/ 210 225 this->material->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon); 211 }/*}}}*/212 void Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/213 /*Compute the 3d Blatter/HOStrain Rate (5 components):214 *215 * epsilon=[exx eyy exy exz eyz]216 *217 * with exz=1/2 du/dz218 * eyz=1/2 dv/dz219 *220 * the contribution of vz is neglected221 */222 223 int i;224 IssmDouble epsilonvx[5];225 IssmDouble epsilonvy[5];226 227 /*Check that both inputs have been found*/228 if (!vx_input || !vy_input){229 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");230 }231 232 /*Get strain rate assuming that epsilon has been allocated*/233 vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss);234 vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss);235 236 /*Sum all contributions*/237 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];238 226 }/*}}}*/ 239 227 void Element::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/ … … 263 251 for(int i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i]; 264 252 }/*}}}*/ 265 void Element::ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/ 266 267 /*Intermediaries*/ 268 IssmDouble viscosity; 269 IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy]; */ 270 271 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 272 material->GetViscosity2d(&viscosity, &epsilon[0]); 273 274 /*Assign output pointer*/ 275 *pviscosity=viscosity; 276 }/*}}}*/ 277 void Element::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/ 278 this->material->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon); 253 void Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/ 254 /*Compute the 3d Blatter/HOStrain Rate (5 components): 255 * 256 * epsilon=[exx eyy exy exz eyz] 257 * 258 * with exz=1/2 du/dz 259 * eyz=1/2 dv/dz 260 * 261 * the contribution of vz is neglected 262 */ 263 264 int i; 265 IssmDouble epsilonvx[5]; 266 IssmDouble epsilonvy[5]; 267 268 /*Check that both inputs have been found*/ 269 if (!vx_input || !vy_input){ 270 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n"); 271 } 272 273 /*Get strain rate assuming that epsilon has been allocated*/ 274 vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss); 275 vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss); 276 277 /*Sum all contributions*/ 278 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]; 279 279 }/*}}}*/ 280 280 void Element::StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r16916 r16922 66 66 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 67 67 IssmDouble TMeltingPoint(IssmDouble pressure); 68 void ViscosityFS(IssmDouble* pviscosity, IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);68 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 69 69 void ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 70 70 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
Note:
See TracChangeset
for help on using the changeset viewer.