Skip to content

Commit 91e1989

Browse files
authored
Merge pull request #38 from vijaysm/vijaysm/minor-api-updates
Updating and simplifying the API for Initialize dimensions
2 parents 7e4f5e2 + cf111a4 commit 91e1989

File tree

3 files changed

+38
-140
lines changed

3 files changed

+38
-140
lines changed

src/GenerateOfflineMap.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,10 +211,16 @@ try {
211211
// Initialize dimension information from file
212212
if (!mapRemap.AreDimensionsInitialized()) {
213213
AnnounceStartBlock("Initializing dimensions of map");
214+
std::vector<std::string> srcDimNames, tgtDimNames;
215+
std::vector<int> srcDimSizes, tgtDimSizes;
214216
Announce("Input mesh");
215-
mapRemap.InitializeSourceDimensionsFromMesh(meshInput);
217+
srcDimNames.push_back("num_elem");
218+
srcDimSizes.push_back(meshInput.faces.size());
219+
mapRemap.InitializeSourceDimensions(srcDimNames, srcDimSizes);
216220
Announce("Output mesh");
217-
mapRemap.InitializeTargetDimensionsFromMesh(meshOutput);
221+
tgtDimNames.push_back("num_elem");
222+
tgtDimSizes.push_back(meshOutput.faces.size());
223+
mapRemap.InitializeTargetDimensions(tgtDimNames, tgtDimSizes);
218224
AnnounceEndBlock(NULL);
219225
}
220226

src/OfflineMap.cpp

Lines changed: 24 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -183,64 +183,19 @@ void OfflineMap::InitializeSourceDimensionsFromFile(
183183

184184
///////////////////////////////////////////////////////////////////////////////
185185

186-
void OfflineMap::InitializeSourceDimensionsFromMesh(
187-
const Mesh & sourceMesh
186+
void OfflineMap::InitializeSourceDimensions(
187+
const std::vector<std::string>& p_srcDimNames,
188+
const std::vector<int>& p_srcDimSizes
188189
) {
189-
// Push rectilinear attributes into array
190-
const int nElems = sourceMesh.faces.size();
191-
switch(sourceMesh.type) {
192-
case Mesh::MeshType_CubedSphere:
193-
m_vecSourceDimSizes.resize(1);
194-
m_vecSourceDimNames.resize(1);
195-
m_vecSourceDimSizes[0] = nElems;
196-
m_vecSourceDimNames[0] = "num_elem";
197-
break;
198-
case Mesh::MeshType_RLL:
199-
_EXCEPTIONT("MeshType_RLL not implemented");
200-
m_vecSourceDimSizes.resize(2);
201-
m_vecSourceDimNames.resize(2);
202-
m_vecSourceDimSizes[0] = std::sqrt(nElems/2);
203-
m_vecSourceDimSizes[1] = 2*m_vecSourceDimSizes[0];
204-
m_vecSourceDimNames[0] = "lat";
205-
m_vecSourceDimNames[1] = "lon";
206-
break;
207-
case Mesh::MeshType_IcosaHedral:
208-
m_vecSourceDimSizes.resize(1);
209-
m_vecSourceDimNames.resize(1);
210-
m_vecSourceDimSizes[0] = nElems;
211-
m_vecSourceDimNames[0] = "num_elem";
212-
break;
213-
default:
214-
m_vecSourceDimSizes.resize(1);
215-
m_vecSourceDimNames.resize(1);
216-
m_vecSourceDimSizes[0] = 0;
217-
m_vecSourceDimNames[0] = "";
218-
break;
219-
}
220-
return;
221-
}
222-
223-
///////////////////////////////////////////////////////////////////////////////
224-
225-
void OfflineMap::InitializeSourceDimensionsFromMesh(
226-
const int nelemx, const int nelemy
227-
) {
228-
// Push rectilinear attributes into array
229-
if (nelemy == 0) {
230-
m_vecSourceDimSizes.resize(1);
231-
m_vecSourceDimNames.resize(1);
232-
m_vecSourceDimSizes[0] = nelemx;
233-
m_vecSourceDimNames[0] = "num_elem";
234-
235-
} else {
236-
m_vecSourceDimSizes.resize(2);
237-
m_vecSourceDimNames.resize(2);
238-
m_vecSourceDimSizes[0] = nelemx;
239-
m_vecSourceDimSizes[1] = nelemy;
240-
m_vecSourceDimNames[0] = "lat";
241-
m_vecSourceDimNames[1] = "lon";
242-
}
243-
return;
190+
m_vecSourceDimNames.clear();
191+
m_vecSourceDimNames.resize(p_srcDimNames.size());
192+
std::copy(p_srcDimNames.begin(), p_srcDimNames.end(), m_vecSourceDimNames.begin());
193+
194+
m_vecSourceDimSizes.clear();
195+
m_vecSourceDimSizes.resize(p_srcDimSizes.size());
196+
std::copy(p_srcDimSizes.begin(), p_srcDimSizes.end(), m_vecSourceDimSizes.begin());
197+
198+
return;
244199
}
245200

246201
///////////////////////////////////////////////////////////////////////////////
@@ -404,70 +359,19 @@ void OfflineMap::InitializeTargetDimensionsFromFile(
404359

405360
///////////////////////////////////////////////////////////////////////////////
406361

407-
void OfflineMap::InitializeTargetDimensionsFromMesh(
408-
const Mesh & targetMesh
409-
) {
410-
// Push rectilinear attributes into array
411-
const int nElems = targetMesh.faces.size();
412-
switch(targetMesh.type) {
413-
case Mesh::MeshType_CubedSphere:
414-
m_vecTargetDimSizes.resize(1);
415-
m_vecTargetDimNames.resize(1);
416-
// should probably have nxElems * nyELems
417-
// That would mean we need to resize(2) and not to 1.
418-
m_vecTargetDimSizes[0] = nElems;
419-
m_vecTargetDimNames[0] = "num_elem";
420-
break;
421-
case Mesh::MeshType_RLL:
422-
_EXCEPTIONT("MeshType_RLL not implemented");
423-
m_vecTargetDimSizes.resize(2);
424-
m_vecTargetDimNames.resize(2);
425-
m_vecTargetDimSizes[0] = std::sqrt(nElems/2);
426-
m_vecTargetDimSizes[1] = 2*m_vecTargetDimSizes[0];
427-
428-
m_vecTargetDimNames[0] = "lat";
429-
m_vecTargetDimNames[1] = "lon";
430-
break;
431-
case Mesh::MeshType_IcosaHedral:
432-
m_vecTargetDimSizes.resize(1);
433-
m_vecTargetDimNames.resize(1);
434-
m_vecTargetDimSizes[0] = nElems;
435-
m_vecTargetDimNames[0] = "num_elem";
436-
break;
437-
default:
438-
m_vecTargetDimSizes.resize(1);
439-
m_vecTargetDimNames.resize(1);
440-
m_vecTargetDimSizes[0] = 0;
441-
m_vecTargetDimNames[0] = "";
442-
break;
443-
}
444-
return;
445-
}
446-
447-
///////////////////////////////////////////////////////////////////////////////
448-
449-
void OfflineMap::InitializeTargetDimensionsFromMesh(
450-
const int nelemx, const int nelemy
362+
void OfflineMap::InitializeTargetDimensions(
363+
const std::vector<std::string>& p_tgtDimNames,
364+
const std::vector<int>& p_tgtDimSizes
451365
) {
452-
// Push rectilinear attributes into array
453-
if (nelemy == 0) {
454-
m_vecTargetDimSizes.resize(1);
455-
m_vecTargetDimNames.resize(1);
456-
// should probably have nxElems * nyELems
457-
// That would mean we need to resize(2) and not to 1.
458-
m_vecTargetDimSizes[0] = nelemx;
459-
m_vecTargetDimNames[0] = "num_elem";
460-
}
461-
else {
462-
m_vecTargetDimSizes.resize(2);
463-
m_vecTargetDimNames.resize(2);
464-
m_vecTargetDimSizes[0] = nelemx;
465-
m_vecTargetDimSizes[1] = nelemy;
466-
467-
m_vecTargetDimNames[0] = "lat";
468-
m_vecTargetDimNames[1] = "lon";
469-
}
470-
return;
366+
m_vecTargetDimNames.clear();
367+
m_vecTargetDimNames.resize(p_tgtDimNames.size());
368+
std::copy(p_tgtDimNames.begin(), p_tgtDimNames.end(), m_vecTargetDimNames.begin());
369+
370+
m_vecTargetDimSizes.clear();
371+
m_vecTargetDimSizes.resize(p_tgtDimSizes.size());
372+
std::copy(p_tgtDimSizes.begin(), p_tgtDimSizes.end(), m_vecTargetDimSizes.begin());
373+
374+
return;
471375
}
472376

473377
///////////////////////////////////////////////////////////////////////////////

src/OfflineMap.h

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,9 @@ class OfflineMap {
5151
/// <summary>
5252
/// Initialize the array of input dimensions from a mesh.
5353
/// </summary>
54-
void InitializeSourceDimensionsFromMesh(
55-
const Mesh & sourceMesh
56-
);
57-
58-
/// <summary>
59-
/// Initialize the array of input dimensions from a mesh.
60-
/// </summary>
61-
void InitializeSourceDimensionsFromMesh(
62-
const int nelemx, const int nelemy
54+
void InitializeSourceDimensions(
55+
const std::vector<std::string>& p_srcDimNames,
56+
const std::vector<int>& p_srcDimSizes
6357
);
6458

6559
/// <summary>
@@ -72,15 +66,9 @@ class OfflineMap {
7266
/// <summary>
7367
/// Initialize the array of output dimensions from a mesh.
7468
/// </summary>
75-
void InitializeTargetDimensionsFromMesh(
76-
const Mesh & targetMesh
77-
);
78-
79-
/// <summary>
80-
/// Initialize the array of output dimensions from a mesh.
81-
/// </summary>
82-
void InitializeTargetDimensionsFromMesh(
83-
const int nelemx, const int nelemy
69+
void InitializeTargetDimensions(
70+
const std::vector<std::string>& p_tgtDimNames,
71+
const std::vector<int>& p_tgtDimSizes
8472
);
8573

8674
private:

0 commit comments

Comments
 (0)