Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
Nektar::SolverUtils::FilterFieldConvert Class Reference

#include <FilterFieldConvert.h>

Inheritance diagram for Nektar::SolverUtils::FilterFieldConvert:
Inheritance graph
[legend]
Collaboration diagram for Nektar::SolverUtils::FilterFieldConvert:
Collaboration graph
[legend]

Public Member Functions

SOLVER_UTILS_EXPORT FilterFieldConvert (const LibUtilities::SessionReaderSharedPtr &pSession, const ParamMap &pParams)
 
virtual SOLVER_UTILS_EXPORT ~FilterFieldConvert ()
 
- Public Member Functions inherited from Nektar::SolverUtils::Filter
SOLVER_UTILS_EXPORT Filter (const LibUtilities::SessionReaderSharedPtr &pSession)
 
virtual SOLVER_UTILS_EXPORT ~Filter ()
 
SOLVER_UTILS_EXPORT void Initialise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT void Update (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT void Finalise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT bool IsTimeDependent ()
 

Static Public Member Functions

static FilterSharedPtr create (const LibUtilities::SessionReaderSharedPtr &pSession, const std::map< std::string, std::string > &pParams)
 Creates an instance of this class. More...
 

Static Public Attributes

static std::string className
 Name of the class. More...
 

Protected Member Functions

virtual SOLVER_UTILS_EXPORT void v_Initialise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
virtual SOLVER_UTILS_EXPORT void v_FillVariablesName (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields)
 
virtual SOLVER_UTILS_EXPORT void v_Update (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
virtual SOLVER_UTILS_EXPORT void v_Finalise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
virtual SOLVER_UTILS_EXPORT void v_ProcessSample (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
virtual SOLVER_UTILS_EXPORT void v_PrepareOutput (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
virtual SOLVER_UTILS_EXPORT
NekDouble 
v_GetScale ()
 
virtual SOLVER_UTILS_EXPORT
std::string 
v_GetFileSuffix ()
 
void OutputField (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, int dump=-1)
 
virtual SOLVER_UTILS_EXPORT bool v_IsTimeDependent ()
 
void CreateModules (vector< string > &modcmds)
 
void CreateFields (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields)
 
void ClearFields ()
 

Protected Attributes

unsigned int m_numSamples
 
unsigned int m_outputFrequency
 
unsigned int m_sampleFrequency
 
std::string m_outputFile
 
std::string m_restartFile
 
unsigned int m_index
 
unsigned int m_outputIndex
 
vector< ModuleSharedPtrm_modules
 
LibUtilities::FieldMetaDataMap m_fieldMetaData
 
std::vector< Array< OneD,
NekDouble > > 
m_outFields
 
std::vector< std::string > m_variables
 
FieldSharedPtr m_f
 
- Protected Attributes inherited from Nektar::SolverUtils::Filter
LibUtilities::SessionReaderSharedPtr m_session
 

Friends

class MemoryManager< FilterFieldConvert >
 

Additional Inherited Members

- Public Types inherited from Nektar::SolverUtils::Filter
typedef std::map< std::string,
std::string > 
ParamMap
 

Detailed Description

Definition at line 49 of file FilterFieldConvert.h.

Constructor & Destructor Documentation

Nektar::SolverUtils::FilterFieldConvert::FilterFieldConvert ( const LibUtilities::SessionReaderSharedPtr pSession,
const ParamMap pParams 
)

Definition at line 48 of file FilterFieldConvert.cpp.

References ASSERTL0, CreateModules(), Nektar::LibUtilities::Equation::Evaluate(), m_f, m_index, m_numSamples, m_outputFile, m_outputFrequency, m_outputIndex, m_restartFile, m_sampleFrequency, and Nektar::SolverUtils::Filter::m_session.

51  : Filter(pSession)
52 {
53  ParamMap::const_iterator it;
54 
55  // OutputFile
56  it = pParams.find("OutputFile");
57  if (it == pParams.end())
58  {
59  std::stringstream outname;
60  outname << m_session->GetSessionName() << ".fld";
61  m_outputFile = outname.str();
62  }
63  else
64  {
65  ASSERTL0(it->second.length() > 0, "Missing parameter 'OutputFile'.");
66  if ( it->second.find_last_of('.') != string::npos)
67  {
68  m_outputFile = it->second;
69  }
70  else
71  {
72  std::stringstream outname;
73  outname << it->second << ".fld";
74  m_outputFile = outname.str();
75  }
76  }
77 
78  // Restart file
79  it = pParams.find("RestartFile");
80  if (it == pParams.end())
81  {
82  m_restartFile = "";
83  }
84  else
85  {
86  ASSERTL0(it->second.length() > 0, "Missing parameter 'RestartFile'.");
87  if ( it->second.find_last_of('.') != string::npos)
88  {
89  m_restartFile = it->second;
90  }
91  else
92  {
93  std::stringstream outname;
94  outname << it->second << ".fld";
95  m_restartFile = outname.str();
96  }
97  }
98 
99  // SampleFrequency
100  it = pParams.find("SampleFrequency");
101  if (it == pParams.end())
102  {
103  m_sampleFrequency = 1;
104  }
105  else
106  {
107  LibUtilities::Equation equ(m_session, it->second);
108  m_sampleFrequency = floor(equ.Evaluate());
109  }
110 
111  // OutputFrequency
112  it = pParams.find("OutputFrequency");
113  if (it == pParams.end())
114  {
115  m_outputFrequency = m_session->GetParameter("NumSteps");
116  }
117  else
118  {
119  LibUtilities::Equation equ(m_session, it->second);
120  m_outputFrequency = floor(equ.Evaluate());
121  }
122 
123  m_numSamples = 0;
124  m_index = 0;
125  m_outputIndex = 0;
126 
127  //
128  // FieldConvert modules
129  //
130  m_f = boost::shared_ptr<Field>(new Field());
131  vector<string> modcmds;
132  // Process modules
133  std::stringstream moduleStream;
134  it = pParams.find("Modules");
135  if (it != pParams.end())
136  {
137  moduleStream.str(it->second);
138  }
139  while (!moduleStream.fail())
140  {
141  std::string sMod;
142  moduleStream >> sMod;
143  if (!moduleStream.fail())
144  {
145  modcmds.push_back(sMod);
146  }
147  }
148  // Output module
149  modcmds.push_back(m_outputFile);
150  // Create modules
151  CreateModules(modcmds);
152 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:198
SOLVER_UTILS_EXPORT Filter(const LibUtilities::SessionReaderSharedPtr &pSession)
Definition: Filter.cpp:52
void CreateModules(vector< string > &modcmds)
LibUtilities::SessionReaderSharedPtr m_session
Definition: Filter.h:84
Nektar::SolverUtils::FilterFieldConvert::~FilterFieldConvert ( )
virtual

Definition at line 154 of file FilterFieldConvert.cpp.

155 {
156 }

Member Function Documentation

void Nektar::SolverUtils::FilterFieldConvert::ClearFields ( )
protected

Definition at line 486 of file FilterFieldConvert.cpp.

References m_f, and Nektar::LibUtilities::NullPtsField.

Referenced by OutputField().

487 {
488  m_f->m_fieldPts = LibUtilities::NullPtsField;
489  m_f->m_exp.clear();
490  m_f->m_fielddef = std::vector<LibUtilities::FieldDefinitionsSharedPtr>();
491  m_f->m_data = std::vector<std::vector<NekDouble> > ();
492 }
static PtsFieldSharedPtr NullPtsField
Definition: PtsField.h:179
static FilterSharedPtr Nektar::SolverUtils::FilterFieldConvert::create ( const LibUtilities::SessionReaderSharedPtr pSession,
const std::map< std::string, std::string > &  pParams 
)
inlinestatic

Creates an instance of this class.

Definition at line 55 of file FilterFieldConvert.h.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.

58  {
60  ::AllocateSharedPtr(pSession, pParams);
61  return p;
62  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
boost::shared_ptr< Filter > FilterSharedPtr
A shared pointer to a Driver object.
Definition: Filter.h:50
void Nektar::SolverUtils::FilterFieldConvert::CreateFields ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields)
protected

Definition at line 442 of file FilterFieldConvert.cpp.

References Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, m_f, m_fieldMetaData, m_outFields, m_variables, Nektar::LibUtilities::NullPtsField, and Vmath::Vcopy().

Referenced by OutputField().

444 {
445  m_f->m_fieldMetaDataMap = m_fieldMetaData;
446  m_f->m_fieldPts = LibUtilities::NullPtsField;
447  // Create m_f->m_exp
448  int NumHomogeneousDir = 0;
449  if (pFields[0]->GetExpType() == MultiRegions::e3DH1D)
450  {
451  NumHomogeneousDir = 1;
452  }
453  else if (pFields[0]->GetExpType() == MultiRegions::e3DH2D)
454  {
455  NumHomogeneousDir = 2;
456  }
457 
458  m_f->m_exp.resize(m_variables.size());
459  m_f->m_exp[0] = pFields[0];
460  for (int n = 0; n < m_variables.size(); ++n)
461  {
462  m_f->m_exp[n] = m_f->AppendExpList(
463  NumHomogeneousDir, m_variables[0]);
464  m_f->m_exp[n]->SetWaveSpace(false);
465  Vmath::Vcopy( m_outFields[n].num_elements(),
466  m_outFields[n], 1,
467  m_f->m_exp[n]->UpdateCoeffs(), 1);
468  m_f->m_exp[n]->BwdTrans( m_f->m_exp[n]->GetCoeffs(),
469  m_f->m_exp[n]->UpdatePhys());
470  }
471  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef =
472  pFields[0]->GetFieldDefinitions();
473  std::vector<std::vector<NekDouble> > FieldData(FieldDef.size());
474  for (int n = 0; n < m_outFields.size(); ++n)
475  {
476  for (int i = 0; i < FieldDef.size(); ++i)
477  {
478  FieldDef[i]->m_fields.push_back(m_variables[n]);
479  m_f->m_exp[n]->AppendFieldData(FieldDef[i], FieldData[i]);
480  }
481  }
482  m_f->m_fielddef = FieldDef;
483  m_f->m_data = FieldData;
484 }
LibUtilities::FieldMetaDataMap m_fieldMetaData
std::vector< Array< OneD, NekDouble > > m_outFields
static PtsFieldSharedPtr NullPtsField
Definition: PtsField.h:179
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1061
void Nektar::SolverUtils::FilterFieldConvert::CreateModules ( vector< string > &  modcmds)
protected

Definition at line 351 of file FilterFieldConvert.cpp.

References Nektar::LibUtilities::NekFactory< tKey, tBase, >::CreateInstance(), Nektar::FieldUtils::eOutputModule, Nektar::FieldUtils::eProcessModule, Nektar::FieldUtils::GetModuleFactory(), m_f, and m_modules.

Referenced by FilterFieldConvert().

352 {
353  for (int i = 0; i < modcmds.size(); ++i)
354  {
355  // First split each command by the colon separator.
356  vector<string> tmp1;
357  ModuleKey module;
358  int offset = 1;
359 
360  boost::split(tmp1, modcmds[i], boost::is_any_of(":"));
361 
362  if (i == modcmds.size() - 1)
363  {
364  module.first = eOutputModule;
365 
366  // If no colon detected, automatically detect mesh type from
367  // file extension. Otherwise override and use tmp1[1] as the
368  // module to load. This also allows us to pass options to
369  // input/output modules. So, for example, to override
370  // filename.xml to be read as vtk, you use:
371  //
372  // filename.xml:vtk:opt1=arg1:opt2=arg2
373  if (tmp1.size() == 1)
374  {
375  int dot = tmp1[0].find_last_of('.') + 1;
376  string ext = tmp1[0].substr(dot, tmp1[0].length() - dot);
377 
378  module.second = ext;
379  tmp1.push_back(string("outfile=") + tmp1[0]);
380  }
381  else
382  {
383  module.second = tmp1[1];
384  tmp1.push_back(string("outfile=") + tmp1[0]);
385  offset++;
386  }
387  }
388  else
389  {
390  module.first = eProcessModule;
391  module.second = tmp1[0];
392  }
393 
394  // Create modules
395  ModuleSharedPtr mod;
396  mod = GetModuleFactory().CreateInstance(module, m_f);
397  m_modules.push_back(mod);
398 
399  // Set options for this module.
400  for (int j = offset; j < tmp1.size(); ++j)
401  {
402  vector<string> tmp2;
403  boost::split(tmp2, tmp1[j], boost::is_any_of("="));
404 
405  if (tmp2.size() == 1)
406  {
407  mod->RegisterConfig(tmp2[0], "1");
408  }
409  else if (tmp2.size() == 2)
410  {
411  mod->RegisterConfig(tmp2[0], tmp2[1]);
412  }
413  else
414  {
415  cerr << "ERROR: Invalid module configuration: format is "
416  << "either :arg or :arg=val" << endl;
417  abort();
418  }
419  }
420 
421  // Ensure configuration options have been set.
422  mod->SetDefaults();
423  }
424 
425  bool RequiresEquiSpaced = false;
426  for (int i = 0; i < m_modules.size(); ++i)
427  {
428  if(m_modules[i]->GetRequireEquiSpaced())
429  {
430  RequiresEquiSpaced = true;
431  }
432  }
433  if (RequiresEquiSpaced)
434  {
435  for (int i = 0; i < m_modules.size(); ++i)
436  {
437  m_modules[i]->SetRequireEquiSpaced(true);
438  }
439  }
440 }
tBaseSharedPtr CreateInstance(tKey idKey BOOST_PP_COMMA_IF(MAX_PARAM) BOOST_PP_ENUM_BINARY_PARAMS(MAX_PARAM, tParam, x))
Create an instance of the class referred to by idKey.
Definition: NekFactory.hpp:162
pair< ModuleType, string > ModuleKey
boost::shared_ptr< Module > ModuleSharedPtr
ModuleFactory & GetModuleFactory()
void Nektar::SolverUtils::FilterFieldConvert::OutputField ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
int  dump = -1 
)
protected

Definition at line 283 of file FilterFieldConvert.cpp.

References ClearFields(), CreateFields(), m_modules, m_outFields, m_outputFile, Vmath::Smul(), v_GetFileSuffix(), and v_GetScale().

Referenced by v_Finalise(), and v_Update().

285 {
286  NekDouble scale = v_GetScale();
287  for (int n = 0; n < m_outFields.size(); ++n)
288  {
289  Vmath::Smul(m_outFields[n].num_elements(),
290  scale,
291  m_outFields[n],
292  1,
293  m_outFields[n],
294  1);
295  }
296 
297  CreateFields(pFields);
298 
299  // Determine new file name
300  std::stringstream outname;
301  int dot = m_outputFile.find_last_of('.');
302  string name = m_outputFile.substr(0, dot);
303  string ext = m_outputFile.substr(dot, m_outputFile.length() - dot);
304  std::string suffix = v_GetFileSuffix();
305  if (dump == -1) // final dump
306  {
307  outname << name << suffix << ext;
308  }
309  else
310  {
311  outname << name << "_" << dump << suffix << ext;
312  }
313  m_modules[m_modules.size()-1]->RegisterConfig("outfile", outname.str());
314 
315  // Prevent checking before overwritting
316  po::options_description desc("Available options");
317  desc.add_options()
318  ("forceoutput,f",
319  "Force the output to be written without any checks");
320  po::variables_map vm;
321  vm.insert(std::make_pair("forceoutput", po::variable_value()));
322  // Run field process.
323  for (int i = 0; i < m_modules.size(); ++i)
324  {
325  m_modules[i]->Process(vm);
326  cout.flush();
327  }
328 
329  // Empty m_f to save memory
330  ClearFields();
331 
332  if (dump != -1) // not final dump so rescale
333  {
334  for (int n = 0; n < m_outFields.size(); ++n)
335  {
336  Vmath::Smul(m_outFields[n].num_elements(),
337  1.0 / scale,
338  m_outFields[n],
339  1,
340  m_outFields[n],
341  1);
342  }
343  }
344 }
void CreateFields(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields)
std::vector< Array< OneD, NekDouble > > m_outFields
virtual SOLVER_UTILS_EXPORT std::string v_GetFileSuffix()
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
Definition: Vmath.cpp:213
virtual SOLVER_UTILS_EXPORT NekDouble v_GetScale()
double NekDouble
void Nektar::SolverUtils::FilterFieldConvert::v_FillVariablesName ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields)
protectedvirtual

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses.

Definition at line 228 of file FilterFieldConvert.cpp.

References m_variables.

Referenced by v_Initialise().

230 {
231  int nfield = pFields.num_elements();
232  m_variables.resize(pFields.num_elements());
233  for (int n = 0; n < nfield; ++n)
234  {
235  m_variables[n] = pFields[n]->GetSession()->GetVariable(n);
236  }
237 }
void Nektar::SolverUtils::FilterFieldConvert::v_Finalise ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
protectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 260 of file FilterFieldConvert.cpp.

References m_fieldMetaData, OutputField(), and v_PrepareOutput().

263 {
264  m_fieldMetaData["FinalTime"] = boost::lexical_cast<std::string>(time);
265  v_PrepareOutput(pFields, time);
266  OutputField(pFields);
267 }
void OutputField(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, int dump=-1)
LibUtilities::FieldMetaDataMap m_fieldMetaData
virtual SOLVER_UTILS_EXPORT void v_PrepareOutput(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
virtual SOLVER_UTILS_EXPORT std::string Nektar::SolverUtils::FilterFieldConvert::v_GetFileSuffix ( )
inlineprotectedvirtual

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses, Nektar::SolverUtils::FilterMovingAverage, and Nektar::SolverUtils::FilterAverageFields.

Definition at line 97 of file FilterFieldConvert.h.

Referenced by OutputField().

98  {
99  return "_fc";
100  }
virtual SOLVER_UTILS_EXPORT NekDouble Nektar::SolverUtils::FilterFieldConvert::v_GetScale ( )
inlineprotectedvirtual

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses, and Nektar::SolverUtils::FilterAverageFields.

Definition at line 93 of file FilterFieldConvert.h.

Referenced by OutputField(), and v_Initialise().

94  {
95  return 1.0;
96  }
void Nektar::SolverUtils::FilterFieldConvert::v_Initialise ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
protectedvirtual

Implements Nektar::SolverUtils::Filter.

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses.

Definition at line 158 of file FilterFieldConvert.cpp.

References Nektar::LibUtilities::FieldIO::CreateForFile(), m_f, m_fieldMetaData, m_numSamples, m_outFields, m_restartFile, Nektar::SolverUtils::Filter::m_session, m_variables, Vmath::Smul(), v_FillVariablesName(), and v_GetScale().

Referenced by Nektar::SolverUtils::FilterReynoldsStresses::v_Initialise().

161 {
162  v_FillVariablesName(pFields);
163 
164  int ncoeff = pFields[0]->GetNcoeffs();
165  // m_variables need to be filled by a derived class
166  m_outFields.resize(m_variables.size());
167 
168  for (int n = 0; n < m_variables.size(); ++n)
169  {
170  m_outFields[n] = Array<OneD, NekDouble>(ncoeff, 0.0);
171  }
172 
173  m_fieldMetaData["InitialTime"] = boost::lexical_cast<std::string>(time);
174 
175  // Fill some parameters of m_f
176  m_f->m_session = m_session;
177  m_f->m_graph = pFields[0]->GetGraph();
178  m_f->m_comm = m_f->m_session->GetComm();
179 
180  // Load restart file if necessary
181  if (m_restartFile != "")
182  {
183  // Load file
184  std::vector<LibUtilities::FieldDefinitionsSharedPtr> fieldDef;
185  std::vector<std::vector<NekDouble> > fieldData;
186  LibUtilities::FieldMetaDataMap fieldMetaData;
189  fld->Import(m_restartFile, fieldDef, fieldData, fieldMetaData);
190 
191  // Extract fields to output
192  for (int j = 0; j < m_variables.size(); ++j)
193  {
194  for (int i = 0; i < fieldData.size(); ++i)
195  {
196  pFields[0]->ExtractDataToCoeffs(
197  fieldDef[i],
198  fieldData[i],
199  m_variables[j],
200  m_outFields[j]);
201  }
202  }
203 
204  // Load information for numSamples
205  if (fieldMetaData.count("NumberOfFieldDumps"))
206  {
207  m_numSamples = atoi(fieldMetaData["NumberOfFieldDumps"].c_str());
208  }
209  else
210  {
211  m_numSamples = 1;
212  }
213 
214  // Divide by scale
215  NekDouble scale = v_GetScale();
216  for (int n = 0; n < m_outFields.size(); ++n)
217  {
218  Vmath::Smul(m_outFields[n].num_elements(),
219  1.0/scale,
220  m_outFields[n],
221  1,
222  m_outFields[n],
223  1);
224  }
225  }
226 }
LibUtilities::FieldMetaDataMap m_fieldMetaData
std::vector< Array< OneD, NekDouble > > m_outFields
std::map< std::string, std::string > FieldMetaDataMap
Definition: FieldIO.h:54
virtual SOLVER_UTILS_EXPORT void v_FillVariablesName(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields)
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
Definition: Vmath.cpp:213
virtual SOLVER_UTILS_EXPORT NekDouble v_GetScale()
boost::shared_ptr< FieldIO > FieldIOSharedPtr
Definition: FieldIO.h:309
double NekDouble
LibUtilities::SessionReaderSharedPtr m_session
Definition: Filter.h:84
static boost::shared_ptr< FieldIO > CreateForFile(const LibUtilities::SessionReaderSharedPtr session, const std::string &filename)
Construct a FieldIO object for a given input filename.
Definition: FieldIO.cpp:212
bool Nektar::SolverUtils::FilterFieldConvert::v_IsTimeDependent ( )
protectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 346 of file FilterFieldConvert.cpp.

347 {
348  return true;
349 }
void Nektar::SolverUtils::FilterFieldConvert::v_PrepareOutput ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
protectedvirtual

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses, Nektar::SolverUtils::FilterMovingAverage, and Nektar::SolverUtils::FilterAverageFields.

Definition at line 269 of file FilterFieldConvert.cpp.

References m_outFields, and Vmath::Vcopy().

Referenced by v_Finalise(), and v_Update().

272 {
273  for(int n = 0; n < pFields.num_elements(); ++n)
274  {
275  Vmath::Vcopy(m_outFields[n].num_elements(),
276  pFields[n]->GetCoeffs(),
277  1,
278  m_outFields[n],
279  1);
280  }
281 }
std::vector< Array< OneD, NekDouble > > m_outFields
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1061
virtual SOLVER_UTILS_EXPORT void Nektar::SolverUtils::FilterFieldConvert::v_ProcessSample ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
inlineprotectedvirtual

Reimplemented in Nektar::SolverUtils::FilterReynoldsStresses, Nektar::SolverUtils::FilterMovingAverage, and Nektar::SolverUtils::FilterAverageFields.

Definition at line 84 of file FilterFieldConvert.h.

Referenced by v_Update().

87  {
88  // Do nothing by default
89  }
void Nektar::SolverUtils::FilterFieldConvert::v_Update ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
protectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 239 of file FilterFieldConvert.cpp.

References m_fieldMetaData, m_index, m_numSamples, m_outputFrequency, m_outputIndex, m_sampleFrequency, OutputField(), v_PrepareOutput(), and v_ProcessSample().

242 {
243  m_index++;
244  if (m_index % m_sampleFrequency > 0)
245  {
246  return;
247  }
248 
249  m_numSamples++;
250  v_ProcessSample(pFields, time);
251 
252  if (m_index % m_outputFrequency == 0)
253  {
254  m_fieldMetaData["FinalTime"] = boost::lexical_cast<std::string>(time);
255  v_PrepareOutput(pFields, time);
256  OutputField(pFields, ++m_outputIndex);
257  }
258 }
void OutputField(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, int dump=-1)
LibUtilities::FieldMetaDataMap m_fieldMetaData
virtual SOLVER_UTILS_EXPORT void v_PrepareOutput(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
virtual SOLVER_UTILS_EXPORT void v_ProcessSample(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)

Friends And Related Function Documentation

friend class MemoryManager< FilterFieldConvert >
friend

Definition at line 52 of file FilterFieldConvert.h.

Member Data Documentation

std::string Nektar::SolverUtils::FilterFieldConvert::className
static
Initial value:

Name of the class.

Definition at line 65 of file FilterFieldConvert.h.

FieldSharedPtr Nektar::SolverUtils::FilterFieldConvert::m_f
protected
LibUtilities::FieldMetaDataMap Nektar::SolverUtils::FilterFieldConvert::m_fieldMetaData
protected
unsigned int Nektar::SolverUtils::FilterFieldConvert::m_index
protected

Definition at line 120 of file FilterFieldConvert.h.

Referenced by FilterFieldConvert(), and v_Update().

vector<ModuleSharedPtr> Nektar::SolverUtils::FilterFieldConvert::m_modules
protected

Definition at line 122 of file FilterFieldConvert.h.

Referenced by CreateModules(), and OutputField().

unsigned int Nektar::SolverUtils::FilterFieldConvert::m_numSamples
protected
std::vector<Array<OneD, NekDouble> > Nektar::SolverUtils::FilterFieldConvert::m_outFields
protected
std::string Nektar::SolverUtils::FilterFieldConvert::m_outputFile
protected

Definition at line 118 of file FilterFieldConvert.h.

Referenced by FilterFieldConvert(), and OutputField().

unsigned int Nektar::SolverUtils::FilterFieldConvert::m_outputFrequency
protected

Definition at line 116 of file FilterFieldConvert.h.

Referenced by FilterFieldConvert(), and v_Update().

unsigned int Nektar::SolverUtils::FilterFieldConvert::m_outputIndex
protected

Definition at line 121 of file FilterFieldConvert.h.

Referenced by FilterFieldConvert(), and v_Update().

std::string Nektar::SolverUtils::FilterFieldConvert::m_restartFile
protected

Definition at line 119 of file FilterFieldConvert.h.

Referenced by FilterFieldConvert(), and v_Initialise().

unsigned int Nektar::SolverUtils::FilterFieldConvert::m_sampleFrequency
protected
std::vector<std::string> Nektar::SolverUtils::FilterFieldConvert::m_variables
protected