class OasisCoupler { public : static char modelName[]; // Received from IFS public : static int fieldTempId; public : static char fieldTempName[]; public : static int fieldPrecipId; public : static char fieldPrecipName[]; public : static int fieldSnowCId; public : static char fieldSnowCName[]; public : static int fieldSnowDId; public : static char fieldSnowDName[]; public : static int fieldST1LId; public : static char fieldST1LName[]; public : static int fieldST2LId; public : static char fieldST2LName[]; public : static int fieldST3LId; public : static char fieldST3LName[]; public : static int fieldST4LId; public : static char fieldST4LName[]; public : static int fieldSM1LId; public : static char fieldSM1LName[]; public : static int fieldSM2LId; public : static char fieldSM2LName[]; public : static int fieldSM3LId; public : static char fieldSM3LName[]; public : static int fieldSM4LId; public : static char fieldSM4LName[]; public: static int fieldSWRadId; public: static char fieldSWRadName[]; public: static int fieldLWRadId; public: static char fieldLWRadName[]; // Sent to IFS public : static int fieldLowlaiId; public : static char fieldLowlaiName[]; public : static int fieldHighlaiId; public : static char fieldHighlaiName[]; public : static int fieldTypeHId; public : static char fieldTypeHName[]; public : static int fieldFracHId; public : static char fieldFracHName[]; public : static int fieldTypeLId; public : static char fieldTypeLName[]; public : static int fieldFracLId; public : static char fieldFracLName[]; // For exchange with TM5 public : static int fieldCO2Id; public : static char fieldCO2Name[]; public : static int fieldCfluxNatId; public : static char fieldCfluxNatName[]; public : static int fieldCfluxAntId; public : static char fieldCfluxAntName[]; public : static int fieldNPPId; public : static char fieldNPPName[]; // *** // METHODS // *** // Only OASIS-MCT initialisation public : static int init(int&); // Boolean argument specifies whether coupling to TM5 is done or not public : static int init_part_defvar(int, int, bool, int); // For communication with root only public : static int create_couplcomm(int, int, int&); // couple_get - from IFS and from TM5 public : static int couple_get(int, int, int, bool, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *); // couple_put - up to 8 Fields (6 to IFS, 2 to TM5) public : static int couple_put(int, int, int, bool, double *, double *, double *, double *, double *, double *, double *, double *, double *); public : static int finalize(void); public : static int abort(int, std::string, std::string, int); };