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::Interpolator< std::vector< MultiRegions::ExpListSharedPtr > > > m_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 59 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 57 of file Core/SessionFunction.cpp.

61 : m_session(session), m_field(field), m_name(functionName),
62 m_toCache(toCache)
63{
64 ASSERTL0(m_session->DefinesFunction(m_name),
65 "Function '" + m_name + "' does not exist.");
66}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
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 216 of file Core/SessionFunction.cpp.

217{
218 std::string retVal;
219
221 m_session->GetFunctionType(m_name, pFieldName, domain);
223 {
225 m_session->GetFunction(m_name, pFieldName, domain);
226 retVal = ffunc->GetExpression();
227 }
228 else if (vType == LibUtilities::eFunctionTypeFile ||
230 {
231 std::string filename =
232 m_session->GetFunctionFilename(m_name, pFieldName, domain);
233 retVal = "from file " + filename;
234 }
235 else
236 {
237 ASSERTL0(false, "unknown eFunctionType");
238 }
239
240 return retVal;
241}
std::shared_ptr< Equation > EquationSharedPtr
Definition: Equation.h:125

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 76 of file Core/SessionFunction.cpp.

78{
79 std::vector<std::string> vFieldNames = m_session->GetVariables();
80
81 for (int i = 0; i < vFieldNames.size(); i++)
82 {
83 Evaluate(vFieldNames[i], pArray[i], pTime, domain);
84 }
85}
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 Evaluate(), and 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 150 of file Core/SessionFunction.cpp.

153{
155 m_session->GetFunctionType(m_name, pFieldName, domain);
156
157 unsigned int nq = m_field->GetNpoints();
158
159 std::pair<std::string, int> key(pFieldName, domain);
160 // sorry
161 if ((m_arrays.find(key) != m_arrays.end()) &&
163 ((m_lastCached.find(key) != m_lastCached.end()) &&
164 (pTime - m_lastCached[key] < NekConstants::kNekZeroTol))))
165 {
166 // found cached field
167 if (pArray.size() < nq)
168 {
169 pArray = Array<OneD, NekDouble>(nq);
170 }
171 Vmath::Vcopy(nq, m_arrays[key], 1, pArray, 1);
172
173 return;
174 }
175
177 {
178 EvaluateExp(pFieldName, pArray, pTime, domain);
179 }
180 else if (vType == LibUtilities::eFunctionTypeFile ||
182 {
183 std::string filename =
184 m_session->GetFunctionFilename(m_name, pFieldName, domain);
185
186 if (fs::path(filename).extension() == ".pts" ||
187 fs::path(filename).extension() == ".csv")
188 {
189 EvaluatePts(pFieldName, pArray, pTime, domain);
190 }
191 else
192 {
193 EvaluateFld(pFieldName, pArray, pTime, domain);
194 }
195 }
196 else
197 {
198 ASSERTL0(false, "unknown eFunctionType");
199 }
200
201 if (m_toCache)
202 {
203 m_arrays[key] = Array<OneD, NekDouble>(nq);
204 Vmath::Vcopy(nq, pArray, 1, m_arrays[key], 1);
205
206 m_lastCached[key] = pTime;
207 }
208}
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.hpp:825

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 96 of file Core/SessionFunction.cpp.

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

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 119 of file Core/SessionFunction.cpp.

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

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 251 of file Core/SessionFunction.cpp.

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

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 282 of file Core/SessionFunction.cpp.

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

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 383 of file Core/SessionFunction.cpp.

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

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< T >::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 104 of file SessionFunction.h.

105 {
106 return m_field;
107 }

References m_field.

◆ GetSession()

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

Definition at line 99 of file SessionFunction.h.

100 {
101 return m_session;
102 }

References m_session.

◆ PrintProgressbar()

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

Definition at line 145 of file SessionFunction.h.

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

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 125 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 113 of file SessionFunction.h.

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

◆ m_interpolators

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

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

Definition at line 123 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 119 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 111 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 117 of file SessionFunction.h.

Referenced by Evaluate(), and EvaluatePts().