Changeset 15436 for issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
- Timestamp:
- 07/05/13 09:22:25 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
r15425 r15436 275 275 /*Build B: */ 276 276 for (i=0;i<NUMNODESMINI;i++){ 277 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh7[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i];278 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0;279 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0;280 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0;281 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh7[1][i];282 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0;283 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0;284 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0;285 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh7[2][i];286 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=(float).5*dh1dh7[1][i];287 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=(float).5*dh1dh7[0][i];288 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0;289 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=(float).5*dh1dh7[2][i];290 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0;291 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=(float).5*dh1dh7[0][i];292 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0;293 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=(float).5*dh1dh7[2][i];294 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=(float).5*dh1dh7[1][i];295 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=0;296 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=0;297 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=0;298 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=dh1dh7[0][i];299 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=dh1dh7[1][i];300 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=dh1dh7[2][i];277 B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = dh1dh7[0][i+0]; //B[0][NDOF4*i+0] = dh1dh6[0][i+0]; 278 B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = 0.; 279 B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2] = 0.; 280 B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+0] = 0.; 281 B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1] = dh1dh7[1][i+0]; 282 B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2] = 0.; 283 B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+0] = 0.; 284 B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1] = 0.; 285 B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2] = dh1dh7[2][i+0]; 286 B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+0] = (float).5*dh1dh7[1][i+0]; 287 B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1] = (float).5*dh1dh7[0][i+0]; 288 B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2] = 0.; 289 B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+0] = (float).5*dh1dh7[2][i+0]; 290 B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1] = 0.; 291 B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2] = (float).5*dh1dh7[0][i+0]; 292 B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+0] = 0.; 293 B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1] = (float).5*dh1dh7[2][i+0]; 294 B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2] = (float).5*dh1dh7[1][i+0]; 295 B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+0] = 0.; 296 B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1] = 0.; 297 B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2] = 0.; 298 B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+0] = dh1dh7[0][i+0]; 299 B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1] = dh1dh7[1][i+0]; 300 B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2] = dh1dh7[2][i+0]; 301 301 } 302 302 … … 338 338 /*Get dh1dh7 in actual coordinate system: */ 339 339 GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list, gauss); 340 GetNodalFunctionsP1( l1l6, gauss);340 GetNodalFunctionsP1(&l1l6[0], gauss); 341 341 342 342 /*Build B: */ 343 343 for (i=0;i<NUMNODESP1;i++){ 344 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh6[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i]; 345 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0.; 346 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0.; 347 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0.; 348 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh6[1][i]; 349 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0.; 350 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0.; 351 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0.; 352 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh6[2][i]; 353 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=.5*dh1dh6[1][i]; 354 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=.5*dh1dh6[0][i]; 355 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0.; 356 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=.5*dh1dh6[2][i]; 357 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0.; 358 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=.5*dh1dh6[0][i]; 359 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0.; 360 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=.5*dh1dh6[2][i]; 361 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=.5*dh1dh6[1][i]; 362 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=0.; 363 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=0.; 364 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=0.; 365 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=dh1dh6[0][i]; 366 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=dh1dh6[1][i]; 367 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=dh1dh6[2][i]; 344 *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i)=dh1dh6[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i]; 345 *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i+1)=0.; 346 *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i+2)=0.; 347 *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i)=0.; 348 *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i+1)=dh1dh6[1][i]; 349 *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i+2)=0.; 350 *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i)=0.; 351 *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i+1)=0.; 352 *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i+2)=dh1dh6[2][i]; 353 *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i)=.5*dh1dh6[1][i]; 354 *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i+1)=.5*dh1dh6[0][i]; 355 *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i+2)=0.; 356 *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i)=.5*dh1dh6[2][i]; 357 *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i+1)=0.; 358 *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i+2)=.5*dh1dh6[0][i]; 359 *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i)=0.; 360 *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i+1)=.5*dh1dh6[2][i]; 361 *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i+2)=.5*dh1dh6[1][i]; 362 *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i)=0.; 363 *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i+1)=0.; 364 *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i+2)=0.; 365 *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i)=dh1dh6[0][i]; 366 *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i+1)=dh1dh6[1][i]; 367 *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i+2)=dh1dh6[2][i]; 368 _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24); 368 369 } 369 370 370 371 for (i=0;i<NUMNODESP1;i++){ //last column not for the bubble function 371 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+3)=0.; 372 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+3)=0.; 373 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+3)=0.; 374 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+3)=0.; 375 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+3)=0.; 376 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+3)=0.; 377 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+3)=l1l6[i]; 378 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+3)=0.; 372 B[(NDOF4*NUMNODESP1)*0+NDOF4*i+3]=0.; 373 B[(NDOF4*NUMNODESP1)*1+NDOF4*i+3]=0.; 374 B[(NDOF4*NUMNODESP1)*2+NDOF4*i+3]=0.; 375 B[(NDOF4*NUMNODESP1)*3+NDOF4*i+3]=0.; 376 B[(NDOF4*NUMNODESP1)*4+NDOF4*i+3]=0.; 377 B[(NDOF4*NUMNODESP1)*5+NDOF4*i+3]=0.; 378 B[(NDOF4*NUMNODESP1)*6+NDOF4*i+3]=l1l6[i]; 379 B[(NDOF4*NUMNODESP1)*7+NDOF4*i+3]=0.; 380 _assert_(((NDOF4*NUMNODESP1)*7+NDOF4*i+3)<8*24); 379 381 } 380 382 … … 476 478 /*B_primeuild B_prime: */ 477 479 for (i=0;i<NUMNODESP1;i++){ 478 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh6[0][i]; //B_prime[0][NDOF4*i]=dh1dh6[0][i]; 479 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0.; 480 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0.; 481 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0.; 482 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh6[1][i]; 483 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0.; 484 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0.; 485 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0.; 486 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh6[2][i]; 487 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=dh1dh6[1][i]; 488 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=dh1dh6[0][i]; 489 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0.; 490 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=dh1dh6[2][i]; 491 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0.; 492 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=dh1dh6[0][i]; 493 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0.; 494 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=dh1dh6[2][i]; 495 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=dh1dh6[1][i]; 496 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=dh1dh6[0][i]; 497 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=dh1dh6[1][i]; 498 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=dh1dh6[2][i]; 499 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=0.; 500 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=0.; 501 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=0.; 480 *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i)=dh1dh6[0][i]; //B_prime[0][NDOF4*i]=dh1dh6[0][i]; 481 *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+1)=0.; 482 *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+2)=0.; 483 *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i)=0.; 484 *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+1)=dh1dh6[1][i]; 485 *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+2)=0.; 486 *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i)=0.; 487 *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+1)=0.; 488 *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+2)=dh1dh6[2][i]; 489 *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i)=dh1dh6[1][i]; 490 *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+1)=dh1dh6[0][i]; 491 *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+2)=0.; 492 *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i)=dh1dh6[2][i]; 493 *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+1)=0.; 494 *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+2)=dh1dh6[0][i]; 495 *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i)=0.; 496 *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+1)=dh1dh6[2][i]; 497 *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+2)=dh1dh6[1][i]; 498 *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i)=dh1dh6[0][i]; 499 *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+1)=dh1dh6[1][i]; 500 *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+2)=dh1dh6[2][i]; 501 *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i)=0.; 502 *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+1)=0.; 503 *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+2)=0.; 504 _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24); 502 505 } 503 506 504 507 for (i=0;i<NUMNODESP1;i++){ //last column 505 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+3)=0.; 506 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+3)=0.; 507 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+3)=0.; 508 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+3)=0.; 509 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+3)=0.; 510 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+3)=0.; 511 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+3)=0.; 512 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+3)=l1l6[i]; 508 *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+3)=0.; 509 *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+3)=0.; 510 *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+3)=0.; 511 *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+3)=0.; 512 *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+3)=0.; 513 *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+3)=0.; 514 *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+3)=0.; 515 *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+3)=l1l6[i]; 516 _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24); 513 517 } 514 518 … … 1087 1091 if(*Jdet<0) _error_("negative jacobian determinant!"); 1088 1092 } 1089 /*}}}* /1093 /*}}}* 1090 1094 /*FUNCTION PentaRef::GetSegmentJacobianDeterminant{{{*/ 1091 1095 void PentaRef::GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,GaussPenta* gauss){
Note:
See TracChangeset
for help on using the changeset viewer.