/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/common/assembly_schedule.hh File Reference#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/common/assembly_schedule.hh File Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
assembly_schedule.hh File Reference
#include <deal.II/base/multithread_info.h>
#include <deal.II/distributed/tria_base.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/grid/filtered_iterator.h>
#include <deal.II/grid/tria.h>
#include <DiFfRG/common/config_tree.hh>
#include <DiFfRG/common/threads.hh>
#include <DiFfRG/common/types.hh>
#include <algorithm>
#include <cmath>
#include <optional>

Go to the source code of this file.

Classes

struct  DiFfRG::AssemblySchedule
 The two trailing arguments of dealii::MeshWorker::mesh_loop. More...
 
struct  DiFfRG::AssemblyScheduleOverrides
 Overrides, if really wanted by the user: /discretization/{mesh_workers,batch_size}. More...
 

Namespaces

namespace  DiFfRG
 
namespace  DiFfRG::assembly_cost
 Representative per-cell costs, in nanoseconds, for the loops DiFfRG assembles.
 
namespace  DiFfRG::assembly_schedule_defaults
 

Functions

AssemblySchedule DiFfRG::make_assembly_schedule (const uint n_local_cells, const uint thread_budget, const double cost_ns, const AssemblyScheduleOverrides &overrides={})
 Derive one mesh_loop schedule from the cost of a cell.
 
template<int dim>
auto DiFfRG::locally_owned_cells (const dealii::DoFHandler< dim > &dof_handler)
 The cells this rank assembles.
 
template<typename Discretization >
uint DiFfRG::n_locally_owned_cells (const Discretization &discretization)
 How many cells locally_owned_cells() yields.
 

Variables

constexpr double DiFfRG::assembly_cost::local_fe = 250.
 Local FE work only: mass matrices, refinement indicators. ~0.2-0.3 us/cell for CG p=3.
 
constexpr double DiFfRG::assembly_cost::algebraic = 1000.
 Algebraic couplings without momentum quadrature, e.g. LDG's level-to-level transfers.
 
constexpr double DiFfRG::assembly_cost::momentum_integral = 3000.
 
constexpr double DiFfRG::assembly_schedule_defaults::chunk_work_ns = 8.0e3
 
constexpr double DiFfRG::assembly_schedule_defaults::worker_work_ns = 64.0e3
 
constexpr uint DiFfRG::assembly_schedule_defaults::chunk_cap = 256