⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 assembly_tester.cpp

📁 利用C
💻 CPP
字号:
#include "assembly_tester.h"using namespace dolfin;void dolfin::assembly_tester(Mesh& mesh, Form& a, std::string name, int n_reasm){  std::string* backends = new std::string[4];  backends[0] = "uBLAS";  backends[1] = "PETSc";  backends[2] = "Epetra";  backends[3] = "Assembly";  for (int j = 0; j < 4; ++j){    ufc::finite_element* finite_element =       a.form().create_finite_element(0);    //printf("Element: %s\n",finite_element->signature() );    delete finite_element;        dolfin_set("linear algebra backend", backends[j].c_str());    Matrix A;    Assembler ass(mesh);    std::string backend = dolfin_get("linear algebra backend");    printf("Test: %s with backend: %s\n",name.c_str(), backend.c_str());        tic();    ass.assemble(A,a);    real t = toc();        Array<uint> cols;    Array<real> vals;     uint nnz = 0;    for (uint i = 0; i < A.size(0); ++i){      A.getrow(i, cols, vals);      nnz += cols.size();           }        //  printf("Size: %d x %d\n",A.size(0), A.size(1));    printf("Nonzeros: %d\n",nnz);        printf("\tFull assembly: %f seconds\n",t);    printf("\tRate: %g (non-zero matrix elements per second)\n\n",nnz/t);        /*for(int i = 0; i<n_reasm; i++)      {      tic();      ass.assemble(A,a,false);      t = toc();      printf("\tReassembly: %f seconds\t rate: %g\n",t, nnz/t);      }    */    //  printf("\n");  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -