Changeset 24936
- Timestamp:
- 05/30/20 22:25:06 (5 years ago)
- Location:
- issm/trunk-jpl/src/c/analyses
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
r24933 r24936 164 164 /*Initialize Element vector and other vectors*/ 165 165 ElementMatrix* Ke = element->NewElementMatrix(); 166 IssmDouble* B = xNew<IssmDouble>(2*numnodes);167 IssmDouble* Bprime= xNew<IssmDouble>(2*numnodes);166 IssmDouble* basis = xNew<IssmDouble>(numnodes); 167 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); 168 168 IssmDouble D[2][2]; 169 169 … … 190 190 191 191 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 192 GetB(B,element,xyz_list,gauss);193 GetBprime(Bprime,element,xyz_list,gauss);192 element->NodalFunctions(basis,gauss); 193 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 194 194 195 195 vxaverage_input->GetInputValue(&vx,gauss); … … 201 201 D_scalar=gauss->weight*Jdet; 202 202 203 D[0][0]=D_scalar*dvxdx; 204 D[0][1]=0.; 205 D[1][0]=0.; 206 D[1][1]=D_scalar*dvydy; 207 TripleMultiply(B,2,numnodes,1, 208 &D[0][0],2,2,0, 209 B,2,numnodes,0, 210 &Ke->values[0],1); 211 212 D[0][0]=D_scalar*vx; 213 D[1][1]=D_scalar*vy; 214 TripleMultiply(B,2,numnodes,1, 215 &D[0][0],2,2,0, 216 Bprime,2,numnodes,0, 217 &Ke->values[0],1); 203 for(int i=0;i<numnodes;i++){ 204 for(int j=0;j<numnodes;j++){ 205 /*\phi_i \phi_j \nabla\cdot v*/ 206 Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy); 207 /*\phi_i v\cdot\nabla\phi_j*/ 208 Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]); 209 } 210 } 218 211 219 212 if(stabilization==1){ … … 239 232 D[0][1]=D_scalar*D[0][1]; 240 233 D[1][1]=D_scalar*D[1][1]; 241 TripleMultiply(Bprime,2,numnodes,1, 242 &D[0][0],2,2,0, 243 Bprime,2,numnodes,0, 244 &Ke->values[0],1); 234 235 for(int i=0;i<numnodes;i++){ 236 for(int j=0;j<numnodes;j++){ 237 Ke->values[i*numnodes+j] += ( 238 dbasis[0*numnodes+i] *(D[0][0]*dbasis[0*numnodes+j] + D[0][1]*dbasis[1*numnodes+j]) + 239 dbasis[1*numnodes+i] *(D[1][0]*dbasis[0*numnodes+j] + D[1][1]*dbasis[1*numnodes+j]) 240 ); 241 } 242 } 245 243 } 246 244 } … … 248 246 /*Clean up and return*/ 249 247 xDelete<IssmDouble>(xyz_list); 250 xDelete<IssmDouble>( B);251 xDelete<IssmDouble>( Bprime);248 xDelete<IssmDouble>(basis); 249 xDelete<IssmDouble>(dbasis); 252 250 delete gauss; 253 251 return Ke; -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r24861 r24936 216 216 D = -gauss->weight*Jdet*normal[2]; 217 217 218 TripleMultiply( basis,1,numnodes,1, 219 &D,1,1,0, 220 basis,1,numnodes,0, 221 &Ke->values[0],1); 218 for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j]; 222 219 } 223 220 … … 256 253 D = -gauss->weight*Jdet*normal[2]; 257 254 258 TripleMultiply( basis,1,numnodes,1, 259 &D,1,1,0, 260 basis,1,numnodes,0, 261 &Ke->values[0],1); 255 for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j]; 262 256 } 263 257
Note:
See TracChangeset
for help on using the changeset viewer.