Diffpack Documentation


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

ElmTtools.h

Go to the documentation of this file.
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 

Copyright © 2003 inuTech GmbH. All rights reserved.