Main Page | Class Hierarchy | Class List | File List | Class Members

prom_defs.h

00001 // $Id: prom_defs.h,v 1.6 2004/03/25 19:43:14 adams Exp $ 00002 // Author: Mark F. Adams 00003 // Copyright (c) 2000 by Mark F. Adams 00004 // Filename: prom_defs.hh 00005 // 00006 #ifndef __PROM_DEFS_H__ 00007 #define __PROM_DEFS_H__ 00008 00009 //assert 00010 #include <assert.h> 00011 //#define assert(n) 00012 // standard stuff 00013 00014 #include <stdio.h> 00015 #include <stdlib.h> 00016 #include <malloc.h> 00017 //#include <strings.h> -- breaks PARCH_win32 00018 #include <string.h> 00019 #include <ctype.h> 00020 #include <math.h> 00021 #include <stdarg.h> 00022 #include <time.h> 00023 #include <mpi.h> 00024 00025 // add PETSc if Petra is not used 00026 #if !defined(PROM_USE_PETRA) 00027 #if !defined(PROM_HAVE_PETSC) 00028 #define PROM_HAVE_PETSC 00029 #endif 00030 #if !defined(PROM_USE_PETSC) 00031 #define PROM_USE_PETSC 00032 #endif 00033 #endif 00034 00035 #if defined(HPM) || defined(HPM_MM) || defined(HPM_F) 00036 #include "libhpm.H" 00037 #endif /* HPM */ 00038 00039 #if defined(PROM_HAVE_PETSC) 00040 00041 #if defined(PROM_USE_C_PETSC) 00042 extern "C" { 00043 #endif 00044 #include "petsc.h" 00045 #include "petscvec.h" // needed for athena 00046 #include "petscmat.h" // needed for kkt solver 00047 #if defined(PROM_USE_C_PETSC) 00048 } 00049 #endif 00050 00051 #else // no PETSc at all -- PETSc infrestructure replacements 00052 00053 #define INSERT_VALUES 0 00054 #define ADD_VALUES 1 00055 00056 #define PetscMalloc(t,p) ((p=malloc(t)) == NULL) 00057 int PetscFree( void *p ){ free(p); return 0; } 00058 #define PetscGetResidentSetSize(t) (int)(*t = 0.0) 00059 #define PetscFunctionReturn(a) return (a) 00060 #define PetscFunctionReturnVoid() return 00061 typedef bool PetscTruth; 00062 typedef double PetscLogDouble; 00063 int PetscPrintf(MPI_Comm comm,const char format[],...); 00064 int PetscMemzero(void *a, int n){ 00065 if (n < 0) SETERRQ(1,"Memory length must be >= 0"); 00066 if (n > 0) memset(a,0,n); 00067 return 0; 00068 } 00069 00070 #define CHKERRQ(a) if(a!=0){printf("\t\tERROR: in file %s line %d\n",__FILE__,__LINE__); return a;} 00071 #define SETERRQ(a,s){printf("\t\tERROR: %s in file %s line %d\n",s,__FILE__,__LINE__);return a;} 00072 #define SETERRQ1(a,s,d){printf("\t\tERROR: %s in file %s line %d, %d\n",s,__FILE__,__LINE__,d);return a;} 00073 #define SETERRQ2(a,s,d,d2){printf("\t\tERROR: %s in file %s line %d, %d %d\n",s,__FILE__,__LINE__,d,d2);return a;} 00074 00075 #endif 00076 00077 #ifndef TRUE 00078 #define TRUE (bool)1 00079 #endif 00080 00081 #ifndef FALSE 00082 #define FALSE (bool)0 00083 #endif 00084 00085 // METIS 00086 #if defined(PROM_HAVE_METIS) 00087 #ifndef __METIS_H__ 00088 #define __METIS_H__ 00089 #if defined(__cplusplus) 00090 extern "C"{ 00091 #endif 00092 #include "metis.h" 00093 #include "parmetis.h" 00094 #if defined(__cplusplus) 00095 } 00096 #endif 00097 #endif // __METIS_H__ 00098 #else 00099 typedef int idxtype; 00100 #endif // PROM_HAVE_METIS 00101 00102 // Vampir 00103 #if defined(PROM_USE_VAMPIRE) 00104 #define PROM_HAVE_VAMPIRE 00105 #if defined(__cplusplus) 00106 extern "C"{ 00107 #endif 00108 #include "VT.h" 00109 #if defined(__cplusplus) 00110 } 00111 #endif 00112 #endif 00113 00114 typedef enum NdStTAG{PROM_SELECTED=0,PROM_DELETED,PROM_UNKNOWN,PROM_NOTUSED,PROM_NUMSTATE}PromNodeState; 00115 typedef enum EltypeTAG{PROM_SOLID=0,PROM_PLANE,PROM_N_POLY,PROM_NOELEM,PROM_NUMELEMTYPES}PromElemType; 00116 typedef enum NdtpopTAG{PROM_CORNER=0,PROM_EDGE,PROM_SURFACE,PROM_INTERIOR,PROM_NUMTOPO}PromNodeTopo; 00117 typedef enum PCSideTAG{PROM_LEFT=0,PROM_RIGHT,PROM_SYMM,PROM_FLEX}PromPCSide; 00118 00119 typedef double gfloat; 00120 typedef double shpfloat; 00121 00122 #define PROM_DELETE_DAP 00123 #define PROM_GHOST_REGION 11 00124 #define PROM_NENMAX 27 00125 #define PROM_MAXPAR_HARD 512 00126 #define PROM_MAXPAR_SOFT 17 00127 #define PROM_MAXNIEGH 2048 00128 #define PROM_NUMENV 8 00129 #define PROM_USE_NODAL_SMAGG 00130 #define PROM_DIAG_FACTOR 1.e-6 00131 #define PROM_RAP_SHIFT 1.e-10 00132 //#define PROM_TRACE_PC_SETUP 00133 00134 /* MPI buffers */ 00135 #if defined(PARCH_t3d) 00136 /* typedef double sendfloat; */ 00137 #define PROM_BSZ 8192 00138 #else 00139 /* typedef double sendfloat; */ 00140 #define PROM_BSZ 8192 00141 #endif 00142 00143 enum{LOG_FEI_INIT_STR,LOG_FEI_PROM_SETUP,LOG_FEI_MATRIX_SETUP,LOG_FEI_CR_BC,LOG_PARTITION,LOG_RESTRICTION,LOG_FEI_SOLVE,LOG_FEI_ASSEM,LOG_METIS,LOG_FEI_MAT_AXPY,LOG_FEI_RESETCR,LOG_SYMB_NUMR,LOG_NEW_GRID,LOG_FINALIZE,LOG_MAT_TRI_PROD, LOG_SLES_SETUP,LOG_PROM,LOG_FEAP,LOG_ASSEMBLE,LOG_COARSEN,LOG_SYMB_INIT_FEAP,LOG_NEW_COARSE,LOG_TRIANGULATE,LOG_FIXMESH,LOG_EXACTADJ,LOG_MAPS,LOG_MIS0,LOG_MIS1,LOG_MIS2,LOG_MIS3,LOG_MIS4,LOG_MIS5,LOG_MIS6,LOG_MIS7,LOG_REPART,LOG_AUX1,LOG_AUX2,LOG_AUX3,LOG_TOT}; 00144 00145 typedef enum{PROM_READ,PROM_WRITE,PROM_PRINT}PromArchiveType; 00146 00147 #define CHKNEW(v,sz){if(!v){PetscPrintf(MPI_COMM_SELF,"[?]ERROR: %s, line %d, file %s failed to alloc %d bytes\n", __FUNCT__,__LINE__,__FILE__,sz);SETERRQ(1,"new memory error");}} 00148 #define CHKNEW_void(v,sz){if(!v){PetscPrintf(MPI_COMM_SELF,"[?]ERROR %s, line %d, file %s: failed to alloc %d bytes\n", __FUNCT__, __LINE__, __FILE__, sz);}} 00149 00150 // FORTRAN 00151 #ifdef PETSC_HAVE_FORTRAN_CAPS 00152 #define writer_ WRITER 00153 #define feap_ FEAP 00154 #define formfe_ FORMFE 00155 #define pmacr1_ PMACR1 00156 #define pmacr2_ PMACR2 00157 #define pmacr3_ PMACR3 00158 #define feap_set_dt_ FEAP_SET_DT 00159 #define feap_set_pcont_l_ FEAP_SET_PCONT_L 00160 #define feap_pre_solve_ FEAP_PRE_SOLVE 00161 #define feap_update_ FEAP_UPDATE 00162 #define feap_plastic_data_ FEAP_PLASTIC_DATA 00163 #define feap_finalize_ FEAP_FINALIZE 00164 #define pfeap_assemble_ PFEAP_ASSEMBLE 00165 #define mgformfe_ MGFORMFE 00166 #define dgetrf_ SGETRF 00167 #define dgetrs_ SGETRS 00168 #define dgeqrf_ SGEQRF 00169 #define dorgqr_ SORGQR 00170 #define olympus_assemble_ OLYMPUS_ASSEMBLE 00171 #define write_disp_ WRITE_DISP 00172 #define write_all_disp_ WRITE_ALL_DISP 00173 #define update_geometry_ UPDATE_GEOMETRY 00174 #define dgesvd_ SGESVD 00175 #define feap_get_mesh_sizes_ FEAP_GET_MESH_SIZES 00176 #define feap_get_mesh_data_ FEAP_GET_MESH_DATA 00177 #define feap_get_node_map_ FEAP_GET_NODE_MAP 00178 #define feap_get_nen_ FEAP_GET_NEN 00179 #define feap_get_nnodes_ FEAP_GET_NNODES 00180 #define feap_get_nelems_ FEAP_GET_NELEMS 00181 #define feap_get_nmat_ FEAP_GET_NMAT 00182 #define feap_get_elem_natributes_ FEAP_GET_ELEM_NATRIBUTES 00183 #define feap_get_elem_atributes_ FEAP_GET_ELEM_ATRIBUTES 00184 #define feap_set_array_ FEAP_SET_ARRAY 00185 #define feap_get_array_ FEAP_GET_ARRAY 00186 #define feap_get_neq_ FEAP_GET_NEQ 00187 #define feap_apply_q_ FEAP_APPLY_Q 00188 #define feap_srot_ FEAP_SROT 00189 #define dgesvf_ DGESVF 00190 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 00191 #define writer_ writer 00192 #define feap_ feap 00193 #define formfe_ formfe 00194 #define pmacr1_ pmacr1 00195 #define pmacr2_ pmacr2 00196 #define pmacr3_ pmacr3 00197 #define feap_set_dt_ feap_set_dt 00198 #define feap_set_pcont_l_ feap_set_pcont_l 00199 #define feap_pre_solve_ feap_pre_solve 00200 #define feap_update_ feap_update 00201 #define feap_plastic_data_ feap_plastic_data 00202 #define feap_finalize_ feap_finalize 00203 #define pfeap_assemble_ pfeap_assemble 00204 #define mgformfe_ mgformfe 00205 #define dgetrf_ dgetrf 00206 #define dgetrs_ dgetrs 00207 #define dgeqrf_ dgeqrf 00208 #define dorgqr_ dorgqr 00209 #define olympus_assemble_ olympus_assemble 00210 #define write_disp_ write_disp 00211 #define write_all_disp_ write_all_disp 00212 #define update_geometry_ update_geometry 00213 #define dgesvd_ dgesvd 00214 #define feap_get_mesh_sizes_ feap_get_mesh_sizes 00215 #define feap_get_mesh_data_ feap_get_mesh_data 00216 #define feap_get_node_map_ feap_get_node_map 00217 #define feap_get_nen_ feap_get_nen 00218 #define feap_get_nnodes_ feap_get_nnodes 00219 #define feap_get_nelems_ feap_get_nelems 00220 #define feap_get_nmat_ feap_get_nmat 00221 #define feap_get_elem_natributes_ feap_get_elem_natributes 00222 #define feap_get_elem_atributes_ feap_get_elem_atributes 00223 #define feap_set_array_ feap_set_array 00224 #define feap_get_array_ feap_get_array 00225 #define feap_get_neq_ feap_get_neq 00226 #define feap_apply_q_ feap_apply_q 00227 #define feap_srot_ feap_srot 00228 #define dgesvf_ dgesvf 00229 #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE_UNDERSCORE) 00230 #define writer_ writer_ 00231 #define feap_ feap_ 00232 #define formfe_ formfe_ 00233 #define pmacr1_ pmacr1_ 00234 #define pmacr2_ pmacr2_ 00235 #define pmacr3_ pmacr3_ 00236 #define feap_set_dt_ feap_set_dt__ 00237 #define feap_set_pcont_l_ feap_set_pcont_l__ 00238 #define feap_pre_solve_ feap_pre_solve__ 00239 #define feap_update_ feap_update__ 00240 #define feap_plastic_data_ feap_plastic_data__ 00241 #define feap_finalize_ feap_finalize__ 00242 #define pfeap_assemble_ pfeap_assemble__ 00243 #define mgformfe_ mgformfe_ 00244 #define dgetrf_ dgetrf_ 00245 #define dgetrs_ dgetrs_ 00246 #define dgeqrf_ dgeqrf_ 00247 #define dorgqr_ dorgqr_ 00248 #define olympus_assemble_ olympus_assemble__ 00249 #define write_disp_ write_disp__ 00250 #define write_all_disp_ write_all_disp__ 00251 #define update_geometry_ update_geometry__ 00252 #define dgemm_ dgemm__ 00253 #define dgemv_ dgemv__ 00254 #define dgesvd_ dgesvd__ 00255 #define feap_get_mesh_sizes_ feap_get_mesh_sizes__ 00256 #define feap_get_mesh_data_ feap_get_mesh_data__ 00257 #define feap_get_node_map_ feap_get_node_map__ 00258 #define feap_get_nen_ feap_get_nen__ 00259 #define feap_get_nmat_ feap_get_nmat__ 00260 #define feap_get_elem_natributes_ feap_get_elem_natributes__ 00261 #define feap_get_elem_atributes_ feap_get_elem_atributes__ 00262 #define feap_get_nnodes_ feap_get_nnodes__ 00263 #define feap_get_nelems_ feap_get_nelems__ 00264 #define feap_set_array_ feap_set_array__ 00265 #define feap_get_array_ feap_get_array__ 00266 #define feap_get_neq_ feap_get_neq__ 00267 #define feap_apply_q_ feap_apply_q__ 00268 #define feap_srot_ feap_srot__ 00269 #define dgesvf_ dgesvf__ 00270 #endif 00271 00272 #endif // __PROM_DEFS_H__

Generated on Fri May 21 14:17:53 2004 by doxygen 1.3.7