stokes.cpp

Go to the documentation of this file.
00001 
00002 void stokes() {
00003   std::map<std::pair<int,int>,double> A;
00004   std::map<std::pair<int,int>,double> B;
00005   std::map<std::pair<int,int>,double> C;
00006   std::map<int, double> b; 
00007   std::pair<int,int> index;
00008 
00009   FiniteElement vfe;
00010   FiniteElement pfe;
00011 
00012   Triangle triangle; Mesh mesh;  
00013   int ig, jg; 
00014   int t=0; 
00015   for ( triangle = mesh.iter.begin(); triangle != mesh.iter.end(); triangle++) { 
00016     t++; 
00017     vfe.set(triange); 
00018     pfe.compute_basis_functions(); 
00019 
00020     //upper left block vfe*vfe 
00021     for (int i=1; i <= vfe.nbf; i++) {  
00022       ig = vdofs.glob_dof(t, i , vfe.dof(i)); 
00023       index.first = ig; 
00024       for (int j=1; j <= vfe.nbf; j++) {  
00025         jg = vdofs.glob_dof(t, j, vfe.dof(j)); 
00026         index.second = jg; 
00027         A[index] += integral(triangle,grad(vfe.N(i)*grad(vfe.N(j)))); 
00028       }
00029       b[ig] += integral(triangle,f*vfe.N(i));  
00030     }
00031 
00032     //upper left right vfe*pfe 
00033     for (int i=1; i <= vfe.nbf; i++) {  
00034       ig = vdofs.glob_dof(t, i, vfe.dof(i)); 
00035       index.first = ig; 
00036       for (int j=1; j <= vfe.nbf; j++) {  
00037         jg = pdofs.glob_dof(t, i,  pfe.dof(j)); 
00038         index.second = jg; 
00039         B[index] += integral(triangle,vfe.N(i)*grad(pfe.N(j))); 
00040       }
00041 
00042     //lower left right vfe*pfe 
00043     for (int i=1; i <= pfe.nbf; i++) {  
00044       ig = pdofs.glob_dof(t, i, pfe.dof(i)); 
00045       index.first = ig; 
00046       for (int j=1; j <= vfe.nbf; j++) {  
00047         jg = vdofs.glob_dof(t, j, vfe.dof(j)); 
00048         index.second = jg; 
00049         C[index] += integral(triangle, div(vfe.N(i))*pfe.N(j)); 
00050       }
00051 
00052 
00053   }
00054 
00055 
00056 

Generated on Tue Nov 22 11:10:22 2005 for SyFi by  doxygen 1.4.4