00001 00005 class ToolsElmT3n2D 00006 00007 { 00008 private: 00009 00010 int elm_no_; 00011 GridFE* grid_; 00012 00013 real d; 00014 real x1_,y1_; 00015 real x2_,y2_; 00016 real x3_,y3_; 00017 real det_; 00018 real g1x,g1y, g2x,g2y, g3x,g3y; 00019 int n1_,n2_,n3_; 00020 00021 public: 00022 00023 ToolsElmT3n2D (); 00024 ToolsElmT3n2D (GridFE* grid); 00025 ~ToolsElmT3n2D (); 00026 void attach (GridFE* grid); 00027 void refill (int elm_no); 00028 bool checkGrid (); 00029 bool checkGrid (int e); 00030 GridFE& grid () { return *grid_; } 00031 int getElmNo () { return elm_no_; } 00032 00033 real x1() {return x1_;} 00034 real y1() {return y1_;} 00035 real x2() {return x2_;} 00036 real y2() {return y2_;} 00037 real x3() {return x3_;} 00038 real y3() {return y3_;} 00039 00040 real det() {return det_;} 00041 00042 real dN1x() {return g1x;} 00043 real dN1y() {return g1y;} 00044 real dN2x() {return g2x;} 00045 real dN2y() {return g2y;} 00046 real dN3x() {return g3x;} 00047 real dN3y() {return g3y;} 00048 00049 int n1() {return n1_;} 00050 int n2() {return n2_;} 00051 int n3() {return n3_;} 00052 00053 real area () { return 0.5*det_; } 00054 00055 00056 00057 real maxAngle () { return max(max(angle1(),angle2()),angle3()); } 00058 real minAngle () { return min(min(angle1(),angle2()),angle3()); } 00059 real angle (int i); 00060 real angle1 (){ return acos(-a23()/sqrt(a22()*a33())); } 00061 real angle2 (){ return acos(-a13()/sqrt(a11()*a33())); } 00062 real angle3 (){ return acos(-a12()/sqrt(a11()*a22())); } 00063 real inRadius () { return det_/( l1() + l2() + l3() ); } 00064 real circumRadius () { return 0.5*d*sqrt( l1sq() * l2sq() * l3sq() ); } 00065 00066 Ptv(real) inCenter () { 00067 real cx,cy; inCenter(cx,cy); Ptv(real) cin( cx, cy ); return cin; } 00068 00069 void inCenter ( real& cx, real& cy ) { 00070 00071 real s1 = l1(), s2 = l2(), s3 = l3(); real Oinv = 1./(s1 + s2 + s3); 00072 cx = (x1_*s2 + x2_*s3 + x3_*s1)*Oinv; 00073 cy = (y1_*s2 + y2_*s3 + y3_*s1)*Oinv; } 00074 00075 Ptv(real) circumCenter (){ 00076 real a=a23()*sqr(det_); 00077 Ptv(real) c(0.5*(x2_+x3_-a*g1x),0.5*(y2_+y3_-a*g1y)); return c; } 00078 00079 void circumCenter ( real& cx, real& cy ) { 00080 real a=a23()*sqr(det_); cx=0.5*(x2_+x3_-a*g1x); cy=0.5*(y2_+y3_-a*g1y); } 00081 00082 Ptv(real) centroid () { Ptv(real) c(centroidx(),centroidy()); return c; } 00083 00084 void centroid ( real& cx, real& cy ) { cx = centroidx(); cy = centroidy();} 00085 real centroidx () { return (x1_+x2_+x3_)*ONETHIRD; } 00086 real centroidy () { return (y1_+y2_+y3_)*ONETHIRD; } 00087 real midpt1x () { return (x1_+x2_)*0.5; } 00088 real midpt1y () { return (y1_+y2_)*0.5; } 00089 real midpt2x () { return (x2_+x3_)*0.5; } 00090 real midpt2y () { return (y2_+y3_)*0.5; } 00091 real midpt3x () { return (x3_+x1_)*0.5; } 00092 real midpt3y () { return (y3_+y1_)*0.5; } 00093 00094 Ptv(real) normal ( int i ); 00095 00096 Ptv(real) normal1 () { 00097 real a = -1.0/sqrt(a33()); Ptv(real) nm(a*g3x,a*g3y); return nm; } 00098 00099 Ptv(real) normal2 () { 00100 real a = -1.0/sqrt(a11()); Ptv(real) nm(a*g1x,a*g1y); return nm; } 00101 00102 Ptv(real) normal3 () { 00103 real a = -1.0/sqrt(a22()); Ptv(real) nm(a*g2x,a*g2y); return nm; } 00104 00105 void normal1 ( real& nx, real& ny ) { 00106 real a=-1.0/sqrt(a33()); nx=a*g3x; ny=a*g3y; } 00107 00108 void normal2 ( real& nx, real& ny ) { 00109 real a=-1.0/sqrt(a11()); nx=a*g1x; ny=a*g1y; } 00110 00111 void normal3 ( real& nx, real& ny ) { 00112 real a=-1.0/sqrt(a22()); nx=a*g2x; ny=a*g2y; } 00113 00114 real h () { return det_/maxLength (); } 00115 real maxLength () { return sqrt(max(l1sq(), max(l2sq(), l3sq()))); } 00116 real minLength () { return sqrt(min(l1sq(), min(l2sq(), l3sq()))); } 00117 real edgeLength (int i); 00118 real l1 () { return sqrt( l1sq () ); } 00119 real l2 () { return sqrt( l2sq () ); } 00120 real l3 () { return sqrt( l3sq () ); } 00121 real l1sq () { return sqr(x1_ - x2_) + sqr(y1_ - y2_); } 00122 real l2sq () { return sqr(x2_ - x3_) + sqr(y2_ - y3_); } 00123 real l3sq () { return sqr(x3_ - x1_) + sqr(y3_ - y1_); } 00124 real circumference () { return l1() + l2() + l3(); } 00125 real xmax () { return max( x1_, max(x2_, x3_) ); } 00126 real xmin () { return min( x1_, min(x2_, x3_) ); } 00127 real ymax () { return max( y1_, max(y2_, y3_) ); } 00128 real ymin () { return min( y1_, min(y2_, y3_) ); } 00129 00130 real a11 () { return sqr(g1x) + sqr(g1y); } 00131 real a12 () { return g1x*g2x + g1y*g2y; } 00132 real a21 () { return a12(); } 00133 real a13 () { return g1x*g3x + g1y*g3y; } 00134 real a31 () { return a13(); } 00135 real a22 () { return sqr(g2x) + sqr(g2y); } 00136 real a23 () { return g2x*g3x + g2y*g3y; } 00137 real a32 () { return a23(); } 00138 real a33 () { return sqr(g3x) + sqr(g3y); } 00139 00140 Ptv(real) localCoordinates ( real x, real y ) { 00141 x-=x1_; y-=y1_; Ptv(real) bc( g2x*x + g2y*y, g3x*x + g3y*y ); return bc;} 00142 00143 real barycentric1 (real x,real y) { return 1 + g1x*(x-x1_) + g1y*(y-y1_); } 00144 real barycentric2 (real x,real y) { return g2x*(x-x1_) + g2y*(y-y1_); } 00145 real barycentric3 (real x,real y) { return g3x*(x-x1_) + g3y*(y-y1_); } 00146 void barycentric (real x, real y, NUMT& phi1, NUMT& phi2, NUMT& phi3) { 00147 x-=x1_; y-=y1_; phi2=g2x*x + g2y*y; phi3=g3x*x + g3y*y; phi1=1-phi2-phi3; } 00148 bool inSide ( real x, real y ); 00149 bool outSide ( real x, real y ); 00150 bool onTriangle ( real x, real y ); 00151 00152 00153 00154 00155 real qualityMeasure ( int i ); 00156 00157 real etahH () { 00158 return 1.154700538379251773*det_/max(max(l1sq(),l2sq()),l3sq()); } 00159 00160 real etaincirc () { 00161 real s1=l1(), s2=l2(), s3=l3(); return 4*sqr(det_)/((s1+s2+s3)*s1*s2*s3); } 00162 00163 real etaMaxAngle () { 00164 return (PI-maxAngle())*0.4774648292756859185; } 00165 00166 real etapltmg () { 00167 00168 return 3.464101615137754422*det_/(l1sq()+l2sq()+l3sq()); } 00169 00170 void testComputations (); 00171 bool ok () const; 00172 void print (Os os) const; 00173 00174 00175 00176 bool areQuadNodesAtMidPoints (); 00177 00178 00179 00180 00181 void quadShape( real r, real s, real t, real& psi1, real& psi2, real& psi3, 00182 real& psi4, real& psi5, real& psi6 ) { 00183 psi1 = r*(2*r-1); psi2 = s*(2*s-1); psi3 = t*(2*t-1); 00184 psi4 = 4*r*s; psi5 = 4*s*t; psi6 = 4*r*t; } 00185 00186 void dNq123( real r, real s, real t, real& psi1x, real& psi1y, real& psi2x, 00187 real& psi2y, real& psi3x, real& psi3y ) { 00188 real a=4*r-1; psi1x = a*g1x; psi1y = a*g1y; 00189 a=4*s-1; psi2x = a*g2x; psi2y = a*g2y; 00190 a=4*t-1; psi3x = a*g3x; psi3y = a*g3y; } 00191 00192 void dNq456( real r, real s, real t, real& psi4x, real& psi4y, real& psi5x, 00193 real& psi5y, real& psi6x, real& psi6y ) { r*=4;s*=4;t*=4; 00194 psi4x = r*g2x+s*g1x; psi4y = r*g2y+s*g1y; 00195 psi5x = s*g3x+t*g2x; psi5y = s*g3y+t*g2y; 00196 psi6x = t*g1x+r*g3x; psi6y = t*g1y+r*g3y; } 00197 00198 00199 00200 COPY_CONSTRUCTOR(ToolsElmT3n2D); 00201 00202 ASSIGNMENT_OPERATOR(ToolsElmT3n2D); 00203 }; 00204 00205 00590 class ToolsElmT4n3D 00591 00592 { 00593 private: 00594 00595 int elm_no_; 00596 GridFE* grid_; 00597 00598 00599 00600 real x1_,y1_,z1_, x2_,y2_,z2_, x3_,y3_,z3_, x4_,y4_,z4_; 00601 real det_; 00602 00603 real g1x,g1y,g1z, g2x,g2y,g2z, g3x,g3y,g3z, g4x,g4y,g4z; 00604 int n1_,n2_,n3_,n4_; 00605 00606 real d; 00607 real j11,j12,j13, j21,j22,j23, j31,j32,j33; 00608 00609 public: 00610 00611 ToolsElmT4n3D (); 00612 ToolsElmT4n3D (GridFE* grid); 00613 ~ToolsElmT4n3D (); 00614 00615 void attach (GridFE* grid); 00616 void refill (int elm_no); 00617 bool checkGrid (); 00618 bool checkGrid (int e); 00619 GridFE& grid () { return *grid_; } 00620 int getElmNo () { return elm_no_; } 00621 00622 real x1 () { return x1_; } 00623 real y1 () { return y1_; } 00624 real z1 () { return z1_; } 00625 real x2 () { return x2_; } 00626 real y2 () { return y2_; } 00627 real z2 () { return z2_; } 00628 real x3 () { return x3_; } 00629 real y3 () { return y3_; } 00630 real z3 () { return z3_; } 00631 real x4 () { return x4_; } 00632 real y4 () { return y4_; } 00633 real z4 () { return z4_; } 00634 real det () { return det_; } 00635 real dN1x () { return g1x; } 00636 real dN1y () { return g1y; } 00637 real dN1z () { return g1z; } 00638 real dN2x () { return g2x; } 00639 real dN2y () { return g2y; } 00640 real dN2z () { return g2z; } 00641 real dN3x () { return g3x; } 00642 real dN3y () { return g3y; } 00643 real dN3z () { return g3z; } 00644 real dN4x () { return g4x; } 00645 real dN4y () { return g4y; } 00646 real dN4z () { return g4z; } 00647 int n1 () { return n1_; } 00648 int n2 () { return n2_; } 00649 int n3 () { return n3_; } 00650 int n4 () { return n4_; } 00651 00652 real volume () { return det_*ONESIXTH; } 00653 real area (int i); 00654 real area1 () { return det_*0.5*sqrt(a33()); } 00655 real area2 () { return det_*0.5*sqrt(a11()); } 00656 real area3 () { return det_*0.5*sqrt(a22()); } 00657 real area4 () { return det_*0.5*sqrt(a44()); } 00658 real maxArea(){return det_*0.5*sqrt(max(max(a33(),a11()),max(a22(),a44())));} 00659 00660 00661 real maxSolidAngle (); 00662 real minSolidAngle (); 00663 void minMaxSolidAngle ( real& minsa, real& maxsa ); 00664 real solidAngle(int i); 00665 real solidAngle1 (){ return 00666 dihedralAngle1()+dihedralAngle3()+dihedralAngle4()-PI;} 00667 real solidAngle2 (){ return 00668 dihedralAngle1()+dihedralAngle2()+dihedralAngle5()-PI;} 00669 real solidAngle3 (){ return 00670 dihedralAngle2()+dihedralAngle3()+dihedralAngle6()-PI;} 00671 real solidAngle4 (){ return 00672 dihedralAngle4()+dihedralAngle5()+dihedralAngle6()-PI;} 00673 real dihedralAngle (int i); 00674 real dihedralAngle1 () { return PI-acos(a34()/sqrt(a33()*a44())); } 00675 real dihedralAngle2 () { return PI-acos(a14()/sqrt(a11()*a44())); } 00676 real dihedralAngle3 () { return PI-acos(a24()/sqrt(a22()*a44())); } 00677 real dihedralAngle4 () { return PI-acos(a23()/sqrt(a22()*a33())); } 00678 real dihedralAngle5 () { return PI-acos(a13()/sqrt(a11()*a33())); } 00679 real dihedralAngle6 () { return PI-acos(a12()/sqrt(a11()*a22())); } 00680 00681 real inRadius () { 00682 return 1.0/( sqrt(a11()) + sqrt(a22()) + sqrt(a33()) + sqrt(a44()) ); } 00683 Ptv(real) inCenter (); 00684 void inCenter ( real& cx, real& cy, real& cz ); 00685 real circumRadius (); 00686 Ptv(real) circumCenter (); 00687 void circumCenter ( real& cx, real& cy, real& cz ); 00688 Ptv(real) centroid () { 00689 Ptv(real) c( centroidx(), centroidy(), centroidz() ); return c; } 00690 void centroid ( real& cx, real& cy, real& cz ) { 00691 cx = centroidx(); cy = centroidy(); cz = centroidz(); } 00692 real centroidx () { return (x1_ + x2_ + x3_ + x4_)*0.25; } 00693 real centroidy () { return (y1_ + y2_ + y3_ + y4_)*0.25; } 00694 real centroidz () { return (z1_ + z2_ + z3_ + z4_)*0.25; } 00695 00696 real midptface1x () { return (x1_ + x2_ + x4_)*ONETHIRD; } 00697 real midptface1y () { return (y1_ + y2_ + y4_)*ONETHIRD; } 00698 real midptface1z () { return (z1_ + z2_ + z4_)*ONETHIRD; } 00699 real midptface2x () { return (x2_ + x3_ + x4_)*ONETHIRD; } 00700 real midptface2y () { return (y2_ + y3_ + y4_)*ONETHIRD; } 00701 real midptface2z () { return (z2_ + z3_ + z4_)*ONETHIRD; } 00702 real midptface3x () { return (x1_ + x3_ + x4_)*ONETHIRD; } 00703 real midptface3y () { return (y1_ + y3_ + y4_)*ONETHIRD; } 00704 real midptface3z () { return (z1_ + z3_ + z4_)*ONETHIRD; } 00705 real midptface4x () { return (x1_ + x2_ + x3_)*ONETHIRD; } 00706 real midptface4y () { return (y1_ + y2_ + y3_)*ONETHIRD; } 00707 real midptface4z () { return (z1_ + z2_ + z3_)*ONETHIRD; } 00708 real midpt1x () { return (x1_ + x2_)*0.5; } 00709 real midpt1y () { return (y1_ + y2_)*0.5; } 00710 real midpt1z () { return (z1_ + z2_)*0.5; } 00711 real midpt2x () { return (x2_ + x3_)*0.5; } 00712 real midpt2y () { return (y2_ + y3_)*0.5; } 00713 real midpt2z () { return (z2_ + z3_)*0.5; } 00714 real midpt3x () { return (x3_ + x1_)*0.5; } 00715 real midpt3y () { return (y3_ + y1_)*0.5; } 00716 real midpt3z () { return (z3_ + z1_)*0.5; } 00717 real midpt4x () { return (x1_ + x4_)*0.5; } 00718 real midpt4y () { return (y1_ + y4_)*0.5; } 00719 real midpt4z () { return (z1_ + z4_)*0.5; } 00720 real midpt5x () { return (x2_ + x4_)*0.5; } 00721 real midpt5y () { return (y2_ + y4_)*0.5; } 00722 real midpt5z () { return (z2_ + z4_)*0.5; } 00723 real midpt6x () { return (x3_ + x4_)*0.5; } 00724 real midpt6y () { return (y3_ + y4_)*0.5; } 00725 real midpt6z () { return (z3_ + z4_)*0.5; } 00726 00727 00728 Ptv(real) normal(int i); 00729 Ptv(real) normal1 () 00730 { real a = -1.0/sqrt(a33()); Ptv(real) nm(a*g3x,a*g3y,a*g3z); return nm; } 00731 Ptv(real) normal2 () 00732 { real a = -1.0/sqrt(a11()); Ptv(real) nm(a*g1x,a*g1y,a*g1z); return nm; } 00733 Ptv(real) normal3 () 00734 { real a = -1.0/sqrt(a22()); Ptv(real) nm(a*g2x,a*g2y,a*g2z); return nm; } 00735 Ptv(real) normal4 () 00736 { real a = -1.0/sqrt(a44()); Ptv(real) nm(a*g4x,a*g4y,a*g4z); return nm; } 00737 void normal1 ( real& nx, real& ny, real& nz ) 00738 { real a=-1/sqrt(a33()); nx=a*g3x; ny=a*g3y; nz=a*g3z;} 00739 void normal2 ( real& nx, real& ny, real& nz ) 00740 { real a=-1/sqrt(a11()); nx=a*g1x; ny=a*g1y; nz=a*g1z;} 00741 void normal3 ( real& nx, real& ny, real& nz ) 00742 { real a=-1/sqrt(a22()); nx=a*g2x; ny=a*g2y; nz=a*g2z;} 00743 void normal4 ( real& nx, real& ny, real& nz ) 00744 { real a=-1/sqrt(a44()); nx=a*g4x; ny=a*g4y; nz=a*g4z;} 00745 00746 real h () { return 1.0/sqrt(max(max(a33(),a11()),max(a22(),a44()))); } 00747 real H () { return maxLength (); } 00748 real maxLength () { return 00749 sqrt(max(max(max(l1sq(),l2sq()),max(l3sq(),l4sq())),max(l5sq(),l6sq()))); } 00750 real minLength () { return 00751 sqrt(min(min(min(l1sq(),l2sq()),min(l3sq(),l4sq())),min(l5sq(),l6sq()))); } 00752 real edgeLength (int i); 00753 00754 real l1 () { return sqrt( l1sq() ); } 00755 real l2 () { return sqrt( l2sq() ); } 00756 real l3 () { return sqrt( l3sq() ); } 00757 real l4 () { return sqrt( l4sq() ); } 00758 real l5 () { return sqrt( l5sq() ); } 00759 real l6 () { return sqrt( l6sq() ); } 00760 real l1sq () { return sqr(j11) + sqr(j12) + sqr(j13); } 00761 real l2sq () { return sqr(x2_-x3_) + sqr(y2_-y3_) + sqr(z2_-z3_); } 00762 real l3sq () { return sqr(j21) + sqr(j22) + sqr(j23); } 00763 real l4sq () { return sqr(j31) + sqr(j32) + sqr(j33); } 00764 real l5sq () { return sqr(x2_-x4_) + sqr(y2_-y4_) + sqr(z2_-z4_); } 00765 real l6sq () { return sqr(x3_-x4_) + sqr(y3_-y4_) + sqr(z3_-z4_); } 00766 real xmax () { return max(max(x1_,x2_),max(x3_,x4_)); } 00767 real xmin () { return min(min(x1_,x2_),min(x3_,x4_)); } 00768 real ymax () { return max(max(y1_,y2_),max(y3_,y4_)); } 00769 real ymin () { return min(min(y1_,y2_),min(y3_,y4_)); } 00770 real zmax () { return max(max(z1_,z2_),max(z3_,z4_)); } 00771 real zmin () { return min(min(z1_,z2_),min(z3_,z4_)); } 00772 00773 real a11 () { return sqr(g1x) + sqr(g1y) + sqr(g1z); } 00774 real a12 () { return g1x*g2x + g1y*g2y + g1z*g2z; } 00775 real a13 () { return g1x*g3x + g1y*g3y + g1z*g3z; } 00776 real a21 () { return a12(); } 00777 real a22 () { return sqr(g2x) + sqr(g2y) + sqr(g2z); } 00778 real a23 () { return g2x*g3x + g2y*g3y + g2z*g3z; } 00779 real a24 () { return g2x*g4x + g2y*g4y + g2z*g4z; } 00780 real a31 () { return a13(); } 00781 real a32 () { return a23(); } 00782 real a33 () { return sqr(g3x) + sqr(g3y) + sqr(g3z); } 00783 real a34 () { return g3x*g4x + g3y*g4y + g3z*g4z; } 00784 real a14 () { return g1x*g4x + g1y*g4y + g1z*g4z; } 00785 real a41 () { return a14(); } 00786 real a42 () { return a24(); } 00787 real a43 () { return a34(); } 00788 real a44 () { return sqr(g4x) + sqr(g4y) + sqr(g4z); } 00789 Ptv(real) localCoordinates ( real x, real y, real z ); 00790 real barycentric1(real x,real y,real z) { 00791 return g1x*(x-x2_) + g1y*(y-y2_) + g1z*(z-z2_); } 00792 real barycentric2(real x,real y,real z) { 00793 return g2x*(x-x1_) + g2y*(y-y1_) + g2z*(z-z1_); } 00794 real barycentric3(real x,real y,real z) { 00795 return g3x*(x-x1_) + g3y*(y-y1_) + g3z*(z-z1_); } 00796 real barycentric4(real x,real y,real z) { 00797 return g4x*(x-x1_) + g4y*(y-y1_) + g4z*(z-z1_); } 00798 void barycentric(real x, real y, real z, 00799 NUMT& phi1, NUMT& phi2, NUMT& phi3, NUMT& phi4) { 00800 x-=x1_; y-=y1_; z-=z1_; 00801 phi2 = g2x*x + g2y*y + g2z*z; 00802 phi3 = g3x*x + g3y*y + g3z*z; 00803 phi4 = g4x*x + g4y*y + g4z*z; phi1 = 1 - phi2 - phi3 - phi4; } 00804 bool inSide ( real x, real y, real z ); 00805 bool outSide ( real x, real y, real z ); 00806 bool onTetra ( real x, real y, real z ); 00807 00808 real qualityMeasure ( int i ); 00809 real eta (); 00810 real etaincirc (); 00811 real etaMinSolidAngle (); 00812 real etaMaxSolidAngle (); 00813 real etahH (); 00814 void testComputations(); 00815 bool ok () const; 00816 void print (Os os) const; 00817 00818 00819 00820 00821 bool areQuadNodesAtMidPoints (); 00822 00823 00824 void quadShape( real r, real s, real t, real u, 00825 real& psi1, real& psi2, real& psi3, real& psi4, 00826 real& psi5, real& psi6, real& psi7, real& psi8, 00827 real& psi9, real& psi10) { 00828 psi1 = r*(2*r-1); psi2 = s*(2*s-1); psi3 = t*(2*t-1); 00829 psi4 = u*(2*u-1); r*=2; s*=2; t*=2; u*=2; 00830 psi5 = r*s; psi6 = s*t; psi7 = r*t; 00831 psi8 = r*u; psi9 = s*u; psi10 = t*u; } 00832 void dNq1234( real r, real s, real t, real u, 00833 real& psi1x, real& psi1y, real& psi1z, 00834 real& psi2x, real& psi2y, real& psi2z, 00835 real& psi3x, real& psi3y, real& psi3z, 00836 real& psi4x, real& psi4y, real& psi4z ) { 00837 real a=4*r-1; psi1x = a*g1x; psi1y = a*g1y; psi1z = a*g1z; 00838 a=4*s-1; psi2x = a*g2x; psi2y = a*g2y; psi2z = a*g2z; 00839 a=4*t-1; psi3x = a*g3x; psi3y = a*g3y; psi3z = a*g3z; 00840 a=4*u-1; psi4x = a*g4x; psi4y = a*g4y; psi4z = a*g4z; } 00841 void dNq5678910( real r, real s, real t, real u, 00842 real& psi5x, real& psi5y, real& psi5z, 00843 real& psi6x, real& psi6y, real& psi6z, 00844 real& psi7x, real& psi7y, real& psi7z, 00845 real& psi8x, real& psi8y, real& psi8z, 00846 real& psi9x, real& psi9y, real& psi9z, 00847 real& psi10x, real& psi10y, real& psi10z ) { 00848 r *= 4; s *= 4; t *= 4; u *= 4; 00849 psi5x=r*g2x+s*g1x; psi5y=r*g2y+s*g1y; psi5z=r*g2z+s*g1z; 00850 psi6x=s*g3x+t*g2x; psi6y=s*g3y+t*g2y; psi6z=s*g3z+t*g2z; 00851 psi7x=t*g1x+r*g3x; psi7y=t*g1y+r*g3y; psi7z=t*g1z+r*g3z; 00852 psi8x=r*g4x+u*g1x; psi8y=r*g4y+u*g1y; psi8z=r*g4z+u*g1z; 00853 psi9x=s*g4x+u*g2x; psi9y=s*g4y+u*g2y; psi9z=s*g4z+u*g2z; 00854 psi10x=t*g4x+u*g3x;psi10y=t*g4y+u*g3y;psi10z=t*g4z+u*g3z;} 00855 00856 00857 00858 COPY_CONSTRUCTOR(ToolsElmT4n3D); 00859 00860 ASSIGNMENT_OPERATOR(ToolsElmT4n3D); 00861 }; 00862 00863