Nektar++
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Nektar::SolverUtils::SessionFunction Class Reference

#include <SessionFunction.h>

Public Member Functions

SOLVER_UTILS_EXPORT SessionFunction (const LibUtilities::SessionReaderSharedPtr &session, const MultiRegions::ExpListSharedPtr &field, std::string functionName, bool toCache=false)
 Representation of a FUNCTION defined in the session xml file. More...
 
SOLVER_UTILS_EXPORT void Evaluate (Array< OneD, Array< OneD, NekDouble >> &pArray, const NekDouble pTime=0.0, const int domain=0)
 Evaluates a function defined in the xml session file at each quadrature point. More...
 
SOLVER_UTILS_EXPORT void Evaluate (std::vector< std::string > pFieldNames, Array< OneD, Array< OneD, NekDouble >> &pArray, const NekDouble &pTime=0.0, const int domain=0)
 Evaluates a function defined in the xml session file at each quadrature point. More...
 
SOLVER_UTILS_EXPORT void Evaluate (std::vector< std::string > pFieldNames, Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &pTime=0.0, const int domain=0)
 Evaluates a function defined in the xml session file at each quadrature point. More...
 
SOLVER_UTILS_EXPORT void Evaluate (std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
 
SOLVER_UTILS_EXPORT std::string Describe (std::string pFieldName, const int domain=0)
 Provide a description of a function for a given field name. More...
 
SOLVER_UTILS_EXPORT const LibUtilities::SessionReaderSharedPtrGetSession ()
 
SOLVER_UTILS_EXPORT const MultiRegions::ExpListSharedPtrGetExpansion ()
 

Private Member Functions

SOLVER_UTILS_EXPORT void EvaluateExp (std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
 
SOLVER_UTILS_EXPORT void EvaluateFld (std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
 
SOLVER_UTILS_EXPORT void EvaluatePts (std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
 Evaluates a function from pts file. More...
 
SOLVER_UTILS_EXPORT void PrintProgressbar (const int position, const int goal) const
 

Private Attributes

LibUtilities::SessionReaderSharedPtr m_session
 The session reader. More...
 
MultiRegions::ExpListSharedPtr m_field
 The expansion we want to evaluate this function for. More...
 
std::string m_name
 
bool m_toCache
 Store resulting arrays (and interpolators) More...
 
std::map< std::pair< std::string, int >, NekDoublem_lastCached
 Last time the cache for this variable & domain combo was updated. More...
 
std::map< std::string, FieldUtils::Interpolatorm_interpolators
 Interpolator for pts file input for a variable & domain combination. More...
 
std::map< std::pair< std::string, int >, Array< OneD, NekDouble > > m_arrays
 Cached result arrays. More...
 

Detailed Description

Definition at line 60 of file SessionFunction.h.

Constructor & Destructor Documentation

◆ SessionFunction()

Nektar::SolverUtils::SessionFunction::SessionFunction ( const LibUtilities::SessionReaderSharedPtr session,
const MultiRegions::ExpListSharedPtr field,
std::string  functionName,
bool  toCache = false 
)

Representation of a FUNCTION defined in the session xml file.

Representation of a FUNCTION defined in the session xml file.

Parameters
sessionThe session where the function was defined.
fieldThe field the function is defined on.
functionNameThe name of the function.
toCacheStore the evaluated function for later use.

Definition at line 58 of file SessionFunction.cpp.

62  : m_session(session), m_field(field), m_name(functionName),
63  m_toCache(toCache)
64 {
65  ASSERTL0(m_session->DefinesFunction(m_name),
66  "Function '" + m_name + "' does not exist.");
67 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215
MultiRegions::ExpListSharedPtr m_field
The expansion we want to evaluate this function for.
bool m_toCache
Store resulting arrays (and interpolators)
LibUtilities::SessionReaderSharedPtr m_session
The session reader.

References ASSERTL0, m_name, and m_session.

Member Function Documentation

◆ Describe()

std::string Nektar::SolverUtils::SessionFunction::Describe ( std::string  pFieldName,
const int  domain = 0 
)

Provide a description of a function for a given field name.

Parameters
pFieldNameField name.
domainThe domain to evaluate the function in.

Definition at line 211 of file SessionFunction.cpp.

212 {
213  std::string retVal;
214 
216  m_session->GetFunctionType(m_name, pFieldName, domain);
218  {
220  m_session->GetFunction(m_name, pFieldName, domain);
221  retVal = ffunc->GetExpression();
222  }
223  else if (vType == LibUtilities::eFunctionTypeFile ||
225  {
226  std::string filename =
227  m_session->GetFunctionFilename(m_name, pFieldName, domain);
228  retVal = "from file " + filename;
229  }
230  else
231  {
232  ASSERTL0(false, "unknown eFunctionType");
233  }
234 
235  return retVal;
236 }
std::shared_ptr< Equation > EquationSharedPtr
Definition: Equation.h:130

References ASSERTL0, Nektar::LibUtilities::eFunctionTypeExpression, Nektar::LibUtilities::eFunctionTypeFile, Nektar::LibUtilities::eFunctionTypeTransientFile, m_name, and m_session.

◆ Evaluate() [1/4]

void Nektar::SolverUtils::SessionFunction::Evaluate ( Array< OneD, Array< OneD, NekDouble >> &  pArray,
const NekDouble  pTime = 0.0,
const int  domain = 0 
)

Evaluates a function defined in the xml session file at each quadrature point.

Evaluates a function defined in the xml session file at each quadrature point.

Parameters
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 77 of file SessionFunction.cpp.

79 {
80  std::vector<std::string> vFieldNames = m_session->GetVariables();
81 
82  for (int i = 0; i < vFieldNames.size(); i++)
83  {
84  Evaluate(vFieldNames[i], pArray[i], pTime, domain);
85  }
86 }
SOLVER_UTILS_EXPORT void Evaluate(Array< OneD, Array< OneD, NekDouble >> &pArray, const NekDouble pTime=0.0, const int domain=0)
Evaluates a function defined in the xml session file at each quadrature point.

References m_session.

Referenced by Evaluate().

◆ Evaluate() [2/4]

void Nektar::SolverUtils::SessionFunction::Evaluate ( std::string  pFieldName,
Array< OneD, NekDouble > &  pArray,
const NekDouble pTime = 0.0,
const int  domain = 0 
)

Evaluates a function defined in the xml session file at each quadrature point.

Parameters
pFieldNameThe name of the field to evaluate the function for.
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 145 of file SessionFunction.cpp.

148 {
150  m_session->GetFunctionType(m_name, pFieldName, domain);
151 
152  unsigned int nq = m_field->GetNpoints();
153 
154  std::pair<std::string, int> key(pFieldName, domain);
155  // sorry
156  if ((m_arrays.find(key) != m_arrays.end()) &&
158  ((m_lastCached.find(key) != m_lastCached.end()) &&
159  (pTime - m_lastCached[key] < NekConstants::kNekZeroTol))))
160  {
161  // found cached field
162  if (pArray.size() < nq)
163  {
164  pArray = Array<OneD, NekDouble>(nq);
165  }
166  Vmath::Vcopy(nq, m_arrays[key], 1, pArray, 1);
167 
168  return;
169  }
170 
172  {
173  EvaluateExp(pFieldName, pArray, pTime, domain);
174  }
175  else if (vType == LibUtilities::eFunctionTypeFile ||
177  {
178  std::string filename =
179  m_session->GetFunctionFilename(m_name, pFieldName, domain);
180 
181  if (boost::filesystem::path(filename).extension() == ".pts" ||
182  boost::filesystem::path(filename).extension() == ".csv")
183  {
184  EvaluatePts(pFieldName, pArray, pTime, domain);
185  }
186  else
187  {
188  EvaluateFld(pFieldName, pArray, pTime, domain);
189  }
190  }
191  else
192  {
193  ASSERTL0(false, "unknown eFunctionType");
194  }
195 
196  if (m_toCache)
197  {
198  m_arrays[key] = Array<OneD, NekDouble>(nq);
199  Vmath::Vcopy(nq, pArray, 1, m_arrays[key], 1);
200 
201  m_lastCached[key] = pTime;
202  }
203 }
std::map< std::pair< std::string, int >, Array< OneD, NekDouble > > m_arrays
Cached result arrays.
SOLVER_UTILS_EXPORT void EvaluateFld(std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
SOLVER_UTILS_EXPORT void EvaluatePts(std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
Evaluates a function from pts file.
std::map< std::pair< std::string, int >, NekDouble > m_lastCached
Last time the cache for this variable & domain combo was updated.
SOLVER_UTILS_EXPORT void EvaluateExp(std::string pFieldName, Array< OneD, NekDouble > &pArray, const NekDouble &pTime=0.0, const int domain=0)
static const NekDouble kNekZeroTol
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1255

References ASSERTL0, Nektar::LibUtilities::eFunctionTypeExpression, Nektar::LibUtilities::eFunctionTypeFile, Nektar::LibUtilities::eFunctionTypeTransientFile, EvaluateExp(), EvaluateFld(), EvaluatePts(), Nektar::NekConstants::kNekZeroTol, m_arrays, m_field, m_lastCached, m_name, m_session, m_toCache, and Vmath::Vcopy().

◆ Evaluate() [3/4]

void Nektar::SolverUtils::SessionFunction::Evaluate ( std::vector< std::string >  pFieldNames,
Array< OneD, Array< OneD, NekDouble >> &  pArray,
const NekDouble pTime = 0.0,
const int  domain = 0 
)

Evaluates a function defined in the xml session file at each quadrature point.

Evaluates a function defined in the xml session file at each quadrature point.

Parameters
pFieldNamesThe names of the fields to evaluate the function for.
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 97 of file SessionFunction.cpp.

100 {
101  ASSERTL1(pFieldNames.size() == pArray.size(),
102  "Function '" + m_name +
103  "' variable list size mismatch with array storage.");
104 
105  for (int i = 0; i < pFieldNames.size(); i++)
106  {
107  Evaluate(pFieldNames[i], pArray[i], pTime, domain);
108  }
109 }
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:249

References ASSERTL1, Evaluate(), and m_name.

◆ Evaluate() [4/4]

void Nektar::SolverUtils::SessionFunction::Evaluate ( std::vector< std::string >  pFieldNames,
Array< OneD, MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble pTime = 0.0,
const int  domain = 0 
)

Evaluates a function defined in the xml session file at each quadrature point.

Evaluates a function defined in the xml session file at each quadrature point.

Parameters
pFieldNamesThe names of the fields to evaluate the function for.
pFieldsThe fields into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 120 of file SessionFunction.cpp.

124 {
125  ASSERTL0(pFieldNames.size() == pFields.size(),
126  "Field list / name list size mismatch.");
127 
128  for (int i = 0; i < pFieldNames.size(); i++)
129  {
130  Evaluate(pFieldNames[i], pFields[i]->UpdatePhys(), pTime, domain);
131  pFields[i]->FwdTransLocalElmt(pFields[i]->GetPhys(),
132  pFields[i]->UpdateCoeffs());
133  }
134 }

References ASSERTL0, and Evaluate().

◆ EvaluateExp()

void Nektar::SolverUtils::SessionFunction::EvaluateExp ( std::string  pFieldName,
Array< OneD, NekDouble > &  pArray,
const NekDouble pTime = 0.0,
const int  domain = 0 
)
private

Evaluates a function from expression

Parameters
pFieldNameThe name of the field to evaluate the function for.
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 246 of file SessionFunction.cpp.

249 {
250  unsigned int nq = m_field->GetNpoints();
251  if (pArray.size() < nq)
252  {
253  pArray = Array<OneD, NekDouble>(nq);
254  }
255 
256  Array<OneD, NekDouble> x0(nq);
257  Array<OneD, NekDouble> x1(nq);
258  Array<OneD, NekDouble> x2(nq);
259 
260  // Get the coordinates (assuming all fields have the same
261  // discretisation)
262  m_field->GetCoords(x0, x1, x2);
264  m_session->GetFunction(m_name, pFieldName, domain);
265 
266  ffunc->Evaluate(x0, x1, x2, pTime, pArray);
267 }

References m_field, m_name, and m_session.

Referenced by Evaluate().

◆ EvaluateFld()

void Nektar::SolverUtils::SessionFunction::EvaluateFld ( std::string  pFieldName,
Array< OneD, NekDouble > &  pArray,
const NekDouble pTime = 0.0,
const int  domain = 0 
)
private

Evaluates a function from fld file

Parameters
pFieldNameThe name of the field to evaluate the function for.
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 277 of file SessionFunction.cpp.

280 {
281  unsigned int nq = m_field->GetNpoints();
282  if (pArray.size() < nq)
283  {
284  pArray = Array<OneD, NekDouble>(nq);
285  }
286 
287  std::string filename =
288  m_session->GetFunctionFilename(m_name, pFieldName, domain);
289  std::string fileVar =
290  m_session->GetFunctionFilenameVariable(m_name, pFieldName, domain);
291 
292  if (fileVar.length() == 0)
293  {
294  fileVar = pFieldName;
295  }
296 
297  // In case of eFunctionTypeTransientFile, generate filename from
298  // format string
300  m_session->GetFunctionType(m_name, pFieldName, domain);
302  {
303  try
304  {
305 #if (defined _WIN32 && _MSC_VER < 1900)
306  // We need this to make sure boost::format has always
307  // two digits in the exponents of Scientific notation.
308  unsigned int old_exponent_format;
309  old_exponent_format = _set_output_format(_TWO_DIGIT_EXPONENT);
310  filename = boost::str(boost::format(filename) % pTime);
311  _set_output_format(old_exponent_format);
312 #else
313  filename = boost::str(boost::format(filename) % pTime);
314 #endif
315  }
316  catch (...)
317  {
318  ASSERTL0(false, "Invalid Filename in function \"" + m_name +
319  "\", variable \"" + fileVar + "\"")
320  }
321  }
322 
323  // Define list of global element ids
324  int numexp = m_field->GetExpSize();
325  Array<OneD, int> ElementGIDs(numexp);
326  for (int i = 0; i < numexp; ++i)
327  {
328  ElementGIDs[i] = m_field->GetExp(i)->GetGeom()->GetGlobalID();
329  }
330 
331  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
332  std::vector<std::vector<NekDouble>> FieldData;
335  fldIO->Import(filename, FieldDef, FieldData,
337 
338  int idx = -1;
339  Array<OneD, NekDouble> vCoeffs(m_field->GetNcoeffs(), 0.0);
340  // Loop over all the expansions
341  for (int i = 0; i < FieldDef.size(); ++i)
342  {
343  // Find the index of the required field in the
344  // expansion segment
345  for (int j = 0; j < FieldDef[i]->m_fields.size(); ++j)
346  {
347  if (FieldDef[i]->m_fields[j] == fileVar)
348  {
349  idx = j;
350  }
351  }
352 
353  if (idx >= 0)
354  {
355  m_field->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
356  FieldDef[i]->m_fields[idx], vCoeffs);
357  }
358  else
359  {
360  cout << "Field " + fileVar + " not found." << endl;
361  }
362  }
363 
364  m_field->BwdTrans(vCoeffs, pArray);
365 }
static std::shared_ptr< FieldIO > CreateForFile(const LibUtilities::SessionReaderSharedPtr session, const std::string &filename)
Construct a FieldIO object for a given input filename.
Definition: FieldIO.cpp:227
std::shared_ptr< FieldIO > FieldIOSharedPtr
Definition: FieldIO.h:301
static FieldMetaDataMap NullFieldMetaDataMap
Definition: FieldIO.h:53

References ASSERTL0, Nektar::LibUtilities::FieldIO::CreateForFile(), Nektar::LibUtilities::eFunctionTypeTransientFile, CellMLToNektar.pycml::format, m_field, m_name, m_session, and Nektar::LibUtilities::NullFieldMetaDataMap.

Referenced by Evaluate().

◆ EvaluatePts()

void Nektar::SolverUtils::SessionFunction::EvaluatePts ( std::string  pFieldName,
Array< OneD, NekDouble > &  pArray,
const NekDouble pTime = 0.0,
const int  domain = 0 
)
private

Evaluates a function from pts file.

Evaluates a function from pts file

Parameters
pFieldNameThe name of the field to evaluate the function for.
pArrayThe array into which to write the values.
pTimeThe time at which to evaluate the function.
domainThe domain to evaluate the function in.

Definition at line 375 of file SessionFunction.cpp.

378 {
379  unsigned int nq = m_field->GetNpoints();
380  if (pArray.size() < nq)
381  {
382  pArray = Array<OneD, NekDouble>(nq);
383  }
384 
385  std::string filename =
386  m_session->GetFunctionFilename(m_name, pFieldName, domain);
387  std::string fileVar =
388  m_session->GetFunctionFilenameVariable(m_name, pFieldName, domain);
389 
390  if (fileVar.length() == 0)
391  {
392  fileVar = pFieldName;
393  }
394 
395  // In case of eFunctionTypeTransientFile, generate filename from
396  // format string
398  m_session->GetFunctionType(m_name, pFieldName, domain);
400  {
401  try
402  {
403 #if (defined _WIN32 && _MSC_VER < 1900)
404  // We need this to make sure boost::format has always
405  // two digits in the exponents of Scientific notation.
406  unsigned int old_exponent_format;
407  old_exponent_format = _set_output_format(_TWO_DIGIT_EXPONENT);
408  filename = boost::str(boost::format(filename) % pTime);
409  _set_output_format(old_exponent_format);
410 #else
411  filename = boost::str(boost::format(filename) % pTime);
412 #endif
413  }
414  catch (...)
415  {
416  ASSERTL0(false, "Invalid Filename in function \"" + m_name +
417  "\", variable \"" + fileVar + "\"")
418  }
419  }
420 
422  // check if we already loaded this file. For transient files,
423  // funcFilename != filename so we can make sure we only keep the
424  // latest pts field per funcFilename.
425  std::string funcFilename =
426  m_session->GetFunctionFilename(m_name, pFieldName, domain);
427 
429  if (boost::filesystem::path(filename).extension() == ".pts")
430  {
431  LibUtilities::PtsIO ptsIO(m_session->GetComm());
432  ptsIO.Import(filename, inPts);
433  }
434  else if (boost::filesystem::path(filename).extension() == ".csv")
435  {
436  LibUtilities::CsvIO csvIO(m_session->GetComm());
437  csvIO.Import(filename, inPts);
438  }
439  else
440  {
441  ASSERTL1(false, "Unsupported file type");
442  }
443 
444  Array<OneD, Array<OneD, NekDouble>> pts(inPts->GetDim() +
445  inPts->GetNFields());
446  for (int i = 0; i < inPts->GetDim() + inPts->GetNFields(); ++i)
447  {
448  pts[i] = Array<OneD, NekDouble>(nq);
449  }
450  if (inPts->GetDim() == 1)
451  {
452  m_field->GetCoords(pts[0]);
453  }
454  else if (inPts->GetDim() == 2)
455  {
456  m_field->GetCoords(pts[0], pts[1]);
457  }
458  else if (inPts->GetDim() == 3)
459  {
460  m_field->GetCoords(pts[0], pts[1], pts[2]);
461  }
463  inPts->GetDim(), inPts->GetFieldNames(), pts);
464 
465  FieldUtils::Interpolator interp;
466  if (m_interpolators.find(funcFilename) != m_interpolators.end())
467  {
468  interp = m_interpolators[funcFilename];
469  }
470  else
471  {
472  interp = FieldUtils::Interpolator(LibUtilities::eShepard);
473  if (m_session->GetComm()->GetRank() == 0)
474  {
475  interp.SetProgressCallback(&SessionFunction::PrintProgressbar,
476  this);
477  }
478  interp.CalcWeights(inPts, outPts);
479  if (m_session->GetComm()->GetRank() == 0)
480  {
481  cout << endl;
482  if (m_session->DefinesCmdLineArgument("verbose"))
483  {
484  interp.PrintStatistics();
485  }
486  }
487  }
488 
489  if (m_toCache)
490  {
491  m_interpolators[funcFilename] = interp;
492  }
493 
494  // TODO: only interpolate the field we actually want
495  interp.Interpolate(inPts, outPts);
496 
497  int fieldInd;
498  vector<string> fieldNames = outPts->GetFieldNames();
499  for (fieldInd = 0; fieldInd < fieldNames.size(); ++fieldInd)
500  {
501  if (outPts->GetFieldName(fieldInd) == fileVar)
502  {
503  break;
504  }
505  }
506  ASSERTL0(fieldInd != fieldNames.size(), "field not found");
507 
508  pArray = outPts->GetPts(fieldInd + outPts->GetDim());
509 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
SOLVER_UTILS_EXPORT void PrintProgressbar(const int position, const int goal) const
std::map< std::string, FieldUtils::Interpolator > m_interpolators
Interpolator for pts file input for a variable & domain combination.
std::shared_ptr< PtsField > PtsFieldSharedPtr
Definition: PtsField.h:190

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, ASSERTL1, Nektar::LibUtilities::Interpolator::CalcWeights(), Nektar::LibUtilities::eFunctionTypeTransientFile, Nektar::LibUtilities::eShepard, CellMLToNektar.pycml::format, Nektar::LibUtilities::PtsIO::Import(), Nektar::FieldUtils::Interpolator::Interpolate(), m_field, m_interpolators, m_name, m_session, m_toCache, PrintProgressbar(), Nektar::LibUtilities::Interpolator::PrintStatistics(), and Nektar::LibUtilities::Interpolator::SetProgressCallback().

Referenced by Evaluate().

◆ GetExpansion()

SOLVER_UTILS_EXPORT const MultiRegions::ExpListSharedPtr& Nektar::SolverUtils::SessionFunction::GetExpansion ( )
inline

Definition at line 105 of file SessionFunction.h.

106  {
107  return m_field;
108  }

References m_field.

◆ GetSession()

SOLVER_UTILS_EXPORT const LibUtilities::SessionReaderSharedPtr& Nektar::SolverUtils::SessionFunction::GetSession ( )
inline

Definition at line 100 of file SessionFunction.h.

101  {
102  return m_session;
103  }

References m_session.

◆ PrintProgressbar()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::SessionFunction::PrintProgressbar ( const int  position,
const int  goal 
) const
inlineprivate

Definition at line 144 of file SessionFunction.h.

146  {
147  LibUtilities::PrintProgressbar(position, goal, "Interpolating");
148  }
int PrintProgressbar(const int position, const int goal, const std::string message, int lastprogress=-1)
Prints a progressbar.
Definition: Progressbar.hpp:67

References Nektar::LibUtilities::PrintProgressbar().

Referenced by EvaluatePts().

Member Data Documentation

◆ m_arrays

std::map<std::pair<std::string, int>, Array<OneD, NekDouble> > Nektar::SolverUtils::SessionFunction::m_arrays
private

Cached result arrays.

Definition at line 124 of file SessionFunction.h.

Referenced by Evaluate().

◆ m_field

MultiRegions::ExpListSharedPtr Nektar::SolverUtils::SessionFunction::m_field
private

The expansion we want to evaluate this function for.

Definition at line 114 of file SessionFunction.h.

Referenced by Evaluate(), EvaluateExp(), EvaluateFld(), EvaluatePts(), and GetExpansion().

◆ m_interpolators

std::map<std::string, FieldUtils::Interpolator> Nektar::SolverUtils::SessionFunction::m_interpolators
private

Interpolator for pts file input for a variable & domain combination.

Definition at line 122 of file SessionFunction.h.

Referenced by EvaluatePts().

◆ m_lastCached

std::map<std::pair<std::string, int>, NekDouble> Nektar::SolverUtils::SessionFunction::m_lastCached
private

Last time the cache for this variable & domain combo was updated.

Definition at line 120 of file SessionFunction.h.

Referenced by Evaluate().

◆ m_name

std::string Nektar::SolverUtils::SessionFunction::m_name
private

◆ m_session

LibUtilities::SessionReaderSharedPtr Nektar::SolverUtils::SessionFunction::m_session
private

The session reader.

Definition at line 112 of file SessionFunction.h.

Referenced by Describe(), Evaluate(), EvaluateExp(), EvaluateFld(), EvaluatePts(), GetSession(), and SessionFunction().

◆ m_toCache

bool Nektar::SolverUtils::SessionFunction::m_toCache
private

Store resulting arrays (and interpolators)

Definition at line 118 of file SessionFunction.h.

Referenced by Evaluate(), and EvaluatePts().