moab
|
00001 #ifndef PATRAN_ORDER_H 00002 #define PATRAN_ORDER_H 00003 00004 #ifdef __cplusplus 00005 extern "C" { 00006 namespace moab { 00007 #endif 00008 00009 /* Define maps that, when indexed by the PATRAN connectivity index return 00010 the corresponding index in the MOAB connectivity. */ 00011 00012 static const int patran_tet8_order[] = { 0, 1, 2, 3, 7, 5, 6, 4 }; 00013 static const int patran_tet9_order[] = { 0, 1, 2, 3, 8, 7, 5, 6, 4 }; 00014 static const int patran_tet14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 11, 12, 10 }; 00015 static const int patran_tet15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 13, 11, 12, 10 }; 00016 00017 static const int patran_hex14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 11, 9, 8, 10 }; 00018 static const int patran_hex15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 14, 12, 13, 11, 9, 8, 10 }; 00019 static const int patran_hex26_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 00020 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 00021 24, 25, 23, 21, 20, 22 }; 00022 static const int patran_hex27_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 00023 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 00024 26, 24, 25, 23, 21, 20, 22 }; 00025 00026 static const int patran_pri11_order[] = { 0, 1, 2, 3, 4, 5, 9, 10, 7, 8, 6 }; 00027 static const int patran_pri12_order[] = { 0, 1, 2, 3, 4, 5, 11, 9, 10, 7, 8, 6 }; 00028 static const int patran_pri20_order[] = { 0, 1, 2, 3, 4, 5, 00029 6, 7, 8, 9, 10, 11, 12, 13, 14, 00030 18, 19, 16, 17, 15 }; 00031 static const int patran_pri21_order[] = { 0, 1, 2, 3, 4, 5, 00032 6, 7, 8, 9, 10, 11, 12, 13, 14, 00033 20, 18, 19, 16, 17, 15 }; 00034 00035 /* Define list of maps for an element type, indexed by the number 00036 of nodes in the element. Entries are NULL where MBCN connectivity 00037 is the same as PATRAN (or the number of nodes is invalid.) */ 00038 00039 static const int* const patran_null_order[] = { 0, 0, 0, 0, 0, 0, 0, 0, 00040 0, 0, 0, 0, 0, 0, 0, 0, 00041 0, 0, 0, 0, 0, 0, 0, 0, 00042 0, 0, 0, 0, 0, 0, 0, 0, 00043 0, 0, 0, 0, 0, 0, 0, 0, 00044 0, 0, 0, 0, 0, 0, 0, 0, 00045 0, 0, 0, 0, 0, 0, 0, 0, 00046 0, 0, 0, 0, 0, 0, 0, 0, 00047 0 }; 00048 static const int* const patran_tet_order[] = { 0, 0, 0, 0, 0, 0, 0, 0, 00049 patran_tet8_order, 00050 patran_tet9_order, 00051 0, 0, 0, 0, 00052 patran_tet14_order, 00053 patran_tet15_order, 00054 0, 0, 0, 0, 0, 0, 0, 0, 00055 0, 0, 0, 0, 0, 0, 0, 0, 00056 0, 0, 0, 0, 0, 0, 0, 0, 00057 0, 0, 0, 0, 0, 0, 0, 0, 00058 0, 0, 0, 0, 0, 0, 0, 0, 00059 0 }; 00060 static const int* const patran_hex_order[] = { 0, 0, 0, 0, 0, 0, 0, 0, 00061 0, 0, 0, 0, 0, 0, 00062 patran_hex14_order, 00063 patran_hex15_order, 00064 0, 0, 0, 0, 0, 0, 0, 0, 00065 0, 0, 00066 patran_hex26_order, 00067 patran_hex27_order, 00068 0, 0, 0, 0, 00069 0, 0, 0, 0, 0, 0, 0, 0, 00070 0, 0, 0, 0, 0, 0, 0, 0, 00071 0, 0, 0, 0, 0, 0, 0, 0, 00072 0, 0, 0, 0, 0, 0, 0, 0, 00073 0 }; 00074 static const int* const patran_pri_order[] = { 0, 0, 0, 0, 0, 0, 0, 0, 00075 0, 0, 0, 00076 patran_pri11_order, 00077 patran_pri12_order, 00078 0, 0, 0, 0, 0, 0, 0, 00079 patran_pri20_order, 00080 patran_pri21_order, 00081 0, 0, 00082 0, 0, 0, 0, 0, 0, 0, 0, 00083 0, 0, 0, 0, 0, 0, 0, 0, 00084 0, 0, 0, 0, 0, 0, 0, 0, 00085 0, 0, 0, 0, 0, 0, 0, 0, 00086 0, 0, 0, 0, 0, 0, 0, 0, 00087 0 }; 00088 00089 /* Define matrix of maps indexed by element topology (EntityType) and 00090 number of nodes. Entries are NULL where MBCN connectivity 00091 is the same as PATRAN (or the number of nodes is invalid.) */ 00092 00093 static const int *const *const patran_elem_order_map[] = { 00094 patran_null_order, /* MBVERTEX */ 00095 patran_null_order, /* MBEDGE */ 00096 patran_null_order, /* MBTRI */ 00097 patran_null_order, /* MBQUAD */ 00098 patran_null_order, /* MBPOLYGON */ 00099 patran_tet_order, /* MBTET */ 00100 patran_null_order, /* MBPYRAMID */ 00101 patran_pri_order, /* MBPRISM */ 00102 patran_null_order, /* MBKNIFE */ 00103 patran_hex_order, /* MBHEX */ 00104 patran_null_order, /* MBPOLYHEDRON */ 00105 patran_null_order 00106 }; 00107 00108 #ifdef __cplusplus 00109 } /* extern "C" */ 00110 } /* namespace moab */ 00111 #endif 00112 00113 #endif