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...
 
virtual std::string GetModuleName ()
 
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 (std::string key, std::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, std::set< int > &prismsDone, std::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...
 
std::map< std::string,
ConfigOption
m_config
 List of configuration values. 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.
virtual std::string Nektar::Utilities::ProcessInterpPointDataToFld::GetModuleName ( )
inlinevirtual

Implements Nektar::Utilities::Module.

Definition at line 66 of file ProcessInterpPointDataToFld.h.

67  {
68  return "ProcessInterpPointDataToFld";
69  }
void Nektar::Utilities::ProcessInterpPointDataToFld::PrintProgressbar ( const int  position,
const int  goal 
) const
inline

Definition at line 72 of file ProcessInterpPointDataToFld.h.

References Nektar::LibUtilities::PrintProgressbar().

Referenced by Process().

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