⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esmc_app.c

📁 CCSM Research Tools: Community Atmosphere Model (CAM)
💻 C
字号:
/* $Id: ESMC_App.c,v 1.1.6.1 2002/04/24 03:25:29 erik Exp $ */#include <stdlib.h>#include <stdio.h>#include "ESMC.h"#include "conf.h"#include "ESMC_App.h"#include "ESMC_BasicUtil.h"#include "ESMC_Machine.h"#include "ESMC_Log.h"#ifdef ESMC_HAVE_MPI#include <mpi.h>#endif/*--------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "ESMC_AppNew"int ESMC_AppNew(ESMC_App *app){  int argc;  int ret;  *app = (ESMC_App) malloc(sizeof(ESMC_AppClass));  if ((ret = ESMC_AppConstruct(*app)) != ESMC_SUCCESS)    {      free(*app);      return ret;    }    return ESMC_SUCCESS;}/*--------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "ESMC_AppConstruct"int ESMC_AppConstruct(ESMC_App app){  static int initialized = 0;  int ret;  int mpi_initialized;  int argc;  char *argv[] = {"program", NULL};  if (initialized)    {      ESMC_ERRA(ESMC_ERR_BUSY, 0, "There can be only one App.");    }  else    initialized = 1;/* MPI Init must be called before logger, since logger makes MPI   calls */#ifdef ESMC_HAVE_MPI  MPI_Initialized(&mpi_initialized);    if (!mpi_initialized)    MPI_Init(&argc, (char ***) &argv);#endif  /* Initialize BasicUtils */  if ((ret = ESMC_BasicUtilInit()) != ESMC_SUCCESS)    return ret;      /* Initialize Machine Model */  if ((ret = ESMC_MachineNew(&app->machine)) != ESMC_SUCCESS)    return ret;    if ((ret = ESMC_LogNew(&app->logSTD, "stdlog", ESMC_LOGSTATE_VERBOSE, 1))      != ESMC_SUCCESS)    {      ESMC_MachineDelete(app->machine);      return ret;    }  /* Set up the Timer's stdlog output */  if ((ret = ESMC_TimerSetSTDLog(app->logSTD)) != ESMC_SUCCESS)    {      ESMC_MachineDelete(app->machine);      ESMC_LogDelete(app->logSTD);      return ret;    }  return ESMC_SUCCESS;}/*--------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "ESMC_AppDelete"int ESMC_AppDelete(ESMC_App app){  int ret;  if ((ret = ESMC_AppDestruct(app)) != ESMC_SUCCESS)    {      return ret;    }  free(app);  return ESMC_SUCCESS;}/*--------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "ESMC_AppDestruct"int ESMC_AppDestruct(ESMC_App app){#ifdef ESMC_HAVE_MPI  MPI_Finalize();#endif  ESMC_MachineDelete(app->machine);  ESMC_LogDelete(app->logSTD);    return ESMC_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -