← Back to team overview

dolfin team mailing list archive

Modified DOLFIN to get it compiled with new CGAL version

 

Hi!

Attached is a small bundle which modifies DOLFIN such that it can be compiled 
with the recent 3.6 release of CGAL. Preprocessor directives are used to keep 
it backwards compatible with CGAL 3.5.x.  It would be nice if you could 
consider  merging it :)

Kind regards,
Andre
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: massing@xxxxxxxxx-20100406124100-0cnvlc7uvhg64tod
# target_branch: bzr+ssh://bazaar.launchpad.net/~dolfin-\
#   core/dolfin/main/
# testament_sha1: 9002f86f0ec5f2514f5334eccc87842fef70c0cd
# timestamp: 2010-04-06 15:00:03 +0200
# base_revision_id: johannr@xxxxxxxxx-20100406085703-v8yp82qe1jryzdk2
# 
# Begin patch
=== modified file 'demo/mesh/intersection/distancequeries/cpp/main.cpp'
--- demo/mesh/intersection/distancequeries/cpp/main.cpp	2010-03-03 11:48:38 +0000
+++ demo/mesh/intersection/distancequeries/cpp/main.cpp	2010-03-05 10:41:58 +0000
@@ -6,7 +6,7 @@
 // Modified by André Massing, 2010
 //
 // First added:  2010-03-03
-// Last changed: 2010-03-03
+// Last changed: 2010-03-04
 // 
 //Author:  André Massing (am), massing@xxxxxxxxx
 //Company:  Simula Research Laboratory, Fornebu, Norway
@@ -41,12 +41,12 @@
   point_list.push_back(Point(-1.5,-1.5,0.0));
   point_list.push_back(Point(0.0,-1.5,0.0));
   point_list.push_back(Point(1.5,-1.5,0.0));
-  ;
+
   //Second row along  y = 0;
   point_list.push_back(Point(-1.5,0.0,0.0));
   point_list.push_back(Point(0.0,0.0,0.0));
   point_list.push_back(Point(1.5,0.0,0.0));
-  ;
+
   //Third row along  y = 1.5;
   point_list.push_back(Point(-1.5,1.5,0.0));
   point_list.push_back(Point(0.0,1.5,0.0));

=== modified file 'demo/mesh/intersection/meshintersection/2D/python/demo.py'
--- demo/mesh/intersection/meshintersection/2D/python/demo.py	2010-03-02 16:42:21 +0000
+++ demo/mesh/intersection/meshintersection/2D/python/demo.py	2010-03-05 10:41:58 +0000
@@ -23,7 +23,7 @@
 
 #Set to False if you do not want to create movies 
 #(default should be True since you probably want to :) 
-create_movies = False
+create_movies = True
 
 # Create meshes (omega0 overlapped by omega1)
 omega0 = UnitCircle(20)
@@ -38,11 +38,11 @@
 
 # Iterate over angle
 theta = 0.0
-dtheta = 0.1*DOLFIN_PI
+dtheta = 0.05*DOLFIN_PI
 intersection = MeshFunction("uint", omega0, omega0.topology().dim())
 _first = True
 
-while theta < 2*DOLFIN_PI:
+while theta < 2*DOLFIN_PI + dtheta:
 
     # Compute intersection with boundary of square
     boundary = BoundaryMesh(omega1)
@@ -70,8 +70,8 @@
       p.write_png()
 
     # Rotate circle around (0.5, 0.5)
-    xr = x[:, 0] - 0.5
-    yr = x[:, 1] - 0.5
+    xr = x[:, 0].copy() - 0.5
+    yr = x[:, 1].copy() - 0.5
     x[:,0] = 0.5 + (cos(dtheta)*xr - sin(dtheta)*yr)
     x[:,1] = 0.5 + (sin(dtheta)*xr + cos(dtheta)*yr)
     omega0.intersection_operator().clear()
@@ -99,7 +99,7 @@
 intersection = MeshFunction("uint", background_mesh, background_mesh.topology().dim())
 _first = True
 
-while theta < 60*DOLFIN_PI:
+while theta < 2*DOLFIN_PI + dtheta:
 
   cells = background_mesh.all_intersected_entities(structure_mesh)
 

=== modified file 'dolfin/mesh/Point.h'
--- dolfin/mesh/Point.h	2010-03-02 10:21:36 +0000
+++ dolfin/mesh/Point.h	2010-03-07 12:32:45 +0000
@@ -5,7 +5,7 @@
 // Modified by Andre Massing, 2009.
 //
 // First added:  2006-06-12
-// Last changed: 2010-03-01
+// Last changed: 2010-03-07
 
 #ifndef __POINT_H
 #define __POINT_H
@@ -15,10 +15,8 @@
 #include <dolfin/common/types.h>
 
 #ifdef HAS_CGAL
-//  #include "CGAL_includes.h"
-  #include <CGAL/Bbox_3.h>
-  #include <CGAL/Point_3.h>
-//  #include <CGAL/Simple_cartesian.h> 
+#include <CGAL/Bbox_3.h>
+#include <CGAL/Point_3.h>
 #endif
 
 namespace dolfin

=== modified file 'dolfin/mesh/Point_3_Bbox_3_intersection.h'
--- dolfin/mesh/Point_3_Bbox_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Bbox_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef  POINT_3_BBOX_3_INTERSECTION_H
 #define  POINT_3_BBOX_3_INTERSECTION_H
@@ -13,7 +13,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
   template <class K>
   inline

=== modified file 'dolfin/mesh/Point_3_Line_3_intersection.h'
--- dolfin/mesh/Point_3_Line_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Line_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef CGAL_POINT_3_LINE_3_INTERSECTION_H
 #define CGAL_POINT_3_LINE_3_INTERSECTION_H
@@ -13,7 +13,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 template <class K>
 inline bool

=== modified file 'dolfin/mesh/Point_3_Point_3_intersection.h'
--- dolfin/mesh/Point_3_Point_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Point_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef  CGAL_POINT_3_POINT_3_INTERSECTION_H
 #define	 CGAL_POINT_3_POINT_3_INTERSECTION_H    
@@ -16,7 +16,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
   template <class K >
   inline bool do_intersect(const typename K::Point_3 & pt1, 

=== modified file 'dolfin/mesh/Point_3_Ray_3_intersection.h'
--- dolfin/mesh/Point_3_Ray_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Ray_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef CGAL_POINT_3_RAY_3_INTERSECTION_H
 #define CGAL_POINT_3_RAY_3_INTERSECTION_H
@@ -13,7 +13,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 template <class K>
 inline 

=== modified file 'dolfin/mesh/Point_3_Segment_3_intersection.h'
--- dolfin/mesh/Point_3_Segment_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Segment_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef CGAL_POINT_3_SEGMENT_3_INTERSECTION_H
 #define CGAL_POINT_3_SEGMENT_2_INTERSECTION_H
@@ -13,7 +13,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 template <class K>
 inline 

=== modified file 'dolfin/mesh/Point_3_Tetrahedron_3_intersection.h'
--- dolfin/mesh/Point_3_Tetrahedron_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Point_3_Tetrahedron_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef CGAL_POINT_3_TETRAHEDRON_3_INTERSECTION_H
 #define CGAL_POINT_3_TETRAHEDRON_3_INTERSECTION_H
@@ -14,7 +14,11 @@
 CGAL_BEGIN_NAMESPACE
 
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 template <class K>
 inline 

=== modified file 'dolfin/mesh/Segment_3_Segment_3_intersection.h'
--- dolfin/mesh/Segment_3_Segment_3_intersection.h	2010-02-10 12:25:51 +0000
+++ dolfin/mesh/Segment_3_Segment_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2010-02-10
+// Last changed: 2010-04-06
 
 #ifndef  segment_3_segment_3_intersection_INC
 #define  segment_3_segment_3_intersection_INC
@@ -21,7 +21,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 
   template <class K >

=== modified file 'dolfin/mesh/Segment_3_Tetrahedron_3_intersection.h'
--- dolfin/mesh/Segment_3_Tetrahedron_3_intersection.h	2010-02-10 12:25:51 +0000
+++ dolfin/mesh/Segment_3_Tetrahedron_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2010-02-10
+// Last changed: 2010-04-06
 
 #ifndef  segment_3_tetrahedron_3_intersection_INC
 #define  segment_3_tetrahedron_3_intersection_INC
@@ -17,7 +17,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
   template <class K>
   inline 

=== modified file 'dolfin/mesh/Tetrahedron_3_Bbox_3_intersection.h'
--- dolfin/mesh/Tetrahedron_3_Bbox_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Tetrahedron_3_Bbox_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,18 +2,22 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-11
+// Last changed: 2010-04-06
 
 #ifndef  TETRAHEDRON_3_BBOX_3_INTERSECTION_INC
 #define  TETRAHEDRON_3_BBOX_3_INTERSECTION_INC
 
 #include <CGAL/Bbox_3.h>
 #include <CGAL/Tetrahedron_3.h>
-#include <CGAL/AABB_intersections/Bbox_3_triangle_3_do_intersect.h>
+//#include <CGAL/AABB_intersections/Bbox_3_triangle_3_do_intersect.h>
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
   //This code is not optimized!!
   template <class K>

=== modified file 'dolfin/mesh/Tetrahedron_3_Tetrahedron_3_intersection.h'
--- dolfin/mesh/Tetrahedron_3_Tetrahedron_3_intersection.h	2009-11-27 01:41:12 +0000
+++ dolfin/mesh/Tetrahedron_3_Tetrahedron_3_intersection.h	2010-04-06 12:11:45 +0000
@@ -2,7 +2,7 @@
 // Licensed under the GNU LGPL Version 2.1.
 //
 // First added:  2009-09-11
-// Last changed: 2009-11-10
+// Last changed: 2010-04-06
 
 #ifndef  TETRAHEDRON_3_TETRAHEDRON_3_INTERSECTION_INC
 #define  TETRAHEDRON_3_TETRAHEDRON_3_INTERSECTION_INC
@@ -12,7 +12,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
   //This code is not optimized!!
   template <class K >

=== modified file 'dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.cpp'
--- dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.cpp	2010-02-11 00:01:37 +0000
+++ dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.cpp	2010-04-06 12:11:45 +0000
@@ -6,7 +6,7 @@
 // Modified by André Massing, 2010
 //
 // First added:  2010-02-10
-// Last changed: 2010-02-11
+// Last changed: 2010-04-06
 // 
 //Author:  André Massing (am), massing@xxxxxxxxx
 //Company:  Simula Research Laboratory, Fornebu, Norway
@@ -19,7 +19,11 @@
 
 namespace CGAL {
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 template <>
 Simple_cartesian<double>::Boolean

=== modified file 'dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.h'
--- dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.h	2010-02-10 12:25:51 +0000
+++ dolfin/mesh/Triangle_3_Tetrahedron_3_do_intersect_SCK.h	2010-04-06 12:41:00 +0000
@@ -6,7 +6,7 @@
 // Modified by André Massing, 2010
 //
 // First added:  2010-02-09
-// Last changed: 2010-02-10
+// Last changed: 2010-04-06
 // 
 //Author:  André Massing (am), massing@xxxxxxxxx
 //Company:  Simula Research Laboratory, Fornebu, Norway
@@ -21,7 +21,11 @@
 
 CGAL_BEGIN_NAMESPACE
 
+#if CGAL_VERSION_NR < 1030601000
 namespace CGALi {
+#else
+namespace internal {
+#endif
 
 ///Declaration of function template specialization.
 template <>

# Begin bundle
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