77 auto nnodes=grid.npoints();
82 auto fkappa = [](
double u,
double &kappa,
double &dkappa )
84 kappa=0.001+1000.0*u*u*u*u*u*u;
85 dkappa=6000.0*u*u*u*u*u;
109 while (iter<100 && norm >1.0e-13)
112 Solver.update(SGlobal);
113 Solver.solve(Upd,Res);
116 printf(
"iter=%d norm=%8.4e contract=%8.5e\n", iter,norm,norm/oldnorm);
125 auto griddata=numcxx::vtkfigDataSet(grid);
126 griddata->SetPointScalar(Sol ,
"Sol");
128 auto frame=vtkfig::Frame::New();
129 frame->SetSize(800,400);
130 frame->SetLayout(2,1);
132 auto gridview=vtkfig::GridView::New();
133 gridview->SetData(griddata);
134 frame->AddFigure(gridview,0);
136 auto solview=vtkfig::ScalarView::New();
137 solview->SetData(griddata,
"Sol");
138 frame->AddFigure(solview,1);
void initialize_bc(numcxx::SimpleGrid &grid, numcxx::DArray1 &g, numcxx::DArray1 &Sol)
Class collecting data for the description of piecewise linear geometries.
Sparse matrix class using CRS storage scheme.
void set_regionpoints(const std::initializer_list< std::initializer_list< double >> &il)
Set member via intializer list.
void set_regionvolumes(const std::initializer_list< double > &il)
Set member via intializer list.
A::value_type norm2(const A &a)
Euklidean norm of array or expression.
A::value_type min(const A &a)
Minimum of of array or expression.
void assemble_and_apply_nonlinear_heat(const numcxx::SimpleGrid &grid, const numcxx::DArray1 &bcfac, const numcxx::DArray1 &bcval, const numcxx::DArray1 &source, std::function< void(const double, double &, double &)> fkappa, numcxx::DSparseMatrix &SGlobal, numcxx::DArray1 &Sol, numcxx::DArray1 &Rhs)
void set_points(const std::initializer_list< std::initializer_list< double >> &il)
Set member via intializer list.
void set_regionnumbers(const std::initializer_list< int > &il)
Set member via intializer list.
void set_bfaces(const std::initializer_list< std::initializer_list< int >> &il)
Set member via intializer list.
void set_bfaceregions(const std::initializer_list< int > &il)
Set member via intializer list.
One dimensional array class.
Class containing data for simple grid data structure.
Bridge class for using umfpack as solver for vmatrix.
A::value_type norm(const A &a)
Euklidean norm of array or expression.
const double Dirichlet
BC value marking Dirichlet boundary condition.