[MOAB-dev] r2560 - MOAB/trunk

Jason Kraftcheck kraftche at cae.wisc.edu
Tue Jan 20 16:51:53 CST 2009


Tim Tautges wrote:
> Hmm, why aren't these maps in the ReadNCDF class?
> 

There weren't any there already because previously the code did not convert
from ExodusII to MBCN ordering when reading or writing higher-order elements.

exodus_order.h is not in ReadNCDF now because it is common code used by
Tqdcfr, ReadNCDF, and WriteNCDF.

patran_order.h could be combined with exodus_order.h, as that is currently
the only source it is included in.  I thought it better to leave it separate
in case we ever needed to know the patran order for some other readers or
writers.

Also, either of these could be used directly by applications or perhaps
someday in combination with some MOAB utility code to convert from the MBCN
order to whatever order the application prefers.

- jason


> - tim
> 
> kraftche at mcs.anl.gov wrote:
>> Author: kraftche
>> Date: 2009-01-20 16:42:43 -0600 (Tue, 20 Jan 2009)
>> New Revision: 2560
>>
>> Added:
>>    MOAB/trunk/exodus_order.h
>>    MOAB/trunk/patran_order.h
>> Log:
>> add maps for converting from MBCN to PATRAN or ExodusII node orderings
>>
>> Added: MOAB/trunk/exodus_order.h
>> ===================================================================
>> --- MOAB/trunk/exodus_order.h                            (rev 0)
>> +++ MOAB/trunk/exodus_order.h    2009-01-20 22:42:43 UTC (rev 2560)
>> @@ -0,0 +1,46 @@
>> +#ifndef EXODUS_ORDER_HPP
>> +#define EXODUS_ORDER_HPP
>> +
>> +#include "patran_order.h"
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +/* Cubit writes ExodusII files with tet mid-face nodes in this order */
>> +static const int exodus_tet8_order[] = { 0, 1, 2, 3, 4, 5, 7, 6 };
>> +static const int exodus_tet9_order[] = { 0, 1, 2, 3, 8, 4, 5, 7, 6 };
>> +static const int exodus_tet14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8,
>> 9, 10, 11, 13, 12 };
>> +static const int exodus_tet15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8,
>> 9, 14, 10, 11, 13, 12 };
>> +
>> +static const int* exodus_tet_order[] = { 0, 0, 0, 0, 0, 0, 0, 0,
>> +                                  exodus_tet8_order,
>> +                                  exodus_tet9_order,
>> +                                  0, 0, 0, 0,
>> +                                  exodus_tet14_order,
>> +                                  exodus_tet15_order,
>> +                                  0, 0, 0, 0, 0, 0,
>> +                                  0, 0, 0, 0, 0, 0 };
>> +
>> +static const int* const* exodus_hex_order = patran_hex_order;
>> +
>> +static const int *const *const exodus_elem_order_map[] = { + 
>> patran_null_order, // MBVERTEX
>> +  patran_null_order, // MBEDGE
>> +  patran_null_order, // MBTRI
>> +  patran_null_order, // MBQUAD
>> +  patran_null_order, // MBPOLYGON
>> +  exodus_tet_order,  // MBTET
>> +  patran_null_order, // MBPYRAMID
>> +  patran_pri_order,  // MBPRISM
>> +  patran_null_order, // MBKNIFE
>> +  exodus_hex_order,  // MBHEX
>> +  patran_null_order, // MBPOLYHEDRON
>> +  patran_null_order
>> +};
>> +
>> +#ifdef __cplusplus
>> +} // extern "C"
>> +#endif
>> +
>> +#endif
>>
>> Added: MOAB/trunk/patran_order.h
>> ===================================================================
>> --- MOAB/trunk/patran_order.h                            (rev 0)
>> +++ MOAB/trunk/patran_order.h    2009-01-20 22:42:43 UTC (rev 2560)
>> @@ -0,0 +1,111 @@
>> +#ifndef PATRAN_ORDER_H
>> +#define PATRAN_ORDER_H
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +/* Define maps that, when indexed by the PATRAN connectivity index
>> return
>> +   the corresponding index in the MOAB connectivity. */
>> +
>> +static const int patran_tet8_order[] = { 0, 1, 2, 3, 7, 5, 6, 4 };
>> +static const int patran_tet9_order[] = { 0, 1, 2, 3, 8, 7, 5, 6, 4 };
>> +static const int patran_tet14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8,
>> 9, 13, 11, 12, 10 };
>> +static const int patran_tet15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8,
>> 9, 14, 13, 11, 12, 10 };
>> +
>> +static const int patran_hex14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 12,
>> 13, 11, 9, 8, 10 };
>> +static const int patran_hex15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 14,
>> 12, 13, 11, 9, 8, 10 };
>> +static const int patran_hex26_order[] = { 0, 1, 2, 3, 4, 5, 6, 7,
>> +                                   8, 9, 10, 11, 12, 13, 14, 15, 16,
>> 17, 18, 19,
>> +                                   24, 25, 23, 21, 20, 22 };
>> +static const int patran_hex27_order[] = { 0, 1, 2, 3, 4, 5, 6, 7,
>> +                                   8, 9, 10, 11, 12, 13, 14, 15, 16,
>> 17, 18, 19,
>> +                                   26, 24, 25, 23, 21, 20, 22 };
>> +
>> +static const int patran_pri11_order[] = { 0, 1, 2, 3, 4, 5, 9, 10, 7,
>> 8, 6 };
>> +static const int patran_pri12_order[] = { 0, 1, 2, 3, 4, 5, 11, 9,
>> 10, 7, 8, 6 };
>> +static const int patran_pri20_order[] = { 0, 1, 2, 3, 4, 5,
>> +                                   6, 7, 8, 9, 10, 11, 12, 13, 14,
>> +                                   18, 19, 16, 17, 15 };
>> +static const int patran_pri21_order[] = { 0, 1, 2, 3, 4, 5,
>> +                                   6, 7, 8, 9, 10, 11, 12, 13, 14,
>> +                                   20, 18, 19, 16, 17, 15 };
>> +
>> +/* Define list of maps for an element type, indexed by the number
>> +   of nodes in the element. Entries are NULL where MBCN connectivity
>> +   is the same as PATRAN (or the number of nodes is invalid.) */
>> +
>> +static const int* const patran_null_order[] = { 0, 0, 0, 0, 0, 0, 0,
>> 0, +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0, 0, 0, 0, 0, 0, 0, 0,
>> +                                         0 };
>> +static const int* const patran_tet_order[] = { 0, 0, 0, 0, 0, 0, 0,
>> 0, +                                        patran_tet8_order,
>> +                                        patran_tet9_order,
>> +                                        0, 0, 0, 0, 
>> +                                        patran_tet14_order,
>> +                                        patran_tet15_order,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0 };
>> +static const int* const patran_hex_order[] = { 0, 0, 0, 0, 0, 0, 0,
>> 0, +                                        0, 0, 0, 0, 0, 0,
>> +                                        patran_hex14_order,
>> +                                        patran_hex15_order,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0,
>> +                                        patran_hex26_order,
>> +                                        patran_hex27_order,
>> +                                        0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0 };
>> +static const int* const patran_pri_order[] = { 0, 0, 0, 0, 0, 0, 0,
>> 0, +                                        0, 0, 0,
>> +                                        patran_pri11_order,
>> +                                        patran_pri12_order,
>> +                                        0, 0, 0, 0, 0, 0, 0,
>> +                                        patran_pri20_order,
>> +                                        patran_pri21_order,
>> +                                        0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0, 0, 0, 0, 0, 0, 0, 0,
>> +                                        0 };
>> +
>> +/* Define matrix of maps indexed by element topology (MBEntityType) and
>> +   number of nodes. Entries are NULL where MBCN connectivity
>> +   is the same as PATRAN (or the number of nodes is invalid.) */
>> +
>> +static const int *const *const patran_elem_order_map[] = { + 
>> patran_null_order, // MBVERTEX
>> +  patran_null_order, // MBEDGE
>> +  patran_null_order, // MBTRI
>> +  patran_null_order, // MBQUAD
>> +  patran_null_order, // MBPOLYGON
>> +  patran_tet_order,  // MBTET
>> +  patran_null_order, // MBPYRAMID
>> +  patran_pri_order,  // MBPRISM
>> +  patran_null_order, // MBKNIFE
>> +  patran_hex_order,  // MBHEX
>> +  patran_null_order, // MBPOLYHEDRON
>> +  patran_null_order
>> +};
>> +
>> +#ifdef __cplusplus
>> +} // extern "C"
>> +#endif
>> +
>> +#endif
>>
>>
> 


-- 
"A foolish consistency is the hobgoblin of little minds" - Ralph Waldo Emerson




More information about the moab-dev mailing list