NUMCXX  0.13.20181108
Numerical library for small projects and teaching purposes
Functions
41-stationary-heat-fv.cxx File Reference
+ Include dependency graph for 41-stationary-heat-fv.cxx:

Go to the source code of this file.

Functions

int main (void)
 

Function Documentation

int main ( void  )
Examples:
41-stationary-heat-fv.cxx.

Definition at line 24 of file 41-stationary-heat-fv.cxx.

25 {
26  numcxx::Geometry Geometry;
27  Geometry.set_points({
28  {-2,0},
29  {0,0},
30  {2,0},
31  {2,2},
32  {0.5,2},
33  {0,1},
34  {-0.5,2},
35  {-2,2}
36  });
37 
38  Geometry.set_bfaces({
39  {0,1},
40  {1,2},
41  {2,3},
42  {3,4},
43  {4,5},
44  {5,6},
45  {6,7},
46  {7,0},
47  {5,1},
48  });
49 
50 
51  Geometry.set_bfaceregions({1,1,2,3,4,4,3,2,5});
52 
53  Geometry.set_regionpoints({
54  {-0.5,1},
55  {0.5,1}
56  });
57  Geometry.set_regionnumbers({1,2});
58  Geometry.set_regionvolumes({0.1,0.1});
59 
60 
61 
62  numcxx::SimpleGrid grid(Geometry,"zpaAqDV");
63 
64 
65 
66  numcxx::DArray1 bcfac(6);
67  numcxx::DArray1 bcval(6);
68  bcfac=0;
69  bcval=0;
70  bcfac(4)=fvm2d::Dirichlet;
71  bcfac(1)=fvm2d::Dirichlet;
72  bcval(4)=1.0;
73  bcval(0)=0.0;
74 
75  auto nnodes=grid.npoints();
76 
77  numcxx::DArray1 source(nnodes);
78  numcxx::DArray1 kappa(nnodes);
79  kappa=1;
80  source=0;
81 
82  numcxx::DSparseMatrix SGlobal(nnodes,nnodes);
83  numcxx::DArray1 Rhs(nnodes);
84  numcxx::DArray1 Sol(nnodes);
85 
86  fvm2d::assemble_heat_problem(grid,bcfac,bcval,source,kappa,SGlobal, Rhs);
87  numcxx::DSolverUMFPACK Solver(SGlobal);
88 
89  Solver.update(SGlobal);
90  Solver.solve(Sol,Rhs);
91 
92 
93 #ifdef VTKFIG
94  auto griddata=numcxx::vtkfigDataSet(grid);
95  griddata->SetPointScalar(Sol ,"Sol");
96 
97  auto frame=vtkfig::Frame::New();
98  frame->SetSize(800,400);
99  frame->SetLayout(2,1);
100 
101  auto gridview=vtkfig::GridView::New();
102  gridview->SetData(griddata);
103  frame->AddFigure(gridview,0);
104 
105  auto solview=vtkfig::ScalarView::New();
106  solview->SetData(griddata,"Sol");
107  frame->AddFigure(solview,1);
108 
109 
110 
111  frame->Interact();
112 #endif
113 }
Class collecting data for the description of piecewise linear geometries.
Definition: geometry.hxx:17
Sparse matrix class using CRS storage scheme.
void set_regionpoints(const std::initializer_list< std::initializer_list< double >> &il)
Set member via intializer list.
Definition: geometry.hxx:32
void set_regionvolumes(const std::initializer_list< double > &il)
Set member via intializer list.
Definition: geometry.hxx:38
void set_points(const std::initializer_list< std::initializer_list< double >> &il)
Set member via intializer list.
Definition: geometry.hxx:23
void set_regionnumbers(const std::initializer_list< int > &il)
Set member via intializer list.
Definition: geometry.hxx:35
void assemble_heat_problem(const numcxx::SimpleGrid &Grid, const numcxx::DArray1 &BCfac, const numcxx::DArray1 &BCval, const numcxx::DArray1 &Source, const numcxx::DArray1 &Kappa, numcxx::DSparseMatrix &SGlobal, numcxx::DArray1 &Rhs)
Definition: fvm2d.cxx:158
void set_bfaces(const std::initializer_list< std::initializer_list< int >> &il)
Set member via intializer list.
Definition: geometry.hxx:26
void set_bfaceregions(const std::initializer_list< int > &il)
Set member via intializer list.
Definition: geometry.hxx:29
One dimensional array class.
Definition: tarray1.hxx:31
Class containing data for simple grid data structure.
Definition: simplegrid.hxx:19
Bridge class for using umfpack as solver for vmatrix.
const double Dirichlet
BC value marking Dirichlet boundary condition.
Definition: fvm2d.hxx:13

+ Here is the call graph for this function: