Changeset 16886
- Timestamp:
- 11/22/13 08:26:44 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
r16876 r16886 127 127 }/*}}}*/ 128 128 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixHO(Element* element){/*{{{*/ 129 _error_("S"); 129 130 /*Intermediaries */ 131 bool incomplete_adjoint; 132 IssmDouble Jdet,mu_prime; 133 IssmDouble eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij; 134 IssmDouble eps1[3],eps2[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/ 135 IssmDouble *xyz_list = NULL; 136 137 /*Fetch number of nodes and dof for this finite element*/ 138 int numnodes = element->GetNumberOfNodes(); 139 140 /*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/ 141 element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum); 142 StressbalanceAnalysis* analysis = new StressbalanceAnalysis(); 143 ElementMatrix* Ke=analysis->CreateKMatrix(element); 144 delete analysis; 145 if(incomplete_adjoint) return Ke; 146 147 /*Retrieve all inputs and parameters*/ 148 element->GetVerticesCoordinates(&xyz_list); 149 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); 150 Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input); 151 152 /*Allocate dbasis*/ 153 IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes); 154 155 /* Start looping on the number of gaussian points: */ 156 Gauss* gauss=element->NewGauss(5); 157 for(int ig=gauss->begin();ig<gauss->end();ig++){ 158 gauss->GaussPoint(ig); 159 160 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 161 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 162 163 element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 164 element->ViscosityHODerivativeEpsSquare(&mu_prime,&epsilon[0]); 165 eps1[0]=2.*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2]; 166 eps1[1]=epsilon[2]; eps2[1]=epsilon[0]+2.*epsilon[1]; 167 eps1[2]=epsilon[3]; eps2[2]=epsilon[4]; 168 169 for(int i=0;i<numnodes;i++){ 170 for(int j=0;j<numnodes;j++){ 171 eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]+eps1[2]*dbasis[2*numnodes+i]; 172 eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]+eps1[2]*dbasis[2*numnodes+j]; 173 eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]+eps2[2]*dbasis[2*numnodes+i]; 174 eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]+eps2[2]*dbasis[2*numnodes+j]; 175 176 Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii; 177 Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii; 178 Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii; 179 Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii; 180 } 181 } 182 } 183 184 /*Transform Coordinate System*/ 185 element->TransformStiffnessMatrixCoord(Ke,XYEnum); 186 187 /*Clean up and return*/ 188 delete gauss; 189 xDelete<IssmDouble>(dbasis); 190 xDelete<IssmDouble>(xyz_list); 191 return Ke; 130 192 }/*}}}*/ 131 193 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixFS(Element* element){/*{{{*/ 132 _error_("S"); 194 195 /*Intermediaries */ 196 bool incomplete_adjoint; 197 IssmDouble Jdet,mu_prime; 198 IssmDouble eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij,eps3dotdphii,eps3dotdphij; 199 IssmDouble eps1[3],eps2[3],eps3[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/ 200 IssmDouble *xyz_list = NULL; 201 202 /*Fetch number of nodes and dof for this finite element*/ 203 int vnumnodes = element->GetNumberOfNodesVelocity(); 204 int pnumnodes = element->GetNumberOfNodesPressure(); 205 int numdof = vnumnodes*3 + pnumnodes; 206 207 /*Initialize Jacobian with regular FS (first part of the Gateau derivative)*/ 208 element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum); 209 StressbalanceAnalysis* analysis = new StressbalanceAnalysis(); 210 ElementMatrix* Ke=analysis->CreateKMatrix(element); 211 delete analysis; 212 if(incomplete_adjoint) return Ke; 213 214 /*Retrieve all inputs and parameters*/ 215 element->GetVerticesCoordinates(&xyz_list); 216 Input* vx_input = element->GetInput(VxEnum);_assert_(vx_input); 217 Input* vy_input = element->GetInput(VyEnum);_assert_(vy_input); 218 Input* vz_input = element->GetInput(VzEnum);_assert_(vz_input); 219 220 /*Allocate dbasis*/ 221 IssmDouble* dbasis = xNew<IssmDouble>(3*vnumnodes); 222 223 /* Start looping on the number of gaussian points: */ 224 Gauss* gauss=element->NewGauss(5); 225 for(int ig=gauss->begin();ig<gauss->end();ig++){ 226 gauss->GaussPoint(ig); 227 228 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 229 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 230 231 element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 232 element->ViscosityFSDerivativeEpsSquare(&mu_prime,&epsilon[0]); 233 eps1[0]=epsilon[0]; eps2[0]=epsilon[2]; eps3[0]=epsilon[3]; 234 eps1[1]=epsilon[2]; eps2[1]=epsilon[1]; eps3[1]=epsilon[4]; 235 eps1[2]=epsilon[3]; eps2[2]=epsilon[4]; eps3[2]= -epsilon[0] -epsilon[1]; 236 237 for(int i=0;i<vnumnodes;i++){ 238 for(int j=0;j<vnumnodes;j++){ 239 eps1dotdphii=eps1[0]*dbasis[0*vnumnodes+i]+eps1[1]*dbasis[1*vnumnodes+i]+eps1[2]*dbasis[2*vnumnodes+i]; 240 eps1dotdphij=eps1[0]*dbasis[0*vnumnodes+j]+eps1[1]*dbasis[1*vnumnodes+j]+eps1[2]*dbasis[2*vnumnodes+j]; 241 eps2dotdphii=eps2[0]*dbasis[0*vnumnodes+i]+eps2[1]*dbasis[1*vnumnodes+i]+eps2[2]*dbasis[2*vnumnodes+i]; 242 eps2dotdphij=eps2[0]*dbasis[0*vnumnodes+j]+eps2[1]*dbasis[1*vnumnodes+j]+eps2[2]*dbasis[2*vnumnodes+j]; 243 eps3dotdphii=eps3[0]*dbasis[0*vnumnodes+i]+eps3[1]*dbasis[1*vnumnodes+i]+eps3[2]*dbasis[2*vnumnodes+i]; 244 eps3dotdphij=eps3[0]*dbasis[0*vnumnodes+j]+eps3[1]*dbasis[1*vnumnodes+j]+eps3[2]*dbasis[2*vnumnodes+j]; 245 246 Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii; 247 Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii; 248 Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii; 249 250 Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii; 251 Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii; 252 Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii; 253 254 Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii; 255 Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii; 256 Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii; 257 } 258 } 259 } 260 261 /*Transform Coordinate System*/ 262 element->TransformStiffnessMatrixCoord(Ke,XYZEnum); 263 264 /*Clean up and return*/ 265 delete gauss; 266 xDelete<IssmDouble>(dbasis); 267 xDelete<IssmDouble>(xyz_list); 268 return Ke; 133 269 }/*}}}*/ 134 270 ElementVector* AdjointHorizAnalysis::CreatePVector(Element* element){/*{{{*/ … … 156 292 /*Intermediaries */ 157 293 int num_responses,i,meshtype,dim; 158 IssmDouble thickness,Jdet,obs_velocity_mag,velocity_mag;294 IssmDouble Jdet,obs_velocity_mag,velocity_mag; 159 295 IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight; 160 296 IssmDouble scalex,scaley,scale,S; … … 355 491 /*Intermediaries */ 356 492 int num_responses,i; 357 IssmDouble thickness,Jdet,obs_velocity_mag,velocity_mag;493 IssmDouble Jdet,obs_velocity_mag,velocity_mag; 358 494 IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight; 359 495 IssmDouble scalex,scaley,scale,S; … … 553 689 /*Intermediaries */ 554 690 int num_responses,i; 555 IssmDouble thickness,Jdet,obs_velocity_mag,velocity_mag;691 IssmDouble Jdet,obs_velocity_mag,velocity_mag; 556 692 IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight; 557 693 IssmDouble scalex,scaley,scale,S; -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r16876 r16886 172 172 virtual void ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0; 173 173 virtual void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0; 174 virtual void ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0; 175 virtual void ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0; 174 176 virtual void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0; 177 virtual void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0; 178 virtual void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0; 175 179 virtual int VelocityInterpolation()=0; 176 180 virtual int PressureInterpolation()=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16876 r16886 275 275 276 276 /*Compute strain rate viscosity and pressure: */ 277 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);277 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 278 278 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 279 279 pressure_input->GetInputValue(&pressure,gauss); … … 341 341 342 342 /*Compute strain rate viscosity and pressure: */ 343 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);343 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 344 344 material->GetViscosity3d(&viscosity,&epsilon[0]); 345 345 pressure_input->GetInputValue(&pressure,gauss); … … 1578 1578 1579 1579 return tau_parameter; 1580 }1581 /*}}}*/1582 /*FUNCTION Penta::GetStrainRate3dHO{{{*/1583 void Penta::GetStrainRate3dHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss, Input* vx_input, Input* vy_input){1584 /*Compute the 3d Blatter/HOStrain Rate (5 components):1585 *1586 * epsilon=[exx eyy exy exz eyz]1587 *1588 * with exz=1/2 du/dz1589 * eyz=1/2 dv/dz1590 *1591 * the contribution of vz is neglected1592 */1593 1594 int i;1595 IssmDouble epsilonvx[5];1596 IssmDouble epsilonvy[5];1597 1598 /*Check that both inputs have been found*/1599 if (!vx_input || !vy_input){1600 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");1601 }1602 1603 /*Get strain rate assuming that epsilon has been allocated*/1604 vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss);1605 vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss);1606 1607 /*Sum all contributions*/1608 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];1609 }1610 /*}}}*/1611 /*FUNCTION Penta::GetStrainRate3d{{{*/1612 void Penta::GetStrainRate3d(IssmDouble* epsilon,IssmDouble* xyz_list, Gauss* gauss, Input* vx_input, Input* vy_input, Input* vz_input){1613 /*Compute the 3d Strain Rate (6 components):1614 *1615 * epsilon=[exx eyy ezz exy exz eyz]1616 */1617 1618 IssmDouble epsilonvx[6];1619 IssmDouble epsilonvy[6];1620 IssmDouble epsilonvz[6];1621 1622 /*Check that both inputs have been found*/1623 if (!vx_input || !vy_input || !vz_input){1624 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << ", vz: " << vz_input << "\n");1625 }1626 1627 /*Get strain rate assuming that epsilon has been allocated*/1628 vx_input->GetVxStrainRate3d(epsilonvx,xyz_list,gauss);1629 vy_input->GetVyStrainRate3d(epsilonvy,xyz_list,gauss);1630 vz_input->GetVzStrainRate3d(epsilonvz,xyz_list,gauss);1631 1632 /*Sum all contributions*/1633 for(int i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i];1634 1580 } 1635 1581 /*}}}*/ … … 3551 3497 thickness_input->GetInputValue(&thickness,gauss); 3552 3498 3553 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);3499 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 3554 3500 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 3555 3501 GetPhi(&phi, &epsilon[0], viscosity); … … 3574 3520 3575 3521 _assert_(gauss->Enum()==GaussPentaEnum); 3576 this-> GetStrainRate3d(&epsilon[0],xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input);3522 this->StrainRateFS(&epsilon[0],xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input); 3577 3523 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 3578 3524 GetPhi(&phi,&epsilon[0],viscosity); … … 3589 3535 IssmDouble epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/ 3590 3536 3591 this-> GetStrainRate3d(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);3537 this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input); 3592 3538 material->GetViscosity3dFS(&viscosity, &epsilon[0]); 3593 3539 … … 3603 3549 IssmDouble epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/ 3604 3550 3605 this-> GetStrainRate3dHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);3551 this->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 3606 3552 material->GetViscosity3d(&viscosity, &epsilon[0]); 3607 3553 3608 3554 /*Assign output pointer*/ 3609 3555 *pviscosity=viscosity; 3556 } 3557 /*}}}*/ 3558 /*FUNCTION Penta::ViscosityHODerivativeEpsSquare{{{*/ 3559 void Penta::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){ 3560 this->material->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon); 3561 } 3562 /*}}}*/ 3563 /*FUNCTION Penta::StrainRateHO{{{*/ 3564 void Penta::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){ 3565 /*Compute the 3d Blatter/HOStrain Rate (5 components): 3566 * 3567 * epsilon=[exx eyy exy exz eyz] 3568 * 3569 * with exz=1/2 du/dz 3570 * eyz=1/2 dv/dz 3571 * 3572 * the contribution of vz is neglected 3573 */ 3574 3575 int i; 3576 IssmDouble epsilonvx[5]; 3577 IssmDouble epsilonvy[5]; 3578 3579 /*Check that both inputs have been found*/ 3580 if (!vx_input || !vy_input){ 3581 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n"); 3582 } 3583 3584 /*Get strain rate assuming that epsilon has been allocated*/ 3585 vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss); 3586 vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss); 3587 3588 /*Sum all contributions*/ 3589 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]; 3590 } 3591 /*}}}*/ 3592 /*FUNCTION Penta::ViscosityFSDerivativeEpsSquare{{{*/ 3593 void Penta::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){ 3594 this->material->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon); 3595 } 3596 /*}}}*/ 3597 /*FUNCTION Penta::StrainRateFS{{{*/ 3598 void Penta::StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){ 3599 /*Compute the 3d Strain Rate (6 components): 3600 * 3601 * epsilon=[exx eyy ezz exy exz eyz] 3602 */ 3603 3604 IssmDouble epsilonvx[6]; 3605 IssmDouble epsilonvy[6]; 3606 IssmDouble epsilonvz[6]; 3607 3608 /*Check that both inputs have been found*/ 3609 if (!vx_input || !vy_input || !vz_input){ 3610 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << ", vz: " << vz_input << "\n"); 3611 } 3612 3613 /*Get strain rate assuming that epsilon has been allocated*/ 3614 vx_input->GetVxStrainRate3d(epsilonvx,xyz_list,gauss); 3615 vy_input->GetVyStrainRate3d(epsilonvy,xyz_list,gauss); 3616 vz_input->GetVzStrainRate3d(epsilonvz,xyz_list,gauss); 3617 3618 /*Sum all contributions*/ 3619 for(int i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i]; 3610 3620 } 3611 3621 /*}}}*/ … … 4450 4460 GetNodalFunctionsP1(&L[0], gauss); 4451 4461 4452 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);4462 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 4453 4463 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 4454 4464 GetPhi(&phi, &epsilon[0], viscosity); … … 4720 4730 GetNodalFunctionsP1(&L[0], gauss); 4721 4731 4722 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);4732 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 4723 4733 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 4724 4734 GetPhi(&phi, &epsilon[0], viscosity); … … 5361 5371 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss); 5362 5372 5363 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);5373 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 5364 5374 material->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 5365 5375 eps1[0]=2*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2]; … … 5432 5442 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss); 5433 5443 5434 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);5444 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 5435 5445 material->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 5436 5446 eps1[0]=epsilon[0]; eps2[0]=epsilon[2]; eps3[0]=epsilon[3]; … … 6845 6855 tria->GetBprimeSSA(&Bprime[0][0], &xyz_list[0][0], gauss_tria); 6846 6856 6847 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);6848 this-> GetStrainRate3dHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input);6857 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 6858 this->StrainRateHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input); 6849 6859 material->GetViscosity3d(&viscosity, &epsilon[0]); 6850 6860 material->GetViscosity3d(&oldviscosity, &oldepsilon[0]); … … 7052 7062 GetBprimeSSAFS(&Bprime2[0][0], &xyz_list[0][0], gauss); 7053 7063 7054 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);7064 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 7055 7065 material->GetViscosity3dFS(&viscosity, &epsilon[0]); 7056 7066 … … 7169 7179 GetLprimeFSSSA(&LprimeFSSSA[0][0], &xyz_list[0][0], gauss); 7170 7180 7171 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);7181 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 7172 7182 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 7173 7183 … … 7467 7477 7468 7478 if(approximation==SSAHOApproximationEnum){ 7469 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);7470 this-> GetStrainRate3dHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input);7479 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 7480 this->StrainRateHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input); 7471 7481 material->GetViscosity3d(&viscosity, &epsilon[0]); 7472 7482 material->GetViscosity3d(&oldviscosity, &oldepsilon[0]); … … 7475 7485 } 7476 7486 else if (approximation==SSAFSApproximationEnum){ 7477 this-> GetStrainRate3d(&epsilons[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);7487 this->StrainRateFS(&epsilons[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 7478 7488 material->GetViscosity3dFS(&newviscosity,&epsilons[0]); 7479 7489 } … … 7710 7720 GetBprimeHO(&Bprime[0], &xyz_list[0][0], gauss); 7711 7721 7712 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);7713 this-> GetStrainRate3dHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input);7722 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 7723 this->StrainRateHO(&oldepsilon[0],&xyz_list[0][0],gauss,vxold_input,vyold_input); 7714 7724 material->GetViscosity3d(&viscosity, &epsilon[0]); 7715 7725 material->GetViscosity3d(&oldviscosity, &oldepsilon[0]); … … 7921 7931 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 7922 7932 7923 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);7933 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 7924 7934 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 7925 7935 … … 8019 8029 GetBprimeFS(Bprime,&xyz_list[0][0],gauss); 8020 8030 8021 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);8031 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 8022 8032 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 8023 8033 … … 8277 8287 vzSSA_input->GetInputDerivativeValue(&dw[0],&xyz_list[0][0],gauss); 8278 8288 8279 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);8289 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 8280 8290 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 8281 8291 … … 8355 8365 8356 8366 NormalBase(&bed_normal[0],&xyz_list_tria[0][0]); 8357 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);8367 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 8358 8368 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 8359 8369 friction->GetAlpha2(&alpha2_gauss, gauss,vx_input,vy_input,vz_input); … … 8439 8449 vzHO_input->GetInputDerivativeValue(&dw[0],&xyz_list[0][0],gauss); 8440 8450 8441 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);8451 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 8442 8452 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 8443 8453 … … 8520 8530 8521 8531 NormalBase(&bed_normal[0],&xyz_list_tria[0][0]); 8522 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);8532 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 8523 8533 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 8524 8534 friction->GetAlpha2(&alpha2_gauss, gauss,vx_input,vy_input,vz_input); … … 9042 9052 9043 9053 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 9044 this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);9054 this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 9045 9055 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 9046 9056 … … 9446 9456 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss); 9447 9457 9448 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);9458 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 9449 9459 material->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 9450 9460 eps1[0]=2*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2]; … … 9523 9533 GetNodalFunctionsDerivativesVelocity(dbasis,&xyz_list[0][0],gauss); 9524 9534 9525 //this-> GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);9535 //this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 9526 9536 //material->GetViscosityDerivativeEpsSquareFS(&mu_prime,&epsilon[0]); 9527 9537 //eps1[0]=epsilon[0]; eps2[0]=epsilon[3]; eps3[0]=epsilon[4]; 9528 9538 //eps1[1]=epsilon[3]; eps2[1]=epsilon[1]; eps3[1]=epsilon[5]; 9529 9539 //eps1[2]=epsilon[4]; eps2[2]=epsilon[5]; eps3[2]=epsilon[2]; 9530 this-> GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);9540 this->StrainRateHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 9531 9541 material->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 9532 9542 eps1[0]=epsilon[0]; eps2[0]=epsilon[2]; eps3[0]=epsilon[3]; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r16876 r16886 298 298 void ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 299 299 void ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 300 void ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon); 301 void ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon); 300 302 void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 303 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 304 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 301 305 void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 302 306 -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r16876 r16886 173 173 void ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 174 174 void ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 175 void ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 176 void ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 175 177 void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 178 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented");}; 179 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 176 180 void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 177 181 bool IsZeroLevelset(int levelset_enum){_error_("not implemented");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r16876 r16886 330 330 void ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented yet");}; 331 331 void ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 332 void ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 333 void ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not implemented");}; 332 334 void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon); 335 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented");}; 336 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");}; 333 337 void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 334 338
Note:
See TracChangeset
for help on using the changeset viewer.