2626#include "ESMCI_Array.h"
2727
2828#include "ESMCI_TraceMacros.h" // for profiling
29+ #include "ESMCI_TraceRegion.h" // for profiling
2930
3031#include "Mesh/include/ESMCI_Mesh.h"
3132#include "Mesh/include/Legacy/ESMCI_MeshRead.h"
@@ -82,8 +83,6 @@ void CpMeshDataToArray(Grid &grid, int staggerLoc, ESMCI::Mesh &mesh, ESMCI::Arr
8283void CpMeshElemDataToArray (Grid & grid , int staggerloc , ESMCI ::Mesh & mesh , ESMCI ::Array & array , MEField < > * dataToArray );
8384void PutElemAreaIntoArray (Grid & grid , int staggerLoc , ESMCI ::Mesh & mesh , ESMCI ::Array & array );
8485
85-
86-
8786void ESMCI_regrid_create (
8887 Mesh * * meshsrcpp , ESMCI ::Array * * arraysrcpp , ESMCI ::PointList * * plsrcpp ,
8988 Mesh * * meshdstpp , ESMCI ::Array * * arraydstpp , ESMCI ::PointList * * pldstpp ,
@@ -110,7 +109,11 @@ void ESMCI_regrid_create(
110109#define ESMC_METHOD "ESMCI_regrid_create()"
111110 Trace __trace (" FTN_X(regrid_test)(ESMCI::Grid **gridsrcpp, ESMCI::Grid **griddstcpp, int*rc" );
112111
112+ // Declare local return code
113+ int localrc ;
113114
115+
116+ // Dereference input variables
114117 ESMCI ::Array & srcarray = * * arraysrcpp ;
115118 ESMCI ::Array & dstarray = * * arraydstpp ;
116119
@@ -123,6 +126,7 @@ void ESMCI_regrid_create(
123126 int has_statusArray = * _has_statusArray ;
124127 ESMCI ::Array * statusArray = * _statusArray ;
125128
129+
126130#define PROGRESSLOG_off
127131#define MEMLOG_off
128132
@@ -136,9 +140,6 @@ void ESMCI_regrid_create(
136140
137141 try {
138142
139- // Declare local return code
140- int localrc ;
141-
142143 // Initialize the parallel environment for mesh
143144 ESMCI ::Par ::Init ("MESHLOG" , false, VM ::getCurrent (& localrc )-> getMpi_c ());
144145 if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ; // bail out with exception
@@ -317,10 +318,11 @@ void ESMCI_regrid_create(
317318 }
318319
319320
320-
321-
322-
323-
321+ // Enter profile around weight generation
322+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
323+ ESMCI ::TraceEventRegionEnter ("Weight generation" , & localrc );
324+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
325+ }
324326
325327#ifdef PROGRESSLOG_on
326328 ESMC_LogDefault .Write ("c_esmc_regrid_create(): Entering weight generation." , ESMC_LOGMSG_INFO );
@@ -384,6 +386,12 @@ void ESMCI_regrid_create(
384386 }
385387 }
386388
389+ // Exit profile around weight generation
390+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
391+ ESMCI ::TraceEventRegionExit ("Weight generation" , & localrc );
392+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
393+ }
394+
387395 ESMCI_REGRID_TRACE_EXIT ("NativeMesh Weight Generation" );
388396
389397#ifdef PROGRESSLOG_on
@@ -625,7 +633,13 @@ void ESMCI_regrid_create(
625633
626634 // Build the RouteHandle using ArraySMMStore()
627635 if (* has_rh ) {
628-
636+
637+ // Enter profile around routehandle creation
638+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
639+ ESMCI ::TraceEventRegionEnter ("RouteHandle creation" , & localrc );
640+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
641+ }
642+
629643 // Set some flags
630644 enum ESMC_TypeKind_Flag tk = ESMC_TYPEKIND_R8 ;
631645 ESMC_Logical ignoreUnmatched = ESMF_FALSE ;
@@ -641,6 +655,13 @@ void ESMCI_regrid_create(
641655 pipelineDepth , & localrc );
642656 if (ESMC_LogDefault .MsgFoundError (localrc , ESMCI_ERR_PASSTHRU ,
643657 ESMC_CONTEXT , NULL )) throw localrc ; // bail out with exception
658+
659+
660+ // Exit profile around routehandle creation
661+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
662+ ESMCI ::TraceEventRegionExit ("RouteHandle creation" , & localrc );
663+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
664+ }
644665 }
645666
646667 ESMCI_REGRID_TRACE_EXIT ("NativeMesh ArraySMMStore" );
@@ -663,6 +684,12 @@ void ESMCI_regrid_create(
663684
664685 ESMCI_REGRID_TRACE_ENTER ("NativeMesh Transpose ArraySMMStore" );
665686
687+ // Enter profile around routehandle creation
688+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
689+ ESMCI ::TraceEventRegionEnter ("Transpose RouteHandle creation" , & localrc );
690+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
691+ }
692+
666693 // Allocate transpose matrix
667694 int * transpose_iientries = new int [iientries_entry_size * num_entries ];
668695
@@ -722,6 +749,12 @@ void ESMCI_regrid_create(
722749 // Get rid of transposed factor index list
723750 delete [] transpose_iientries ;
724751
752+ // Exit profile around routehandle creation
753+ if (TraceGetProfileTypeInfo (ESMC_PROFILETYPE_REGRID ) > 1 ) {
754+ ESMCI ::TraceEventRegionExit ("Transpose RouteHandle creation" , & localrc );
755+ if (ESMC_LogDefault .MsgFoundError (localrc ,ESMCI_ERR_PASSTHRU ,ESMC_CONTEXT ,NULL )) throw localrc ;
756+ }
757+
725758 ESMCI_REGRID_TRACE_EXIT ("NativeMesh Transpose ArraySMMStore" );
726759
727760#ifdef PROGRESSLOG_on
@@ -815,11 +848,11 @@ void ESMCI_regrid_create(
815848 ESMC_LogDefault .Write ("c_esmc_regrid_create(): Final return." , ESMC_LOGMSG_INFO );
816849#endif
817850
851+
818852 // Set return code
819853 if (rc != NULL ) * rc = ESMF_SUCCESS ;
820854}
821855
822-
823856void ESMCI_regrid_getiwts (Grid * * gridpp ,
824857 Mesh * * meshpp , ESMCI ::Array * * arraypp , int * staggerLoc ,
825858 int * rc ) {
0 commit comments