Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | List of all members
Nektar::FieldUtils::ProcessIsoContour Class Reference

This processing module extracts an isocontour. More...

#include <ProcessIsoContour.h>

Inheritance diagram for Nektar::FieldUtils::ProcessIsoContour:
[legend]

Public Member Functions

 ProcessIsoContour (FieldSharedPtr f)
 
 ~ProcessIsoContour () override
 
- Public Member Functions inherited from Nektar::FieldUtils::ProcessModule
 ProcessModule ()
 
 ProcessModule (FieldSharedPtr p_f)
 
- Public Member Functions inherited from Nektar::FieldUtils::Module
FIELD_UTILS_EXPORT Module (FieldSharedPtr p_f)
 
virtual ~Module ()=default
 
void Process (po::variables_map &vm)
 
std::string GetModuleName ()
 
std::string GetModuleDescription ()
 
const ConfigOptionGetConfigOption (const std::string &key) const
 
ModulePriority GetModulePriority ()
 
std::vector< ModuleKeyGetModulePrerequisites ()
 
FIELD_UTILS_EXPORT void RegisterConfig (std::string key, std::string value="")
 Register a configuration option with a module. More...
 
FIELD_UTILS_EXPORT void PrintConfig ()
 Print out all configuration options for a module. More...
 
FIELD_UTILS_EXPORT void SetDefaults ()
 Sets default configuration options for those which have not been set. More...
 
FIELD_UTILS_EXPORT void AddFile (std::string fileType, std::string fileName)
 
FIELD_UTILS_EXPORT void EvaluateTriFieldAtEquiSpacedPts (LocalRegions::ExpansionSharedPtr &exp, const Array< OneD, const NekDouble > &infield, Array< OneD, NekDouble > &outfield)
 

Static Public Member Functions

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

Static Public Attributes

static ModuleKey className
 

Protected Member Functions

void v_Process (po::variables_map &vm) override
 Write mesh to output file. More...
 
std::string v_GetModuleName () override
 
std::string v_GetModuleDescription () override
 
ModulePriority v_GetModulePriority () override
 
 ProcessIsoContour ()
 
void ResetFieldPts (std::vector< IsoSharedPtr > &iso)
 
void SetupIsoFromFieldPts (std::vector< IsoSharedPtr > &isovec)
 
- Protected Member Functions inherited from Nektar::FieldUtils::Module
 Module ()
 
virtual void v_Process (po::variables_map &vm)
 
virtual std::string v_GetModuleName ()
 
virtual std::string v_GetModuleDescription ()
 
virtual ModulePriority v_GetModulePriority ()
 
virtual std::vector< ModuleKeyv_GetModulePrerequisites ()
 

Private Member Functions

std::vector< IsoSharedPtrExtractContour (const int fieldid, const NekDouble val)
 

Additional Inherited Members

- Public Attributes inherited from Nektar::FieldUtils::Module
FieldSharedPtr m_f
 Field object. More...
 
- Protected Attributes inherited from Nektar::FieldUtils::Module
std::map< std::string, ConfigOptionm_config
 List of configuration values. More...
 
std::set< std::string > m_allowedFiles
 List of allowed file formats. More...
 

Detailed Description

This processing module extracts an isocontour.

Definition at line 223 of file ProcessIsoContour.h.

Constructor & Destructor Documentation

◆ ProcessIsoContour() [1/2]

Nektar::FieldUtils::ProcessIsoContour::ProcessIsoContour ( FieldSharedPtr  f)

Definition at line 64 of file ProcessIsoContour.cpp.

64 : ProcessModule(f)
65{
66
67 m_config["fieldstr"] =
68 ConfigOption(false, "NotSet", "string of isocontour to be extracted");
69 m_config["fieldname"] = ConfigOption(false, "isocon",
70 "name for isocontour if fieldstr "
71 "specified, default is isocon");
72
73 m_config["fieldid"] = ConfigOption(false, "NotSet", "field id to extract");
74
75 m_config["fieldvalue"] =
76 ConfigOption(false, "NotSet", "field value to extract");
77
78 m_config["globalcondense"] =
79 ConfigOption(true, "0",
80 "Globally condense contour to unique "
81 "values");
82
83 m_config["smooth"] = ConfigOption(true, "0",
84 "Smooth isocontour (might require "
85 "globalcondense)");
86
87 m_config["smoothiter"] =
88 ConfigOption(false, "100",
89 "Number of smoothing cycle, default = "
90 "100");
91
92 m_config["smoothposdiffusion"] =
93 ConfigOption(false, "0.5",
94 "Postive diffusion coefficient "
95 "(0 < lambda < 1), default = 0.5");
96
97 m_config["smoothnegdiffusion"] =
98 ConfigOption(false, "0.505",
99 "Negative diffusion coefficient "
100 "(0 < mu < 1), default = 0.505");
101
102 m_config["removesmallcontour"] = ConfigOption(
103 false, "0",
104 "Remove contours with less than specified number of triangles."
105 "Only valid with GlobalCondense or Smooth options.");
106}
std::map< std::string, ConfigOption > m_config
List of configuration values.
Definition: Module.h:272

References Nektar::FieldUtils::Module::m_config.

◆ ~ProcessIsoContour()

Nektar::FieldUtils::ProcessIsoContour::~ProcessIsoContour ( void  )
override

Definition at line 108 of file ProcessIsoContour.cpp.

109{
110}

◆ ProcessIsoContour() [2/2]

Nektar::FieldUtils::ProcessIsoContour::ProcessIsoContour ( )
inlineprotected

Definition at line 256 of file ProcessIsoContour.h.

256{};

Member Function Documentation

◆ create()

static std::shared_ptr< Module > Nektar::FieldUtils::ProcessIsoContour::create ( FieldSharedPtr  f)
inlinestatic

Creates an instance of this class.

Definition at line 227 of file ProcessIsoContour.h.

228 {
230 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.

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

◆ ExtractContour()

vector< IsoSharedPtr > Nektar::FieldUtils::ProcessIsoContour::ExtractContour ( const int  fieldid,
const NekDouble  val 
)
private

Definition at line 369 of file ProcessIsoContour.cpp.

371{
372 vector<IsoSharedPtr> returnval;
373
374 int coordim = m_f->m_fieldPts->GetDim();
375 int nfields = m_f->m_fieldPts->GetNFields() + coordim;
376
377 ASSERTL0(m_f->m_fieldPts->GetPtsType() == LibUtilities::ePtsTetBlock,
378 "This methods is currently only set up for 3D fields");
379 ASSERTL1(coordim + fieldid < nfields,
380 "field id is larger than number contained in FieldPts");
381 Array<OneD, Array<OneD, NekDouble>> fields;
382 m_f->m_fieldPts->GetPts(fields);
383
384 Array<OneD, NekDouble> c = fields[coordim + fieldid];
385
386 int i, j, k, ii, jj, kk, r, s, n, counter, boolean;
387 Array<OneD, Array<OneD, NekDouble>> intfields(nfields);
388 intfields[0] = Array<OneD, NekDouble>(5 * nfields);
389 for (i = 1; i < nfields; ++i)
390 {
391 intfields[i] = intfields[i - 1] + 5;
392 }
393 Array<OneD, NekDouble> cx = intfields[0];
394 Array<OneD, NekDouble> cy = intfields[1];
395 Array<OneD, NekDouble> cz = intfields[2];
396
397 vector<Array<OneD, int>> ptsConn;
398 m_f->m_fieldPts->GetConnectivity(ptsConn);
399
400 for (int zone = 0; zone < ptsConn.size(); ++zone)
401 {
402 IsoSharedPtr iso;
403
404 iso = MemoryManager<Iso>::AllocateSharedPtr(nfields - 3);
405
406 int nelmt = ptsConn[zone].size() / (coordim + 1);
407
408 Array<OneD, int> conn = ptsConn[zone];
409
410 for (n = 0, i = 0; i < nelmt; ++i)
411 {
412 // check to see if val is between vertex values
413 if (!(((c[conn[i * 4]] > val) && (c[conn[i * 4 + 1]] > val) &&
414 (c[conn[i * 4 + 2]] > val) && (c[conn[i * 4 + 3]] > val)) ||
415 ((c[conn[i * 4]] < val) && (c[conn[i * 4 + 1]] < val) &&
416 (c[conn[i * 4 + 2]] < val) && (c[conn[i * 4 + 3]] < val))))
417 {
418
419 // loop over all edges and interpolate if
420 // contour is between vertex values
421 for (counter = 0, j = 0; j <= 2; j++)
422 {
423 for (k = j + 1; k <= 3; k++)
424 {
425 if (((c[conn[i * 4 + j]] >= val) &&
426 (val >= c[conn[i * 4 + k]])) ||
427 ((c[conn[i * 4 + j]] <= val) &&
428 (val <= c[conn[i * 4 + k]])))
429 {
430 // linear interpolation of fields
431 // (and coords).
432 NekDouble cj = c[conn[i * 4 + j]];
433 NekDouble ck = c[conn[i * 4 + k]];
434 NekDouble factor = (val - cj) / (ck - cj);
435
436 if (fabs(cj - ck) > 1e-12)
437 {
438 // interpolate coordinates and fields
439 for (int f = 0; f < nfields; ++f)
440 {
441 if (counter == 5)
442 {
443 ASSERTL0(false, "Counter is 5");
444 }
445 intfields[f][counter] =
446 fields[f][conn[4 * i + j]] +
447 factor * (fields[f][conn[4 * i + k]] -
448 fields[f][conn[4 * i + j]]);
449 }
450 ++counter;
451 }
452 }
453 }
454 }
455
456 switch (counter)
457 {
458 case 3:
459 n += 1;
460 iso->ResizeFields(3 * n);
461
462 for (j = 0; j < 3; ++j)
463 {
464 iso->SetFields(3 * (n - 1) + j, intfields, j);
465 }
466 break;
467 case 4:
468 n += 2;
469 iso->ResizeFields(3 * n);
470
471 for (j = 0; j < 3; ++j)
472 {
473 iso->SetFields(3 * (n - 2) + j, intfields, j);
474 iso->SetFields(3 * (n - 1) + j, intfields, j + 1);
475 }
476 break;
477 case 5:
478 n += 1;
479 iso->ResizeFields(3 * n);
480
481 boolean = 0;
482 for (ii = 0; ii <= 2; ii++)
483 {
484 for (jj = ii + 1; jj <= 3; jj++)
485 {
486 for (kk = jj + 1; kk <= 4; kk++)
487 {
488 if ((((cx[ii] - cx[jj]) == 0.0) &&
489 ((cy[ii] - cy[jj]) == 0.0) &&
490 ((cz[ii] - cz[jj]) == 0.0)) &&
491 (((cx[ii] - cx[kk]) == 0.0) &&
492 ((cy[ii] - cy[kk]) == 0.0) &&
493 ((cz[ii] - cz[kk]) == 0.0)))
494 {
495 boolean += 1;
496 ThreeSimilar(ii, jj, kk, r, s);
497
498 iso->SetFields(3 * (n - 1), intfields,
499 ii);
500 iso->SetFields(3 * (n - 1) + 1,
501 intfields, r);
502 iso->SetFields(3 * (n - 1) + 2,
503 intfields, s);
504 }
505 else
506 {
507 boolean += 0;
508 }
509 }
510 }
511 }
512
513 if (boolean == 0)
514 {
515 TwoPairs(cx, cy, cz, r);
516
517 iso->SetFields(3 * (n - 1), intfields, 0);
518 iso->SetFields(3 * (n - 1) + 1, intfields, 2);
519 iso->SetFields(3 * (n - 1) + 2, intfields, r);
520 }
521 break;
522 }
523 }
524 }
525
526 if (n)
527 {
528 iso->SetNTris(n);
529
530 // condense the information in this elemental extraction.
531 iso->Condense();
532
533 returnval.push_back(iso);
534 }
535 }
536
537 return returnval;
538}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:242
FieldSharedPtr m_f
Field object.
Definition: Module.h:239
void ThreeSimilar(const int i, const int j, const int k, int &pr, int &ps)
void TwoPairs(Array< OneD, NekDouble > &cx, Array< OneD, NekDouble > &cy, Array< OneD, NekDouble > &cz, int &pr)
std::shared_ptr< Iso > IsoSharedPtr
double NekDouble

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, ASSERTL1, Nektar::LibUtilities::ePtsTetBlock, Nektar::FieldUtils::Module::m_f, Nektar::FieldUtils::ThreeSimilar(), and Nektar::FieldUtils::TwoPairs().

Referenced by v_Process().

◆ ResetFieldPts()

void Nektar::FieldUtils::ProcessIsoContour::ResetFieldPts ( std::vector< IsoSharedPtr > &  iso)
protected

Definition at line 541 of file ProcessIsoContour.cpp.

542{
543 int nfields = m_f->m_fieldPts->GetNFields() + m_f->m_fieldPts->GetDim();
544
545 // set output to triangle block.
546 m_f->m_fieldPts->SetPtsType(LibUtilities::ePtsTriBlock);
547
548 Array<OneD, Array<OneD, NekDouble>> newfields(nfields);
549
550 // count up number of points
551 int npts = 0;
552 for (int i = 0; i < iso.size(); ++i)
553 {
554 npts += iso[i]->GetNVert();
555 }
556
557 // set up coordinate in new field
558 newfields[0] = Array<OneD, NekDouble>(npts);
559 newfields[1] = Array<OneD, NekDouble>(npts);
560 newfields[2] = Array<OneD, NekDouble>(npts);
561
562 int cnt = 0;
563 for (int i = 0; i < iso.size(); ++i)
564 {
565 for (int j = 0; j < iso[i]->GetNVert(); ++j, ++cnt)
566 {
567 newfields[0][cnt] = iso[i]->GetX(j);
568 newfields[1][cnt] = iso[i]->GetY(j);
569 newfields[2][cnt] = iso[i]->GetZ(j);
570 }
571 }
572
573 // set up fields
574 for (int f = 0; f < nfields - 3; ++f)
575 {
576 newfields[f + 3] = Array<OneD, NekDouble>(npts);
577
578 cnt = 0;
579 for (int i = 0; i < iso.size(); ++i)
580 {
581 for (int j = 0; j < iso[i]->GetNVert(); ++j, ++cnt)
582 {
583 newfields[f + 3][cnt] = iso[i]->GetFields(f, j);
584 }
585 }
586 }
587
588 m_f->m_fieldPts->SetPts(newfields);
589
590 // set up connectivity data.
591 vector<Array<OneD, int>> ptsConn;
592 m_f->m_fieldPts->GetConnectivity(ptsConn);
593 cnt = 0;
594 ptsConn.clear();
595 for (int i = 0; i < iso.size(); ++i)
596 {
597 int ntris = iso[i]->GetNTris();
598 Array<OneD, int> conn(ntris * 3);
599
600 for (int j = 0; j < 3 * ntris; ++j)
601 {
602 conn[j] = cnt + iso[i]->GetVId(j);
603 }
604 ptsConn.push_back(conn);
605 cnt += iso[i]->GetNVert();
606 }
607 m_f->m_fieldPts->SetConnectivity(ptsConn);
608}

References Nektar::LibUtilities::ePtsTriBlock, and Nektar::FieldUtils::Module::m_f.

Referenced by v_Process().

◆ SetupIsoFromFieldPts()

void Nektar::FieldUtils::ProcessIsoContour::SetupIsoFromFieldPts ( std::vector< IsoSharedPtr > &  isovec)
protected

Definition at line 611 of file ProcessIsoContour.cpp.

612{
613 ASSERTL0(m_f->m_fieldPts->GetPtsType() == LibUtilities::ePtsTriBlock,
614 "Assume input is from ePtsTriBlock");
615
616 // get information from PtsField
617 int dim = m_f->m_fieldPts->GetDim();
618 int nfields = m_f->m_fieldPts->GetNFields() + dim;
619 Array<OneD, Array<OneD, NekDouble>> fieldpts;
620 m_f->m_fieldPts->GetPts(fieldpts);
621 vector<Array<OneD, int>> ptsConn;
622 m_f->m_fieldPts->GetConnectivity(ptsConn);
623
624 int cnt = 0;
625 for (int c = 0; c < ptsConn.size(); ++c)
626 {
627 // set up single iso with all the information from PtsField
629
630 int nelmt = 0;
631 nelmt = ptsConn[c].size() / 3;
632
633 iso->SetNTris(nelmt);
634 iso->ResizeVId(3 * nelmt);
635
636 // fill in connectivity values.
637 int nvert = 0;
638 for (int i = 0; i < ptsConn[c].size(); ++i)
639 {
640 int cid = ptsConn[c][i] - cnt;
641 iso->SetVId(i, cid);
642 nvert = max(cid, nvert);
643 }
644 nvert++;
645
646 iso->SetNVert(nvert);
647 iso->ResizeFields(nvert);
648
649 // fill in points values (including coordinates)
650 for (int i = 0; i < nvert; ++i)
651 {
652 iso->SetFields(i, fieldpts, i + cnt);
653 }
654 cnt += nvert;
655 isovec.push_back(iso);
656 }
657}

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::LibUtilities::ePtsTriBlock, and Nektar::FieldUtils::Module::m_f.

Referenced by v_Process().

◆ v_GetModuleDescription()

std::string Nektar::FieldUtils::ProcessIsoContour::v_GetModuleDescription ( )
inlineoverrideprotectedvirtual

Reimplemented from Nektar::FieldUtils::Module.

Definition at line 245 of file ProcessIsoContour.h.

246 {
247 return "Extracting contour";
248 }

◆ v_GetModuleName()

std::string Nektar::FieldUtils::ProcessIsoContour::v_GetModuleName ( )
inlineoverrideprotectedvirtual

Reimplemented from Nektar::FieldUtils::Module.

Definition at line 240 of file ProcessIsoContour.h.

241 {
242 return "ProcessIsoContour";
243 }

◆ v_GetModulePriority()

ModulePriority Nektar::FieldUtils::ProcessIsoContour::v_GetModulePriority ( )
inlineoverrideprotectedvirtual

Reimplemented from Nektar::FieldUtils::Module.

Definition at line 250 of file ProcessIsoContour.h.

251 {
252 return eModifyPts;
253 }

References Nektar::FieldUtils::eModifyPts.

◆ v_Process()

void Nektar::FieldUtils::ProcessIsoContour::v_Process ( po::variables_map &  vm)
overrideprotectedvirtual

Write mesh to output file.

Reimplemented from Nektar::FieldUtils::Module.

Definition at line 112 of file ProcessIsoContour.cpp.

113{
114 m_f->SetUpExp(vm);
115
116 bool verbose = (m_f->m_verbose && m_f->m_comm->TreatAsRankZero());
117
118 vector<IsoSharedPtr> iso;
119
120 ASSERTL0(m_f->m_fieldPts.get(), "Should have m_fieldPts for IsoContour.");
121
122 if (m_f->m_fieldPts->GetPtsType() == LibUtilities::ePtsTriBlock)
123 {
124 // assume we have read .dat file to directly input dat file.
125 if (verbose)
126 {
127 cout << "\t Process read iso from Field Pts" << endl;
128 }
129
131 }
132 else if (m_f->m_fieldPts->GetPtsType() == LibUtilities::ePtsTetBlock)
133 {
134 if (m_config["fieldstr"].m_beenSet)
135 {
136 string fieldName = m_config["fieldname"].as<string>();
137 m_f->m_variables.push_back(fieldName);
138 }
139
140 if (m_f->m_fieldPts->GetNpoints() == 0)
141 {
142 return;
143 }
144
145 int fieldid;
146 NekDouble value;
147
148 if (m_config["fieldstr"].m_beenSet) // generate field of interest
149 {
150 fieldid = m_f->m_fieldPts->GetNFields();
151
152 Array<OneD, NekDouble> pts(m_f->m_fieldPts->GetNpoints());
153
154 // evaluate new function
155 LibUtilities::Interpreter strEval;
156 string varstr = "x y z";
157 vector<Array<OneD, const NekDouble>> interpfields;
158
159 for (int i = 0; i < m_f->m_fieldPts->GetDim(); ++i)
160 {
161 interpfields.push_back(m_f->m_fieldPts->GetPts(i));
162 }
163 for (int i = 0; i < m_f->m_fieldPts->GetNFields(); ++i)
164 {
165 varstr += " " + m_f->m_fieldPts->GetFieldName(i);
166 interpfields.push_back(m_f->m_fieldPts->GetPts(i + 3));
167 }
168
169 int ExprId = -1;
170 std::string str = m_config["fieldstr"].as<string>();
171 ExprId = strEval.DefineFunction(varstr.c_str(), str);
172
173 strEval.Evaluate(ExprId, interpfields, pts);
174
175 // set up field name if provided otherwise called "isocon" from
176 // default
177 string fieldName = m_config["fieldname"].as<string>();
178
179 m_f->m_fieldPts->AddField(pts, fieldName);
180 }
181 else
182 {
183 ASSERTL0(m_config["fieldid"].as<string>() != "NotSet",
184 "fieldid must be specified");
185 fieldid = m_config["fieldid"].as<int>();
186 }
187
188 ASSERTL0(m_config["fieldvalue"].as<string>() != "NotSet",
189 "fieldvalue must be specified");
190 value = m_config["fieldvalue"].as<NekDouble>();
191
192 iso = ExtractContour(fieldid, value);
193 }
194 else
195 {
196 ASSERTL0(false, "PtsType not supported for isocontour.");
197 }
198
199 // Process isocontour
200 bool smoothing = m_config["smooth"].as<bool>();
201 bool globalcondense = m_config["globalcondense"].as<bool>();
202 if (globalcondense)
203 {
204 if (verbose)
205 {
206 cout << "\t Process global condense ..." << endl;
207 }
208 int nfields = m_f->m_fieldPts->GetNFields() + m_f->m_fieldPts->GetDim();
210
211 g_iso->GlobalCondense(iso, verbose);
212
213 iso.clear();
214 iso.push_back(g_iso);
215 }
216
217 if (smoothing)
218 {
219 LibUtilities::Timer timersm;
220
221 if (verbose)
222 {
223 cout << "\t Process Contour smoothing ..." << endl;
224 timersm.Start();
225 }
226
227 int niter = m_config["smoothiter"].as<int>();
228 NekDouble lambda = m_config["smoothposdiffusion"].as<NekDouble>();
229 NekDouble mu = m_config["smoothnegdiffusion"].as<NekDouble>();
230 for (int i = 0; i < iso.size(); ++i)
231 {
232 iso[i]->Smooth(niter, lambda, -mu);
233 }
234
235 if (verbose)
236 {
237 timersm.Stop();
238 NekDouble cpuTime = timersm.TimePerTest(1);
239
240 stringstream ss;
241 ss << cpuTime << "s";
242 cout << "\t Process smooth CPU Time: " << setw(8) << left
243 << ss.str() << endl;
244 cpuTime = 0.0;
245 }
246 }
247
248 int mincontour = 0;
249 if ((mincontour = m_config["removesmallcontour"].as<int>()))
250 {
251 vector<IsoSharedPtr> new_iso;
252
253 if (verbose)
254 {
255 cout << "\t Identifying separate regions [." << flush;
256 }
257 for (int i = 0; i < iso.size(); ++i)
258 {
259 iso[i]->SeparateRegions(new_iso, mincontour, m_f->m_verbose);
260 }
261
262 if (verbose)
263 {
264 cout << "]" << endl << flush;
265 }
266
267 // reset iso to new_iso;
268 iso = new_iso;
269 }
270
271 ResetFieldPts(iso);
272}
std::vector< IsoSharedPtr > ExtractContour(const int fieldid, const NekDouble val)
void SetupIsoFromFieldPts(std::vector< IsoSharedPtr > &isovec)
void ResetFieldPts(std::vector< IsoSharedPtr > &iso)

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::LibUtilities::Interpreter::DefineFunction(), Nektar::LibUtilities::ePtsTetBlock, Nektar::LibUtilities::ePtsTriBlock, Nektar::LibUtilities::Interpreter::Evaluate(), ExtractContour(), Nektar::FieldUtils::Module::m_config, Nektar::FieldUtils::Module::m_f, ResetFieldPts(), SetupIsoFromFieldPts(), Nektar::LibUtilities::Timer::Start(), Nektar::LibUtilities::Timer::Stop(), and Nektar::LibUtilities::Timer::TimePerTest().

Member Data Documentation

◆ className

ModuleKey Nektar::FieldUtils::ProcessIsoContour::className
static
Initial value:
=
"Extract an isocontour of fieldid variable and at "
"value fieldvalue, Optionally fieldstr can be "
"specified for a string defiition or smooth for "
"smoothing")
static std::shared_ptr< Module > create(FieldSharedPtr f)
Creates an instance of this class.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::pair< ModuleType, std::string > ModuleKey
Definition: Module.h:180
ModuleFactory & GetModuleFactory()
Definition: Module.cpp:47

Definition at line 231 of file ProcessIsoContour.h.