DiFfRG#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
Overview
DiFfRG (Discretization Framework for functional Renormalization Group flows) is a C++20 scientific-computing library for solving fRG flow equations. It provides spatial and temporal discretization of quantum field theory systems, built on deal.II (FEM), Kokkos (GPU/CPU parallelization) and SUNDIALS (implicit solvers).
This is the reference for the C++ library. A simulation is assembled from a small number of components along a fixed pipeline:
The pipeline
Model → Discretization → Assembler → Timestepper → Output
- Entry point. Init initializes the runtime (Kokkos, and MPI if enabled) and hands back a ConfigurationHelper that parses the
parameter.jsonfile and command-line overrides. - Model. The physics is defined by deriving from the CRTP base def::AbstractModel, which fixes the mass, flux and source functions of the flow equations. Behaviour is composed from mixins: def::fRG (RG time / cutoff scale), def::LLFFlux (local Lax-Friedrichs numerical flux), def::FlowBoundaries (inflow/outflow boundaries) and def::AD (automatic-differentiation Jacobians). The degrees of freedom are declared with ComponentDescriptor / FEFunctionDescriptor and Scalar.
- Discretization. The field space is discretized with one of CG, DG, LDG or FV discretizations on a RectangularMesh.
- Assembler. An assembler implementing AbstractAssembler computes residuals and Jacobians from the model and discretization; the concrete variants are CG, DG, dDG, LDG and FV.
- Timestepper. A timestepper implementing AbstractTimestepper evolves the system in RG time. The recommended default is the differential-algebraic TimeStepperSUNDIALS_IDA; explicit (Euler, Runge-Kutta, Adams-Bashforth-Moulton) and further implicit (implicit Euler, TRBDF2) steppers are also provided. The solution is held in AbstractFlowingVariables (FE::FlowingVariables).
- Output. Results are written through DataOutput (CSV / HDF5 / VTK), and the mesh can be refined adaptively with HAdaptivity.
Momentum-space integration
Fully momentum-dependent flow equations are evaluated by integrators implementing AbstractIntegrator, such as Integrator_p2, which share quadrature rules through a QuadratureProvider. The corresponding kernels are generated from Mathematica (see the Mathematica reference and Tutorial 3 of the wider documentation site).
Getting started
For installation instructions and worked, end-to-end examples, see the Getting Started section and the Tutorials of the documentation site. Including the umbrella header #include <DiFfRG/DiFfRG.hh> pulls in the whole library.
Generated by