SyFi
0.3
|
Go to the source code of this file.
Functions | |
int | main () |
int main | ( | ) |
Definition at line 12 of file arnoldfalkwinther.cpp.
References SyFi::ArnoldFalkWintherWeakSymSigma::compute_basis_functions(), SyFi::ArnoldFalkWintherWeakSymU::compute_basis_functions(), SyFi::ArnoldFalkWintherWeakSymP::compute_basis_functions(), SyFi::div(), SyFi::StandardFE::dof(), SyFi::initSyFi(), SyFi::inner(), SyFi::ReferenceTetrahedron::integrate(), SyFi::istr(), SyFi::StandardFE::N(), SyFi::StandardFE::nbf(), SyFi::StandardFE::set_order(), and SyFi::StandardFE::set_polygon().
{ archive ar; initSyFi(3); ReferenceTetrahedron tetrahedron; int order = 2; ArnoldFalkWintherWeakSymSigma sigma_fe; sigma_fe.set_order(order); sigma_fe.set_polygon(tetrahedron); sigma_fe.compute_basis_functions(); for (unsigned int i=0; i<sigma_fe.nbf(); i++) { cout <<"sigma_fe.N("<<i<<")="<<sigma_fe.N(i)<<endl; ; cout <<"div(sigma_fe.N("<<i<<"))="<<div(sigma_fe.N(i))<<endl; ; cout <<"sigma_fe.dof("<<i<<"))="<<sigma_fe.dof(i)<<endl; ; ar.archive_ex(sigma_fe.N(i), istr("sN", i).c_str()); } map<pair<int,int>,ex> A; pair<int,int> index; for (unsigned int i=0; i<sigma_fe.nbf(); i++) { index.first = i; for (unsigned int j=0; j<sigma_fe.nbf(); j++) { index.second = j; ex integrand = inner(sigma_fe.N(i), sigma_fe.N(j)); A[index] = tetrahedron.integrate(integrand); cout <<"A["<<i<<","<<j<<"]="<<A[index]<<endl; ar.archive_ex(A[index], istr("A", i,j).c_str()); } } ArnoldFalkWintherWeakSymU u_fe; u_fe.set_order(order); u_fe.set_polygon(tetrahedron); u_fe.compute_basis_functions(); for (unsigned int i=0; i<u_fe.nbf(); i++) { cout <<"u_fe.N("<<i<<")="<<u_fe.N(i)<<endl; ; ar.archive_ex(u_fe.N(i), istr("uN", i).c_str()); } map<pair<int,int>,ex> B; for (unsigned int i=0; i<sigma_fe.nbf(); i++) { index.first = i; for (unsigned int j=0; j<u_fe.nbf(); j++) { index.second = j; ex integrand = inner(div(sigma_fe.N(i)), u_fe.N(j)); B[index] = tetrahedron.integrate(integrand); cout <<"B["<<i<<","<<j<<"]="<<B[index]<<endl; } } ArnoldFalkWintherWeakSymP p_fe; p_fe.set_order(order); p_fe.set_polygon(tetrahedron); p_fe.compute_basis_functions(); for (unsigned int i=0; i<p_fe.nbf(); i++) { cout <<"p_fe.N("<<i<<")="<<p_fe.N(i)<<endl; ; ar.archive_ex(p_fe.N(i), istr("pN", i).c_str()); } /* ofstream vfile("arnoldfalkwinther.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("arnoldfalkwinther.gar.v", "arnoldfalkwinther.gar.r")) { cerr << "Failure!" << endl; return -1; } */ return 0; }