prom_defs.h
00001
00002
00003
00004
00005
00006 #ifndef __PROM_DEFS_H__
00007 #define __PROM_DEFS_H__
00008
00009
00010 #include <assert.h>
00011
00012
00013
00014 #include <stdio.h>
00015 #include <stdlib.h>
00016 #include <malloc.h>
00017
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
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
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"
00046 #include "petscmat.h"
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
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
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
00133
00134
00135 #if defined(PARCH_t3d)
00136
00137 #define PROM_BSZ 8192
00138 #else
00139
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
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
1.3.7