#include <cstdio>
#include <iostream>
#include <ctime>
#include <cmath>
#ifdef VTKFIG
#endif
#include "vtkfigFrame.h"
#include "vtkfigDataSet.h"
#include "vtkfigGridView.h"
#include "vtkfigScalarView.h"
{
double h=0.05;
double tau=0.01;
double theta=1.0;
double T=100.0;
bool lump=false;
{0,0},
{1,0},
{1,1},
{0,1},
{0.7,0.7},
});
{0,1},
{1,2},
{2,3},
{3,0}
});
{0.5,0.5}
});
double vol= h*h*0.25;
auto griddata=numcxx::vtkfigDataSet(grid);
auto frame=vtkfig::Frame::New();
frame->SetSize(1200,600);
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");
solview->SetValueRange(0,1);
frame->AddFigure(solview,1);
bcfac=0;
bcval=0;
bcval(3)=1.0;
bcval(1)=0.0;
kappa=1.0e-2;
source=0;
int N=T/tau;
Sol=0.0;
for (int n=0;n<N;n++)
{
OldSol=Sol;
fem2d::assemble_transient_heat_problem(grid,bcfac,bcval,source,kappa,tau,theta, lump, OldSol, SGlobal, Rhs);
if (theta>0.0 || !lump)
{
}
else
{
for (
int i=0;i<Sol.
size();i++)
Sol(i)=Rhs(i)/SGlobal(i,i);
}
#ifdef VTKFIG
frame->SetFrameTitle("Time="+std::to_string(tau*n));
griddata->SetPointScalar(Sol ,"Sol");
frame->Show();
#endif
}
frame->Interact();
}