Page 331 - The Combined Finite-Discrete Element Method
P. 331
314 ALGORITHM IMPLEMENTATION
{ DBL nx,ny,nz,voli,volc;
DBL B[3][3]; /* left Cauchy-Green strain tensor */
DBL D[3][3]; /* rate of deformation (stretching) tensor */
DBL E[3][3]; /* strain tensor (small strains) */
DBL F[3][3];
/* deformation gradient in global base delta ux/delta x */
DBL F0[3][3]; /* initial local base */
DBL FX[3][3]; /* current local base also delta ux/delta X */
DBL F0inv[3][3]; /* global base in initial local base */
DBL FXinv[3][3]; /* global base in current local base */
DBL L[3][3];
/* velocity gradient in global base delta vx/delta x */
DBL LX[3][3];
/* velocity gradient in current local base = delta x/delta X */
DBL T[3][3]; /* Cauchy stress */
INT ielem;
INT i,j,k,l;
Listing 10.37 Local variables used in processing deformability with finite rotation for a four-noded
solid tetrahedron finite element.
.........continued from previous listing.............
for(ielem=0;ielem<nelem;ielem++)
{ for(i=1;i<4;i++)
{ /* initial base */
F0[0][i-1]=d1ncix[(i2elto[i][ielem])]-d1ncix[(i2elto[0][ielem])];
F0[1][i-1]=d1nciy[(i2elto[i][ielem])]-d1nciy[(i2elto[0][ielem])];
F0[2][i-1]=d1nciz[(i2elto[i][ielem])]-d1nciz[(i2elto[0][ielem])];
/* current base */
FX[0][i-1]=d1nccx[(i2elto[i][ielem])]-
d1nccx[(i2elto[0][ielem])];
FX[1][i-1]=d1nccy[(i2elto[i][ielem])]-
d1nccy[(i2elto[0][ielem])];
FX[2][i-1]=d1nccz[(i2elto[i][ielem])]-d1nccz[(i2elto[0][ielem])];
/* velocity gradient */
LX[0][i-1]=d1nvcx[(i2elto[i][ielem])]-
d1nvcx[(i2elto[0][ielem])];
LX[1][i-1]=d1nvcy[(i2elto[i][ielem])]-d1nvcy[(i2elto[0][ielem])];
LX[2][i-1]=d1nvcz[(i2elto[i][ielem])]-d1nvcz[(i2elto[0][ielem])];
/* global base in initial local coordinates */
YMATINV3(F0,F0inv,voli);
/* global base in current local coordinates *
/YMATINV3(FX,FXinv,volc);
}
Listing 10.38 Global components of the base vectors of initial and deformed initial frames.