SyFi  0.3
arnoldfalkwinther.cpp
Go to the documentation of this file.
00001 #include <SyFi.h>
00002 #include <fstream>
00003 
00004 
00005 
00006 using namespace GiNaC; 
00007 using namespace SyFi; 
00008 using namespace std; 
00009 
00010 
00011 
00012 int main() {
00013 
00014 
00015     archive ar; 
00016 
00017     initSyFi(3); 
00018     ReferenceTetrahedron tetrahedron; 
00019     int order = 2; 
00020 
00021     ArnoldFalkWintherWeakSymSigma sigma_fe; 
00022     sigma_fe.set_order(order); 
00023     sigma_fe.set_polygon(tetrahedron); 
00024     sigma_fe.compute_basis_functions(); 
00025     for (unsigned int i=0; i<sigma_fe.nbf(); i++) {
00026         cout <<"sigma_fe.N("<<i<<")="<<sigma_fe.N(i)<<endl; ; 
00027         cout <<"div(sigma_fe.N("<<i<<"))="<<div(sigma_fe.N(i))<<endl; ; 
00028         cout <<"sigma_fe.dof("<<i<<"))="<<sigma_fe.dof(i)<<endl; ; 
00029 
00030         ar.archive_ex(sigma_fe.N(i), istr("sN", i).c_str()); 
00031 
00032     }
00033 
00034     map<pair<int,int>,ex> A; 
00035     pair<int,int> index; 
00036     for (unsigned int i=0; i<sigma_fe.nbf(); i++) {
00037         index.first = i; 
00038         for (unsigned int j=0; j<sigma_fe.nbf(); j++) {
00039             index.second = j; 
00040             ex integrand = inner(sigma_fe.N(i), sigma_fe.N(j)); 
00041             A[index] = tetrahedron.integrate(integrand); 
00042             cout <<"A["<<i<<","<<j<<"]="<<A[index]<<endl; 
00043 
00044             ar.archive_ex(A[index], istr("A", i,j).c_str()); 
00045         }
00046     }
00047 
00048 
00049 
00050 
00051     ArnoldFalkWintherWeakSymU u_fe; 
00052     u_fe.set_order(order); 
00053     u_fe.set_polygon(tetrahedron); 
00054     u_fe.compute_basis_functions(); 
00055     for (unsigned int i=0; i<u_fe.nbf(); i++) {
00056         cout <<"u_fe.N("<<i<<")="<<u_fe.N(i)<<endl; ; 
00057         ar.archive_ex(u_fe.N(i), istr("uN", i).c_str()); 
00058     }
00059 
00060     map<pair<int,int>,ex> B; 
00061     for (unsigned int i=0; i<sigma_fe.nbf(); i++) {
00062         index.first = i; 
00063         for (unsigned int j=0; j<u_fe.nbf(); j++) {
00064             index.second = j; 
00065             ex integrand = inner(div(sigma_fe.N(i)), u_fe.N(j)); 
00066             B[index] = tetrahedron.integrate(integrand); 
00067             cout <<"B["<<i<<","<<j<<"]="<<B[index]<<endl; 
00068         }
00069     }
00070 
00071 
00072 
00073 
00074     ArnoldFalkWintherWeakSymP p_fe; 
00075     p_fe.set_order(order); 
00076     p_fe.set_polygon(tetrahedron); 
00077     p_fe.compute_basis_functions(); 
00078     for (unsigned int i=0; i<p_fe.nbf(); i++) {
00079         cout <<"p_fe.N("<<i<<")="<<p_fe.N(i)<<endl; ; 
00080         ar.archive_ex(p_fe.N(i), istr("pN", i).c_str()); 
00081     }
00082 
00083 
00084     /*
00085     ofstream vfile("arnoldfalkwinther.gar.v"); 
00086     vfile << ar; vfile.close(); 
00087     if(!compare_archives("arnoldfalkwinther.gar.v", "arnoldfalkwinther.gar.r")) 
00088     { 
00089         cerr << "Failure!" << endl;
00090         return -1;
00091     }
00092     */
00093     return 0; 
00094 }
00095 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator