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

📄 mf_timemgrex.c

📁 CCSM Research Tools: Community Atmosphere Model (CAM)
💻 C
字号:
/*============================================================================* * MF_TimeMgr C Unit Tests and Examples *============================================================================*/#undef __FUNC__#define __FUNC__ "MF_TimeMgrExC"#include "MF.h"#include "MF_TimeMgr.h"#define START_DATE        20011128#define START_SECS        43200#define STOP_DATE         20031201#define STOP_SECS         1200#define STEP_DAYS         1#define STEP_SECS         43200#define NUM_ITS           5int main(int argc, char **argv){  int i;  MF_Time stepSize;  MF_TimeMgr timeMgr, timeMgr_Reconstructed;  MF_Date startDate, stopDate, baseDate;  MF_Date currDate, prevDate;    int retDate, retSecs;  MF_CalendarType  calType;  int nstep, stepDays, stepSec,    startYYMMDD, startSec,    stopYYMMDD, stopSec,    baseYYMMDD, baseSec,    currYYMMDD, currSec;  MF_CalendarType calType1;  int nstep1, stepDays1, stepSec1,    startYYMMDD1, startSec1,    stopYYMMDD1, stopSec1,    baseYYMMDD1, baseSec1,    currYYMMDD1, currSec1;    int test;  printf("==================================================\n");  printf("MF_TimeMgr C Unit Tests and Examples\n");  printf("==================================================\n");  stepSize =  MF_TimeNewIS(STEP_DAYS, STEP_SECS);  startDate = MF_DateNewIS(MF_GREGORIAN, START_DATE, START_SECS);  stopDate =  MF_DateNewIS(MF_GREGORIAN, STOP_DATE, STOP_SECS);  baseDate =  MF_DateNewIS(MF_GREGORIAN, START_DATE, START_SECS);  currDate =  MF_DateNewIS(MF_GREGORIAN, MF_TIME_UNDEFINED, MF_TIME_UNDEFINED);  prevDate =  MF_DateNewIS(MF_GREGORIAN, MF_TIME_UNDEFINED, MF_TIME_UNDEFINED);  timeMgr = MF_TimeMgrNew(stepSize, startDate, stopDate, baseDate);  for(i=0; i<NUM_ITS; i++){    MF_TimeMgrAdvance(timeMgr);  }    MF_TimeMgrGetCurrDate(timeMgr, currDate);    MF_DateGetIS(currDate, &retDate, &retSecs);  printf("Ret date = %d, Ret secs = %d\n", retDate, retSecs);   MF_ERROR_TEST(((retDate==20011206) && (retSecs==0)),              "MF_TimeMgrAdvance: advance a time manager by several timesteps");  MF_TimeMgrSetCurrDateIS(timeMgr, START_DATE, START_SECS);  MF_TimeMgrAdvance(timeMgr);  MF_TimeMgrGetPrevDate(timeMgr, prevDate);  MF_DateGetIS(prevDate, &retDate, &retSecs);  MF_ERROR_TEST(((retDate == START_DATE) && (retSecs == START_SECS)),              "MF_TimeMgrSetCurrDate: set current date (make sure prev date ok)");  MF_TimeMgrRestartWriteIS(timeMgr,			   &calType,			   &nstep,			   &stepDays, &stepSec,			   &startYYMMDD, &startSec,			   &stopYYMMDD, &stopSec,			   &baseYYMMDD, &baseSec,			   &currYYMMDD, &currSec			   );    timeMgr_Reconstructed =     MF_TimeMgrNewRestartReadIS(calType,			       nstep,			       stepDays, stepSec,			       startYYMMDD, startSec,			       stopYYMMDD, stopSec,			       baseYYMMDD, baseSec,			       currYYMMDD, currSec			       );  MF_TimeMgrRestartWriteIS(timeMgr_Reconstructed,			   &calType1,			   &nstep1,			   &stepDays1, &stepSec1,			   &startYYMMDD1, &startSec1,			   &stopYYMMDD1, &stopSec1,			   &baseYYMMDD1, &baseSec1,			   &currYYMMDD1, &currSec1			   );  test = (calType==calType1)    && (nstep==nstep1)    && (stepDays==stepDays1)    && (stepSec==stepSec1)    && (startYYMMDD==startYYMMDD1)    && (stopYYMMDD==stopYYMMDD1)    && (baseYYMMDD==baseYYMMDD1)    && (currYYMMDD==currYYMMDD1);      MF_ERROR_TEST(test,		"MF_TimeMgrRestartReadIS, MF_TimeMgrRestartWriteIS: write then read to get same");  MF_TimeMgrDelete(timeMgr_Reconstructed);  MF_TimeDelete(stepSize);  MF_DateDelete(startDate);  MF_DateDelete(stopDate);  MF_DateDelete(baseDate);  MF_DateDelete(currDate);  MF_TimeMgrDelete(timeMgr);  return(MF_SUCCESS);}

⌨️ 快捷键说明

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