tk::grm namespace

Toolkit general purpose grammar definition.

Contents

Classes

template<class rule, class... actions>
struct act
Rule used to trigger action(s) for a rule.
template<typename Rule>
struct action
template<class rule, class... actions>
struct action<act<rule, actions...>>
template<>
struct action<add_depvar>
Add depvar (dependent variable) to the selected ones.
template<>
struct action<check_amr_errors>
template<class eq, class param, class... xparam>
struct action<check_betapdfs<eq, param, xparam...>>
template<>
struct action<check_binsizes>
Check if the number of binsizes equal the PDF sample space variables.
template<class eq>
struct action<check_compflow<eq>>
Set defaults and do error checking on the compressible flow equation block.
template<typename eq, typename coupledeq>
struct action<check_coupling<eq, coupledeq>>
Put in coupled eq depvar as '-' if no coupling is given.
template<class eq, class param, class... xparam>
struct action<check_dirichletpdf<eq, param, xparam...>>
template<>
struct action<check_dissipation>
Do error checking on the dissipation eq block and compute coupling.
template<class eq>
struct action<check_eq<eq>>
Do general error checking on the differential equation block.
template<>
struct action<check_expectation>
Check if there is at least one variable in expectation.
template<>
struct action<check_extents>
Check if the number of extents equal 2 * the PDF sample space variables.
template<class eq, class param, class... xparam>
struct action<check_gammapdfs<eq, param, xparam...>>
template<class eq, class param, class... xparam>
struct action<check_gaussians<eq, param, xparam...>>
template<>
struct action<check_inciter>
Do error checking on the inciter block.
template<class eq>
struct action<check_init<eq>>
Do error checking on the selected initialization policy.
template<class keyword, typename tag, typename... tags>
struct action<check_lower_bound<keyword, tag, tags...>>
Check if value is larger than lower bound.
template<class eq, class vec>
struct action<check_mean_gradient<eq, vec>>
Do error checking for a vector of prescribed mean gradient.
template<>
struct action<check_mixdirichlet>
Error checks for the mixdirichlet sde.
template<>
struct action<check_mixmassfracbeta>
Do error checking on a mass fraction eq block.
template<class eq>
struct action<check_multimat<eq>>
Set defaults and do error checking on the multimaterial compressible flow equation block.
template<>
struct action<check_position>
Do error checking on the position eq block and compute coupling.
template<>
struct action<check_pref_errors>
Do error checking for the pref...end block.
template<>
struct action<check_samples>
Check if there is at least one sample space variable in PDF.
template<class eq, class param, class... xparam>
struct action<check_spikes<eq, param, xparam...>>
template<template<class> class use, class Option, typename sel, typename vec, typename... tags>
struct action<check_store_option<use, Option, sel, vec, tags...>>
Put option in state at position given by tags if among the selected.
template<class eq>
struct action<check_transport<eq>>
Set defaults and do error checking on the transport equation block.
template<class keyword, typename tag, typename... tags>
struct action<check_upper_bound<keyword, tag, tags...>>
Check if value is lower than upper bound.
template<class eq, class param, class... xparam>
struct action<check_vector<eq, param, xparam...>>
Check parameter vector.
template<class eq, class vec, MsgKey Key>
struct action<check_vector_exists<eq, vec, Key>>
Check the existence of a vector (required for a block)
template<class eq, class vec>
struct action<check_vector_size<eq, vec>>
Do error checking of a vector (required for a block)
template<>
struct action<check_velocity>
Do error checking on the velocity eq block.
template<>
struct action<compute_refvar_idx>
template<>
struct action<dissipation_defaults>
Set defaults for all Lagrangian particle dissipation models.
template<>
struct action<enable_amr>
Enable adaptive mesh refinement (AMR)
template<>
struct action<helpkw>
Find keyword among all keywords and if found, store the keyword and its info on which help was requested behind tag::helpkw in Stack.
template<typename field, typename sel, typename vec, typename tag, typename... tags>
struct action<Insert_field<field, sel, vec, tag, tags...>>
Convert and insert value to map at position given by tags.
template<template<class> class use, class Option, typename field, typename sel, typename vec, typename tag, typename... tags>
struct action<insert_option<use, Option, field, sel, vec, tag, tags...>>
Convert and insert option value to map at position given by tags.
template<template<class> class use, class Option, typename field, typename sel, typename vec, typename tag, typename... tags>
struct action<insert_seq<use, Option, field, sel, vec, tag, tags...>>
Convert and insert RNGSSE sequence option value to map at position given by tags.
template<typename... tags>
struct action<Invert_switch<tags...>>
template<class push>
struct action<match_depvar<push>>
Match depvar (dependent variable) to one of the selected ones.
template<>
struct action<match_pdfname>
Match PDF name to the registered ones.
template<MsgType type, MsgKey key>
struct action<msg<type, key>>
template<>
struct action<position_defaults>
Set defaults for all Lagrangian particle position models.
template<>
struct action<push_binsize>
Push matched value into vector of vector binsizes.
template<>
struct action<push_extents>
Push matched value into vector of PDF extents.
template<tk::ctr::Moment m>
struct action<push_sample<m>>
Add matched value as Term into vector of vector of PDFs.
template<tk::ctr::Moment m, char var>
struct action<push_term<m, var>>
Add matched value as Term into vector of vector of statistics.
template<class eq>
struct action<register_eq<eq>>
Register differential equation after parsing its block.
template<class eq>
struct action<register_inciter_eq<eq>>
Register differential equation after parsing its block.
template<>
struct action<save_field>
Save field ID to parser's state so push_term can pick it up.
template<typename tag, typename... tags>
struct action<Set<tag, tags...>>
template<class tag, class... tags>
struct action<start_vector<tag, tags...>>
Start new vector in vector.
template<class tag, class... tags>
struct action<start_vector_back<tag, tags...>>
Start new vector in back of a vector.
template<typename tag, typename... tags>
struct action<Store<tag, tags...>>
template<typename tag, typename... tags>
struct action<Store_back<tag, tags...>>
template<typename tag, typename... tags>
struct action<Store_back_back<tag, tags...>>
Convert and push back value to vector of back of vector in state at position given by tags.
template<typename tag, typename... tags>
struct action<Store_back_back_back<tag, tags...>>
Convert and push back value to vector of back of vector of back of vector in state at position given by tags.
template<template<class> class use, class Option, typename tag, typename... tags>
struct action<store_back_back_option<use, Option, tag, tags...>>
Push back option to vector of back of vector in state at position given by tags.
template<template<class> class use, class Option, typename tag, typename... tags>
struct action<store_back_option<use, Option, tag, tags...>>
template<class Option, typename... tags>
struct action<store_inciter_option<Option, tags...>>
Put option in state at position given by tags.
template<class prec>
struct action<store_precision<prec>>
Set numeric precision for ASCII output of floating-point values.
template<class Option, typename... tags>
struct action<store_rngtest_option<Option, tags...>>
Put option in state at position given by tags.
template<class Option, typename... tags>
struct action<store_walker_option<Option, tags...>>
Put option in state at position given by tags.
template<>
struct action<velocity_defaults>
Set defaults for the velocity model.
struct add_depvar
Rule used to trigger action.
template<class keyword>
struct alias
template<class endkeyword, typename... tokens>
struct block
Plow through 'tokens' until 'endkeyword'.
template<typename... As>
struct call
Helper for calling action::apply for multiple actions.
struct charmarg
Process but ignore Charm++'s charmrun arguments starting with '+'.
struct check_amr_errors
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_betapdfs
Rule used to trigger action.
struct check_binsizes
Rule used to trigger action.
template<class eq>
struct check_compflow
Rule used to trigger action.
template<typename eq, typename coupledeq>
struct check_coupling
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_dirichletpdf
Rule used to trigger action.
struct check_dissipation
Rule used to trigger action.
template<class eq>
struct check_eq
Rule used to trigger action.
struct check_expectation
Rule used to trigger action.
struct check_extents
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_gammapdfs
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_gaussians
Rule used to trigger action.
struct check_inciter
Rule used to trigger action.
template<class eq>
struct check_init
Rule used to trigger action.
template<class keyword, typename tag, typename... tags>
struct check_lower_bound
Rule used to trigger action.
template<class eq, class vec>
struct check_mean_gradient
Rule used to trigger action.
struct check_mixdirichlet
Rule used to trigger action.
struct check_mixmassfracbeta
Rule used to trigger action.
template<class eq>
struct check_multimat
Rule used to trigger action.
struct check_position
Rule used to trigger action.
struct check_pref_errors
Rule used to trigger action.
struct check_samples
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_spikes
Rule used to trigger action.
template<template<class> class use, class Option, typename sel, typename vec, typename... tags>
struct check_store_option
Rule used to trigger action.
template<class eq>
struct check_transport
Rule used to trigger action.
template<class keyword, typename tag, typename... tags>
struct check_upper_bound
Rule used to trigger action.
template<class eq, class param, class... xparam>
struct check_vector
Rule used to trigger action.
template<class eq, class vec, MsgKey key>
struct check_vector_exists
Rule used to trigger action.
template<class eq, class vec>
struct check_vector_size
Rule used to trigger action.
struct check_velocity
Rule used to trigger action.
struct comment
Parse comment: start with '#' until eol.
struct compute_refvar_idx
Rule used to trigger action.
struct dissipation_defaults
Rule used to trigger action.
struct enable_amr
Rule used to trigger action.
template<typename var>
struct fieldvar
Match fieldvar: a character, denoting a variable, optionally followed by a digit.
struct helpkw
Rule used to trigger action.
struct ignore
Ignore comments and empty lines.
template<typename field, typename sel, typename vec, typename tag, typename... tags>
struct Insert_field
Rule used to trigger action.
template<template<class> class use, class Option, typename field, typename sel, typename vec, typename tag, typename... tags>
struct insert_option
Rule used to trigger action.
template<template<class> class use, class Option, typename field, typename sel, typename vec, typename tag, typename... tags>
struct insert_seq
Rule used to trigger action.
template<typename... tags>
struct Invert_switch
Rule used to trigger action.
template<template<class> class use>
struct is_keyword
template<typename push>
struct match_depvar
Rule used to trigger action.
struct match_pdfname
Rule used to trigger action.
template<MsgType, MsgKey>
struct msg
Rule used to trigger action.
struct number
Parse a number: an optional sign followed by digits.
struct position_defaults
Rule used to trigger action.
template<class keyword, class insert, class kw_type = pegtl::digit>
struct process
Process 'keyword' and call its 'insert' action if matches 'kw_type'.
template<template<class> class use, class keyword, class insert, class kw_type, class tag, class... tags>
struct process_cmd
Process command line 'keyword' and call its 'insert' action if matches 'kw_type'.
template<template<class> class use, class keyword, typename tag, typename... tags>
struct process_cmd_switch
struct push_binsize
Rule used to trigger action.
struct push_extents
Rule used to trigger action.
template<tk::ctr::Moment m>
struct push_sample
Rule used to trigger action.
template<typename tk::ctr::Moment, char var = '\0'>
struct push_term
Rule used to trigger action.
template<class insert, char lbound = '"', char rbound = '"'>
struct quoted
Scan string between characters 'lbound' and 'rbound' and if matches apply action 'insert'.
template<typename keywords, typename... ign>
struct read_file
Generic file parser entry point: parse 'keywords' and 'ignore' until end of file.
template<typename keywords>
struct read_string
Generic string parser entry point: parse 'keywords' until end of string.
template<class keyword, typename = void>
struct readcmd
template<class keyword>
struct readcmd<keyword, typename if_<false, typename keyword::info::alias>::type>
template<class token>
struct readkw
Read keyword 'token' padded by blank at left and space at right.
template<class eq>
struct register_eq
Rule used to trigger action.
template<class eq>
struct register_inciter_eq
Rule used to trigger action.
template<template<class> class use, typename keyword, typename option, typename field, typename sel, typename vec, typename... tags>
struct rng_option
template<class c, tk::ctr::Moment m>
struct sample_space_var
sample space variable: fieldvar matched to selected depvars
struct samples
Match samples: sample space variables optionally separated by fillers.
struct save_field
Rule used to trigger action.
template<class keyword, class... actions>
struct scan
Scan input padded by blank at left and space at right and if it matches 'keywords', apply 'actions'.
template<class keywords, class action, class end = pegtl::space>
struct scan_until
Scan input padded by blank at left and space at right and if it matches 'keywords', apply 'action'.
template<typename tag, typename... tags>
struct Set
Rule used to trigger action.
template<typename tag, typename... tags>
struct start_vector
Rule used to trigger action.
template<typename tag, typename... tags>
struct start_vector_back
Rule used to trigger action.
template<typename tag, typename... tags>
struct Store
Rule used to trigger action.
template<typename tag, typename... tags>
struct Store_back
Rule used to trigger action.
template<typename tag, typename... tags>
struct Store_back_back
Rule used to trigger action.
template<typename tag, typename... tags>
struct Store_back_back_back
Rule used to trigger action.
template<template<class> class use, class Option, typename tag, typename... tags>
struct store_back_back_option
Rule used to trigger action.
template<template<class> class use, class Option, typename tag, typename... tags>
struct store_back_option
Rule used to trigger action.
template<class Option, typename... tags>
struct store_inciter_option
Rule used to trigger action.
template<typename prec>
struct store_precision
Rule used to trigger action.
template<class Option, typename... tags>
struct store_rngtest_option
Rule used to trigger action.
template<class Option, typename... tags>
struct store_walker_option
Rule used to trigger action.
struct term
Match term: upper or lowercase fieldvar matched to selected depvars for stats.
template<class token, class erased>
struct trim
Read 'token' until 'erased' trimming, i.e., not consuming, 'erased'.
template<MsgType type, MsgKey key>
struct unknown
Match unknown keyword and handle error.
template<class key, class insert, class endkeyword, class starter, class value = number>
struct vector
struct velocity_defaults
Rule used to trigger action.
template<class keyword>
struct verbose

Enums

enum MsgType { ERROR =0, WARNING }
C-style enum indicating warning or error (used as template argument)
enum class MsgKey: uint8_t { KEYWORD, MOMENT, QUOTED, LIST, ALIAS, MISSING, PREMATURE, UNSUPPORTED, NOOPTION, NOINIT, NOPROBLEM, NOCOEFF, NOTSELECTED, EXISTS, NODEPVAR, NOSOLVE, NOSUCHDEPVAR, NOSUCHCOMPONENT, POSITIVECOMPONENT, NOTALPHA, NOTERMS, ODDSPIKES, HEIGHTSPIKES, NODELTA, NOBETA, NOGAMMA, NOMEAN, NOCOV, NOMKLRNG, WRONGBETAPDF, WRONGGAMMAPDF, WRONGGAUSSIAN, WRONGDIRICHLET, NEGATIVEPARAM, NONCOMP, NONMAT, EOSGAMMA, EOSCV, EOSPSTIFF, NORNG, NODT, MULDT, NOSAMPLES, INVALIDSAMPLESPACE, MALFORMEDSAMPLE, INVALIDBINSIZE, INVALIDEXTENT, EXTENTLOWER, NOBINS, ZEROBINSIZE, MAXSAMPLES, MAXBINSIZES, MAXEXTENTS, BINSIZES, PDF, PDFEXISTS, BADPRECISION, BOUNDS, PRECISIONBOUNDS, UNFINISHED, VORTICAL_UNFINISHED, ENERGY_UNFINISHED, RT_UNFINISHED, BC_EMPTY, WRONGSIZE, HYDROTIMESCALES, HYDROPRODUCTIONS, POSITION_DEPVAR, VELOCITY_DEPVAR, DISSIPATION_DEPVAR, MIXMASSFRACBETA_DEPVAR, POSITION_MISSING, VELOCITY_MISSING, DISSIPATION_MISSING, MIXDIR_RHO, T0REFODD, T0REFNOOP, DTREFNOOP, PREFTOL, CHARMARG, OPTIONAL }
Parser error types.

Functions

template<class Stack, MsgType type, MsgKey key, class Input>
static void Message(Stack& stack, const Input& in)
template<class Stack, template<class> class use, class Option, class DefaultStack, class Input, class... tags>
static void store_option(Stack& stack, const Input& in, const DefaultStack& defaults)
Put option (i.e., a tk::Toggle) in grammar state (or stack) at a position given by tags.
template<typename eq, typename coupledeq, typename id, MsgKey depvar_msg, typename Input, typename Stack>
static void couple(const Input& in, Stack& stack, MsgKey missing)

Variables

Print g_print
static ncomp_t field
Out-of-struct storage of field ID for pushing terms for statistics.
static std::set<char, tk::ctr::CaseInsensitiveCharLess> depvars
Parser-lifetime storage for dependent variables selected.
static std::set<std::string> pdfnames
Parser-lifetime storage for PDF names.
static const std::map<MsgKey, std::string> message
Associate parser errors to error messages.

Enum documentation

enum class tk::grm::MsgKey: uint8_t

Parser error types.

Enumerators
KEYWORD

Unknown keyword.

MOMENT

Unknown Term in a Moment.

QUOTED

String must be double-quoted.

LIST

Unknown value in list.

ALIAS

Alias keyword too long.

MISSING

Required field missing.

PREMATURE

Premature end of line.

UNSUPPORTED

Option not supported.

NOOPTION

Option does not exist.

NOINIT

No (or too many) initialization policy selected.

NOPROBLEM

No test problem type selected.

NOCOEFF

No coefficients policy selected.

NOTSELECTED

Option not selected upstream.

EXISTS

Variable already used.

NODEPVAR

Dependent variable has not been specified.

NOSOLVE

Dependent variable to solve for has not been spec'd.

NOSUCHDEPVAR

Dependent variable has not been previously selected.

NOSUCHCOMPONENT

No such scalar component.

POSITIVECOMPONENT

Scalar component must be positive.

NOTALPHA

Variable must be alphanumeric.

NOTERMS

Statistic need a variable.

ODDSPIKES

Incomplete spikes block.

HEIGHTSPIKES

Height-sum of spikes does not add up to unity.

NODELTA

No icdelta...end block when initpolicy = jointdelta.

NOBETA

No icbeta...end block when initpolicy = jointbeta.

NOGAMMA

No icgamma...end block when initpolicy = jointgamma.

NOMEAN

No mean when initpolicy = jointcorrgaussian.

NOCOV

No cov when initpolicy = jointcorrgaussian.

NOMKLRNG

No MKL RNG configured.

WRONGBETAPDF

Wrong number of parameters for a beta pdf.

WRONGGAMMAPDF

Wrong number of parameters for a gamma pdf.

WRONGGAUSSIAN

Wrong number of parameters for a Gaussian PDF.

WRONGDIRICHLET

Wrong number of parameters for a Dirichlet PDF.

NEGATIVEPARAM

Negative parameter given configuring a PDF.

NONCOMP

No number of components selected.

NONMAT

No number of materials selected.

EOSGAMMA

Wrong number of EOS gamma parameters.

EOSCV

Wrong number of EOS cv parameters.

EOSPSTIFF

Wrong number of EOS pstiff parameters.

NORNG

No RNG selected.

NODT

No time-step-size policy selected.

MULDT

Multiple time-step-size policies selected.

NOSAMPLES

PDF need a variable.

INVALIDSAMPLESPACE

PDF sample space specification incorrect.

MALFORMEDSAMPLE

PDF sample space variable specification incorrect.

INVALIDBINSIZE

PDF sample space bin size specification incorrect.

INVALIDEXTENT

PDF sample space extent specification incorrect.

EXTENTLOWER

PDF sample space extents in non-increasing order.

NOBINS

PDF sample space bin size required.

ZEROBINSIZE

PDF sample space bin size incorrect.

MAXSAMPLES

PDF sample space dimension too large.

MAXBINSIZES

PDF sample space bin sizes too many.

MAXEXTENTS

PDF sample space extent-pairs too many.

BINSIZES

PDF sample space vars unequal to number of bins.

PDF

PDF specification syntax error.

PDFEXISTS

PDF identifier already defined.

BADPRECISION

Floating point precision specification incorrect.

BOUNDS

Specified value out of bounds.

PRECISIONBOUNDS

Floating point precision spec out of bounds.

UNFINISHED

Unfinished block.

VORTICAL_UNFINISHED

Vortical flow problem configuration unfinished.

ENERGY_UNFINISHED

Nonlinear energy growth problem config unfinished.

RT_UNFINISHED

Reyleigh-Taylor unstable configuration unfinished.

BC_EMPTY

Empty boundary condition block.

WRONGSIZE

Size of parameter vector incorrect.

HYDROTIMESCALES

Missing required hydrotimescales vector.

HYDROPRODUCTIONS

Missing required hydroproductions vector.

POSITION_DEPVAR

Missing required position model dependent variable.

VELOCITY_DEPVAR

Missing required velocity model dependent variable.

DISSIPATION_DEPVAR

Missing required dissipation model dependent var.

MIXMASSFRACBETA_DEPVAR

Missing required mass fraction model dependent var.

POSITION_MISSING

Missing required position model.

VELOCITY_MISSING

Missing required velocity model.

DISSIPATION_MISSING

Missing required dissipation model.

MIXDIR_RHO

MixDirichlet parameter vector rho inconsistent.

T0REFODD

AMR initref vector size is odd (must be even)

T0REFNOOP

AMR t<0 refinement will be no-op.

DTREFNOOP

AMR t>0 refinement will be no-op.

PREFTOL

p-refinement tolerance out of bounds

CHARMARG

Argument inteded for the Charm++ runtime system.

OPTIONAL

Function documentation

template<class Stack, MsgType type, MsgKey key, class Input>
static void tk::grm::Message(Stack& stack, const Input& in)

Parameters
stack in/out Grammar stack (a tagged tuple) to operate on
in in Last parsed PEGTL input token (can be empty, depending on what context this function gets called.

Parser error and warning message handler.

This function is used to associated and dispatch an error or a warning during parsing. After finding the error message corresponding to a key, it pushes back the message to a std::vector of std::string, which then will be diagnosed later by tk::FileParser::diagnostics. The template arguments define (1) the grammar stack (Stack, a tagged tuple) to operate on, (2) the message type (error or warning), and (3) the message key used to look up the error message associated with the key.

template<class Stack, template<class> class use, class Option, class DefaultStack, class Input, class... tags>
static void tk::grm::store_option(Stack& stack, const Input& in, const DefaultStack& defaults)

Put option (i.e., a tk::Toggle) in grammar state (or stack) at a position given by tags.

Parameters
stack in/out Grammar stack (a tagged tuple) to operate on
in in Last parsed PEGTL input token
defaults in Reference to a copy of the full grammar stack at the initial state, i.e., containing the defaults for all of its fields. This is used to detect if the user wants to overwrite an option value that has already been set differently from the default

This function is used to store an option (an object deriving from tk::Toggle) into the grammar stack. See walker::ctr::DiffEq for an example specialization of tk::Toggle to see how an option is created from tk::Toggle.) The grammar stack is a hiearchical tagged tuple and the variadic list of template arguments, tags..., are used to specify a series tags (empty structs, see Control/Tags.h) addressing a particular field of the tagged tuple, i.e., one tag for every additional depth level.

template<typename eq, typename coupledeq, typename id, MsgKey depvar_msg, typename Input, typename Stack>
static void tk::grm::couple(const Input& in, Stack& stack, MsgKey missing)

Template parameters
eq Tag of equation to be coupled
coupledeq Tag of equation coupled to eq
id Tag to vector to hold (relative) system ids of DiffEqs coupled to eq among other DiffEqs of type coupledeq
depvar_msg Error message key to use on missing coupled depvar
Input
Stack
Parameters
in in Parser input
stack in/out Grammar stack to wrok with
missing in Error message key to use on missing coupled equation if the coupling is required. Pass MsgKey::OPTIONAL as missing if the coupling is optional.

Setup coupling between two equations This function computes and assigns the relative system id of a an equation coupled to another equation. The two equations being coupled are given by the two template arguments 'eq' and 'coupledeq'. The goal is to compute the id of the coupled eq that identifies it among potentially multiple coupled equations. Ths id is simply an integer which is a relative index, starting from zero, and uniquely identifies the equation system coupled to eq. As a result, when eq is instantiated, this id can be used to query any detail of the user configuration for the coupledeq equation coupled to eq.

Variable documentation

Print tk::grm::g_print

Parser's printer: this should be defined once per library in global-scope (still in namespace, of course) by a parser. It is defined in Control/[executable]/CmdLine/Parser.C, since every executable has at least a command line parser.

static std::set<char, tk::ctr::CaseInsensitiveCharLess> tk::grm::depvars

Parser-lifetime storage for dependent variables selected.

Used to track the dependent variable of differential equations (i.e., models) assigned during parsing. It needs to be case insensitive since we only care about whether the variable is selected or not and not whether it denotes a full variable (upper case) or a fluctuation (lower case). This is true for both inserting variables into the set as well as at matching terms of products in parsing requested statistics.

static std::set<std::string> tk::grm::pdfnames

Parser-lifetime storage for PDF names.

Used to track the names registered so that parsing new ones can be required to be unique.