#include #include #include #include int main (int argc, char *argv[]) { MadfilterList * madFiltList; MadparmList * parmListUse; MadparmList * parmListMeas1DFile = NULL; MadparmList * parmListMeas2DFile = NULL; MadparmList * parmListDerv1DFile = NULL; MadparmList * parmListDerv2DFile = NULL; MadparmList * parmListDerv = NULL; MadparmList * parmListUseCopy; MadparmList * parmListMeas1D; MadparmList * parmListMeas2D; InfoDerived * infoDerived; InfoDervFile * infoDervFile = NULL; int i,j; char madfile[128] = ""; Madrec * madrecp = NULL; time_t starttime; time_t endtime; int status = 0; Maddata * maddata = NULL; FILE * fp = NULL; double f1_lower = -100.0; double f1_upper = 180.0; double f2_lower = 1500.0; double f2_upper = 1505.0; char * headerStr = NULL; char * mnemStr = NULL; char * labelStr = NULL; char * dataStr = NULL; fp = fopen("junk.txt", "w"); /* test madFiltList */ madFiltList = createMadfilterList(); status = appendMadfilter(madFiltList, SINGLE_FILT, 1, &f1_lower, &f1_upper, "azm", ""); status = appendMadfilter(madFiltList, SINGLE_FILT, 1, &f2_lower, &f2_upper, "bhm", ""); printf("Number of filters = %i\n", madFiltList->numFilters); printf("Parm 2 of second filt = %s\n", madFiltList->madfilt_list[1].madParm2); /* create parmListUse */ parmListUse = createMadparmList(); appendMadparm(parmListUse, "byear"); appendMadparm(parmListUse, "azm"); appendMadparm(parmListUse, "bmd"); appendMadparm(parmListUse, "kindat"); appendMadparm(parmListUse, "32750"); appendMadparm(parmListUse, "range"); appendMadparm(parmListUse, "gdalt"); appendMadparm(parmListUse, "bmag"); appendMadparm(parmListUse, "no2l"); appendMadparm(parmListUse, "uts"); appendMadparm(parmListUse, "SUNRISE_HOUR"); appendMadparm(parmListUse, "slt"); appendMadparm(parmListUse, "f10.7"); /* copy parmListUse to parmListUseCopy */ parmListUseCopy = copyMadparmList(parmListUse); /* print out parameters in parmListUseCopy */ for (i=0; i< parmListUseCopy->numParm; i++) printf("Next parameter in use = %s\n", parmListUseCopy->mnemList[i]); /* does list have " uTh " ? */ printf("List has \" uTH \" = %i\n", hasParm(parmListUse, " uTh ")); printf("List has \" kindat \" = %i\n", hasParm(parmListUse, " kindat ")); printf("Min value of uth = %e\n", getMinParm(parmListUse, " uTh ")); printf("Max value of uth = %e\n", getMaxParm(parmListUse, " uTh ")); /* get measured parameter list */ cedarGetMadroot(madfile); /*strcat(madfile, "/experiments/1998/mlh/20jan98/mlh980120g.001");*/ strcat(madfile, "/experiments/1998/mlh/20jan98/mil980120g.002"); /*strcat(madfile, "/experiments/1997/son/06jan97/son970106g.001");*/ /*strcat(madfile, "/experiments/1995/jro/01feb95/jic950201g.001");*/ status = analyzeFileParms(madfile, &parmListMeas1DFile, &parmListMeas2DFile, &parmListDerv1DFile, &parmListDerv2DFile, stdout); printf("analyzeFileParms returned status %i\n", status); if (parmListMeas1DFile == NULL) { printf("Error from analyzeFileParms\n"); return -1; } for (i=0; inumParm; i++) printf("This meas 1D parm is %s\n", parmListMeas1DFile->mnemList[i]); for (i=0; inumParm; i++) printf("This meas 2D parm is %s\n", parmListMeas2DFile->mnemList[i]); for (i=0; inumParm; i++) printf("This derv 1D parm is %s\n", parmListDerv1DFile->mnemList[i]); for (i=0; inumParm; i++) printf("This derv 2D parm is %s\n", parmListDerv2DFile->mnemList[i]); /* all done with parmList*File */ destroyMadparmList(parmListMeas1DFile); destroyMadparmList(parmListMeas2DFile); destroyMadparmList(parmListDerv1DFile); destroyMadparmList(parmListDerv2DFile); /* create parmListMeas1D */ parmListMeas1D = createMadparmList(); appendMadparm(parmListMeas1D, "FIRST_IBYR"); appendMadparm(parmListMeas1D, "FIRST_IBDT"); appendMadparm(parmListMeas1D, "FIRST_IBHM"); appendMadparm(parmListMeas1D, "FIRST_IBCS"); appendMadparm(parmListMeas1D, "KINST"); appendMadparm(parmListMeas1D, "KINDAT"); appendMadparm(parmListMeas1D, "IBYR"); appendMadparm(parmListMeas1D, "IBDT"); appendMadparm(parmListMeas1D, "IBHM"); appendMadparm(parmListMeas1D, "IBCS"); appendMadparm(parmListMeas1D, "IEYR"); appendMadparm(parmListMeas1D, "IEDT"); appendMadparm(parmListMeas1D, "IEHM"); appendMadparm(parmListMeas1D, "IECS"); appendMadparm(parmListMeas1D, "NROW"); appendMadparm(parmListMeas1D, "az1"); appendMadparm(parmListMeas1D, "az2"); appendMadparm(parmListMeas1D, "el1"); appendMadparm(parmListMeas1D, "el2"); appendMadparm(parmListMeas1D, "elm"); appendMadparm(parmListMeas1D, "year"); appendMadparm(parmListMeas1D, "bmd"); /* create parmListMeas2D */ parmListMeas2D = createMadparmList(); appendMadparm(parmListMeas2D, "ROW"); appendMadparm(parmListMeas2D, "range"); appendMadparm(parmListMeas2D, "ti"); infoDerived = createInfoDerived(parmListMeas1D, parmListMeas2D, parmListUse, madFiltList); printf("Printing list of %i 1D parameters used...\n", infoDerived->allUsed1DParmList->numParm); for (i=0; iallUsed1DParmList->numParm; i++) { printf("This parm is %s\n", infoDerived->allUsed1DParmList->mnemList[i]); } printf("Printing list of %i 1D parameters avail...\n", infoDerived->allAvail1DParmList->numParm); for (i=0; iallAvail1DParmList->numParm; i++) { printf("This parm is %s\n", infoDerived->allAvail1DParmList->mnemList[i]); } printf("Printing list of %i 2D parameters used...\n", infoDerived->allUsed2DParmList->numParm); for (i=0; iallUsed2DParmList->numParm; i++) { printf("This 2d parm is %s\n", infoDerived->allUsed2DParmList->mnemList[i]); } printf("Printing list of %i 2D parameters avail...\n", infoDerived->allAvail2DParmList->numParm); for (i=0; iallAvail2DParmList->numParm; i++) { printf("This 2d parm is %s\n", infoDerived->allAvail2DParmList->mnemList[i]); } printf("Printing list of %i unavailable parameters...\n", infoDerived->unavailParmList->numParm); for (i=0; iunavailParmList->numParm; i++) { printf("This unavailable parm is %s\n", infoDerived->unavailParmList->mnemList[i]); } /* not legal, unless I make gCompExtList non-static printf("Printing inputMap and outputMap for each needed method.\n"); for (i=0; i < infoDerived->numDervMeth; i++) { printf("Method %i:\n", i); if (infoDerived->infoMethodArr[i]->isNeeded) { printf("This methis is 1D = %i\n", infoDerived->infoMethodArr[i]->all1D); for (j=0; j infoMethodArr[i]->inputMap[j*2], infoDerived->infoMethodArr[i]->inputMap[j*2 + 1]); } for (j=0; j infoMethodArr[i]->outputMap[j]); } } else printf("Not needed\n\n"); }*/ destroyInfoDerived(infoDerived); /* test of InfoDervFile */ /* start time test */ starttime = time(NULL); /* Create a madrec object */ madrecp = madrecCreate(); printf("create: %s\n", madrecGetError(madrecp)); /* Connect the madrec object to a madrigal file and load in memory */ madrecOpen(madrecp, 50, madfile); printf("open: %s\n", madrecGetError(madrecp)); infoDervFile = createInfoDervFile(madrecp, parmListUse, madFiltList, NULL); /* print out infoDervFile */ printf("In file, num types found = %i\n", infoDervFile->numTypesRec); for (i=0; inumTypesRec; i++) { printf("This type is %i\n", i); printf("It has %i records of this type\n\n", infoDervFile->numEachTypeRec[i]); infoDerived = infoDervFile->infoDervList[i]; printf("Printing list of %i 1D parameters used...\n", infoDerived->allUsed1DParmList->numParm); for (j=0; jallUsed1DParmList->numParm; j++) { printf("This 1D parm is %s\n", infoDerived->allUsed1DParmList->mnemList[j]); } printf("Printing list of %i meas 1D parameters used and codes...\n", infoDerived->meas1DParmList->numParm - NUM_PROLOG_PARM); for (j=NUM_PROLOG_PARM; jmeas1DParmList->numParm; j++) { printf("This meas 1D parm is %s, code %i\n", infoDerived->meas1DParmList->mnemList[j], infoDerived->meas1DCodeList[j - NUM_PROLOG_PARM]); } printf("Printing list of %i 2D parameters used...\n", infoDerived->allUsed2DParmList->numParm); for (j=0; jallUsed2DParmList->numParm; j++) { printf("This 2D parm is %s\n", infoDerived->allUsed2DParmList->mnemList[j]); } printf("Printing list of %i 2D parameters used...\n", infoDerived->allUsed2DParmList->numParm - NUM_2D_PROLOG_PARM); for (j=NUM_2D_PROLOG_PARM; jallUsed2DParmList->numParm; j++) { printf("This 2d parm is %s\n", infoDerived->allUsed2DParmList->mnemList[j]); } printf("Printing list of %i unavailable parameters...\n", infoDerived->unavailParmList->numParm); for (j=0; junavailParmList->numParm; j++) { printf("This unavailable parm is %s\n", infoDerived->unavailParmList->mnemList[j]); } printf("Printing list of %i 1D parameters (includes unavailable ones) and map\n", infoDerived->req1DParmList->numParm); for (j=0; jreq1DParmList->numParm; j++) { printf("\tThis 1D parm is %s, and is mapped to %i\n", infoDerived->req1DParmList->mnemList[j], infoDerived->mapReq1DParmList[j]); } printf("Printing list of %i 2D parameters and map\n", infoDerived->req2DParmList->numParm); for (j=0; jreq2DParmList->numParm; j++) { printf("\tThis 2D parm is %s, and is mapped to %i\n", infoDerived->req2DParmList->mnemList[j], infoDerived->mapReq2DParmList[j]); } printf("Printing whether filters are valid: %i\n", infoDervFile->infoDervList[i]->validFilters); for (j=0; jinfoDervList[i]->filt1DList->numFilters; j++) { printf("1D filter with %s and %s\n", infoDervFile->infoDervList[i]->filt1DList->madfilt_list[j].madParm1, infoDervFile->infoDervList[i]->filt1DList->madfilt_list[j].madParm2); printf("Does this 1D filter use only measured data? %i\n", infoDervFile->infoDervList[i]->onlyMeas1DList[j]); printf("Map parm 1 = %i\n", infoDervFile->infoDervList[i]->mapFilt1DParm[2*j]); printf("Map parm 2 = %i\n", infoDervFile->infoDervList[i]->mapFilt1DParm[2*j + 1]); } for (j=0; jinfoDervList[i]->filt2DList->numFilters; j++) { printf("2D filter with %s and %s\n", infoDervFile->infoDervList[i]->filt2DList->madfilt_list[j].madParm1, infoDervFile->infoDervList[i]->filt2DList->madfilt_list[j].madParm2); printf("Does this 2D filter use only measured data? %i\n", infoDervFile->infoDervList[i]->onlyMeas2DList[j]); printf("Dim parm 1 = %i\n", infoDervFile->infoDervList[i]->mapFilt2DParm[4*j + 0]); printf("Map parm 1 = %i\n", infoDervFile->infoDervList[i]->mapFilt2DParm[4*j + 1]); printf("Dim parm 2 = %i\n", infoDervFile->infoDervList[i]->mapFilt2DParm[4*j + 2]); printf("Map parm 2 = %i\n", infoDervFile->infoDervList[i]->mapFilt2DParm[4*j + 3]); } } /* test cycle number */ printf("Cycle number of record 1130 is %i\n", infoDervFile->cycleNum[1130]); /* all done with infoDervFile */ destroyInfoDervFile(infoDervFile); /* Disconnect the madrigal file */ madrecClose(madrecp); printf("close: %s\n", madrecGetError(madrecp)); /* Destroy the madrec object */ madrecDestroy(madrecp); /* end time test */ endtime = time(NULL); /* Cannot print test time in a regression test - might vary */ /*printf("Total test time = %i\n", (int)endtime - (int)starttime);*/ /* test of maddata */ maddata = createMaddata(madfile, "Hi", parmListUse, madFiltList, fp); printf("Finished createMaddata\n"); printf("Number of cycles = %i\n", maddata->numCycles); if (maddata->numCycles) printf("Num recs in cyc 0 is %i\n", maddata->madCycleList[0]->numMadrecords); simpleMaddataPrint(maddata, stdout); classicIsprint(maddata, 1, 1, 0, "Missing", "Assumed", "KnownBad", stdout); parmListDerv = getDerivedParms(parmListUseCopy); printf("Printing list derivable parameters ...\n"); for (j=0; jnumParm; j++) { printf("This derivable parm is %s\n", parmListDerv->mnemList[j]); } printf("Printing getClassicMadrecordStrings:\n"); getClassicMadrecordStrings(maddata, 0, 0, 32000, "missing", "assumed", "knownBad", &headerStr, &mnemStr, &labelStr, &dataStr); printf("headerStr is %s\n", headerStr); printf("mnemStr is %s\n", mnemStr); printf("labelStr is %s\n", labelStr); printf("dataStr is %s\n", dataStr); free(headerStr); free(mnemStr); free(labelStr); free(dataStr); /* clean up */ destroyMaddata(maddata); destroyMadparmList(parmListUseCopy); destroyMadparmList(parmListMeas1D); destroyMadparmList(parmListMeas2D); destroyMadparmList(parmListUse); destroyMadparmList(parmListDerv); destroyMadfilterList(madFiltList); fclose(fp); return(0); }