I'm working with a problem where I have coupling between multiple triangulations. I have a super_grid called Super_Triangulation shown:
#include <deal.II/grid/tria.h>
#include <deal.II/grid/tria_accessor.h>
#include <deal.II/grid/tria_iterator.h>
#include <deal.II/grid/grid_generator.h>
#include <deal.II/grid/grid_out.h>
#include <iostream>
#include <fstream>
#include <cmath>
using namespace dealii;
void your_grid ()
{
Triangulation<2> tria;
std::vector< unsigned int > rep (2);
rep[0] = 8;
rep[1] = 4;
const Point<2> ini(-1,0);
const Point<2> end(+1,1);
GridGenerator::subdivided_hyper_rectangle (tria, rep, ini, end);
Triangulation<2>::active_cell_iterator
cell = tria.begin_active(),
endc = tria.end();
for (; cell!=endc; ++cell)
{
const Point<2> cell_center = cell->center();
const double x_component = cell_center(0);
if (std::fabs(x_component) < 0.25)
{
cell->set_refine_flag ();
}
}
tria.execute_coarsening_and_refinement ();
std::ofstream out ("your_grid.eps");
GridOut grid_out;
grid_out.write_eps (tria, out);
std::cout << "Grid written to your_grid.eps" << std::endl;
}
int main ()
{
your_grid ();
}
Dear Dr. Bangerth,
The run times are rather long because there is bad-scaling between the two subdomains resulting in a really stiff system of equations with long physical times to steady state. The systems are rather small, but have to solved many times, maybe hundreds of thousands of times, leading to simulation times that take days. I'm a little bit stuck, because at this scale it seems direct sovlers are the way to go.. but I'm not sure how to get more performance out of the solvers.
Since you have hanging nodes, do you apply hanging node constraints to
the displacement field you then put into MappingQEulerian?