dof_ex.cpp

Go to the documentation of this file.
00001 #include <SyFi.h>
00002 
00003 using namespace GiNaC; 
00004 
00005 int main() { 
00006 
00007   Dof dof; 
00008 
00009   Triangle t1(lst(0,0), lst(1,0), lst(0,1)); 
00010   Triangle t2(lst(1,1), lst(1,0), lst(0,1)); 
00011 
00012   // Create a finite element and corresponding 
00013   // degrees of freedom on the first triangle
00014   int order = 2; 
00015   LagrangeFE fe; 
00016   fe.set(order); 
00017   fe.set(t1); 
00018   fe.compute_basis_functions(); 
00019   for (int i=0; i< fe.nbf() ; i++) {
00020     cout <<"fe.dof("<<i<<")= "<<fe.dof(i)<<endl;  
00021     // insert local dof in global set of dofs   
00022     dof.insert_dof(1,i, fe.dof(i)); 
00023   }
00024 
00025   // Create a finite element and corresponding 
00026   // degrees of freedom on the second triangle
00027   fe.set(t2); 
00028   fe.compute_basis_functions(); 
00029   for (int i=0; i< fe.nbf() ; i++) {
00030     cout <<"fe.dof("<<i<<")= "<<fe.dof(i)<<endl; 
00031     // insert local dof in global set of dofs   
00032     dof.insert_dof(2,i, fe.dof(i)); 
00033   }
00034 
00035   // Print out the global degrees of freedom an their 
00036   // corresponding local degrees of freedom 
00037   vector<pair<int,int> > vec; 
00038   pair<int,int> index; 
00039   ex exdof; 
00040   for (int i=0; i< dof.size(); i++) {
00041     exdof = dof.glob_dof(i); 
00042     vec = dof.glob2loc(i);
00043     cout <<"global dof " <<i<<" dof "<<exdof<<endl; 
00044     for (int j=0; j<vec.size(); j++) { 
00045       index = vec[j]; 
00046       cout <<"  element "<<index.first<<" local dof "<<index.second<<endl; 
00047     }
00048   }
00049 
00050 
00051 
00052 }
00053 
00054 
00055 

Generated on Tue Apr 18 12:00:26 2006 for SyFi by  doxygen 1.4.4