Changeset 15453 for issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
- Timestamp:
- 07/07/13 13:58:41 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15446 r15453 3119 3119 /*Initialize Element matrix, vectors and Gaussian points*/ 3120 3120 ElementMatrix* Ke=CreateKMatrixDiagnosticMacAyeal(); //Initialize Jacobian with regular MacAyeal (first part of the Gateau derivative) 3121 IssmDouble* d phi= xNew<IssmDouble>(2*numnodes);3121 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); 3122 3122 3123 3123 /*Retrieve all inputs and parameters*/ … … 3134 3134 3135 3135 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 3136 GetNodalFunctionsDerivatives(d phi,&xyz_list[0][0],gauss);3136 GetNodalFunctionsDerivatives(dbasis,&xyz_list[0][0],gauss); 3137 3137 3138 3138 thickness_input->GetInputValue(&thickness, gauss); … … 3144 3144 for(i=0;i<numnodes;i++){ 3145 3145 for(j=0;j<numnodes;j++){ 3146 eps1dotdphii=eps1[0]*d phi[0*numnodes+i]+eps1[1]*dphi[1*numnodes+i];3147 eps1dotdphij=eps1[0]*d phi[0*numnodes+j]+eps1[1]*dphi[1*numnodes+j];3148 eps2dotdphii=eps2[0]*d phi[0*numnodes+i]+eps2[1]*dphi[1*numnodes+i];3149 eps2dotdphij=eps2[0]*d phi[0*numnodes+j]+eps2[1]*dphi[1*numnodes+j];3146 eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]; 3147 eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]; 3148 eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]; 3149 eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]; 3150 3150 3151 3151 Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii; … … 3158 3158 3159 3159 /*Transform Coordinate System*/ 3160 TransformStiffnessMatrixCoord(Ke,nodes, NUMVERTICES,XYEnum);3160 TransformStiffnessMatrixCoord(Ke,nodes,numnodes,XYEnum); 3161 3161 3162 3162 /*Clean up and return*/ 3163 xDelete<IssmDouble>(dbasis); 3163 3164 delete gauss; 3164 xDelete<IssmDouble>(dphi);3165 3165 return Ke; 3166 3166 } … … 5214 5214 5215 5215 /*Constants*/ 5216 const int numdof=NDOF2*NUMVERTICES; 5216 const int numnodes = this->GetNumberOfNodes(); 5217 const int numdof = NDOF2*numnodes; 5217 5218 5218 5219 /*Intermediaries */ 5219 int i,j; 5220 bool incomplete_adjoint; 5221 IssmDouble xyz_list[NUMVERTICES][3]; 5222 IssmDouble Jdet,thickness; 5223 IssmDouble eps1dotdphii,eps1dotdphij; 5224 IssmDouble eps2dotdphii,eps2dotdphij; 5225 IssmDouble mu_prime; 5226 IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];*/ 5227 IssmDouble eps1[2],eps2[2]; 5228 IssmDouble dphi[2][NUMVERTICES]; 5229 GaussTria *gauss=NULL; 5220 int i,j; 5221 bool incomplete_adjoint; 5222 IssmDouble xyz_list[NUMVERTICES][3]; 5223 IssmDouble Jdet,thickness; 5224 IssmDouble eps1dotdphii,eps1dotdphij; 5225 IssmDouble eps2dotdphii,eps2dotdphij; 5226 IssmDouble mu_prime; 5227 IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];*/ 5228 IssmDouble eps1[2],eps2[2]; 5229 GaussTria *gauss=NULL; 5230 5230 5231 5231 /*Initialize Jacobian with regular MacAyeal (first part of the Gateau derivative)*/ … … 5240 5240 Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 5241 5241 5242 /*Allocate dbasis*/ 5243 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); 5244 5242 5245 /* Start looping on the number of gaussian points: */ 5243 5246 gauss=new GaussTria(2); … … 5247 5250 5248 5251 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 5249 GetNodalFunctionsDerivatives( &dphi[0][0],&xyz_list[0][0],gauss);5252 GetNodalFunctionsDerivatives(dbasis,&xyz_list[0][0],gauss); 5250 5253 5251 5254 thickness_input->GetInputValue(&thickness, gauss); … … 5255 5258 eps1[1]=epsilon[2]; eps2[1]=epsilon[0]+2*epsilon[1]; 5256 5259 5257 for(i=0;i< 3;i++){5258 for(j=0;j< 3;j++){5259 eps1dotdphii=eps1[0]*d phi[0][i]+eps1[1]*dphi[1][i];5260 eps1dotdphij=eps1[0]*d phi[0][j]+eps1[1]*dphi[1][j];5261 eps2dotdphii=eps2[0]*d phi[0][i]+eps2[1]*dphi[1][i];5262 eps2dotdphij=eps2[0]*d phi[0][j]+eps2[1]*dphi[1][j];5263 5264 Ke->values[ 6*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii;5265 Ke->values[ 6*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii;5266 Ke->values[ 6*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii;5267 Ke->values[ 6*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii;5260 for(i=0;i<numnodes;i++){ 5261 for(j=0;j<numnodes;j++){ 5262 eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]; 5263 eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]; 5264 eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]; 5265 eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]; 5266 5267 Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii; 5268 Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii; 5269 Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii; 5270 Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii; 5268 5271 } 5269 5272 } … … 5271 5274 5272 5275 /*Transform Coordinate System*/ 5273 TransformStiffnessMatrixCoord(Ke,nodes, NUMVERTICES,XYEnum);5276 TransformStiffnessMatrixCoord(Ke,nodes,numnodes,XYEnum); 5274 5277 5275 5278 /*Clean up and return*/ 5276 5279 delete gauss; 5280 xDelete<IssmDouble>(dbasis); 5277 5281 //Ke->Transpose(); 5278 5282 return Ke;
Note:
See TracChangeset
for help on using the changeset viewer.