[Gmsh] Segmentation violation (invalid memory reference) during optimisation.

David Colignon David.Colignon at ulg.ac.be
Thu May 11 13:13:08 CEST 2006


Hi,

for me your file works very well with the last version of gmsh on WinXP, even with 'lc=0.15*c/f' (very big mesh !).
Can you delete the .gmshrc file in your home directory and try again ?
And can you the complete log of the error ?

Cheers,

Dave

-- 
David Colignon, Ph.D.
ELAP - Service d'Electricité Appliquée
Institut Montefiore B28
Université de Liège
4000 Liège - BELGIQUE
Tél: +32 (0)4 366 37 32
Fax: +32 (0)4 366 29 10
http://elap.montefiore.ulg.ac.be




Mark Starnes wrote:
> Hi.
> 
> I've been using gmsh for the last couple of months and have had great 
> success with it - it's a really useful piece of software.  I've come 
> across a bug however that I'm having difficulty working around.  I've 
> included the script below, I'm using Win XP with a P4.  The error is 
> 'Segmentation violation (invalid memory reference)'.  Running only a few 
> of the extrusions (say half of them) works ok - running them all doesn't.
> Adjusting the line 'lc=0.25*c/f' to 'lc=0.33*c/f' or greater than 0.33 
> works also.  This line sets the characteristic length.
> 
> Thanks for writing (and making freely available) this excellent software.
> 
> Best regards,
> 
> Mark.
> 
> 
> ------------------------------------------------------------------------
> 
> // pi/6 extrusion. 2 element per wavelength @ fmax
> f=44000;   // frequency of interest.  Sets mesh density.
> c=344;
> lc=0.25*c/f;  //characteristic length for all nodes as function of freq.  Mesh density
> s=1;      // characteristic length scalar for internal regions.
> x0=0;y0=0; // origin
> 
> 
> r1=0.03175;     // device radius
> r2=0.05;     // quiet boundary radius
> r3=0.06;     // uppermost face ROC
> r4=0.06;     // lowermost surface ROC
> r5=0.5*0.021*0;    // rod radius
> 
> y1=0.0044;    // height of cavity
> y2=0.025;     // lower straight section height
> y3=0.026;     // upper section height
> 
> 
> f0=35000; // lowest freq of interest.  Sets position of boundary.
> l=c/f0;
> 
> xr = 0.013;  // radius to center of transducer.  Sets drive / observe nodes.
> 
> 
> Point (1) =    {       x0     ,y0-0.5*y1       ,       0 ,lc/s};    //lower face, center
> Point (2) =    {    x0-r1     ,y0-0.5*y1       ,       0 ,lc/s};    //lower face, outer edge
> Point (3) =    {    x0-r1     ,y0-0.5*y1-y2    ,       0 ,lc};    //
> 
> h2=Sqrt(r3*r3-r1*r1);
> Point(11) = {x0,0.5*y1+y3-h2,0,lc};        // center of lower ROC
> h1=Sqrt(r4*r4-r1*r1);
> Point(12) = {x0,-0.5*y1-y2+h1,0,lc}; // center of upper ROC
> 
> 
> Point (4) =    {    x0-r5     ,-0.5*y1-y2+h1-Sqrt(r4*r4-r5*r5)    ,       0 ,lc};    //
> Point (5) =    {    x0-r5     ,y0-Sqrt(r2*r2-r5*r5)               ,       0 ,lc};    // bottom of qb
> Point (6) =    {x0,y0+r2,0,lc}; // top of qb
> 
> Point (7) = {x0,0.5*y1+y3-h2+r3,0,lc};
> Point (8) = {x0-r1,y0+0.5*y1+y3,0,lc};
> Point (9) = {x0-r1,y0+0.5*y1,0,lc/s};
> Point(10) = {x0,y0+0.5*y1,0,lc/s};
> Point(13) = {x0,y0,0,lc/s};
> Point(14) = {x0-r2,y0,0,lc};
> 
> Point(15) = {x0-r1,y0,0,lc};  // These three set the boundary
> Point(16) = {x0-r1,y0+l,0,lc};
> Point(17) = {x0-r1-l,y0,0,lc};
> Point(18) = {x0-r1,y0-l,0,lc};
> 
> Point(19) = {x0-xr,y0+0.5*y1,0,lc/s};  // observation / excitation nodes.
> Point(20) = {x0-xr,y0-0.5*y1,0,lc/s};  // opposite face, reqd to force mesh
> 
> // large boundary case : needs updating. check pre m17 files for resultant shape.
> //Line(1) = {1,2};
> //Line(2) = {2,3};
> //Circle(3) = {3,12,4};
> //Line(4) = {4,5};
> //Circle(5) = {5,13,14};
> //Circle(6) = {14,13,6};
> //Line(7) = {6,7};
> //Circle(8) = {7,11,8};
> //Line(9) = {8,9};
> //Line(10) = {9,10};
> //Line(11) = {10,1};
> //Line Loop(12) = {9,10,11,1,2,3,4,5,6,7,8};
> //Plane Surface(13) = {12};
> 
> // small boundary case
> Line(1) = {1,20};  //inner block
> Line(2) = {20,19};
> Line(3) = {19,10};
> Line(4) = {10,1};
> 
>  Line(5) = {20,2}; // outer block
>  Line(6) = {2,18};
>  Circle(7) = {18,15,17};
>  Circle(8) = {17,15,16};
>  Line(9) = {16,9};
>  Line(10) = {9,19};
> Line(11) = {19,20};
> 
> 
> 
>  Line Loop(12) = {5,6,7,8,9,10,11};
>  Plane Surface(13) = {12};
> Line Loop(14) = {1,-11,3,4};
> Plane Surface(15) = {14};
> Coherence; // is essential, otherwise gmesh crashes.
> Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>   Surface{13,15};
> }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{52,69};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{106,123};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{177,160};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{194,231};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{248,285};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{339,302};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{393,376};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{447,410};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{501,484};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{518,555};
>    }
>    Extrude {{0,1,0}, {0,0,0}, Pi/6} {
>      Surface{572,609};
>  }
> Coherence;
> Coherence;
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh
-- 
David Colignon, Ph.D.
ELAP - Service d'Electricité Appliquée
Institut Montefiore B28
Université de Liège
4000 Liège - BELGIQUE
Tél: +32 (0)4 366 37 32
Fax: +32 (0)4 366 29 10
http://elap.montefiore.ulg.ac.be