#include <cstdio>
#include <iostream>
#include <ctime>
#include <cmath>
#ifdef VTKFIG
#endif
#include "vtkfigFrame.h"
#include "vtkfigDataSet.h"
#include "vtkfigGridView.h"
#include "vtkfigScalarView.h"
{
{-2,0},
{0,0},
{2,0},
{2,2},
{0.5,2},
{0,1},
{-0.5,2},
{-2,2}
});
{0,1},
{1,2},
{2,3},
{3,4},
{4,5},
{5,6},
{6,7},
{7,0},
{5,1},
});
{-0.5,1},
{0.5,1}
});
double vol=0.001;
bcfac=0;
bcval=0;
bcval(4)=1.0;
bcval(1)=0.0;
source=0;
auto fkappa = [](double u, double &kappa,double &dkappa )
{
kappa=0.001+1000.0*u*u*u*u*u*u;
dkappa=6000.0*u*u*u*u*u;
};
Sol=0.0;
int iter=0;
double oldnorm=1.0;
double d=0.1;
double ddelta=1.2;
while (iter<100 && norm >1.0e-13)
{
printf("iter=%d norm=%8.4e contract=%8.5e\n", iter,norm,norm/oldnorm);
Sol=Sol-d*Upd;
iter++;
}
#ifdef VTKFIG
auto griddata=numcxx::vtkfigDataSet(grid);
griddata->SetPointScalar(Sol ,"Sol");
auto frame=vtkfig::Frame::New();
frame->SetSize(800,400);
frame->SetLayout(2,1);
auto gridview=vtkfig::GridView::New();
gridview->SetData(griddata);
frame->AddFigure(gridview,0);
auto solview=vtkfig::ScalarView::New();
solview->SetData(griddata,"Sol");
frame->AddFigure(solview,1);
frame->Interact();
#endif
}