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
00013
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
00022 dof.insert_dof(1,i, fe.dof(i));
00023 }
00024
00025
00026
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
00032 dof.insert_dof(2,i, fe.dof(i));
00033 }
00034
00035
00036
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