Bool Base_Finalise( void ) { Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */ BaseContext_Finalise(); BaseExtensibility_Finalise(); BaseAutomation_Finalise(); BaseContainer_Finalise(); BaseIO_Finalise(); BaseFoundation_Finalise(); return True; }
/* Note: this function is a duplicate of StGermain_Finalise currently - since StGermain_Finalise doesn't call Base_Finalise */ Bool StGermainBase_Finalise( void ) { Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* Delete the global objects : xmlSearchPaths and moduleDirectories */ Stg_ObjectList_DeleteAllObjects( moduleDirectories ); Stg_Class_Delete( moduleDirectories ); moduleDirectories=NULL; Stg_ObjectList_DeleteAllObjects( Project_XMLSearchPaths ); Stg_Class_Delete( Project_XMLSearchPaths ); Project_XMLSearchPaths=NULL; /* Finalise all the bits and pieces */ BaseContext_Finalise(); //#if 0 BaseExtensibility_Finalise(); //#endif BaseAutomation_Finalise(); BaseContainer_Finalise(); BaseIO_Finalise(); BaseFoundation_Finalise(); return True; }
int main( int argc, char* argv[] ) { MPI_Comm CommWorld; int rank; int numProcessors; int procToWatch; Dictionary* dictionary; AbstractContext* abstractContext; /* Initialise MPI, get world info */ MPI_Init( &argc, &argv ); MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld ); MPI_Comm_size( CommWorld, &numProcessors ); MPI_Comm_rank( CommWorld, &rank ); BaseFoundation_Init( &argc, &argv ); BaseIO_Init( &argc, &argv ); BaseContainer_Init( &argc, &argv ); BaseAutomation_Init( &argc, &argv ); BaseExtensibility_Init( &argc, &argv ); BaseContext_Init( &argc, &argv ); stream = Journal_Register (Info_Type, "myStream"); /* Redirect the error stream to stdout, so we can check warnings appear correctly */ Stream_SetFileBranch( Journal_GetTypedStream( ErrorStream_Type ), stJournal->stdOut ); if( argc >= 2 ) { procToWatch = atoi( argv[1] ); } else { procToWatch = 0; } if( rank == procToWatch ) Journal_Printf( (void*) stream, "Watching rank: %i\n", rank ); /* Read input */ dictionary = Dictionary_New(); dictionary->add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) ); dictionary->add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) ); /* Build the context */ abstractContext = _AbstractContext_New( sizeof(AbstractContext), "TestContext", MyDelete, MyPrint, NULL, NULL, NULL, _AbstractContext_Build, _AbstractContext_Initialise, _AbstractContext_Execute, _AbstractContext_Destroy, "context", True, MySetDt, 0, 10, CommWorld, dictionary ); /* add hooks to existing entry points */ ContextEP_Append( abstractContext, AbstractContext_EP_Dt, MyDt ); if( rank == procToWatch ) { Stream* stream = Journal_Register( InfoStream_Type, AbstractContext_Type ); Stg_Component_Build( abstractContext, 0 /* dummy */, False ); Stg_Component_Initialise( abstractContext, 0 /* dummy */, False ); Context_PrintConcise( abstractContext, stream ); Stg_Component_Execute( abstractContext, 0 /* dummy */, False ); Stg_Component_Destroy( abstractContext, 0 /* dummy */, False ); } /* Stg_Class_Delete stuff */ Stg_Class_Delete( abstractContext ); Stg_Class_Delete( dictionary ); BaseContext_Finalise(); BaseExtensibility_Finalise(); BaseAutomation_Finalise(); BaseContainer_Finalise(); BaseIO_Finalise(); BaseFoundation_Finalise(); /* Close off MPI */ MPI_Finalize(); return 0; /* success */ }
int main( int argc, char* argv[] ) { MPI_Comm CommWorld; int rank; int numProcessors; int procToWatch; Dictionary* dictionary; AbstractContext* abstractContext; /* Initialise MPI, get world info */ MPI_Init( &argc, &argv ); MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld ); MPI_Comm_size( CommWorld, &numProcessors ); MPI_Comm_rank( CommWorld, &rank ); BaseFoundation_Init( &argc, &argv ); BaseIO_Init( &argc, &argv ); BaseContainer_Init( &argc, &argv ); BaseAutomation_Init( &argc, &argv ); BaseExtensibility_Init( &argc, &argv ); BaseContext_Init( &argc, &argv ); stream = Journal_Register( InfoStream_Type, "myStream" ); if( argc >= 2 ) { procToWatch = atoi( argv[1] ); } else { procToWatch = 0; } if( rank == procToWatch ) Journal_Printf( (void*) stream, "Watching rank: %i\n", rank ); /* Read input */ dictionary = Dictionary_New(); /* Build the context */ abstractContext = _AbstractContext_New( sizeof(AbstractContext), "TestContext", MyDelete, MyPrint, NULL, NULL, NULL, _AbstractContext_Build, _AbstractContext_Initialise, _AbstractContext_Execute, _AbstractContext_Destroy, "context", True, MySetDt, 0, 10, CommWorld, dictionary ); /* add hooks to existing entry points */ ContextEP_ReplaceAll( abstractContext, AbstractContext_EP_Build, MyBuild ); ContextEP_ReplaceAll( abstractContext, AbstractContext_EP_Initialise, MyInitialConditions ); ContextEP_ReplaceAll( abstractContext, AbstractContext_EP_Solve, MySolve ); ContextEP_ReplaceAll( abstractContext, AbstractContext_EP_Dt, MyDt ); if( rank == procToWatch ) { Journal_Printf( (void*)stream, "abstractContext->entryPointList->_size: %lu\n", abstractContext->entryPoint_Register->_size ); Journal_Printf( (void*)stream, "abstractContext->entryPointList->count: %u\n", abstractContext->entryPoint_Register->count ); } ContextEP_Append( abstractContext, AbstractContext_EP_Solve, MySolve2 ); ContextEP_ReplaceAll( abstractContext, AbstractContext_EP_Initialise, MyInitialConditions2 ); if( rank == procToWatch ) { stream = Journal_Register( InfoStream_Type, AbstractContext_Type ); AbstractContext_PrintConcise( abstractContext, stream ); Journal_Printf( (void*)stream, "abstractContext->entryPointList->_size: %lu\n", abstractContext->entryPoint_Register->_size ); Journal_Printf( (void*)stream, "abstractContext->entryPointList->count: %u\n", abstractContext->entryPoint_Register->count ); } /* Run the context */ if( rank == procToWatch ) { Stg_Component_Build( abstractContext, 0 /* dummy */, False ); Stg_Component_Initialise( abstractContext, 0 /* dummy */, False ); Stg_Component_Execute( abstractContext, 0 /* dummy */, False ); Stg_Component_Destroy( abstractContext, 0 /* dummy */, False ); } /* Stg_Class_Delete stuff */ Stg_Class_Delete( abstractContext ); Stg_Class_Delete( dictionary ); BaseContext_Finalise(); BaseExtensibility_Finalise(); BaseAutomation_Finalise(); BaseContainer_Finalise(); BaseIO_Finalise(); BaseFoundation_Finalise(); /* Close off MPI */ MPI_Finalize(); return 0; /* success */ }