00001 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00002 ** 00003 ** Copyright (C), 2004, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia. 00004 ** 00005 ** Authors: 00006 ** Ogar R. Widjaja, Computational Scientist, VPAC. 00007 ** Raquibul Hassan, Software Engineer, VPAC. (raq@vpac.org) 00008 ** Keith Hsuan, Computational Scientist, VPAC (keith@vpac.org) 00009 ** William F. Appelbe, Director, VPAC. (bill@vpac.org) 00010 ** Stevan M. Quenette, Senior Software Engineer, VPAC. (steve@vpac.org) 00011 ** Patrick D. Sunter, Software Engineer, VPAC. (patrick@vpac.org) 00012 ** 00013 ** This file may be distributed under the terms of the VPAC Public License 00014 ** as defined by VPAC of Australia and appearing in the file 00015 ** LICENSE.VPL included in the packaging of this file. 00016 ** 00017 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00018 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00019 ** 00020 */ 00034 #ifndef __SPModel_types_h__ 00035 #define __SPModel_types_h__ 00036 00037 /* Defines */ 00038 #ifndef INFINITY 00039 #define INFINITY 1e32 00040 #endif 00041 #define TRUE 1 00042 #define FALSE 0 00043 #define UNDEFINED -1 00044 #define OUTPUT_PATH_SIZE 500 00045 #define PI 3.1415926535897932384626 00046 #define MASTER_PROC 0 00047 00048 /* defining Comm tags */ 00049 00050 #define MY_LOAD_TAG 1<<1 00051 #define PACKAGE_TAG 1<<2 00052 #define NEIGHBOUR_TAG 1<<3 00053 #define SIDE_TAG 1<<4 00054 #define PROVIDERS_TAG 1<<5 00055 #define HALONODE_COUNT_TAG 1<<6 00056 #define HALO_PACKAGE_TAG 1<<7 00057 #define FOREIGN_HALONODE_COUNT_TAG 1<<8 00058 #define FOREIGN_HALONODE_ID_TAG 1<<9 00059 #define PROVIDERS_SYNC_TAG 1<<10 00060 #define WATERSEDI_TAG 1<<11 00061 #define FLEXURE_SEND_RECV_TAG 1<<12 00062 00063 extern const char* MESH_TYPE_AUTOGENERATED; 00064 extern const char* MESH_TYPE_FROM_TEXT_INPUT; 00065 extern const char* MESH_TYPE_FROM_ENVI_INPUT; 00066 extern const char* MESH_TYPE_FROM_SPM_INPUT; 00067 extern const char* MESH_TYPE_FROM_OUTPUT_FILES; 00068 00069 /* Types */ 00070 typedef struct SPModel_Node SPModel_Node; 00071 typedef struct SPModel_RegularMeshNode SPModel_RegularMeshNode; 00072 typedef struct SurfaceMesh SurfaceMesh; 00073 typedef struct SurfaceMeshHaloNodes SurfaceMeshHaloNodes; 00074 typedef struct SurfaceMeshForeignHaloNodes SurfaceMeshForeignHaloNodes; 00075 typedef struct SurfaceMeshLoader SurfaceMeshLoader; 00076 typedef struct SurfaceMeshSmoother SurfaceMeshSmoother; 00077 typedef struct _SurfaceMeshDecomp _SurfaceMeshDecomp; 00078 typedef struct SurfaceMeshIrregularDecomp SurfaceMeshIrregularDecomp; 00079 typedef struct SurfaceMeshRegularDecomp SurfaceMeshRegularDecomp; 00080 typedef struct SPModel_Context SPModel_Context; 00081 typedef struct SPModel_HaloNode SPModel_HaloNode; 00082 typedef struct NodeWaterSediment NodeWaterSediment; 00083 typedef struct Catchment Catchment; 00084 typedef struct CatchmentList CatchmentList; 00085 typedef struct SPModel_FlexureInfo SPModel_FlexureInfo; 00086 typedef struct LinearInterpolator LinearInterpolator; 00087 typedef struct _Interpolator _Interpolator; 00088 typedef struct SurfaceRegularMesh SurfaceRegularMesh; 00089 typedef struct _SurfaceMeshCyclicBC _SurfaceMeshCyclicBC; 00090 typedef struct SurfaceMeshRectangularCyclicBC SurfaceMeshRectangularCyclicBC; 00091 typedef struct ParameterTimeSeries ParameterTimeSeries; 00092 typedef struct SplineInterpolator SplineInterpolator; 00093 00094 /* output streams: initialised in SPModel_Init() */ 00095 extern Stream* SPModel_VerboseConfig; 00096 extern Stream* SPModel_Debug; 00097 extern Stream* SPModel_Warning; 00098 00099 #endif /* __SPModel_types_h__ */