awips2/nativeLib/rary.ohd.ofs/inc/dhm.h
root 8e80217e59 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: a02aeb236c [formerly 9f19e3f712] [formerly 06a8b51d6d [formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]
Former-commit-id: 06a8b51d6d
Former-commit-id: 3360eb6c5f
2012-01-06 08:55:05 -06:00

157 lines
5.4 KiB
C

#ifndef DHM_H
#define DHM_H
#include <ctype.h>
#include <jni.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAXARRAY 2048
#define MAXCARRYOVERDATES 20
#define MAX_DHM_TS_LEN 744
#define MAX_MSG_LEN 2000
#define NWSRFS_ID_LENGTH 8
#define NWSRFS_DATA_TYPE_LENGTH 4
#define DATE_STRING_LENGTH 20
#define MAX_DIRECTORY_NAME_LENGTH 120
#define STRING_CLASS "java/lang/String"
#define SIMPLE_DATE_AND_TIME_CLASS "ohd/hseb/dhm/time/SimpleDateAndTime"
#define RESULT_CLASS "ohd/hseb/ofs/DhmResult"
#define RUNNER_CLASS "ohd/hseb/ofs/Runner"
#define RUNNER_PATHS_CLASS "ohd/hseb/ofs/DhmRunnerPaths"
#define MODS_MANAGER_CLASS "ohd/hseb/dhmGuis/modsGui/ModsManager"
extern JNIEnv *env;
extern JavaVM *jvm;
int jvmTokenNotExists;
jobject runner;
jclass runnerClass;
jstring getJavaErrorMessage(jthrowable error);
int *use_snow17_input;
typedef enum {SUCCEEDED, FAILED} DhmStatus;
typedef struct {
DhmStatus code;
char * message;
float timeSeries[MAX_DHM_TS_LEN];
int timeSeriesLength;
} DhmResult;
DhmResult dhmfailed(char * message) ;
DhmResult dhmsucceeded(float timeSeries[MAX_DHM_TS_LEN], int length);
void remove_trailing_space(char *inputString);
int get_apps_defaults(char *request, int *request_len, char *reply, int *reply_len);
jfloatArray buildUpstreamFlowArray(float tsData[], int tsDataSize);
jclass getClass(const char* javaClassName);
char *getErrorMsg( const char detailedMsg[] );
jobject buildDhmRunnerPaths(jstring jprecipDataPath,
jstring jDHMModelDataPath,
jstring jd2dDataPath,
jstring jdhmNotifyDataPath,
jstring jgeoCoordDataPathAndFileName,
jstring jprecipXmrgSrcPath,
jstring jDHMModelDataSrcPath,
jstring jgridOutputConfigurationPath);
jobject buildDateTime(int day, int month, int year, int hour);
jobjectArray createCarryOverDateList(int numberOfCarryoverToBeSaved,
int carryoverMonthList[MAXCARRYOVERDATES],
int carryoverDayList[MAXCARRYOVERDATES],
int carryoverYearList[MAXCARRYOVERDATES],
int carryoverHourList[MAXCARRYOVERDATES]);
DhmResult run_dhm(
int startMonthOfRunPeriod,
int startDayOfRunPeriod,
int startYearOfRunPeriod,
int startHourOfRunPeriod,
int startMonthOfForecastPeriod,
int startDayOfForecastPeriod,
int startYearOfForecasPeriod,
int startHourOfForecastPeriod,
int endMonthOfRunPeriod,
int endDateOfRunPeriod,
int endYearOfRunPeriod,
int endHourOfRunPeriod,
char basinID[],
int saveCO,
int carryoverMonthList[MAXCARRYOVERDATES],
int carryoverDayList[MAXCARRYOVERDATES],
int carryoverYearList[MAXCARRYOVERDATES],
int carryoverHourList[MAXCARRYOVERDATES],
int futurePrecipitation,
char ModString[],
int useRainPlusMeltPrecip
);
void get_formatted_output_for_dhm(int *tmpStartObsMonth,
int *tmpStartObsDate,
int *tmpStartObsYear,
int *tmpStartObsHour,
int *tmpStartForecastMonth,
int *tmpStartForecastDate,
int *tmpStartForecastYear,
int *tmpStartForecastHour,
int *tmpEndMonth,
int *tmpEndDate,
int *tmpEndYear,
int *tmpEndHour,
char *basinID,
char upBasinIDs[],
int *numOfUpBasinIds,
char *precipDataPath,
char *DHMModelDataPath,
char *d2dDataPath,
char *dhmNotifyDataPath,
int *shouldSaveCarryOver,
int carryoverMonthList[MAXCARRYOVERDATES],
int carryoverDayList[MAXCARRYOVERDATES],
int carryoverYearList[MAXCARRYOVERDATES],
int carryoverHourList[MAXCARRYOVERDATES],
int *futurePrecipitation,
int *useRainPlusMeltFlag,
char formattedOutput[MAXARRAY],
int *formattedOutputLength);
void create_runner_with_args_named(
const char * runnerClassName,
char precipDataPath[],
char DHMModelDataPath[],
char d2dDataPath[],
char dhmNotifyDataPath[],
char geoCoordDataPathAndFileName[],
char precipXmrgSrcPath[],
char DHMModelDataSrcPath[],
char gridOutputConfigurationPath[],
int* startMonth,
int* startDay,
int* startYear,
int* startHour,
char returnMessage[] );
void send_inflows_to_runner(
char basinID[],
float upstreamFlowTimeSeries[],
int indicesToInputData[],
char upBasinIds[],
int *startOfTSindex,
int *endOfTSindex,
int *nInflow,
char errorMessage[MAX_DHM_TS_LEN]);
#endif