@@ -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// /////////////////////////////////////////////////////////////////////////////
0 commit comments