dof_ex2.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   // create two triangles
00010   Triangle t1(lst(0,0), lst(1,0), lst(0,1)); 
00011   Triangle t2(lst(1,1), lst(1,0), lst(0,1)); 
00012 
00013   // create the polynomial space
00014   ex Nj = pol(1,2,"a"); 
00015   cout <<"Nj " <<Nj<<endl; 
00016   Line line; 
00017   ex   dofi; 
00018 
00019   // dofs on first triangle
00020   for (int i=1; i<= 3; i++) {
00021     line = t1.line(i);         // pick out the i'th line 
00022     dofi = line.integrate(Nj); // create the dof which is a line integral 
00023     dof.insert_dof(1,i, dofi); // insert local dof in global set of dofs 
00024   }
00025 
00026   // dofs on second triangle
00027   for (int i=1; i<= 3; i++) {
00028     line = t2.line(i);         // pick out the i'th line
00029     dofi = line.integrate(Nj); // create the dof which is a line integral 
00030     dof.insert_dof(2,i, dofi); // insert local dof in global set of dofs 
00031   }
00032 
00033   // Print out the global degrees of freedom an their 
00034   // corresponding local degrees of freedom 
00035   vector<pair<int,int> > vec; 
00036   pair<int,int> index; 
00037   ex exdof; 
00038   for (int i=1; i<= dof.size(); i++) {
00039     exdof = dof.glob_dof(i); 
00040     vec = dof.glob2loc(i);
00041     cout <<"global dof " <<i<<" dof "<<exdof<<endl; 
00042     for (int j=0; j<vec.size(); j++) { 
00043       index = vec[j]; 
00044       cout <<"  element "<<index.first<<" local dof "<<index.second<<endl; 
00045     }
00046   }
00047 
00048 
00049 }
00050 
00051 
00052 

Generated on Tue Jun 13 13:18:38 2006 for SyFi by  doxygen 1.4.4