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

This processing module interpolates one field to another. More...

#include <ProcessInterpPointDataToFld.h>

Inheritance diagram for Nektar::Utilities::ProcessInterpPointDataToFld:
Inheritance graph
[legend]
Collaboration diagram for Nektar::Utilities::ProcessInterpPointDataToFld:
Collaboration graph
[legend]

Public Member Functions

 ProcessInterpPointDataToFld (FieldSharedPtr f)
 
virtual ~ProcessInterpPointDataToFld ()
 
virtual void Process (po::variables_map &vm)
 Write mesh to output file. More...
 
void PrintProgressbar (const int position, const int goal) const
 
- Public Member Functions inherited from Nektar::Utilities::ProcessModule
 ProcessModule ()
 
 ProcessModule (FieldSharedPtr p_f)
 
 ProcessModule (MeshSharedPtr p_m)
 
- Public Member Functions inherited from Nektar::Utilities::Module
 Module (FieldSharedPtr p_f)
 
void RegisterConfig (string key, string value)
 Register a configuration option with a module. More...
 
void PrintConfig ()
 Print out all configuration options for a module. More...
 
void SetDefaults ()
 Sets default configuration options for those which have not been set. More...
 
bool GetRequireEquiSpaced (void)
 
void SetRequireEquiSpaced (bool pVal)
 
void EvaluateTriFieldAtEquiSpacedPts (LocalRegions::ExpansionSharedPtr &exp, const Array< OneD, const NekDouble > &infield, Array< OneD, NekDouble > &outfield)
 
 Module (MeshSharedPtr p_m)
 
virtual void Process ()=0
 
void RegisterConfig (string key, string value)
 
void PrintConfig ()
 
void SetDefaults ()
 
MeshSharedPtr GetMesh ()
 
virtual void ProcessVertices ()
 Extract element vertices. More...
 
virtual void ProcessEdges (bool ReprocessEdges=true)
 Extract element edges. More...
 
virtual void ProcessFaces (bool ReprocessFaces=true)
 Extract element faces. More...
 
virtual void ProcessElements ()
 Generate element IDs. More...
 
virtual void ProcessComposites ()
 Generate composites. More...
 
virtual void ClearElementLinks ()
 

Static Public Member Functions

static boost::shared_ptr< Modulecreate (FieldSharedPtr f)
 Creates an instance of this class. More...
 

Static Public Attributes

static ModuleKey className
 

Additional Inherited Members

- Protected Member Functions inherited from Nektar::Utilities::Module
 Module ()
 
void ReorderPrisms (PerMap &perFaces)
 Reorder node IDs so that prisms and tetrahedra are aligned correctly. More...
 
void PrismLines (int prism, PerMap &perFaces, set< int > &prismsDone, vector< ElementSharedPtr > &line)
 
- Protected Attributes inherited from Nektar::Utilities::Module
FieldSharedPtr m_f
 Field object. More...
 
map< string, ConfigOptionm_config
 List of configuration values. More...
 
bool m_requireEquiSpaced
 
MeshSharedPtr m_mesh
 Mesh object. More...
 

Detailed Description

This processing module interpolates one field to another.

Definition at line 51 of file ProcessInterpPointDataToFld.h.

Constructor & Destructor Documentation

Nektar::Utilities::ProcessInterpPointDataToFld::ProcessInterpPointDataToFld ( FieldSharedPtr  f)

Definition at line 59 of file ProcessInterpPointDataToFld.cpp.

References Nektar::Utilities::Module::m_config.

60  : ProcessModule(f)
61 {
62 
63  m_config["interpcoord"] = ConfigOption(false, "-1",
64  "coordinate id to use for interpolation");
65 
66 }
map< string, ConfigOption > m_config
List of configuration values.
Nektar::Utilities::ProcessInterpPointDataToFld::~ProcessInterpPointDataToFld ( )
virtual

Definition at line 68 of file ProcessInterpPointDataToFld.cpp.

69 {
70 }

Member Function Documentation

static boost::shared_ptr<Module> Nektar::Utilities::ProcessInterpPointDataToFld::create ( FieldSharedPtr  f)
inlinestatic

Creates an instance of this class.

Definition at line 55 of file ProcessInterpPointDataToFld.h.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

55  {
57  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
void Nektar::Utilities::ProcessInterpPointDataToFld::PrintProgressbar ( const int  position,
const int  goal 
) const
inline

Definition at line 66 of file ProcessInterpPointDataToFld.h.

References Nektar::LibUtilities::PrintProgressbar().

Referenced by Process().

67  {
68  LibUtilities::PrintProgressbar(position, goal, "Interpolating");
69  }
void PrintProgressbar(const int position, const int goal, const string message)
Prints a progressbar.
Definition: Progressbar.hpp:70
void Nektar::Utilities::ProcessInterpPointDataToFld::Process ( po::variables_map &  vm)
virtual

Write mesh to output file.

Implements Nektar::Utilities::Module.

Definition at line 72 of file ProcessInterpPointDataToFld.cpp.

References ASSERTL0, Nektar::Utilities::Module::m_config, Nektar::Utilities::Module::m_f, Nektar::LibUtilities::NullPtsField, and PrintProgressbar().

73 {
74  int i,j;
75 
76  // Check for command line point specification if no .pts file specified
78  "No input points found");
79 
80  int nFields = m_f->m_fieldPts->GetNFields();
81  ASSERTL0(nFields > 0,
82  "No field values provided in input");
83 
84  // assume one field is already defined from input file.
85  m_f->m_exp.resize(nFields+1);
86  for(i = 1; i < nFields; ++i)
87  {
88  m_f->m_exp[i] = m_f->AppendExpList(0);
89  }
90 
91  int totpoints = m_f->m_exp[0]->GetTotPoints();
93 
94  coords[0] = Array<OneD,NekDouble>(totpoints);
95  coords[1] = Array<OneD,NekDouble>(totpoints);
96  coords[2] = Array<OneD,NekDouble>(totpoints);
97 
98  m_f->m_exp[0]->GetCoords(coords[0],coords[1],coords[2]);
99 
100  int coord_id = m_config["interpcoord"].as<int>();
101  ASSERTL0(coord_id <= m_f->m_fieldPts->GetDim() - 1,
102  "interpcoord is bigger than the Pts files dimension");
103 
104  // interpolate points and transform
105  Array<OneD, Array<OneD, NekDouble> > intFields(nFields);
106  if (m_f->m_session->GetComm()->GetRank() == 0)
107  {
108  m_f->m_fieldPts->setProgressCallback(
110  cout << "Interpolating: ";
111  }
112  m_f->m_fieldPts->Interpolate(coords, intFields, coord_id);
113 
114  for(i = 0; i < totpoints; ++i)
115  {
116  for(j = 0; j < nFields; ++j)
117  {
118  m_f->m_exp[j]->SetPhys(i, intFields[j][i]);
119  }
120  }
121 
122  if(m_f->m_session->GetComm()->GetRank() == 0)
123  {
124  cout << endl;
125  }
126 
127  // forward transform fields
128  for(i = 0; i < nFields; ++i)
129  {
130  m_f->m_exp[i]->FwdTrans_IterPerExp(m_f->m_exp[i]->GetPhys(),
131  m_f->m_exp[i]->UpdateCoeffs());
132  }
133 
134 
135  // set up output fld file.
136  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef
137  = m_f->m_exp[0]->GetFieldDefinitions();
138  std::vector<std::vector<NekDouble> > FieldData(FieldDef.size());
139 
140  for (j = 0; j < nFields; ++j)
141  {
142  for (i = 0; i < FieldDef.size(); ++i)
143  {
144  FieldDef[i]->m_fields.push_back(m_f->m_fieldPts->GetFieldName(j));
145 
146  m_f->m_exp[j]->AppendFieldData(FieldDef[i], FieldData[i]);
147  }
148  }
149 
150  m_f->m_fielddef = FieldDef;
151  m_f->m_data = FieldData;
152 
153 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:161
map< string, ConfigOption > m_config
List of configuration values.
FieldSharedPtr m_f
Field object.
static PtsFieldSharedPtr NullPtsField
Definition: PtsField.h:264
void PrintProgressbar(const int position, const int goal) const

Member Data Documentation

ModuleKey Nektar::Utilities::ProcessInterpPointDataToFld::className
static
Initial value:
=
ModuleKey(eProcessModule, "interppointdatatofld"),
"Interpolates given discrete data using a finite difference "
"approximation to a fld file given a xml file")

Definition at line 58 of file ProcessInterpPointDataToFld.h.