[Gmsh] cannot bind multiple regions to single tag

Christophe Geuzaine cgeuzaine at ulg.ac.be
Tue Oct 10 17:26:29 CEST 2017



> On 6 Oct 2017, at 17:04, Lik Chuan Lee <likchuan at gmail.com> wrote:
> 
> Hi,
> 
> When I tried to join 2 volumes by "BooleanUnion" in the last line of the following code, it has an error "cannot bind multiple regions to single tag 15". Does anybody know what that error means?
> 
> Thanks.
> 
> 
> SetFactory("OpenCASCADE");
> 
> h = 2.00;
> 
> LVirad = 3.0;
> LVthick = 1.0;
> LVolength = 6.0;
> 
> LVorad = LVirad + LVthick;
> LVilength = LVolength - LVthick;
> 
> RV_offset = 3.0;
> RVirad = 3.0;
> RVthick = 0.5;
> RVolength = 5.0;
> 
> RVorad = RVirad + RVthick;
> RVilength = RVolength - RVthick;
> 
> diam = LVorad+LVolength;
> bx = -LVolength;
> by = -LVolength;
> 
> Box(1) = {0.0, bx, by, diam, diam, diam};
> Sphere(2) = {0.0, 0.0, 0.0, 1.0};
> Dilate {{0.0, 0.0 ,0.0}, {LVolength, LVorad, LVorad}}{
>         Volume{2};
> }
> 
> BooleanDifference(3) = {Volume{2}; Delete;}{Volume{1};};
> 
> Sphere(4) = {0.0, 0.0, 0.0, 1.0};
> Dilate {{0.0, 0.0 ,0.0}, {LVilength, LVirad, LVirad}}{
>         Volume{4};
> }
> 
> BooleanDifference(5) = {Volume{4}; Delete;}{Volume{1}; Delete;};
> BooleanDifference(6) = {Volume{3}; Delete;}{Volume{5}; Delete;};
> 
> 
> Box(100) = {0.0, bx+RV_offset, by+RV_offset-2, RV_offset+2*RVorad, RV_offset+2*RVorad, RV_offset+RVolength+2};
> Sphere(7) = {0.0, RV_offset, 0.0, 1};
> Dilate {{0.0, RV_offset ,0.0}, {RVorad, RVorad, RVolength}}{
>         Volume{7};
> }
> BooleanDifference(8) = {Volume{7}; Delete;}{Volume{100}; Delete;};
> 
> Box(101) = {0.0, bx+RV_offset, by+RV_offset-2, RV_offset+2*RVirad, RV_offset+2*RVirad, RV_offset+RVilength+2};
> Sphere(9) = {0.0, RV_offset, 0.0, 1};
> Dilate {{0.0, RV_offset ,0.0}, {RVirad, RVirad, RVilength}}{
>         Volume{9};
> }
> BooleanDifference(10) = {Volume{9}; Delete;}{Volume{101}; Delete;};
> BooleanDifference(11) = {Volume{8}; Delete;}{Volume{10}; Delete;};
> 
> 
> Sphere(13) = {0.0, 0.0, 0.0, 1.0};
> Dilate {{0.0, 0.0 ,0.0}, {LVolength-0.3, LVorad-0.3, LVorad-0.3}}{
>         Volume{13};
> }
> 
> BooleanDifference(14) = {Volume{11}; Delete;}{Volume{13}; Delete;};
> 
> 
> BooleanUnion(15) = {Volume{6}; Delete;}{Volume{14}; Delete;};
> 


The boolean union will return more that one volume. So you cannot bind the result explicitly to a single tag (15). You should use the implicit form of the command:

  a() = BooleanUnion{Volume{6}; Delete;}{Volume{14}; Delete;} ;

a() will contain the list of volumes.

Christophe

> 
> 
>  
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh


-- 
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 
http://www.montefiore.ulg.ac.be/~geuzaine

Free software: http://gmsh.info | http://getdp.info | http://onelab.info




More information about the gmsh mailing list