elas37.ms
> restart:
> interface(labelling=false):
> grtw();
> grOptionTermSize:=0:
> grlib(elasticity):
The Elasticity Package
Last Modified May, 1998
Created by P. Musgrave and K. Lake. Copyright 1996-98
Conventions: Deformed state $B$ with metric $G_{ij}$ generated from coordinates $(y1,y2,y3)$,
undeformed state $B_{0}$ with metric $g_{ij}$ generated from coordinates $(x1,x2,x3)$.
{\bf 3.7 Extension, inflation, and shear of a cylindrical tube}
Take the body coordinates $(r,\theta,z)$.
To generate $G_{ij}$:
> qload(ey);
> xform1:=[y1(r,theta)=r*cos(theta),y2(r,theta)=r*sin(theta),y3(z)=z];
> grtransform(ey,deformed,xform1):
The new default metric is: deformed
> gralter(g(dn,dn),trig);
Component simplification of a GRTensorII object:
Applying routine `simplify[trig]` to object g(dn,dn)
> grdisplay(_);
To generate $g_{ij}$:
> qload(ex);
> xform2:=[x1(r,theta,z)=r*Q(r)*cos(theta-phi(r)),x2(r,theta,z)=r*Q(r)*sin(theta-phi(r)),x3(z)=(z-w(r))/lambda];
> grtransform(ex,undeformed,xform2):
The new default metric is: undeformed
> gralter(g(dn,dn),trig,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trig]` to object g(dn,dn)
Applying routine expand to object g(dn,dn)
> grmap(_,autoAlias,`x`);
Applying routine autoAlias to g(dn,dn)
> grdisplay(_);
> body(g=undeformed,G=deformed):
The default metric is now: deformed.
> grcalc(strain(dn,dn),I1,I2,I3,B(up,up),stress(up,up));
> gralter(_,simplify,factor);
Component simplification of a GRTensorII object:
Applying routine simplify to object strain(dn,dn)
Applying routine simplify to object I1
Applying routine simplify to object I2
Applying routine simplify to object I3
Applying routine simplify to object B(up,up)
Applying routine simplify to object stress(up,up)
Applying routine factor to object strain(dn,dn)
Applying routine factor to object I1
Applying routine factor to object I2
Applying routine factor to object I3
Applying routine factor to object B(up,up)
Applying routine factor to object stress(up,up)
> grmap(_,autoAlias,`x`):
Applying routine autoAlias to strain(dn,dn)
Applying routine autoAlias to I1
Applying routine autoAlias to I2
Applying routine autoAlias to I3
Applying routine autoAlias to B(up,up)
Applying routine autoAlias to stress(up,up)
> grdisplay(_);
Now the incompressibility condition $I_{3} = 1$ can be solved explicitly for $Q(r)$
> dsolve(grcomponent(I3,[])=1,Q(r));
Following Green and Zerna we first removed derivatives of $Q(r)$ and leave $Q(r)$ in the components.
> grmap(g(dn,dn)[undeformed],strain(dn,dn),I1,I2,I3,B(up,up),stress(up,up),subs,diff(Q(r),r)=(lambda-Q(r)^2)/(Q(r)*r),`x`);
Applying routine subs to g(dn,dn)
Applying routine subs to strain(dn,dn)
Applying routine subs to I1
Applying routine subs to I2
Applying routine subs to I3
Applying routine subs to B(up,up)
Applying routine subs to stress(up,up)
> gralter(_,expand);
Component simplification of a GRTensorII object:
Applying routine expand to object g(dn,dn)
Applying routine expand to object strain(dn,dn)
Applying routine expand to object I1
Applying routine expand to object I2
Applying routine expand to object I3
Applying routine expand to object B(up,up)
Applying routine expand to object stress(up,up)
> grdisplay(_);
We now define the vector $T^{a} = \tau^{ab}||-{b}$.
> grdefine(`T{^b}`,{},`stress{^a^b;a}`):
Created a definition for stress(up,up,cdn)
Created definition for T(up)
> grcalc(T(up));
> grmap(_,autoAlias,`x`);
Applying routine autoAlias to T(up)
> gralter(_,expand):
Component simplification of a GRTensorII object:
Applying routine expand to object T(up)
> grdisplay(_);
>
The equilibrium condition $T^{a} = \tau^{ab}||_{b} = 0$ gives $p(r)$.
> expand(dsolve(grcomponent(T(up),[r])=0,p(r)));
Because we have solved for $Q(r)$ we can go back and write the entire analysis in explicit form.
> grmap(g(dn,dn)[undeformed],strain(dn,dn),I1,I2,I3,B(up,up),stress(up,up),T(up),subs,Q(r)=(lambda*(r^2+K))^(1/2)/r,`x`);
Applying routine subs to g(dn,dn)
Applying routine subs to strain(dn,dn)
Applying routine subs to I1
Applying routine subs to I2
Applying routine subs to I3
Applying routine subs to B(up,up)
Applying routine subs to stress(up,up)
Applying routine subs to T(up)
> gralter(_,simplify,factor);
Component simplification of a GRTensorII object:
Applying routine simplify to object g(dn,dn)
Applying routine simplify to object strain(dn,dn)
Applying routine simplify to object I1
Applying routine simplify to object I2
Applying routine simplify to object I3
Applying routine simplify to object B(up,up)
Applying routine simplify to object stress(up,up)
Applying routine simplify to object T(up)
Applying routine factor to object g(dn,dn)
Applying routine factor to object strain(dn,dn)
Applying routine factor to object I1
Applying routine factor to object I2
Applying routine factor to object I3
Applying routine factor to object B(up,up)
Applying routine factor to object stress(up,up)
Applying routine factor to object T(up)
> grdisplay(_);
> expand(dsolve(grcomponent(T(up),[r])=0,p(r)));
At this point Green and Zerna introduce the assumption $W = C_{1}(I_{1}-3)+C_{2}(I_{2}-3)$ which gives
$\Phi = 2*C_{1}$ and $\Psi = 2*C_{2}$:
> grmap(strain(dn,dn),I1,I2,I3,B(up,up),stress(up,up),T(up),subs,Phi(r)=2*c[1],psi(r)=2*c[2],`x`);
Applying routine subs to strain(dn,dn)
Applying routine subs to I1
Applying routine subs to I2
Applying routine subs to I3
Applying routine subs to B(up,up)
Applying routine subs to stress(up,up)
Applying routine subs to T(up)
> grdisplay(_);
We can now solve {\em explicitly} for $w(r)$, $\phi(r)$, and $p(r)$
> dsolve(grcomponent(T(up),[z])=0,w(r));
> W1(r):=c[3]+c[4]*ln(c[1]*lambda*r^2+c[1]*lambda*K+c[2]*r^2);
> dsolve(grcomponent(T(up),[theta])=0,phi(r));
> W2(r):=c[5]+c[6]*(2*ln(r)-ln(r^2+K));
> grmap(T(up),subs,w(r)=W1(r),phi(r)=W2(r),`x`);
Applying routine subs to T(up)
> expand(grcomponent(T(up),[r]));
> dsolve(grcomponent(T(up),[r])=0,p(r));
> expand(%);
>