[MOAB-dev] r4016 - MOAB/trunk/tools/dagmc
Tim Tautges
tautges at mcs.anl.gov
Wed Jun 23 18:20:01 CDT 2010
I agree with Paul, if MOAB is compiled with CGM on, the CGM defines etc. should be available to client apps, probably
via inclusion of cgm.make in moab.make.
Jim, could you investigate? Thanks.
- tim
On 06/23/2010 04:19 PM, Paul Wilson wrote:
> Hi Steve,
>
> Thanks again for finding this, but the more I think about it, I wonder
> if this is the right solutions.
>
> It is theoretically possible to build MOAB/DAGMC apps with no reference
> to CGM whatsoever. Under those circumstances, RefEntity will never be
> defined beyond the single declaration in DagMC.hpp. Is this OK? Wouldn't
> it be better to set the CGM macro in moab.make for inclusion in other apps?
>
> Paul
>
> sjackson at cae.wisc.edu wrote:
>> Author: sjackson
>> Date: 2010-06-23 14:44:46 -0500 (Wed, 23 Jun 2010)
>> New Revision: 4016
>>
>> Modified:
>> MOAB/trunk/tools/dagmc/DagMC.hpp
>> Log:
>> Fix a very old, but recently symptomatic, bug in DagMC.
>>
>> When MOAB is built with CGM, the macro "CGM" is defined. Until now,
>> this caused an extra data member to be included in the DagMC class.
>> However, client code compiling against DagMC does not define the CGM
>> macro (the macro is not exported to moab.make). This means a client
>> compiling against DagMC.hpp can wind up with an incorrect map of the
>> data members in a DagMC object.
>>
>> This hasn't surfaced as a problem before because the conditionally-
>> included data member was declared *after* all other client-facing
>> data members. The reordering of data members in r4006 exposed the
>> problem.
>>
>> The easy solution (which I've taken) is to simply remove the checks
>> from the header file. If CGM is not available, the extra declarations
>> are harmless (and DagMC gets one extra unused std::vector).
>>
>> Moral: Beware of #ifdefs in public headers, particularly if they
>> check for macros that client code may not know about.
>>
>> Modified: MOAB/trunk/tools/dagmc/DagMC.hpp
>> ===================================================================
>> --- MOAB/trunk/tools/dagmc/DagMC.hpp 2010-06-22 18:15:50 UTC (rev 4015)
>> +++ MOAB/trunk/tools/dagmc/DagMC.hpp 2010-06-23 19:44:46 UTC (rev 4016)
>> @@ -12,9 +12,7 @@
>>
>> #include "moab/OrientedBoxTreeTool.hpp"
>>
>> -#ifdef CGM
>> class RefEntity;
>> -#endif
>>
>> namespace moab {
>>
>> @@ -349,10 +347,8 @@
>> // entity index (contiguous 1-N indices) indexed like rootSets are
>> std::vector<int> entIndices;
>>
>> -#ifdef CGM
>> // corresponding geometric entities indexed like rootSets are
>> std::vector<RefEntity *> geomEntities;
>> -#endif
>> // metadata
>> Tag matTag, densTag, bcTag, impTag, tallyTag;
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
--
================================================================
"You will keep in perfect peace him whose mind is
steadfast, because he trusts in you." Isaiah 26:3
Tim Tautges Argonne National Laboratory
(tautges at mcs.anl.gov) (telecommuting from UW-Madison)
phone: (608) 263-8485 1500 Engineering Dr.
fax: (608) 263-4499 Madison, WI 53706
More information about the moab-dev
mailing list